68 lines
2.0 KiB
C#
Raw Normal View History

2023-11-14 20:32:44 +04:00
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<OrderViewModel> Read(OrderBindingModel model)
{
if (model == null)
{
return _orderStorage.GetFullList();
}
if (model.Id.HasValue)
{
return new List<OrderViewModel> { _orderStorage.GetElement(model) };
}
return _orderStorage.GetFilteredList(model);
}
}
}