diff --git a/ShipyardClientApp/Controllers/HomeController.cs b/ShipyardClientApp/Controllers/HomeController.cs new file mode 100644 index 0000000..2f50dd0 --- /dev/null +++ b/ShipyardClientApp/Controllers/HomeController.cs @@ -0,0 +1,152 @@ +using Microsoft.AspNetCore.Mvc; +using ShipyardClientApp.Models; +using ShipyardContracts.BindingModels; +using ShipyardContracts.ViewModels; +using System.Diagnostics; + +namespace ShipyardClientApp.Controllers +{ + public class HomeController : Controller + { + private readonly ILogger _logger; + + public HomeController(ILogger logger) + { + _logger = logger; + } + + public IActionResult Index() + { + if (APIClient.Client == null) + { + return Redirect("~/Home/Enter"); + } + return + View(APIClient.GetRequest>($"api/main/getorders?clientId={APIClient.Client.Id}")); + } + + [HttpGet] + public IActionResult Privacy() + { + if (APIClient.Client == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.Client); + } + + [HttpPost] + public void Privacy(string login, string password, string fio) + { + if (APIClient.Client == null) + { + throw new Exception("вход только авторизованным"); + } + if (string.IsNullOrEmpty(login) || + string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) + { + throw new Exception("Введите логин, пароль и ФИО"); + } + APIClient.PostRequest("api/client/updatedata", new + ClientBindingModel + { + Id = APIClient.Client.Id, + ClientFIO = fio, + Email = login, + Password = password + }); + APIClient.Client.ClientFIO = fio; + APIClient.Client.Email = login; + APIClient.Client.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.Client = APIClient.GetRequest($"api/client/login?login={login}&password={password}"); + if (APIClient.Client == null) + { + throw new Exception("Неверный логин/пароль"); + } + Response.Redirect("Index"); + } + [HttpGet] + public IActionResult Register() + { + return View(); + } + [HttpPost] + public void Register(string login, string password, string fio) + { + if (string.IsNullOrEmpty(login) || + string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) + { + throw new Exception("Введите логин, пароль и ФИО"); + } + APIClient.PostRequest("api/client/register", new + ClientBindingModel + { + ClientFIO = fio, + Email = login, + Password = password + }); + Response.Redirect("Enter"); + return; + } + [HttpGet] + public IActionResult Create() + { + ViewBag.Ships = + APIClient.GetRequest>("api/main/getshiplist"); + return View(); + } + [HttpPost] + public void Create(int ship, int count) + { + if (APIClient.Client == null) + { + throw new Exception("Вход только авторизованным"); + } + if (count <= 0) + { + throw new Exception("Количество и сумма должны быть больше 0"); + } + APIClient.PostRequest("api/main/createorder", new + OrderBindingModel + { + ClientId = APIClient.Client.Id, + ShipId = ship, + Count = count, + Sum = Calc(count, ship) + }); + Response.Redirect("Index"); + } + [HttpPost] + public double Calc(int count, int ship) + { + var _ship = + APIClient.GetRequest($"api/main/getship?productid={ship}"); + return Math.Round(count * (_ship?.Price ?? 1), 2); + } + } +}