using BankContracts.BindingModels; using BankContracts.ViewModels; using Microsoft.AspNetCore.Mvc; using BankOperatorApp.Models; using System.Diagnostics; using BankContracts.BusinessLogicsContracts; using BankContracts.SearchModels; using BankDataModels.Models; using BankBusinessLogic.BusinessLogics; namespace BankOperatorApp.Controllers { public class HomeController : Controller { private readonly ILogger _logger; private readonly IBankOperatorLogic _bankOperatorLogic; private readonly ICreditProgramLogic _creditProgramLogic; private readonly ICurrencyLogic _currencyLogic; private ICurrencyPurchaseLogic _currencyPurchaseLogic; public HomeController(ILogger logger, IBankOperatorLogic bankOperatorLogic, ICreditProgramLogic creditProgramLogic, ICurrencyLogic currencyLogic, ICurrencyPurchaseLogic currencyPurchaseLogic) { _logger = logger; _bankOperatorLogic = bankOperatorLogic; _creditProgramLogic = creditProgramLogic; _currencyLogic = currencyLogic; _currencyPurchaseLogic = currencyPurchaseLogic; } public IActionResult Index() { if (APIClient.BankOperator == null) { return Redirect("~/Home/Enter"); } return View(_currencyLogic.ReadList(new CurrencySearchModel { BankOperatorId = APIClient.BankOperator.Id })); } [HttpGet] public IActionResult Privacy() { if (APIClient.BankOperator == null) { return Redirect("~/Home/Enter"); } return View(APIClient.BankOperator); } [HttpPost] public void Privacy(string login, string password, string lastname, string firstname, string middleName) { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(lastname) || string.IsNullOrEmpty(firstname)) { throw new Exception("Введите логин, пароль и ФИО"); } _bankOperatorLogic.Update(new BankOperatorBindingModel { Id = APIClient.BankOperator.Id, LastName = lastname, FirstName = firstname, MiddleName = middleName, Login = login, Password = password }); APIClient.BankOperator.LastName = lastname; APIClient.BankOperator.FirstName = firstname; APIClient.BankOperator.MiddleName = middleName; APIClient.BankOperator.Login = login; APIClient.BankOperator.Password = password; 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("Введите логин и пароль"); } APIClient.BankOperator = _bankOperatorLogic.ReadElement (new BankOperatorSearchModel { Login = login, Password = password }); if (APIClient.BankOperator == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string login, string password, string lastname, string firstname, string middleName) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(lastname) || string.IsNullOrEmpty(firstname) || string.IsNullOrEmpty(middleName)) { throw new Exception("Введите логин, пароль и ФИО"); } _bankOperatorLogic.Create(new BankOperatorBindingModel { LastName = lastname, FirstName = firstname, MiddleName = middleName, Login = login, Password = password }); Response.Redirect("Enter"); return; } [HttpGet] public IActionResult CreateCurrency() { return View(); } [HttpPost] public void CreateCurrency(string name) { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } _currencyLogic.Create(new CurrencyBindingModel { Name = name, BankOperatorId = APIClient.BankOperator.Id, }); Response.Redirect("Index"); } public IActionResult CreditPrograms() { if (APIClient.BankOperator == null) { return Redirect("~/Home/Enter"); } return View(_creditProgramLogic.ReadList(new CreditProgramSearchModel { BankOperatorId = APIClient.BankOperator.Id})); } [HttpGet] public IActionResult CreateCreditProgram() { ViewBag.Currencies = _currencyLogic.ReadList(null); return View(); } [HttpPost] public void CreateCreditProgram(List currencies, string name, float percent) { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } Dictionary CurrencyCreditPrograms = new(); foreach (int id in currencies) { var currency = _currencyLogic.ReadElement(new CurrencySearchModel { Id = id }); if (currency != null) CurrencyCreditPrograms.Add(currency.Id, currency); } _creditProgramLogic.Create(new CreditProgramBindingModel { BankOperatorId = APIClient.BankOperator.Id, CreditProgramCurrencies = CurrencyCreditPrograms, Name = name, Percent = percent}); Response.Redirect("CreditPrograms"); } [HttpGet] public IActionResult CreditProgram(int id) { return View(_creditProgramLogic.ReadElement(new CreditProgramSearchModel { Id = id })); } [HttpGet] public IActionResult CurrencyPurchase() { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } return View(_currencyPurchaseLogic.ReadList (new CurrencyPurchaseSearchModel { BankOperatorId = APIClient.BankOperator.Id })); } [HttpGet] public IActionResult CreateCurrencyPurchase() { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } ViewBag.Currencies = _currencyLogic.ReadList(null); return View(); } [HttpPost] public void CreateCurrencyPurchase(string amount, int currencyId) { if (APIClient.BankOperator == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } _currencyPurchaseLogic.Create(new CurrencyPurchaseBindingModel { BankOperatorId = APIClient.BankOperator.Id, Amount = (float)Convert.ToDouble(amount), CurrencyId = currencyId, }); Response.Redirect("CurrencyPurchases"); } public IActionResult CurrencyPurchases() { if (APIClient.BankOperator == null) { return Redirect("~/Home/Enter"); } return View(_currencyPurchaseLogic.ReadList(new CurrencyPurchaseSearchModel { BankOperatorId = APIClient.BankOperator.Id })); } } }