using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using YAPContracts.Exceptions; using YAPContracts.Extentions; using YAPContracts.Infrastructure; namespace YAPContracts.DataModels { public class PurchaseDataModel : IValidation { public string Id { get; private set; } public string UserId { get; private set; } public double TotalPrice { get; private set; } public DateTime PurchaseDate { get; private set; } public List ProductSets { get; private set; } public List Products { get; private set; } public PurchaseDataModel(string id, string userId, double totalPrice, DateTime purchaseDate, List productSets, List products) { Id = id; UserId = userId; TotalPrice = totalPrice; PurchaseDate = purchaseDate; ProductSets = productSets; Products = products; } public PurchaseDataModel() { Id = string.Empty; UserId = string.Empty; TotalPrice = 0; PurchaseDate = DateTime.UtcNow; ProductSets = new List(); Products = new List(); } public void Validate() { if (!Id.IsGuid()) { throw new ValidationException("Id value is not valid"); } if (Id.IsEmpty()) { throw new ValidationException("Id is empty"); } if (!UserId.IsGuid()) { throw new ValidationException("UserId value is not valid"); } if (UserId.IsEmpty()) { throw new ValidationException("UserId is empty"); } foreach (var productSet in ProductSets) { productSet.Validate(); } foreach (var product in Products) { product.Validate(); } } } }