From 173f299f93a7a5a28271a66e744d91b7a2da6614 Mon Sep 17 00:00:00 2001 From: abazov73 <92822431+abazov73@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:36:15 +0400 Subject: [PATCH] Lab03: create AccountsBusinessLogic project --- .../AccountsBusinessLogic.csproj | 13 +++ .../BusinessLogics/AccountLogic.cs | 100 ++++++++++++++++++ .../BusinessLogics/InterestLogic.cs | 93 ++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 AbazovApp/AccountsBusinessLogic/AccountsBusinessLogic.csproj create mode 100644 AbazovApp/AccountsBusinessLogic/BusinessLogics/AccountLogic.cs create mode 100644 AbazovApp/AccountsBusinessLogic/BusinessLogics/InterestLogic.cs diff --git a/AbazovApp/AccountsBusinessLogic/AccountsBusinessLogic.csproj b/AbazovApp/AccountsBusinessLogic/AccountsBusinessLogic.csproj new file mode 100644 index 0000000..fa98651 --- /dev/null +++ b/AbazovApp/AccountsBusinessLogic/AccountsBusinessLogic.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/AbazovApp/AccountsBusinessLogic/BusinessLogics/AccountLogic.cs b/AbazovApp/AccountsBusinessLogic/BusinessLogics/AccountLogic.cs new file mode 100644 index 0000000..a554301 --- /dev/null +++ b/AbazovApp/AccountsBusinessLogic/BusinessLogics/AccountLogic.cs @@ -0,0 +1,100 @@ +using AccountsContracts.BindingModels; +using AccountsContracts.BusinessLogicContracts; +using AccountsContracts.SearchModels; +using AccountsContracts.StorageContracts; +using AccountsContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AccountsBusinessLogic.BusinessLogics +{ + public class AccountLogic : IAccountLogic + { + private readonly IAccountStorage _accountStorage; + + public AccountLogic(IAccountStorage accountStorage) + { + _accountStorage = accountStorage; + } + + public List? ReadList(AccountSearchModel? model) + { + var list = model == null ? _accountStorage.GetFullList() : _accountStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public AccountViewModel? ReadElement(AccountSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _accountStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public bool Create(AccountBindingModel model) + { + CheckModel(model); + if (_accountStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Update(AccountBindingModel model) + { + CheckModel(model); + if (_accountStorage.Update(model) == null) + { + return false; + } + return true; + } + public bool Delete(AccountBindingModel model) + { + CheckModel(model, false); + if (_accountStorage.Delete(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(AccountBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Login)) + { + throw new ArgumentNullException("Нет логина пользователя", nameof(model.Login)); + } + if (string.IsNullOrEmpty(model.Password)) + { + throw new ArgumentNullException("Нет пароля пользователя", nameof(model.Password)); + } + if (string.IsNullOrEmpty(model.Email)) + { + throw new ArgumentNullException("Нет электронной почты пользователя", nameof(model.Email)); + } + } + } +} diff --git a/AbazovApp/AccountsBusinessLogic/BusinessLogics/InterestLogic.cs b/AbazovApp/AccountsBusinessLogic/BusinessLogics/InterestLogic.cs new file mode 100644 index 0000000..dfeeafe --- /dev/null +++ b/AbazovApp/AccountsBusinessLogic/BusinessLogics/InterestLogic.cs @@ -0,0 +1,93 @@ +using AccountsContracts.BindingModels; +using AccountsContracts.BusinessLogicContracts; +using AccountsContracts.SearchModels; +using AccountsContracts.StorageContracts; +using AccountsContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace AccountsBusinessLogic.BusinessLogics +{ + public class InterestLogic : IInterestLogic + { + private readonly IInterestStorage _interestStorage; + + public InterestLogic(IInterestStorage interestStorage) + { + _interestStorage = interestStorage; + } + + public List? ReadList(InterestSearchModel? model) + { + var list = model == null ? _interestStorage.GetFullList() : _interestStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public InterestViewModel? ReadElement(InterestSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _interestStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public bool Create(InterestBindingModel model) + { + CheckModel(model); + if (_interestStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Update(InterestBindingModel model) + { + CheckModel(model); + if (_interestStorage.Update(model) == null) + { + return false; + } + return true; + } + public bool Delete(InterestBindingModel model) + { + CheckModel(model, false); + if (_interestStorage.Delete(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(InterestBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException("Нет названия интереса", nameof(model.Name)); + } + } + } +}