using CMSMicroservice.Application.Common.Models;
using MediatR;

namespace CMSMicroservice.Application.WalletCQ.Queries.GetManualCreditCharges;

public class GetManualCreditChargesQuery : IRequest<GetManualCreditChargesResponseDto>
{
    public PaginationState? PaginationState { get; set; }
    public string? SortBy { get; set; }
    public GetManualCreditChargesFilter? Filter { get; set; }
}

public class GetManualCreditChargesFilter
{
    public long? UserId { get; set; }
    public long? TransactionId { get; set; }
    public string? RefId { get; set; }
    public DateTime? CreatedFrom { get; set; }
    public DateTime? CreatedTo { get; set; }
}

public class GetManualCreditChargesResponseDto
{
    public MetaData MetaData { get; set; } = new();
    public List<ManualCreditChargeModelDto> Models { get; set; } = new();
}

public class ManualCreditChargeModelDto
{
    public long TransactionId { get; set; }
    public long UserId { get; set; }
    public string UserName { get; set; } = string.Empty;
    public long Amount { get; set; }
    public string Description { get; set; } = string.Empty;
    public string? RefId { get; set; }
    public long NewBalance { get; set; }
    public DateTime Created { get; set; }
    public DateTime? PaymentDate { get; set; }
}
