namespace LiteCharms.Features.Orders.Commands; public class CreateOrderCommand : IRequest> { public Guid CustomerId { get; set; } public Guid ShoppingCartId { get; set; } public Guid? QuoteId { get; set; } public string[]? Requirements { get; set; } public string[]? Notes { get; set; } public string[]? Terms { get; set; } public bool DepositRequired { get; set; } private CreateOrderCommand(Guid customerId, Guid shoppingCartId, bool depositRequired, Guid? quoteId = null, string[]? requirements = null, string[]? notes = null, string[]? terms = null) { CustomerId = customerId; ShoppingCartId = shoppingCartId; DepositRequired = depositRequired; QuoteId = quoteId; Requirements = requirements; Notes = notes; Terms = terms; } public static CreateOrderCommand Create(Guid customerId, Guid shoppingCartId, bool depositRequired, Guid? quoteId = null, string[]? requirements = null, string[]? notes = null, string[]? terms = null) { if (customerId == Guid.Empty) throw new ArgumentException("CustomerId is required.", nameof(customerId)); if (shoppingCartId == Guid.Empty) throw new ArgumentException("ShoppingCartId is required.", nameof(shoppingCartId)); return new(customerId, shoppingCartId, depositRequired, quoteId, requirements, notes, terms); } }