namespace CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetAllPaymentTransactionByFilter;

public record GetAllPaymentTransactionByFilterQuery : IRequest<GetAllPaymentTransactionByFilterResponseDto>
{
    public PaginationState? PaginationState { get; init; }
    public string? SortBy { get; init; }
    public GetAllPaymentTransactionByFilterFilter? Filter { get; init; }
}

public class GetAllPaymentTransactionByFilterFilter
{
    public long? UserId { get; set; }
    public string? Mobile { get; set; }
    public string? GatewayProvider { get; set; }
    public bool? PaymentStatus { get; set; }
    public string? Authority { get; set; }
    public string? RefId { get; set; }
    public string? OrderId { get; set; }
    public DateTime? CreatedFrom { get; set; }
    public DateTime? CreatedTo { get; set; }
}

public class GetAllPaymentTransactionByFilterResponseDto
{
    public MetaData MetaData { get; set; }
    public List<GetAllPaymentTransactionByFilterResponseModel>? Models { get; set; }
}

public class GetAllPaymentTransactionByFilterResponseModel
{
    public long Id { get; set; }
    public long? UserId { get; set; }
    public string? Mobile { get; set; }
    public string GatewayProvider { get; set; } = string.Empty;
    public long Amount { get; set; }
    public string? Authority { get; set; }
    public bool PaymentStatus { get; set; }
    public int? VerificationStatusCode { get; set; }
    public string? VerificationStatusMessage { get; set; }
    public string? RefId { get; set; }
    public string? CardPan { get; set; }
    public string? OrderId { get; set; }
    public long? TransactionId { get; set; }
    public string? Description { get; set; }
    public DateTimeOffset Created { get; set; }
}
