This commit is contained in:
shadowik 2023-05-17 18:50:39 +04:00
commit 663f0122eb
13 changed files with 245 additions and 45 deletions

View File

@ -82,17 +82,17 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
return false;
}
if (!model.CreditingId.HasValue)
//проверка на то, что это зачисление на карту, а не перевод между счетами
if (model.CreditingId.HasValue)
{
throw new Exception();
}
_creditingStorage.Update(new CreditingBindingModel
{
Id = model.CreditingId.Value,
DateClose = DateTime.Now,
Status = StatusEnum.Закрыта
});
_creditingStorage.Update(new CreditingBindingModel
{
Id = model.CreditingId.Value,
DateClose = DateTime.Now,
Status = StatusEnum.Закрыта
});
}
return true;
}

View File

@ -148,16 +148,21 @@ namespace BankYouBankruptCashierApp.Controllers
//открытие счёта. Получаем и передаём список изделий во вьюху?
[HttpGet]
public IActionResult Create()
public IActionResult CreateAccount()
{
ViewBag.Clients = APICashier.GetRequest<List<ClientViewModel>>("/api/Client/GetAllClients");
//запрашиваем список в формате вспомогательной вьюшки из-за работы select в asp net
ViewBag.Clients = APICashier.GetRequest<List<ClientViewModel>>($"/api/Client/GetAllClients").Select(x => new ClientSelectViewModel
{
Id = x.Id,
FullName = x.Surname + " " + x.Name + " " + x.Patronymic
}).ToList();
return View();
}
return View();
}
//создание заказа Post-запросом
[HttpPost]
public void Create(int clientId, string accountNumber, string password, int balance)
public void CreateAccount(int clientId, string accountNumber, string password, int balance)
{
if (APICashier.Cashier == null)
{
@ -249,30 +254,20 @@ namespace BankYouBankruptCashierApp.Controllers
return View(APICashier.GetRequest<List<CreditingViewModel>>($"/api/Account/FindOpenCrediting"));
}
//для страницы "Переводы"
[HttpGet]
public IActionResult MoneyTransfers()
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
return View(APICashier.GetRequest<List<DebitingViewModel>>($"/api/Account/FindOpenDebiting"));
}
//открытие вьюхи одобрения заявки на зачисление
[HttpGet]
public IActionResult CloseCrediting()
{
ViewBag.Creditings = APICashier.GetRequest<List<CreditingViewModel>>("/api/Account/FindOpenCrediting");
ViewBag.Accounts = APICashier.GetRequest<List<AccountViewModel>>("/api/Account/GetAllAccounts");
return View();
}
//одобрения заявки на зачисление Post-запросом
[HttpPost]
public void CloseCrediting(int creditingId)
public void CloseCrediting(int creditingId, int accountPayeeId)
{
if (APICashier.Cashier == null)
{
@ -284,8 +279,13 @@ namespace BankYouBankruptCashierApp.Controllers
throw new Exception("Некорректный номер заявки на зачисление");
}
//получаем необходимые данные для запроса
APICashier.Crediting = APICashier.GetRequest<CreditingViewModel>($"/api/Account/FindCrediting?id={creditingId}");
if (accountPayeeId < 0)
{
throw new Exception("Некорректный id счёта для зацисления средств");
}
//получаем необходимые данные для запроса
APICashier.Crediting = APICashier.GetRequest<CreditingViewModel>($"/api/Account/FindCrediting?id={creditingId}");
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Crediting.CardId}");
@ -294,7 +294,7 @@ namespace BankYouBankruptCashierApp.Controllers
CashierId = APICashier.Cashier.Id,
CreditingId = creditingId,
Sum = APICashier.Crediting.Sum,
AccountPayeeId = APICashier.Card.AccountId
AccountPayeeId = accountPayeeId
});
//очистка данных
@ -310,12 +310,14 @@ namespace BankYouBankruptCashierApp.Controllers
{
ViewBag.Debitings = APICashier.GetRequest<List<DebitingViewModel>>("/api/Account/FindOpenDebiting");
ViewBag.Accounts = APICashier.GetRequest<List<AccountViewModel>>("/api/Account/GetAllAccounts");
return View();
}
//одобрения заявки на снятие Post-запросом
[HttpPost]
public void CloseDebiting(int debitingId)
public void CloseDebiting(int debitingId, int accountId)
{
if (APICashier.Cashier == null)
{
@ -327,6 +329,11 @@ namespace BankYouBankruptCashierApp.Controllers
throw new Exception("Некорректный номер заявки на снятие");
}
if (accountId < 0)
{
throw new Exception("Некорректный номер заявки на снятие");
}
//получаем необходимые данные для запроса
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={debitingId}");
@ -337,10 +344,78 @@ namespace BankYouBankruptCashierApp.Controllers
CashierId = APICashier.Cashier.Id,
DebitingId = debitingId,
Sum = APICashier.Debiting.Sum,
AccountId = APICashier.Card.AccountId
AccountId = accountId
});
APICashier.Debiting = null;
APICashier.Card = null;
Response.Redirect("Debiting");
}
//получение номера запрашиваемого счёта для снятия
[HttpPost]
public string GetAccountNumber(int id)
{
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={id}");
APICashier.Crediting = APICashier.GetRequest<CreditingViewModel>($"/api/Account/FindDebiting?id={id}");
if(APICashier.Debiting == null)
{
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Crediting.CardId}");
}
else
{
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Debiting.CardId}");
}
APICashier.Account = APICashier.GetRequest<AccountViewModel>($"/api/Account/GetAccount?accountId={APICashier.Card.AccountId}");
string AccountNumber = APICashier.Account.AccountNumber;
APICashier.Debiting = null;
APICashier.Card = null;
APICashier.Account = null;
return AccountNumber;
}
[HttpGet]
public IActionResult MoneyTransfers()
{
ViewBag.Accounts = APICashier.GetRequest<List<AccountViewModel>>("/api/Account/GetAllAccounts");
return View();
}
[HttpPost]
public void MoneyTransfers(int accountSenderId, int accountPayeeId, int sumMoneyTransfer)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if (accountSenderId < 0)
{
throw new Exception("Некорректный id счёта отправителя");
}
if (accountPayeeId < 0)
{
throw new Exception("Некорректный id счёта получателя");
}
APICashier.PostRequest("/api/Account/CloseCrediting", new MoneyTransferBindingModel
{
CashierId = APICashier.Cashier.Id,
Sum = sumMoneyTransfer,
AccountPayeeId = accountPayeeId,
AccountSenderId = accountSenderId
});
Response.Redirect("Index");
}
}
}

