using System; using CandyHouseBase.Enums; using CandyHouseBase.Exceptions; using CandyHouseBase.Extensions; using CandyHouseBase.Infrastructure; namespace CandyHouseBase.DataModels { public class OrderDataModel : IValidation { public string Id { get; private set; } public string CustomerName { get; private set; } // Может быть null, если клиент разовый public DateTime OrderDate { get; private set; } public decimal TotalAmount { get; private set; } public decimal DiscountAmount { get; private set; } public string ProductId { get; private set; } public string PekarId { get; private set; } public StatusType StatusType { get; private set; } public OrderDataModel(string id, string customerName, DateTime orderDate, decimal totalAmount, decimal discountAmount, string productId, string pekarId, StatusType statusType) { Id = id; CustomerName = customerName; OrderDate = orderDate; TotalAmount = totalAmount; DiscountAmount = discountAmount; ProductId = productId; PekarId = pekarId; StatusType = statusType; } public void Validate() { if (Id.IsEmpty()) throw new ValidationException("Field Id is empty"); if (!Id.IsGuid()) throw new ValidationException("Id must be a GUID"); if (CustomerName.IsEmpty()) throw new ValidationException("CustomerName is empty"); if (TotalAmount < 0) throw new ValidationException("TotalAmount cannot be negative"); if (DiscountAmount < 0) throw new ValidationException("DiscountAmount cannot be negative"); if (ProductId.IsEmpty()) throw new ValidationException("Field productId is empty"); if (!ProductId.IsGuid()) throw new ValidationException("productId must be a GUID"); } } }