using ComputerShopImplementerApp.Models; using ComputerShopContracts.BindingModels; using ComputerShopContracts.ViewModels; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; using ComputerShopDataModels.Enums; using ComputerShopDataModels.Models; using ComputerShopContracts.SearchModels; using ComputerShopContracts.BusinessLogicContracts; using DocumentFormat.OpenXml.Bibliography; using Microsoft.AspNetCore.DataProtection.Repositories; namespace ComputerShopImplementerApp.Controllers { public class HomeController : Controller { private readonly ILogger _logger; private readonly IReportImplementerLogic _logic; public HomeController(ILogger logger, IReportImplementerLogic logic) { _logger = logger; _logic = logic; } public IActionResult Index() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } return View(/*APIUser.GetRequest>($"api/main/getorders?userId={APIUser.User.Id}")*/); } // ЗАКАЗЫ ЗАКАЗЫ ЗАКАЗЫ ЗАКАЗЫ ЗАКАЗЫ //!!!МБ ДОБАВИТЬ [HttpGet] public IActionResult Orders() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } return View(APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}")); } [HttpGet] public OrderViewModel GetOrder(int orderId) { if (APIUser.User == null) { Response.Redirect("Enter"); } var result = APIUser.GetRequest($"api/order/getorder?id={orderId}"); if (result == null) { return default; } return result; } [HttpGet] public IActionResult CreateOrder() { //!!!ПОТОМ УДАЛИТЬ //ViewBag.OrderStatuses = APIUser.GetRequest>("api/order/getorderstatuses"); return View(); } [HttpPost] public void CreateOrder(OrderStatus status, DateTime date) { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } //if (count <= 0) //{ // throw new Exception("Количество и сумма должны быть больше 0"); //} //if () if (date != DateTime.MinValue) { APIUser.PostRequest("api/order/createorder", new OrderBindingModel { UserId = APIUser.User.Id, Status = status, DateCreate = date, Sum = 0 }); } Response.Redirect("Orders"); //try //{ //} //catch (Exception) //{ // Response.Redirect("CreateOrder"); //} } [HttpGet] public IActionResult UpdateOrder() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); //ViewBag.Statuses = return View(); } //МБ ПОСТАВИТЬ int? и передавать order.Value [HttpPost] public void UpdateOrder(int order, OrderStatus status, DateTime date, double sum) { if (APIUser.User == null) { Response.Redirect("~/Home/Entry"); } //if (order == null) //{ // throw new Exception("Выберите заказ для изменения"); //} //if (status == null) //{ // throw new Exception("Выберите статус для заказа"); //} if (order > 0 && date != DateTime.MinValue) { APIUser.PostRequest("api/order/updateorder", new OrderBindingModel { Id = order, UserId = APIUser.User.Id, Status = status, DateCreate = date, Sum = sum }); } Response.Redirect("Orders"); } [HttpGet] public IActionResult DeleteOrder() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); //ViewBag.Statuses = return View(); } [HttpPost] public void DeleteOrder(int order) { if (APIUser.User == null) { Redirect("~/Home/Enter"); //throw new Exception("Вход только авторизованным"); } if (order > 0) { APIUser.PostRequest("api/order/deleteorder", new OrderBindingModel { Id = order }); } Response.Redirect("Orders"); } // ПАРТИИ ТОВАРОВ ПАРТИИ ТОВАРОВ ПАРТИИ ТОВАРОВ ПАРТИИ ТОВАРОВ ПАРТИИ ТОВАРОВ public async Task Shipments() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } var shipments = await APIUser.GetRequestShipmentAsync>($"api/shipment/getshipments?userId={APIUser.User.Id}"); return View(shipments); } [HttpGet] public async Task GetShipment(int shipmentId) { if (APIUser.User == null) { Redirect("~/Home/Enter"); //throw new Exception("Вход только авторизованным"); } //GetRequestShipmentAsync var result = await APIUser.GetRequestShipmentAsync($"api/shipment/getshipment?id={shipmentId}"); if (result == null) { return default; } return result; //try //{ //} //catch (Exception) //{ // Response.Redirect("Shipments"); // return default; //} } [HttpGet] public IActionResult CreateShipment() { if (APIUser.User == null) { Redirect("~/Home/Enter"); } ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); return View(); } [HttpPost] public void CreateShipment(string providerName, DateTime date, int[] orders) { if (APIUser.User == null) { Redirect("~/Home/Enter"); } // Создаем словарь из выбранных заказов var selectedOrders = new Dictionary(); foreach (var orderId in orders) { selectedOrders.Add(orderId, new OrderSearchModel { Id = orderId } as IOrderModel); //var orderModel = APIUser.GetRequest($"api/order/getorder?id={orderId}"); //selectedOrders.Add(orderId, orderModel); } if (!string.IsNullOrEmpty(providerName) && date != DateTime.MinValue && APIUser.User != null) { APIUser.PostRequest("api/shipment/createshipment", new ShipmentBindingModel { UserId = APIUser.User.Id, ProviderName = providerName, DateShipment = date, ShipmentOrders = selectedOrders }); } Response.Redirect("Shipments"); } //!!!МБ СДЕЛАТЬ ПО АНАЛОГИИ С public async Task Shipments() [HttpGet] public async Task UpdateShipment() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Shipments = await APIUser.GetRequestShipmentAsync>($"api/shipment/getshipments?userId={APIUser.User.Id}"); ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); return View(); } [HttpPost] public void UpdateShipment(int shipment, string providerName, DateTime date, int[] orders) { if (APIUser.User == null) { Redirect("~/Home/Enter"); } var selectedOrders = new Dictionary(); foreach (var orderId in orders) { selectedOrders.Add(orderId, new OrderSearchModel { Id = orderId } as IOrderModel); } if (shipment > 0 && !string.IsNullOrEmpty(providerName) && date != DateTime.MinValue && APIUser.User != null) { APIUser.PostRequest("api/shipment/updateshipment", new ShipmentBindingModel { Id = shipment, UserId = APIUser.User.Id, ProviderName = providerName, DateShipment = date, ShipmentOrders = selectedOrders }); } Response.Redirect("Shipments"); } [HttpGet] public async Task DeleteShipment() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); //throw new Exception("Вход только авторизованным"); } ViewBag.Shipments = await APIUser.GetRequestShipmentAsync>($"api/shipment/getshipments?userId={APIUser.User.Id}"); return View(); } //[HttpPost] //public void DeleteShipment(int shipment) //{ // if (APIUser.User == null) // { // throw new Exception("Вход только авторизованным"); // } // APIUser.PostRequest("api/shipment/deleteshipment", new ShipmentBindingModel // { // Id = shipment // }); // Response.Redirect("Shipments"); //} [HttpPost] public async Task DeleteShipment(int shipment) { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } if (shipment > 0) { await APIUser.PostRequestAsync("api/shipment/deleteshipment", new ShipmentBindingModel { Id = shipment }); } return Redirect("Shipments"); } // ЗАЯВКИ НА СБОРКИ ЗАЯВКИ НА СБОРКИ ЗАЯВКИ НА СБОРКИ ЗАЯВКИ НА СБОРКИ ЗАЯВКИ НА СБОРКИ //public IActionResult Requests() //{ // if (APIUser.User == null) // { // return Redirect("~/Home/Enter"); // } // return View(APIUser.GetRequest>($"api/request/getrequests?userId={APIUser.User.Id}")); //} //МБ ТАК Requests public async Task Requests() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } var requests = await APIUser.GetRequestRequestAsync>($"api/request/getrequests?userId={APIUser.User.Id}"); //var shipments = await APIUser.GetRequestShipmentAsync>($"api/shipment/getshipments?userId={APIUser.User.Id}"); return View(requests); } [HttpGet] public async Task GetRequest(int requestId) { if (APIUser.User == null) { Response.Redirect("~/Home/Enter"); } //GetRequestShipmentAsync var result = await APIUser.GetRequestRequestAsync($"api/request/getrequest?id={requestId}"); if (result == null) { return default; } return result; } [HttpGet] public IActionResult CreateRequest() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); return View(); } [HttpPost] public void CreateRequest(string clientFIO, DateTime date, int[] orders) { if (APIUser.User == null) { Redirect("~/Home/Enter"); //throw new Exception("Вход только авторизованным"); } // Создаем словарь из выбранных заказов var selectedOrders = new Dictionary(); foreach (var orderId in orders) { selectedOrders.Add(orderId, new OrderSearchModel { Id = orderId } as IOrderModel); } if (!string.IsNullOrEmpty(clientFIO) && date != DateTime.MinValue) { APIUser.PostRequest("api/request/createrequest", new RequestBindingModel { UserId = APIUser.User.Id, ClientFIO = clientFIO, DateRequest = date, RequestOrders = selectedOrders }); } Response.Redirect("Requests"); } [HttpGet] public async Task UpdateRequest() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); //throw new Exception("Вход только авторизованным"); } ViewBag.Requests = await APIUser.GetRequestRequestAsync>($"api/request/getrequests?userId={APIUser.User.Id}"); ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); return View(); } [HttpPost] public void UpdateRequest(int request, string clientFIO, DateTime date, int[] orders) { if (APIUser.User == null) { Response.Redirect("~/Home/Enter"); } var selectedOrders = new Dictionary(); foreach (var orderId in orders) { selectedOrders.Add(orderId, new OrderSearchModel { Id = orderId } as IOrderModel); } if (request > 0 && !string.IsNullOrEmpty(clientFIO) && date != DateTime.MinValue) { APIUser.PostRequest("api/request/updaterequest", new RequestBindingModel { Id = request, UserId = APIUser.User.Id, ClientFIO = clientFIO, DateRequest = date, RequestOrders = selectedOrders }); } Response.Redirect("Requests"); } [HttpGet] public async Task ConnectRequestAssembly() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Requests = await APIUser.GetRequestRequestAsync>($"api/request/getrequests?userId={APIUser.User.Id}"); //ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); ViewBag.Assemblies = APIUser.GetRequest>($"api/assembly/getassemblies"); return View(); } [HttpPost] public void ConnectRequestAssembly(int request, int assembly) { if (APIUser.User == null) { Redirect("~/Home/Enter"); } if (request > 0 && assembly > 0) { APIUser.PostRequest("api/request/connectRequestAssembly", new RequestBindingModel { Id = request, AssemblyId = assembly }); } Response.Redirect("Requests"); } [HttpGet] public async Task DeleteRequest() { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } ViewBag.Requests = await APIUser.GetRequestRequestAsync>($"api/request/getrequests?userId={APIUser.User.Id}"); return View(); } [HttpPost] public async Task DeleteRequest(int request) { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } if (request > 0) { await APIUser.PostRequestAsync("api/request/deleterequest", new RequestBindingModel { Id = request }); } return RedirectToAction("Requests"); } //ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ ОТЧЁТЫ [HttpGet] public IActionResult ReportOrdersAssembliesToFile() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); //ViewBag.Statuses = return View(); } [HttpPost] public void ReportOrdersAssembliesToFile(int[] orders, string type) { if (APIUser.User == null) { Redirect("Index"); } if (orders.Length > 0 && !string.IsNullOrEmpty(type)) { //Преобразование массива в список List ids = new List(); foreach (var item in orders) { ids.Add(item); } if (type == "docx") { APIUser.PostRequest("api/order/createreporttowordfile", new ReportBindingModel { Ids = ids, FileName = "C:\\!КУРСОВАЯ\\Сборки по выбранным заказам.docx" }); Response.Redirect("Index"); } if (type == "xlsx") { APIUser.PostRequest("api/order/createreporttoexcelfile", new ReportBindingModel { Ids = ids, FileName = "C:\\!КУРСОВАЯ\\Сборки по выбранным заказам.xlsx" }); Response.Redirect("Index"); } } Response.Redirect("Index"); } [HttpGet] public IActionResult ReportOrdersByDates() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } //ViewBag.Orders = APIUser.GetRequest>($"api/order/getorders?userId={APIUser.User.Id}"); //ViewBag.Statuses = return View(); } [HttpGet] public string GetOrdersReportByDates(DateTime dateFrom, DateTime dateTo) { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } if (dateFrom != DateTime.MinValue && dateTo != DateTime.MinValue) { List result; result = _logic.GetReportOrdersByDates(new ReportBindingModel { UserId = APIUser.User.Id, DateFrom = dateFrom, DateTo = dateTo }); string table = ""; //МБ НЕ НДО ПРИСВАИВАТЬ КЛАСС u-table-entity table += $""; table += ""; //ID заказа table += ""; //Дата заказа table += ""; //Стоимость заказа table += ""; //Статус заказа table += ""; //ID заявки table += ""; //ФИО клиента table += ""; //Дата заявки table += ""; //Название сборки table += ""; //Категория сборки table += ""; //Цена сборки table += ""; table += ""; //МБ НЕ НДО ПРИСВАИВАТЬ КЛАСС table += ""; //МБ ИЗМЕНИТЬ ВЫСОТУ table += ""; //МБ ИЗМЕНИТЬ КЛАСС table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += ""; table += ""; //МБ НЕ ПРИСВАИВАТЬ КЛАСС ИЛИ СДЕЛАТЬ ПЕРЕД ВНУТРЕННИМ ЦИКЛОМ table += ""; foreach (var order in result) { if (order.RequestsAssemblies.Count < 1) { //МБ ПОМЕНЯТЬ ВЫСОТУ table += ""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += ""; } foreach (var request in order.RequestsAssemblies) { //МБ ПОМЕНЯТЬ ВЫСОТУ table += ""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; table += $""; //МБ тут не будет 0 у непривязанных сборок table += $""; table += ""; } } table += "
ID заказаДата заказаСтоимость заказаСтатус заказаID заявкиФИО клиентаДата заявкиНазвание сборкиКатегория сборкиЦена сборки
{order.OrderId.ToString()}{order.DateCreateOrder.ToShortDateString()}{order.OrderSum.ToString()}{order.OrderStatus.ToString()}{"Заказ без заявок"}{"Неизвестно"}{"Неизвестно"}{"Неизвестно"}{"Неизвестно"}{"Неизвестно"}
{order.OrderId.ToString()}{order.DateCreateOrder.ToShortDateString()}{order.OrderSum.ToString()}{order.OrderStatus.ToString()}{request.RequestId.ToString()}{request.ClientFIO.ToString()}{request.DateRequest.ToShortDateString()}{(string.IsNullOrEmpty(request.AssemblyName) ? "Сборка не привязана" : request.AssemblyName)}{(string.IsNullOrEmpty(request.AssemblyCategory) ? "Неизвестная категория" : request.AssemblyCategory)}{request.AssemblyPrice.ToString()}
"; return table; } return ""; } [HttpPost] public void ReportOrdersByDates(DateTime dateFrom, DateTime dateTo) { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } //if (string.IsNullOrEmpty(organiserEmail)) //{ // throw new Exception("Email пуст"); //} if (dateFrom != DateTime.MinValue && dateTo != DateTime.MinValue) { APIUser.PostRequest("api/order/CreateReportToPDFFile", new ReportBindingModel { FileName = "C:\\!КУРСОВАЯ\\Отчёт за период.pdf", DateFrom = dateFrom, DateTo = dateTo, UserId = APIUser.User.Id }); APIUser.PostRequest("api/order/SendPDFToMail", new MailSendInfoBindingModel { //!!!МБ СЮДА ПЕРЕДАВАТЬ ПОЧТУ, КОТОРУЮ ВВОДЯТ НА СТРАНИЦЕ MailAddress = APIUser.User.Email, Subject = "Отчет за период", Text = "Отчет по заказам с " + dateFrom.ToShortDateString() + " по " + dateTo.ToShortDateString() }); } Response.Redirect("Index"); } // ОСТАЛЬНОЕ ОСТАЛЬНОЕ ОСТАЛЬНОЕ ОСТАЛЬНОЕ ОСТАЛЬНОЕ ОСТАЛЬНОЕ ОСТАЛЬНОЕ [HttpGet] public IActionResult Privacy() { if (APIUser.User == null) { return Redirect("~/Home/Enter"); } return View(APIUser.User); } [HttpPost] public void Privacy(string login, string password, string email) { try { if (APIUser.User == null) { throw new Exception("Вход только авторизованным"); } if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(email)) { throw new Exception("Введите логин, пароль и почту"); } APIUser.PostRequest("api/user/updatedata", new UserBindingModel { Id = APIUser.User.Id, Login = login, Password = password, Email = email }); APIUser.User.Login = login; APIUser.User.Password = password; APIUser.User.Email = email; Response.Redirect("Index"); } catch (Exception) { 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)) //{ // Response.Redirect("Enter"); //} //APIUser.User = APIUser.GetRequest($"api/user/loginimplementer?login={login}&password={password}"); //if (APIUser.User == null) //{ // Response.Redirect("Enter"); //} //Response.Redirect("Index"); try { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) { throw new Exception("Введите логин и пароль"); } APIUser.User = APIUser.GetRequest($"api/user/loginimplementer?login={login}&password={password}"); if (APIUser.User == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } catch (Exception) { Response.Redirect("Enter"); } } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string login, string password, string email) { try { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(email)) { throw new Exception("Введите логин, пароль и почту"); } APIUser.PostRequest("api/user/registerimplementer", new UserBindingModel { Login = login, Password = password, Email = email }); Response.Redirect("Enter"); return; } catch (Exception) { Response.Redirect("Register"); } } } }