Реализовал логику доя товаров

This commit is contained in:
Никита Потапов 2024-11-20 01:02:13 +04:00
parent 4b21cfb004
commit abd33d7f49
2 changed files with 63 additions and 6 deletions

View File

@ -11,6 +11,6 @@ namespace InternetShopContracts.StorageContracts
ProductViewModel? GetElement(ProductSearchModel model); ProductViewModel? GetElement(ProductSearchModel model);
ProductViewModel? Insert(ProductBindingModel model); ProductViewModel? Insert(ProductBindingModel model);
ProductViewModel? Update(ProductBindingModel model); ProductViewModel? Update(ProductBindingModel model);
ProductViewModel? Delete(OrderBindingModel model); ProductViewModel? Delete(ProductBindingModel model);
} }
} }

View File

@ -2,34 +2,91 @@
using InternetShopContracts.DataSearchModels; using InternetShopContracts.DataSearchModels;
using InternetShopContracts.DataViewModels; using InternetShopContracts.DataViewModels;
using InternetShopContracts.LogicsContracts; using InternetShopContracts.LogicsContracts;
using InternetShopContracts.StorageContracts;
namespace InternetShopLogics.Logics namespace InternetShopLogics.Logics
{ {
public class ProductLogic : IProductLogic public class ProductLogic : IProductLogic
{ {
private IProductStorage _productStorage;
public ProductLogic(IProductStorage productStorage)
{
_productStorage = productStorage;
}
public bool Create(ProductBindingModel model) public bool Create(ProductBindingModel model)
{ {
throw new NotImplementedException(); CheckModel(model);
if (_productStorage.Insert(model) == null)
{
return false;
}
return true;
} }
public bool Delete(ProductBindingModel model) public bool Delete(ProductBindingModel model)
{ {
throw new NotImplementedException(); CheckModel(model, false);
if (_productStorage.Delete(model) == null)
{
return false;
}
return true;
} }
public ProductViewModel? ReadElement(ProductSearchModel model) public ProductViewModel? ReadElement(ProductSearchModel model)
{ {
throw new NotImplementedException(); if (model == null)
{
throw new ArgumentNullException(nameof(model));
}
return _productStorage.GetElement(model);
} }
public List<ProductViewModel> ReadList(ProductSearchModel? model = null) public List<ProductViewModel> ReadList(ProductSearchModel? model = null)
{ {
throw new NotImplementedException(); List<ProductViewModel>? list = null;
if (model == null)
{
list = _productStorage.GetFullList();
}
else
{
list = _productStorage.GetFilteredList(model);
}
if (list == null)
{
return new List<ProductViewModel>();
}
return list;
} }
public bool Update(ProductBindingModel model) public bool Update(ProductBindingModel model)
{ {
throw new NotImplementedException(); CheckModel(model);
if (_productStorage.Update(model) == null)
{
return false;
}
return true;
} }
private void CheckModel(ProductBindingModel model, bool checkParams = true)
{
if (model == null) throw new ArgumentNullException(nameof(model));
if (!checkParams) return;
if (string.IsNullOrEmpty(model.Name))
{
throw new ArgumentNullException("Нет названия товара", nameof(model.Name));
}
var item = _productStorage.GetElement(new ProductSearchModel
{
Name = model.Name
});
if (item != null && item.Id != model.Id)
{
throw new InvalidOperationException("Товар с таким названием уже есть");
}
} }
} }