using System.ComponentModel.DataAnnotations; using LittleShop.Enums; namespace LittleShop.DTOs; public class OrderDto { public Guid Id { get; set; } public string IdentityReference { get; set; } = string.Empty; public OrderStatus Status { get; set; } public decimal TotalAmount { get; set; } public string Currency { get; set; } = "GBP"; public string ShippingName { get; set; } = string.Empty; public string ShippingAddress { get; set; } = string.Empty; public string ShippingCity { get; set; } = string.Empty; public string ShippingPostCode { get; set; } = string.Empty; public string ShippingCountry { get; set; } = string.Empty; public string? Notes { get; set; } public string? TrackingNumber { get; set; } public DateTime CreatedAt { get; set; } public DateTime UpdatedAt { get; set; } public DateTime? PaidAt { get; set; } public DateTime? ShippedAt { get; set; } public List Items { get; set; } = new(); public List Payments { get; set; } = new(); } public class OrderItemDto { public Guid Id { get; set; } public Guid ProductId { get; set; } public string ProductName { get; set; } = string.Empty; public int Quantity { get; set; } public decimal UnitPrice { get; set; } public decimal TotalPrice { get; set; } } public class CreateOrderDto { [Required] public string IdentityReference { get; set; } = string.Empty; [Required] public string ShippingName { get; set; } = string.Empty; [Required] public string ShippingAddress { get; set; } = string.Empty; [Required] public string ShippingCity { get; set; } = string.Empty; [Required] public string ShippingPostCode { get; set; } = string.Empty; [Required] public string ShippingCountry { get; set; } = "United Kingdom"; [Required] public List Items { get; set; } = new(); public string? Notes { get; set; } } public class CreateOrderItemDto { [Required] public Guid ProductId { get; set; } [Range(1, int.MaxValue)] public int Quantity { get; set; } } public class UpdateOrderStatusDto { public OrderStatus Status { get; set; } public string? TrackingNumber { get; set; } public string? Notes { get; set; } }