diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MoneyTransferLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MoneyTransferLogic.cs index e481ac1..8493244 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MoneyTransferLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MoneyTransferLogic.cs @@ -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; } diff --git a/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs index 1413d4b..391f795 100644 --- a/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs @@ -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"); + } } } \ No newline at end of file diff --git a/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseCrediting.cshtml b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseCrediting.cshtml index 807f2a5..ab596ae 100644 --- a/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseCrediting.cshtml +++ b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseCrediting.cshtml @@ -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> \ No newline at end of file +</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> \ No newline at end of file diff --git a/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseDebiting.cshtml b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseDebiting.cshtml index d7bd6e6..5fbb73c 100644 --- a/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseDebiting.cshtml +++ b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/CloseDebiting.cshtml @@ -47,7 +47,7 @@ $.ajax({ method: "Post", url: "/Home/GetAccountNumber", - data: { debitingId: debitingId }, + data: { id: debitingId }, success: function (result) { $("#accountNumber").val(result); } diff --git a/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/MoneyTransfers.cshtml b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/MoneyTransfers.cshtml new file mode 100644 index 0000000..deb6db6 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptCashierApp/Views/Home/MoneyTransfers.cshtml @@ -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> diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/AccountController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/AccountController.cs index 0b343cd..c144096 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/AccountController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/AccountController.cs @@ -223,7 +223,7 @@ namespace BankYouBankruptRestApi.Controllers bool flag = true; - //если нет отправителя, т. е. операция на перевод денег из нала в виртуал на карту + //если есть отправитель, т. е. операция на перевод денег со счёта на счёт if (moneyTransfer.AccountSenderId.HasValue) { flag = _accountLogic.ChangeBalance(new AccountSearchModel