Часть готовых контроллеров.
This commit is contained in:
parent
c7fa6e2237
commit
55147dbf29
@ -65,6 +65,40 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
|
|||||||
return list;
|
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)
|
public bool Create(AccountBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
|
@ -16,20 +16,27 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
|
|||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly ICreditingStorage _creditingStorage;
|
private readonly ICreditingStorage _creditingStorage;
|
||||||
|
private readonly ICardLogic _cardLogic;
|
||||||
|
private readonly IAccountLogic _accountLogic;
|
||||||
|
|
||||||
public CreditingLogic(ILogger<CreditingLogic> logger, ICreditingStorage creditingStorage) {
|
public CreditingLogic(ILogger<CreditingLogic> logger, ICreditingStorage creditingStorage, ICardLogic cardLogic, IAccountLogic accountLogic) {
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_creditingStorage = creditingStorage;
|
_creditingStorage = creditingStorage;
|
||||||
|
_cardLogic = cardLogic;
|
||||||
|
_accountLogic = accountLogic;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Create(CreditingBindingModel model)
|
public bool Create(CreditingBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
|
|
||||||
if (_creditingStorage.Insert(model) == null)
|
if (_creditingStorage.Insert(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Insert operation failed");
|
_logger.LogWarning("Insert operation failed");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts
|
|||||||
|
|
||||||
AccountViewModel? ReadElement(AccountSearchModel model);
|
AccountViewModel? ReadElement(AccountSearchModel model);
|
||||||
|
|
||||||
|
bool ChangeBalance(AccountSearchModel? model, int sum);
|
||||||
|
|
||||||
bool Create(AccountBindingModel model);
|
bool Create(AccountBindingModel model);
|
||||||
|
|
||||||
bool Update(AccountBindingModel model);
|
bool Update(AccountBindingModel model);
|
||||||
|
@ -9,16 +9,16 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace BankYouBankruptContracts.BusinessLogicsContracts
|
namespace BankYouBankruptContracts.BusinessLogicsContracts
|
||||||
{
|
{
|
||||||
public interface IClientLogic
|
public interface ICardLogic
|
||||||
{
|
{
|
||||||
List<ClientViewModel>? ReadList(ClientSearchModel? model);
|
List<CardViewModel>? 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,16 +9,16 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace BankYouBankruptContracts.BusinessLogicsContracts
|
namespace BankYouBankruptContracts.BusinessLogicsContracts
|
||||||
{
|
{
|
||||||
public interface ICardLogic
|
public interface IClientLogic
|
||||||
{
|
{
|
||||||
List<CardViewModel>? ReadList(CardSearchModel? model);
|
List<ClientViewModel>? 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,10 @@ namespace BankYouBankruptDatabaseImplement.Implements
|
|||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
transaction.Commit();
|
transaction.Commit();
|
||||||
|
|
||||||
return account.GetViewModel;
|
return context.Accounts
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.FirstOrDefault(x => x.Id == model.Id)
|
||||||
|
?.GetViewModel;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -70,7 +70,6 @@ namespace BankYouBankruptDatabaseImplement.Models
|
|||||||
public void Update(AccountBindingModel model)
|
public void Update(AccountBindingModel model)
|
||||||
{
|
{
|
||||||
Balance = model.Balance;
|
Balance = model.Balance;
|
||||||
PasswordAccount = model.PasswordAccount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AccountViewModel GetViewModel => new()
|
public AccountViewModel GetViewModel => new()
|
||||||
|
@ -20,12 +20,15 @@ namespace BankYouBankruptRestApi.Controllers
|
|||||||
|
|
||||||
private readonly ICreditingLogic _creditingLogic;
|
private readonly ICreditingLogic _creditingLogic;
|
||||||
|
|
||||||
public CardController(ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, ILogger<ClientController> logger)
|
private readonly IAccountLogic _accountLogic;
|
||||||
|
|
||||||
|
public CardController(ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, IAccountLogic accountLogic, ILogger<ClientController> logger)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_cardLogic = cardLogic;
|
_cardLogic = cardLogic;
|
||||||
_debitingLogic = debitingLogic;
|
_debitingLogic = debitingLogic;
|
||||||
_creditingLogic = creditingLogic;
|
_creditingLogic = creditingLogic;
|
||||||
|
_accountLogic = accountLogic;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -73,6 +76,11 @@ namespace BankYouBankruptRestApi.Controllers
|
|||||||
public void CreateCreditingOperation(CreditingBindingModel model) {
|
public void CreateCreditingOperation(CreditingBindingModel model) {
|
||||||
try {
|
try {
|
||||||
_creditingLogic.Create(model);
|
_creditingLogic.Create(model);
|
||||||
|
|
||||||
|
_accountLogic.ChangeBalance(new AccountSearchModel
|
||||||
|
{
|
||||||
|
Id = _cardLogic.ReadElement(new CardSearchModel { Id = model.CardId }).AccountId
|
||||||
|
}, model.Sum);
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
_logger.LogError(ex, "Ошибка создания операции на пополнение");
|
_logger.LogError(ex, "Ошибка создания операции на пополнение");
|
||||||
|
Loading…
Reference in New Issue
Block a user