226 lines
5.2 KiB
C#
226 lines
5.2 KiB
C#
|
using BankContracts.BindingModels.Cashier;
|
|||
|
using BankContracts.BusinessLogicsContracts.Cashier;
|
|||
|
using BankContracts.BusinessLogicsContracts.Client;
|
|||
|
using BankContracts.SearchModels.Cashier;
|
|||
|
using BankContracts.SearchModels.Client;
|
|||
|
using BankContracts.ViewModels;
|
|||
|
using BankContracts.ViewModels.Cashier.ViewModels;
|
|||
|
using BankContracts.ViewModels.Client.ViewModels;
|
|||
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
|||
|
namespace BankRestAPI.Controllers
|
|||
|
{
|
|||
|
// Route будет строиться по наванию контроллера и по названию метода (два Post-метода)
|
|||
|
[Route("api/[controller]/[action]")]
|
|||
|
[ApiController]
|
|||
|
public class AccountController : Controller
|
|||
|
{
|
|||
|
private readonly ILogger _logger;
|
|||
|
|
|||
|
private readonly IAccountLogic _accountLogic;
|
|||
|
|
|||
|
private readonly IDebitingLogic _debitingLogic;
|
|||
|
|
|||
|
private readonly ICreditingLogic _creditingLogic;
|
|||
|
|
|||
|
private readonly ICashWithdrawalLogic _cashwithdrawalLogic;
|
|||
|
|
|||
|
private readonly IMoneyTransferLogic _moneyTransferLogic;
|
|||
|
|
|||
|
// Конструктор
|
|||
|
public AccountController(ILogger<AccountController> logger, IAccountLogic accountLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, ICashWithdrawalLogic cashWithdrawalLogic, IMoneyTransferLogic moneyTransferLogic)
|
|||
|
{
|
|||
|
_logger = logger;
|
|||
|
_accountLogic = accountLogic;
|
|||
|
_debitingLogic = debitingLogic;
|
|||
|
_creditingLogic = creditingLogic;
|
|||
|
_cashwithdrawalLogic = cashWithdrawalLogic;
|
|||
|
_moneyTransferLogic = moneyTransferLogic;
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public AccountViewModel? Login(string accountNumber, string passwordAccount)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Попытка найти счёт (запись) по переданным номеру и паролю счёта
|
|||
|
return _accountLogic.ReadElement(new AccountSearchModel
|
|||
|
{
|
|||
|
AccountNumber = accountNumber,
|
|||
|
});
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public AccountViewModel? GetAccount(int accountId)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Попробуем получить счёт
|
|||
|
return _accountLogic.ReadElement(new AccountSearchModel
|
|||
|
{
|
|||
|
Id = accountId
|
|||
|
});
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public List<AccountViewModel>? GetAllAccounts()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Попробуем получить все имеющиеся счета
|
|||
|
return _accountLogic.ReadList(null);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost]
|
|||
|
public void RegisterAccount(AccountBindingModel model)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Создание счёта
|
|||
|
_accountLogic.Create(model);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка регистрации счёта в банке");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost]
|
|||
|
public void UpdateData(AccountBindingModel model)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Изменение данных о счёте
|
|||
|
_accountLogic.Update(model);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка обновления данных");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public List<AccountViewModel>? SearchAccounts(int cashierId)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Поиск всех счетов которые сделал конкретный кассир
|
|||
|
return _accountLogic.ReadList(new AccountSearchModel
|
|||
|
{
|
|||
|
CashierId = cashierId
|
|||
|
});
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "ОШбика входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public List<AccountViewModel>? SearchAccountsOfClient(int clientId)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Попытка найти запись по перданным номеру и паролю счета
|
|||
|
return _accountLogic.ReadList(new AccountSearchModel
|
|||
|
{
|
|||
|
ClientId = clientId
|
|||
|
});
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "ОШибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public List<CashWithdrawalViewModel>? FindAllCashWithdrawal()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
return _cashwithdrawalLogic.ReadList(null);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public List<MoneyTransferViewModel>? FindAllMoneyTransfer()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
return _moneyTransferLogic.ReadList(null);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public CreditingViewModel FindCrediting(int id)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Поиск заявки на зачисление по id
|
|||
|
return _creditingLogic.ReadElement(new CreditingSearchModel
|
|||
|
{
|
|||
|
Id = id
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
public DebitingViewModel FindDebiting(int id)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Поиск заявки на снятие по id
|
|||
|
return _debitingLogic.ReadElement(new DebitingSearchModel
|
|||
|
{
|
|||
|
Id = id
|
|||
|
});
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_logger.LogError(ex, "Ошибка входа в систему");
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|