View File

@ -9,7 +9,23 @@
<div class="row">
<div class="col-4">Номер запроса на зачисление:</div>
<div class="col-8">
<select id="creditig" name="creditingId" class="form-control" asp-items="@(new SelectList( @ViewBag.Creditings, "Id", "Id"))"></select>
<select id="creditigId" name="creditingId" class="form-control" asp-items="@(new SelectList( @ViewBag.Creditings, "Id", "Id"))">
<option disabled selected>Выберите запрос</option>
</select>
</div>
</div>
<div class="row">
<div class="col-4">Запрашиваемый счёт для зачисления:</div>
<div class="col-8">
<input type="text" id="accountNumber" name="accountNumber" readonly />
</div>
</div>
<div class="row">
<div class="col-4">Номер счёта для зачисления:</div>
<div class="col-8">
<select id="accountPayeeId" name="accountPayeeId" class="form-control" asp-items="@(new SelectList( @ViewBag.Accounts, "Id", "AccountNumber"))">
<option disabled selected>Выберите счёт</option>
</select>
</div>
</div>
<div class="row">
@ -18,4 +34,23 @@
<input type="submit" value="Начислить" class="btn btn-primary" />
</div>
</div>
</form>
</form>
<!-- подгрузка номера запрашиваемого клиентом счёта в реальном времени -->
<script>
$('#creditigId').on('change', function () {
check();
});
function check() {
var creditigId = $('#creditigId').val();
$.ajax({
method: "Post",
url: "/Home/GetAccountNumber",
data: { id: creditigId },
success: function (result) {
$("#accountNumber").val(result);
}
});
}
</script>

View File

@ -9,7 +9,23 @@
<div class="row">
<div class="col-4">Номер запроса на снятие:</div>
<div class="col-8">
<select id="creditig" name="debitingId" class="form-control" asp-items="@(new SelectList( @ViewBag.Debitings, "Id", "Id"))"></select>
<select id="debitingId" name="debitingId" class="form-control" asp-items="@(new SelectList( @ViewBag.Debitings, "Id", "Id"))">
<option disabled selected>Выберите запрос</option>
</select>
</div>
</div>
<div class="row">
<div class="col-4">Запрашиваемый счёт для перевода:</div>
<div class="col-8">
<input type="text" id="accountNumber" name="accountNumber" readonly />
</div>
</div>
<div class="row">
<div class="col-4">Номер счёта для снятия:</div>
<div class="col-8">
<select id="accountId" name="accountId" class="form-control" asp-items="@(new SelectList( @ViewBag.Accounts, "Id", "AccountNumber"))">
<option disabled selected>Выберите счёт</option>
</select>
</div>
</div>
<div class="row">
@ -18,4 +34,23 @@
<input type="submit" value="Снять" class="btn btn-primary" />
</div>
</div>
</form>
</form>
<!-- подгрузка номера запрашиваемого клиентом счёта в реальном времени -->
<script>
$('#debitingId').on('change', function () {
check();
});
function check() {
var debitingId = $('#debitingId').val();
$.ajax({
method: "Post",
url: "/Home/GetAccountNumber",
data: { id: debitingId },
success: function (result) {
$("#accountNumber").val(result);
}
});
}
</script>

