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

namespace CMSMicroservice.Application.DiscountShopCQ.Queries.GetUserOrders;

public class GetUserOrdersQuery : IRequest<GetUserOrdersResponseDto>
{
    public long UserId { get; set; }
    public PaginationState? PaginationQuery { get; set; }
    public PaymentStatus? PaymentStatus { get; set; }
    public DeliveryStatus? DeliveryStatus { get; set; }
}

public class GetUserOrdersResponseDto
{
    public MetaData MetaData { get; set; }
    public List<OrderSummaryDto> Models { get; set; }
}

public class OrderSummaryDto
{
    public long Id { get; set; }
    public long TotalAmount { get; set; }
    public long DiscountBalanceUsed { get; set; }
    public long GatewayAmountPaid { get; set; }
    public long VatAmount { get; set; }
    public PaymentStatus PaymentStatus { get; set; }
    public DateTime? PaymentDate { get; set; }
    public DeliveryStatus DeliveryStatus { get; set; }
    public string? TrackingCode { get; set; }
    public DateTime Created { get; set; }
    public int ItemsCount { get; set; }
}
