diff --git a/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProductLogic.cs b/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProductLogic.cs index 3590570..46a1c02 100644 --- a/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProductLogic.cs +++ b/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProductLogic.cs @@ -75,7 +75,7 @@ namespace StorehouseBusinessLogics.BusinessLogics _logger.LogInformation("ReadList. Count:{Count}", list.Count); return list; } - private void CheckModel(ProductBindingModel model, bool withParams = true) + private void CheckModel(ProductBindingModel model, bool withParams = true) { if (model == null) { @@ -93,18 +93,6 @@ namespace StorehouseBusinessLogics.BusinessLogics { throw new ArgumentNullException("Количество элементов должно быть больше 0", nameof(model.ProductNum)); } - if (string.IsNullOrEmpty(model.Password)) - { - throw new ArgumentNullException("Нет пароля клиента", nameof(model.Password)); - } - _logger.LogInformation("Client. Id: {Id}, FIO: {fio}, email: {email}", model.Id, model.ClientFIO, model.Email); - var element = _clientStorage.GetElement(new ClientSearchModel - { - Email = model.Email, - }); - if (element != null && element.Id != model.Id) - { - - } } + } } diff --git a/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProviderLogic.cs b/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProviderLogic.cs index 3c36c7e..c54cd9c 100644 --- a/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProviderLogic.cs +++ b/Storehouse/StorehouseBusinessLogics/BusinessLogics/ProviderLogic.cs @@ -1,12 +1,102 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using StorehouseContracts.BindingModels; +using StorehouseContracts.BusinessLogicsContracts; +using StorehouseContracts.SearchModels; +using StorehouseContracts.StoragesContracts; +using StorehouseContracts.ViewModels; namespace StorehouseBusinessLogics.BusinessLogics { - internal class ProviderLogic + public class ProviderLogic :IProviderLogic { + private readonly ILogger _logger; + private readonly IProviderStorage _providerStorage; + public ProviderLogic(ILogger logger, IProviderStorage providerStorage) + { + _logger = logger; + _providerStorage = providerStorage; + } + public bool Create(ProviderBindingModel model) + { + CheckModel(model); + if (_providerStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(ProviderBindingModel model) + { + CheckModel(model); + if (_providerStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(ProviderBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_providerStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + public ProviderViewModel? ReadElement(ProviderSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. Id:{ Id}. ProviderFIO:{ ProviderFIO} ", model.Id, model.ProviderFIO); + var element = _providerStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + public List? ReadList(ProviderSearchModel? model) + { + _logger.LogInformation("ReadList. Id:{ Id}. ProviderFIO:{ ProviderFIO} ", model?.Id, model?.ProviderFIO); + var list = (model == null) ? _providerStorage.GetFullList() : _providerStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + private void CheckModel(ProviderBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.ProviderFIO)) + { + throw new ArgumentNullException("Нет ФИО поставщика", nameof(model.ProviderFIO)); + } + if (string.IsNullOrEmpty(model.Email)) + { + throw new ArgumentNullException("Нет email", nameof(model.Email)); + } + if (string.IsNullOrEmpty(model.Password)) + { + throw new ArgumentNullException("Нет пароля", nameof(model.Password)); + } + } } } diff --git a/Storehouse/StorehouseBusinessLogics/BusinessLogics/SaleLogic.cs b/Storehouse/StorehouseBusinessLogics/BusinessLogics/SaleLogic.cs index 2f429a5..b6b6bf3 100644 --- a/Storehouse/StorehouseBusinessLogics/BusinessLogics/SaleLogic.cs +++ b/Storehouse/StorehouseBusinessLogics/BusinessLogics/SaleLogic.cs @@ -1,12 +1,102 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using StorehouseContracts.BindingModels; +using StorehouseContracts.BusinessLogicsContracts; +using StorehouseContracts.SearchModels; +using StorehouseContracts.StoragesContracts; +using StorehouseContracts.ViewModels; namespace StorehouseBusinessLogics.BusinessLogics { - internal class SaleLogic + public class SaleLogic : ISaleLogic { + private readonly ILogger _logger; + private readonly ISaleStorage _saleStorage; + public SaleLogic(ILogger logger, ISaleStorage saleStorage) + { + _logger = logger; + _saleStorage = saleStorage; + } + public bool Create(SaleBindingModel model) + { + CheckModel(model); + if (_saleStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(SaleBindingModel model) + { + CheckModel(model); + if (_saleStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(SaleBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_saleStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + public SaleViewModel? ReadElement(SaleSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. Id:{ Id} ", model.Id); + var element = _saleStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + public List? ReadList(SaleSearchModel? model) + { + _logger.LogInformation("ReadList. Id:{ Id} ", model?.Id); + var list = (model == null) ? _saleStorage.GetFullList() : _saleStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + private void CheckModel(SaleBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (model.ClientId <= 0) + { + throw new ArgumentNullException("Нет клиента", nameof(model.ClientId)); + } + if (model.ProductId <= 0) + { + throw new ArgumentNullException("Нет продукта", nameof(model.ProductId)); + } + if (model.SaleNum <= 0) + { + throw new ArgumentNullException("Количество элементов должно быть больше 0", nameof(model.SaleNum)); + } + } } } diff --git a/Storehouse/StorehouseBusinessLogics/BusinessLogics/SupplyLogic.cs b/Storehouse/StorehouseBusinessLogics/BusinessLogics/SupplyLogic.cs index f955710..97668e4 100644 --- a/Storehouse/StorehouseBusinessLogics/BusinessLogics/SupplyLogic.cs +++ b/Storehouse/StorehouseBusinessLogics/BusinessLogics/SupplyLogic.cs @@ -1,12 +1,102 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using StorehouseContracts.BindingModels; +using StorehouseContracts.BusinessLogicsContracts; +using StorehouseContracts.SearchModels; +using StorehouseContracts.StoragesContracts; +using StorehouseContracts.ViewModels; namespace StorehouseBusinessLogics.BusinessLogics { - internal class SupplyLogic + public class SupplyLogic : ISupplyLogic { + private readonly ILogger _logger; + private readonly ISupplyStorage _supplyStorage; + public SupplyLogic(ILogger logger, ISupplyStorage supplyStorage) + { + _logger = logger; + _supplyStorage = supplyStorage; + } + public bool Create(SupplyBindingModel model) + { + CheckModel(model); + if (_supplyStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(SupplyBindingModel model) + { + CheckModel(model); + if (_supplyStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(SupplyBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_supplyStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + public SupplyViewModel? ReadElement(SupplySearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. Id:{ Id} ", model.Id); + var element = _supplyStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + public List? ReadList(SupplySearchModel? model) + { + _logger.LogInformation("ReadList. Id:{ Id} ", model?.Id); + var list = (model == null) ? _supplyStorage.GetFullList() : _supplyStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + private void CheckModel(SupplyBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (model.ProviderId <= 0) + { + throw new ArgumentNullException("Нет поставщика", nameof(model.ProviderId)); + } + if (model.ProductId <= 0) + { + throw new ArgumentNullException("Нет продукта", nameof(model.ProductId)); + } + if (model.SupplyNum <= 0) + { + throw new ArgumentNullException("Количество элементов должно быть больше 0", nameof(model.SupplyNum)); + } + } } } diff --git a/Storehouse/StorehouseContracts/ViewModels/ProductViewModel.cs b/Storehouse/StorehouseContracts/ViewModels/ProductViewModel.cs index 764d98f..9f8117e 100644 --- a/Storehouse/StorehouseContracts/ViewModels/ProductViewModel.cs +++ b/Storehouse/StorehouseContracts/ViewModels/ProductViewModel.cs @@ -10,7 +10,7 @@ namespace StorehouseContracts.ViewModels [DisplayName("Product Name")] public string ProductName { get; set; } = string.Empty; [DisplayName("Type Product")] - public ProductType ProductType { get; set; } + public ProductType ProductType { get; set; } = ProductType.Неизвестен; [DisplayName("Num")] public int ProductNum { get; set; } }