From 55147dbf2963d25f450e661bc51c8122bb9ad5e8 Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Sun, 14 May 2023 21:23:18 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D1=8C=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=BB=D0=BB=D0=B5=D1=80=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/AccountLogic.cs | 34 +++++++++++++++++++ .../BusinessLogics/CardLogic.cs | 2 +- .../BusinessLogics/CreditingLogic.cs | 11 ++++-- .../BusinessLogicsContracts/IAccountLogic.cs | 2 ++ .../BusinessLogicsContracts/ICardLogic.cs | 12 +++---- .../BusinessLogicsContracts/IClientLogic.cs | 12 +++---- .../Implements/AccountStorage.cs | 5 ++- .../Models/Account.cs | 1 - .../Controllers/CardController.cs | 10 +++++- 9 files changed, 71 insertions(+), 18 deletions(-) diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/AccountLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/AccountLogic.cs index 3e2313e..9a13751 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/AccountLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/AccountLogic.cs @@ -65,6 +65,40 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return list; } + //метод, отвечающий за изменение баланса счёта + public bool ChangeBalance(AccountSearchModel? model, int sum) + { + try + { + //ищем счёт + var account = ReadElement(model); + + if (account == null) + { + throw new ArgumentNullException("Счёт не найден", nameof(account)); + } + + //проверяем возможность операции снятия (sum может быть отрицательной) + if (sum + account.Balance < 0) + { + throw new ArgumentNullException("Операция невозможна. Недостаточно средств", nameof(account)); + } + + //обновляем балланс счёта + _accountStorage.Update(new AccountBindingModel + { + Id = account.Id, + Balance = account.Balance + sum + }); + + return true; + } + catch (Exception ex) + { + return false; + } + } + public bool Create(AccountBindingModel model) { CheckModel(model); diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CardLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CardLogic.cs index c456e48..52cb9a6 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CardLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CardLogic.cs @@ -24,7 +24,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics _accountStorage = accountStorage; } - public bool Create(CardBindingModel model) + public bool Create(CardBindingModel model) { CheckModel(model); if (_cardStorage.Insert(model) == null) diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CreditingLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CreditingLogic.cs index ee2412c..54ec562 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CreditingLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/CreditingLogic.cs @@ -16,21 +16,28 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics { private readonly ILogger _logger; private readonly ICreditingStorage _creditingStorage; + private readonly ICardLogic _cardLogic; + private readonly IAccountLogic _accountLogic; - public CreditingLogic(ILogger logger, ICreditingStorage creditingStorage) { + public CreditingLogic(ILogger logger, ICreditingStorage creditingStorage, ICardLogic cardLogic, IAccountLogic accountLogic) { _logger = logger; _creditingStorage = creditingStorage; + _cardLogic = cardLogic; + _accountLogic = accountLogic; } public bool Create(CreditingBindingModel model) { CheckModel(model); + if (_creditingStorage.Insert(model) == null) { _logger.LogWarning("Insert operation failed"); + return false; } - return true; + + return true; } public bool Delete(CreditingBindingModel model) diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IAccountLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IAccountLogic.cs index 1d96498..9eaff1e 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IAccountLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IAccountLogic.cs @@ -15,6 +15,8 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts AccountViewModel? ReadElement(AccountSearchModel model); + bool ChangeBalance(AccountSearchModel? model, int sum); + bool Create(AccountBindingModel model); bool Update(AccountBindingModel model); diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/ICardLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/ICardLogic.cs index 6190a1a..a850916 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/ICardLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/ICardLogic.cs @@ -9,16 +9,16 @@ using System.Threading.Tasks; namespace BankYouBankruptContracts.BusinessLogicsContracts { - public interface IClientLogic + public interface ICardLogic { - List? ReadList(ClientSearchModel? model); + List? ReadList(CardSearchModel? model); - ClientViewModel? ReadElement(ClientSearchModel model); + CardViewModel? ReadElement(CardSearchModel model); - bool Create(ClientBindingModel model); + bool Create(CardBindingModel model); - bool Update(ClientBindingModel model); + bool Update(CardBindingModel model); - bool Delete(ClientBindingModel model); + bool Delete(CardBindingModel model); } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IClientLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IClientLogic.cs index a850916..6190a1a 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IClientLogic.cs @@ -9,16 +9,16 @@ using System.Threading.Tasks; namespace BankYouBankruptContracts.BusinessLogicsContracts { - public interface ICardLogic + public interface IClientLogic { - List? ReadList(CardSearchModel? model); + List? ReadList(ClientSearchModel? model); - CardViewModel? ReadElement(CardSearchModel model); + ClientViewModel? ReadElement(ClientSearchModel model); - bool Create(CardBindingModel model); + bool Create(ClientBindingModel model); - bool Update(CardBindingModel model); + bool Update(ClientBindingModel model); - bool Delete(CardBindingModel model); + bool Delete(ClientBindingModel model); } } diff --git a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/AccountStorage.cs b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/AccountStorage.cs index 7bfad1b..cde912d 100644 --- a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/AccountStorage.cs +++ b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/AccountStorage.cs @@ -112,7 +112,10 @@ namespace BankYouBankruptDatabaseImplement.Implements context.SaveChanges(); transaction.Commit(); - return account.GetViewModel; + return context.Accounts + .Include(x => x.Client) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; } catch { diff --git a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Models/Account.cs b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Models/Account.cs index e8fa729..c512498 100644 --- a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Models/Account.cs +++ b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Models/Account.cs @@ -70,7 +70,6 @@ namespace BankYouBankruptDatabaseImplement.Models public void Update(AccountBindingModel model) { Balance = model.Balance; - PasswordAccount = model.PasswordAccount; } public AccountViewModel GetViewModel => new() diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/CardController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/CardController.cs index d04def1..17f6e52 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/CardController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/CardController.cs @@ -20,12 +20,15 @@ namespace BankYouBankruptRestApi.Controllers private readonly ICreditingLogic _creditingLogic; - public CardController(ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, ILogger logger) + private readonly IAccountLogic _accountLogic; + + public CardController(ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, IAccountLogic accountLogic, ILogger logger) { _logger = logger; _cardLogic = cardLogic; _debitingLogic = debitingLogic; _creditingLogic = creditingLogic; + _accountLogic = accountLogic; } [HttpGet] @@ -73,6 +76,11 @@ namespace BankYouBankruptRestApi.Controllers public void CreateCreditingOperation(CreditingBindingModel model) { try { _creditingLogic.Create(model); + + _accountLogic.ChangeBalance(new AccountSearchModel + { + Id = _cardLogic.ReadElement(new CardSearchModel { Id = model.CardId }).AccountId + }, model.Sum); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания операции на пополнение");