using CMSMicroservice.Domain.Enums;
using MediatR;

namespace CMSMicroservice.Application.DiscountShopCQ.Queries.GetOrderById;

public class GetOrderByIdQuery : IRequest<OrderDetailDto?>
{
    public long OrderId { get; set; }
    public long? UserId { get; set; }
}

public class OrderDetailDto
{
    public long Id { get; set; }
    public long UserId { 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 string? DeliveryDescription { get; set; }
    public DateTime Created { get; set; }
    public UserAddressDto Address { get; set; }
    public List<OrderItemDto> Items { get; set; } = new();
}

public class UserAddressDto
{
    public string Title { get; set; }
    public string Address { get; set; }
    public string PostalCode { get; set; }
    /// <summary>شماره تماس سفارش‌دهنده (موبایل کاربر) برای برچسب پست</summary>
    public string? Phone { get; set; }
}

public class OrderItemDto
{
    public long ProductId { get; set; }
    public string ProductTitle { get; set; }
    public int Count { get; set; }
    public long UnitPrice { get; set; }
    public int DiscountPercentUsed { get; set; }
    public long DiscountAmount { get; set; }
    public long FinalPrice { get; set; }
    public string ImagePath { get; set; }
    public string ThumbnailPath { get; set; }
}
