using OrdersContracts.BindingModels; using OrdersContracts.BusinessLogicContracts; using OrdersContracts.StorageContracts; using OrdersContracts.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrderBusinessLogic { public class OrderLogic : IOrderLogic { private readonly IOrderStorage _orderStorage; public OrderLogic(IOrderStorage orderStorage) { _orderStorage = orderStorage; } public void CreateOrUpdate(OrderBindingModel model) { var element = _orderStorage.GetElement( new OrderBindingModel { Info = model.Info, Name = model.Name, Status = model.Status, Amount = model.Amount }); if (element != null && element.Id != model.Id) { throw new Exception("Такой заказ уже существует"); } if (model.Id.HasValue) { _orderStorage.Update(model); } else { _orderStorage.Insert(model); } } public void Delete(OrderBindingModel model) { var element = _orderStorage.GetElement(new OrderBindingModel { Id = model.Id }); if (element == null) { throw new Exception("Заказ не найден"); } _orderStorage.Delete(model); } public List Read(OrderBindingModel model) { if (model == null) { return _orderStorage.GetFullList(); } if (model.Id.HasValue) { return new List { _orderStorage.GetElement(model) }; } return _orderStorage.GetFilteredList(model); } } }