CourseWork_BankYouBankrupt/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs

370 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BankYouBankruptCashierApp.Models;
using BankYouBankruptContracts.BindingModels;
using BankYouBankruptContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using System.Xml.Linq;
namespace BankYouBankruptCashierApp.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
//вытаскивает через API клиента Get-запросом список его собственных заказов
[HttpGet]
public IActionResult Index()
{
if (APICashier.Cashier == null)
{
return Redirect("~/Home/Enter");
}
return View(APICashier.GetRequest<List<AccountViewModel>>($"/api/Account/GetAllAccounts"));
}
//изменемение ланных Get-ом
[HttpGet]
public IActionResult Privacy()
{
if (APICashier.Cashier == null)
{
return Redirect("~/Home/Enter");
}
return View(APICashier.Cashier);
}
//изменение данных Post-ом
[HttpPost]
public void Privacy(string login, string password, string name, string surname, string patronymic, string telephone, string email)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(name)
|| string.IsNullOrEmpty(surname) || string.IsNullOrEmpty(patronymic)
|| string.IsNullOrEmpty(telephone) || string.IsNullOrEmpty(email))
{
throw new Exception("Введите логин, пароль, ФИО и телефон");
}
APICashier.PostRequest("/api/Cashier/UpdateData", new CashierBindingModel
{
Id = APICashier.Cashier.Id,
Name = name,
Surname = surname,
Patronymic = patronymic,
Telephone = telephone,
Email = login,
Password = password
});
APICashier.Cashier.Name = name;
APICashier.Cashier.Surname = surname;
APICashier.Cashier.Patronymic = patronymic;
APICashier.Cashier.Email = login;
APICashier.Cashier.Password = password;
APICashier.Cashier.Telephone = telephone;
APICashier.Cashier.Email = email;
Response.Redirect("Index");
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel
{
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier
});
}
//просто открытие вьюхи
[HttpGet]
public IActionResult Enter()
{
return View();
}
//отсылаем указанные данные на проверку
[HttpPost]
public void Enter(string login, string password)
{
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password))
{
throw new Exception("Введите логин и пароль");
}
APICashier.Cashier = APICashier.GetRequest<CashierViewModel>($"/api/Cashier/Login?login={login}&password={password}");
if (APICashier.Cashier == null)
{
throw new Exception("Неверный логин/пароль");
}
Response.Redirect("Index");
}
//просто открытие вьюхи
[HttpGet]
public IActionResult Register()
{
return View();
}
//Post-запрос по созданию нового пользователя
[HttpPost]
public void Register(string login, string password, string name, string surname, string patronymic, string telephone)
{
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(name)
|| string.IsNullOrEmpty(surname) || string.IsNullOrEmpty(patronymic) || string.IsNullOrEmpty(telephone))
{
throw new Exception("Введите логин, пароль, ФИО и телефон");
}
APICashier.PostRequest("/api/Cashier/Register", new CashierBindingModel
{
Name = name,
Surname = surname,
Patronymic = patronymic,
Email = login,
Password = password,
Telephone = telephone
});
//переход на вкладку "Enter", чтобы пользователь сразу смог зайти
Response.Redirect("Enter");
return;
}
//открытие счёта. Получаем и передаём список изделий во вьюху?
[HttpGet]
public IActionResult Create()
{
ViewBag.Clients = APICashier.GetRequest<List<ClientViewModel>>("/api/Client/GetAllClients");
return View();
}
//создание заказа Post-запросом
[HttpPost]
public void Create(int clientId, string accountNumber, string password, int balance)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if (clientId <= 0)
{
throw new Exception("Некоректный ID клиента!");
}
if (string.IsNullOrEmpty(accountNumber) && accountNumber.Length < 8)
{
throw new Exception("Некорректный номер счёта");
}
if (string.IsNullOrEmpty(password) && password.Length < 6)
{
throw new Exception("Некорректный пароль");
}
APICashier.PostRequest("/api/Account/Register", new AccountBindingModel
{
CashierId = APICashier.Cashier.Id,
ClientId = clientId,
AccountNumber = accountNumber,
PasswordAccount = password,
Balance = balance,
DateOpen = DateTime.Now
});
Response.Redirect("Index");
}
//открытие формы отчёта. Получаем и передаём список изделий во вьюху?
[HttpGet]
public IActionResult CreateReport()
{
ViewBag.Accountes = APICashier.GetRequest<List<AccountViewModel>>("api/main/getaccountlist");
return View();
}
//создание отчёта Post-запросом
[HttpPost]
public void CreateReport(DateTime DateFrom, DateTime DateTo)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if (DateFrom > DateTo)
{
throw new Exception("Дата начала периода не может быть позже даты конца периода");
}
APICashier.PostRequest("api/main/createreport", new ReportBindingModel
{
FileName = APICashier.Cashier.Surname
//TODO
});
Response.Redirect("Index");
}
//для страницы "Заявки на снятие"
[HttpGet]
public IActionResult Debiting()
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
return View(APICashier.GetRequest<List<DebitingViewModel>>($"/api/Account/FindOpenDebiting"));
}
//для страницы "Заявки на зачисление"
[HttpGet]
public IActionResult Crediting()
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
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");
return View();
}
//одобрения заявки на зачисление Post-запросом
[HttpPost]
public void CloseCrediting(int creditingId)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if(creditingId < 0)
{
throw new Exception("Некорректный номер заявки на зачисление");
}
//получаем необходимые данные для запроса
APICashier.Crediting = APICashier.GetRequest<CreditingViewModel>($"/api/Account/FindCrediting?id={creditingId}");
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Crediting.CardId}");
APICashier.PostRequest("/api/Account/CloseCrediting", new MoneyTransferBindingModel
{
CashierId = APICashier.Cashier.Id,
CreditingId = creditingId,
Sum = APICashier.Crediting.Sum,
AccountPayeeId = APICashier.Card.AccountId
});
//очистка данных
APICashier.Crediting = null;
APICashier.Card = null;
Response.Redirect("Crediting");
}
//открытие вьюхи одобрения заявки на снятие
[HttpGet]
public IActionResult CloseDebiting()
{
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, int accountId)
{
if (APICashier.Cashier == null)
{
throw new Exception("Вы как сюда попали? Суда вход только авторизованным");
}
if (debitingId < 0)
{
throw new Exception("Некорректный номер заявки на снятие");
}
//получаем необходимые данные для запроса
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={debitingId}");
APICashier.Card = APICashier.GetRequest<CardViewModel>($"/api/Card/FindCard?id={APICashier.Debiting.CardId}");
APICashier.PostRequest("/api/Account/CloseDebiting", new CashWithdrawalBindingModel
{
CashierId = APICashier.Cashier.Id,
DebitingId = debitingId,
Sum = APICashier.Debiting.Sum,
AccountId = accountId
});
APICashier.Debiting = null;
APICashier.Card = null;
Response.Redirect("Debiting");
}
//получение номера запрашиваемого счёта для снятия
[HttpPost]
public string GetAccountNumber(int debitingId)
{
APICashier.Debiting = APICashier.GetRequest<DebitingViewModel>($"/api/Account/FindDebiting?id={debitingId}");
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;
}
}
}