namespace CoreConnect.Commerce.Exceptions;
public record CommerceErrorModel
    public CommerceErrorModel(string code, string message, string referenceCode = "", object? data = default, int? statuscode = 0)
        ReferenceCode = referenceCode;
    /// High level error code
    /// <seealso cref="ErrorCodes"/>
    public string Code { get; }
    /// Core connect reference code
    /// <seealso cref="ErrorReferenceCodes"/>
    public string ReferenceCode { get; }
    public string Message { get; }
    public object? Data { get; }
    public int? StatusCode { get; set; }
    public static CommerceErrorModel FromHttpStatus(int httpStatus, string message = "")
        var code = httpStatus switch
            400 => ErrorCodes.BAD_REQUEST,
            401 => ErrorCodes.UNAUTHENTICATED,
            403 => ErrorCodes.FORBIDDEN,
            404 => ErrorCodes.NOT_FOUND,
            422 => ErrorCodes.INVALID_DATA,
            _ => ErrorCodes.INTERNAL_SERVER_ERROR
        return new CommerceErrorModel(code, message, string.Empty, null, httpStatus);