Cashier. Вроде по нему всё, кроме очётов.

This commit is contained in:
Programmist73 2023-05-17 22:13:56 +04:00
parent f2eb8081d5
commit 93cbad30f8
6 changed files with 150 additions and 32 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

@ -249,30 +249,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 +274,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 +289,7 @@ namespace BankYouBankruptCashierApp.Controllers
CashierId = APICashier.Cashier.Id,
CreditingId = creditingId,
Sum = APICashier.Crediting.Sum,
AccountPayeeId = APICashier.Card.AccountId
AccountPayeeId = accountPayeeId
});
//очистка данных
@ -329,6 +324,11 @@ namespace BankYouBankruptCashierApp.Controllers
throw new Exception("Некорректный номер заявки на снятие");
}
if (accountId < 0)
{
throw new Exception("Некорректный номер заявки на снятие");
}
//получаем необходимые данные для запроса
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={debitingId}");
@ -350,11 +350,20 @@ namespace BankYouBankruptCashierApp.Controllers
//получение номера запрашиваемого счёта для снятия
[HttpPost]
public string GetAccountNumber(int debitingId)
public string GetAccountNumber(int id)
{
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={debitingId}");
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={id}");
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Debiting.CardId}");
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}");
@ -366,5 +375,42 @@ namespace BankYouBankruptCashierApp.Controllers
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

@ -47,7 +47,7 @@
$.ajax({
method: "Post",
url: "/Home/GetAccountNumber",
data: { debitingId: debitingId },
data: { id: debitingId },
success: function (result) {
$("#accountNumber").val(result);
}

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

@ -223,7 +223,7 @@ namespace BankYouBankruptRestApi.Controllers
bool flag = true;
//если нет отправителя, т. е. операция на перевод денег из нала в виртуал на карту
//если есть отправитель, т. е. операция на перевод денег со счёта на счёт
if (moneyTransfer.AccountSenderId.HasValue)
{
flag = _accountLogic.ChangeBalance(new AccountSearchModel