75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
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<ProductSetInPurchaseDataModel> ProductSets { get; private set; }
|
|
|
|
public List<ProductInPurchaseDataModel> Products { get; private set; }
|
|
|
|
public PurchaseDataModel(string id, string userId, double totalPrice, DateTime purchaseDate, List<ProductSetInPurchaseDataModel> productSets, List<ProductInPurchaseDataModel> 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<ProductSetInPurchaseDataModel>();
|
|
Products = new List<ProductInPurchaseDataModel>();
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
}
|