using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using FurnitureContracts.BindingModels; using FurnitureContracts.BusinessLogicsContracts; using FurnitureContracts.SearchModels; using FurnitureContracts.ViewModel; using FurnitureFactoryDataBaseImplement.Models; using FurnitureFactoryDataModels.Models; using ManagerWebClient.Models; using System.Diagnostics; using System.IO; namespace ManagerWebClient.Controllers { public class HomeController : Controller { private readonly ILogger _logger; private readonly IHeadsetModuleLogic _headsetmodule; private readonly IHeadsetLogic _headset; private readonly IOrderLogic _order; private readonly ISalesSalonsLogic _salessalon; private readonly IManagerLogic _manager; public HomeController(ILogger logger, IHeadsetLogic headset, IOrderLogic order , IHeadsetModuleLogic headsetmodule , ISalesSalonsLogic salessalon, IManagerLogic manager) { _logger = logger; _headset = headset; _order = order; _headsetmodule = headsetmodule; _salessalon = salessalon; _manager = manager; } public IActionResult Index() { if (APIClient.Manager == null) { return Redirect("~/Home/Enter"); } return View(); } [HttpGet] public IActionResult Privacy() { if (APIClient.Manager == null) { return Redirect("~/Home/Enter"); } return View(APIClient.Manager); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } [HttpPost] public void Privacy(string name, string email,string login, string password) { if (APIClient.Manager == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(name) || string.IsNullOrEmpty(email)) { throw new Exception("Введите данные"); } _manager.Update( new ManagerBindingModel { Id = APIClient.Manager.Id, UserName = name, Email = login, Password = password, Login = login }); APIClient.Manager.UserName = name; APIClient.Manager.Email = email; APIClient.Manager.Password = password; APIClient.Manager.Login = login; Response.Redirect("Index"); } [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.Manager = _manager.ReadElement(new ManagerSearchModel { Login = login, Password = password }); if (APIClient.Manager == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string name, string email, string login, string password) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(name) || string.IsNullOrEmpty(email)) { throw new Exception("Введите логин, пароль и ФИО, почту"); } _manager.Create( new ManagerBindingModel { UserName = name, Email = login, Password = password, Login = login }); Response.Redirect("Enter"); return; } [HttpGet] public IActionResult SalesSalons() { if (APIClient.Manager == null) { return Redirect("~/Home/Enter"); } return View(_salessalon.ReadList(new SalesSalonsSearchModel { ManagerId = APIClient.Manager.Id})); } [HttpGet] public IActionResult CreateSalesSalon() { return View(); } [HttpPost] public void CreateSalesSalon(string name, string address) { if (APIClient.Manager == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(address)) { throw new Exception("Введите название и адрес"); } _salessalon.Create( new SalesSalonsBindingModel { ManagerId = APIClient.Manager.Id, Name = name, Address = address }); Response.Redirect("SalesSalons"); } [HttpGet] public IActionResult SalesSalonSetting(int id) { return View(_salessalon.ReadElement(new SalesSalonsSearchModel { Id = id})); } [HttpPost] public void UpdateSalesSalon(int id,string name, string address) { if (string.IsNullOrEmpty(name)) { throw new Exception("Нет названия"); } if (string.IsNullOrEmpty(address)) { throw new Exception("Нет адреса"); } _salessalon.Update( new SalesSalonsBindingModel { Id = id, Name = name, Address = address, ManagerId = APIClient.Manager.Id, }); Response.Redirect("/Home/SalesSalons"); } public void DeleteSalesSalon(int id) { _salessalon.Delete(new SalesSalonsBindingModel { Id = id, }); Response.Redirect("/Home/SalesSalons"); } [HttpGet] public IActionResult Headsetes() { if (APIClient.Manager == null) { return Redirect("~/Home/Enter"); } return View(_headset.ReadList(new HeadsetSearchModel { ManagerId = APIClient.Manager.Id})); } [HttpGet] public IActionResult CreateHeadset() { ViewBag.HeadsetModules = _headsetmodule.ReadList(null); var list = _salessalon.ReadList(new SalesSalonsSearchModel { ManagerId = APIClient.Manager.Id}); var simpSalesSalon = list.Select(x => new { SalesSalonId = x.Id, SalesSalonName = x.Name }); ViewBag.SalesSalons = new MultiSelectList(simpSalesSalon, "SalesSalonId", "SalesSalonName"); return View(); } [HttpPost] public void CreateHeadset(string title, string size, string dateCreate, int headsetmodule, int[] salessalons ) { if (APIClient.Manager == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (string.IsNullOrEmpty(title) && string.IsNullOrEmpty(size) || string.IsNullOrEmpty(dateCreate) || headsetmodule <=0 || salessalons.Length==0) { throw new Exception("Введите название и размер"); } Dictionary headsetSalesSalons = new Dictionary(); foreach(int id in salessalons) { headsetSalesSalons.Add(id,_salessalon.ReadElement(new SalesSalonsSearchModel { Id = id})); } _headset.Create(new HeadsetBindingModel { ManagerId = APIClient.Manager.Id, Title = title, Size = size, HeadsetModuleId = headsetmodule, HeadsetSalesSalons = headsetSalesSalons }) ; Response.Redirect("Headsetes"); } [HttpGet] public IActionResult HeadsetSetting(int id) { var headset = _headset.ReadElement(new HeadsetSearchModel { Id = id }); var salessalons = _salessalon.ReadList(new SalesSalonsSearchModel { ManagerId = APIClient.Manager.Id}).Select(x => new {SalesSalonId = x.Id, SalesSalonName = x.Name}).ToList(); var selectedSalesSalons = headset.HeadsetSalesSalons.Select(x => x.Key).ToArray(); ViewBag.SalesSalons = new MultiSelectList(salessalons, "SalesSalonId", "SalesSalonName", selectedSalesSalons); ViewBag.HeadsetModules = _headsetmodule.ReadList(null); return View(headset); } [HttpPost] public void UpdateHeadset(int idHeadset,string title, string size, int headsetmodule, int[] salessalons) { if (string.IsNullOrEmpty(title)) { throw new Exception("Нет названия"); } if (string.IsNullOrEmpty(size)) { throw new Exception("Нет размера"); } if (headsetmodule <= 0) { throw new Exception("Нет модуля гарнитура"); } if (salessalons.Length == 0) { throw new Exception("Нет салонов продаж"); } Dictionary headsetSalesSalons = new Dictionary(); foreach (int id in salessalons) { headsetSalesSalons.Add(id, _salessalon.ReadElement(new SalesSalonsSearchModel { Id = id })); } _headset.Update(new HeadsetBindingModel { Id = idHeadset, ManagerId = APIClient.Manager.Id, Title = title, Size = size, HeadsetModuleId = headsetmodule, HeadsetSalesSalons = headsetSalesSalons }); Response.Redirect("/Home/Headsetes"); } public void DeleteHeadset(int id) { _headset.Delete( new HeadsetBindingModel { Id = id, }); Response.Redirect("/Home/Headsetes"); } [HttpGet] public IActionResult Orders() { if (APIClient.Manager == null) { return Redirect("~/Home/Enter"); } return View(_order.ReadList(new OrderSearchModel { ManagerId = APIClient.Manager.Id })); } [HttpGet] public IActionResult CreateOrder() { var list = _salessalon.ReadList(new SalesSalonsSearchModel { ManagerId = APIClient.Manager.Id }); var simpSalesSalon = list.Select(x => new { SalesSalonId = x.Id, SalesSalonName = x.Name }); ViewBag.SalesSalons = new MultiSelectList(simpSalesSalon, "SalesSalonId", "SalesSalonName"); return View(); } [HttpPost] public void CreateOrder(string title, string status, string dateCreate, int[] salessalons) { if (APIClient.Manager == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (string.IsNullOrEmpty(title) && string.IsNullOrEmpty(status) || string.IsNullOrEmpty(dateCreate)|| salessalons.Length == 0) { throw new Exception("Введите название и статус"); } Dictionary orderSalesSalons = new Dictionary(); foreach (int id in salessalons) { orderSalesSalons.Add(id, _salessalon.ReadElement(new SalesSalonsSearchModel { Id = id })); } _order.Create(new OrdersBindingModel { ManagerId = APIClient.Manager.Id, Title = title, Status = status, Date = DateTime.SpecifyKind(DateTime.Parse(dateCreate), DateTimeKind.Utc), OrdersSalesSalons = orderSalesSalons }); Response.Redirect("Orders"); } [HttpGet] public IActionResult OrderSetting(int id) { var order = _order.ReadElement(new OrderSearchModel { Id = id }); var salessalons = _salessalon.ReadList(new SalesSalonsSearchModel { ManagerId = APIClient.Manager.Id }).Select(x => new { SalesSalonId = x.Id, SalesSalonName = x.Name }).ToList(); var selectedSalesSalons = order.OrdersSalesSalons.Select(x => x.Key).ToArray(); ViewBag.SalesSalons = new MultiSelectList(salessalons, "SalesSalonId", "SalesSalonName", selectedSalesSalons); return View(order); } [HttpPost] public void UpdateOrder(int idHeadset, string title, string status, string dateCreate, int[] salessalons) { if (string.IsNullOrEmpty(title)) { throw new Exception("Нет названия"); } if (string.IsNullOrEmpty(status)) { throw new Exception("Нет статуса"); } if (string.IsNullOrEmpty(dateCreate)) { throw new Exception("Нет даты"); } if (salessalons.Length == 0) { throw new Exception("Нет салонов продаж"); } Dictionary orderSalesSalons = new Dictionary(); foreach (int id in salessalons) { orderSalesSalons.Add(id, _salessalon.ReadElement(new SalesSalonsSearchModel { Id = id })); } _order.Update(new OrdersBindingModel { Id = idHeadset, ManagerId = APIClient.Manager.Id, Title = title, Status = status, Date = DateTime.SpecifyKind(DateTime.Parse(dateCreate), DateTimeKind.Utc), OrdersSalesSalons = orderSalesSalons }); Response.Redirect("/Home/Orders"); } public void DeleteOrder(int id) { _order.Delete(new OrdersBindingModel { Id = id, }); Response.Redirect("/Home/Orders"); } public IActionResult Reports() { return View(); } } }