View File

@ -1,5 +1,5 @@
@{
ViewData["Title"] = "Create";
ViewData["Title"] = "Открытие счёта";
}
<div class="text-center">
@ -9,7 +9,7 @@
<div class="row">
<div class="col-4">Клиент:</div>
<div class="col-8">
<select id="client" name="clientId" class="form-control" asp-items="@(new SelectList( @ViewBag.Clients, "Id", "Surname"))"></select>
<select id="client" name="clientId" class="form-control" asp-items="@(new SelectList( @ViewBag.Clients, "Id", "FullName"))"></select>
</div>
</div>
<div class="row">

View File

@ -1,5 +1,5 @@
@{
ViewData["Title"] = "CreateReport";
ViewData["Title"] = "Создание отчёта";
}
<div class="text-center">

View File

@ -1,5 +1,5 @@
@{
ViewData["Title"] = "Вход";
ViewData["Title"] = "Авторизация";
}
<div class="text-center">

View File

@ -18,7 +18,7 @@
return;
}
<p>
<a asp-action="Create">Открыть счёт</a>
<a asp-action="CreateAccount">Открыть счёт</a>
</p>
<table class="table">
<thead>

View File

@ -0,0 +1,37 @@
@{
ViewData["Title"] = "Переводы меджу счетами";
}
<div class="text-center">
<h2 class="display-4">Перевод меджу счетами</h2>
</div>
<form method="post">
<div class="row">
<div class="col-4">Номер счёта для снятия:</div>
<div class="col-8">
<select id="accountSenderId" name="accountSenderId" class="form-control" asp-items="@(new SelectList( @ViewBag.Accounts, "Id", "AccountNumber"))">
<option disabled selected>Выберите счёт</option>
</select>
</div>
</div>
<div class="row">
<div class="col-4">Номер счёта для начисления:</div>
<div class="col-8">
<select id="accountPayeeId" name="accountPayeeId" class="form-control" asp-items="@(new SelectList( @ViewBag.Accounts, "Id", "AccountNumber"))">
<option disabled selected>Выберите счёт</option>
</select>
</div>
</div>
<div class="row">
<div class="col-4">Сумма перевода:</div>
<div class="col-8">
<input type="text" id="sumMoneyTransfer" name="sumMoneyTransfer" />
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">
<input type="submit" value="Перевести" class="btn btn-primary" />
</div>
</div>
</form>

View File

@ -210,7 +210,7 @@ namespace BankYouBankruptClientApp.Controllers
}
ViewBag.Cards = APIClient.GetRequest<List<CardViewModel>>($"api/Card/GetAllCards").Select(x => new ClientCardViewModel
ViewBag.Cards = APIClient.GetRequest<List<CardViewModel>>($"api/Card/GetAllCards").Select(x => new ClientSelectViewModel
{
Id = x.Id,
FullName = x.ClientSurname + " " +x.Number.ToString()

View File

@ -3,7 +3,7 @@
@model List<CardViewModel>
@{
ViewData["Title"] = "Home Page";
ViewData["Title"] = "Список карт";
}
<div class="text-center">

View File

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace BankYouBankruptContracts.ViewModels
{
public class ClientCardViewModel
public class ClientSelectViewModel
{
public int Id { get; set; }

View File

@ -71,6 +71,24 @@ namespace BankYouBankruptRestApi.Controllers
}
}
//получаем все имеющиеся счета
[HttpGet]
public AccountViewModel? GetAccount(int accountId)
{
try
{
return _accountLogic.ReadElement(new AccountSearchModel
{
Id = accountId
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
[HttpPost]
public void Register(AccountBindingModel model)
{
@ -205,7 +223,7 @@ namespace BankYouBankruptRestApi.Controllers
bool flag = true;
//если нет отправителя, т. е. операция на перевод денег из нала в виртуал на карту
//если есть отправитель, т. е. операция на перевод денег со счёта на счёт
if (moneyTransfer.AccountSenderId.HasValue)
{
flag = _accountLogic.ChangeBalance(new AccountSearchModel