PIbd-21_BatylkinaAO_MusoevD.../Canteen/CanteenManagerApp/Controllers/HomeController.cs

531 lines
18 KiB
C#
Raw Permalink Normal View History

using CanteenContracts.BindingModels;
2023-05-17 17:02:26 +04:00
using CanteenContracts.SearchModel;
using CanteenContracts.View;
2023-05-17 17:59:48 +04:00
using CanteenContracts.ViewModels;
2023-05-17 17:02:26 +04:00
using CanteenDatabaseImplement.Models;
using CanteenDataModels.Models;
2023-04-09 19:05:54 +04:00
using CanteenManagerApp.Models;
2023-05-17 17:02:26 +04:00
using FluentNHibernate.Conventions;
2023-04-09 19:05:54 +04:00
using Microsoft.AspNetCore.Mvc;
2023-05-17 17:02:26 +04:00
using System.Data;
2023-04-09 19:05:54 +04:00
using System.Diagnostics;
namespace CanteenManagerApp.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
2023-05-17 17:02:26 +04:00
[HttpGet]
2023-04-09 19:05:54 +04:00
public IActionResult Index()
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-04-09 19:05:54 +04:00
return View();
}
2023-05-17 17:02:26 +04:00
[HttpGet]
public IActionResult Enter()
{
return View();
}
2023-04-09 19:05:54 +04:00
2023-05-17 17:02:26 +04:00
[HttpPost]
public void Enter(string login, string password)
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password))
{
throw new Exception("Введите логин и пароль");
}
APIClient.Manager = APIClient.GetRequest<ManagerViewModel>($"api/manager/login?login={login}&password={password}");
if (APIClient.Manager == null)
{
2023-05-17 17:02:26 +04:00
throw new Exception("Неверный логин/пароль");
}
2023-05-17 17:02:26 +04:00
Response.Redirect("Index");
2023-04-09 19:05:54 +04:00
}
[HttpGet]
2023-05-17 17:02:26 +04:00
public IActionResult Register()
2023-04-09 19:05:54 +04:00
{
return View();
}
2023-05-17 17:02:26 +04:00
[HttpPost]
public void Register(string login, string password, string fio, string phoneNumber)
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio))
{
throw new Exception("Введите логин, пароль и ФИО");
}
APIClient.PostRequest("api/manager/register", new ManagerBindingModel
{
FIO = fio,
Login = login,
Password = password,
PhoneNumber = phoneNumber
});
Response.Redirect("Enter");
2023-04-09 19:05:54 +04:00
}
2023-05-17 17:02:26 +04:00
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult CookList()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.CookList = APIClient.GetRequest<List<CookViewModel>>($"api/main/getcooklist?managerId={APIClient.Manager.Id}");
2023-04-09 19:05:54 +04:00
return View();
}
2023-05-17 17:02:26 +04:00
2023-04-09 19:05:54 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult CookCreate()
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-04-09 19:05:54 +04:00
return View();
}
2023-05-17 17:02:26 +04:00
[HttpPost]
2023-05-18 01:40:11 +04:00
public void CookCreate(string FIO, string position)
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
if (string.IsNullOrEmpty(FIO))
{
throw new Exception("ФИО не должно быть пустым");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/cookcreate", new CookBindingModel
{
ManagerId = APIClient.Manager.Id,
FIO = FIO,
Position = position
});
2023-05-18 01:40:11 +04:00
Response.Redirect("CookList");
}
2023-05-17 17:02:26 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult CookDelete()
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.CookList = APIClient.GetRequest<List<CookViewModel>>($"api/main/getcooklist?managerId={APIClient.Manager.Id}");
return View();
}
2023-05-18 01:40:11 +04:00
[HttpPost]
public void CookDelete(int id)
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
if (id <= 0)
{
throw new Exception("Выберите повара");
}
APIClient.PostRequest("api/main/CookDelete", new CookBindingModel
{
Id = id
});
2023-04-09 19:05:54 +04:00
2023-05-18 01:40:11 +04:00
Response.Redirect("CookList");
}
2023-04-09 19:05:54 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult CookUpdate()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.CookList = APIClient.GetRequest<List<CookViewModel>>($"api/main/getcooklist?managerId={APIClient.Manager.Id}");
2023-05-17 17:02:26 +04:00
return View();
}
[HttpPost]
2023-05-18 01:40:11 +04:00
public void CookUpdate(int Id, string FIO, string position)
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/CookUpdate", new CookBindingModel
2023-05-17 17:02:26 +04:00
{
2023-05-18 01:40:11 +04:00
Id = Id,
2023-05-17 17:02:26 +04:00
FIO = FIO,
2023-05-18 01:40:11 +04:00
Position = position,
ManagerId = APIClient.Manager.Id
2023-05-17 17:02:26 +04:00
});
2023-05-18 01:40:11 +04:00
Response.Redirect("CookList");
2023-05-17 17:02:26 +04:00
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult ProductList()
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.ProductList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
2023-04-09 19:05:54 +04:00
return View();
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult ProductCreate()
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.CookList = APIClient.GetRequest<List<CookViewModel>>($"api/main/getcooklist?managerId={APIClient.Manager.Id}");
2023-04-09 19:05:54 +04:00
return View();
}
2023-05-17 17:02:26 +04:00
[HttpPost]
2023-05-18 01:40:11 +04:00
public void ProductCreate(string name, double price)
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-04-09 19:05:54 +04:00
2023-05-17 17:02:26 +04:00
if (string.IsNullOrEmpty(name))
{
throw new Exception("Наименование продукта не должно быть пустым");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/ProductCreate", new ProductBindingModel
2023-05-17 17:02:26 +04:00
{
ManagerId = APIClient.Manager.Id,
ProductName = name,
Price = price
});
2023-05-18 01:40:11 +04:00
Response.Redirect("ProductList");
2023-05-17 17:02:26 +04:00
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult ProductAddCooks()
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.ProductList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
ViewBag.CookList = APIClient.GetRequest<List<CookViewModel>>($"api/main/getcooklist?managerId={APIClient.Manager.Id}");
return View();
}
2023-05-17 17:02:26 +04:00
[HttpPost]
2023-05-18 01:40:11 +04:00
public void ProductAddCooks(int selectedProduct, int selectedCook)
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
2023-05-17 17:02:26 +04:00
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-05-17 17:02:26 +04:00
if (selectedProduct <= 0)
{
throw new Exception("Должен быть выбран продукт");
}
if (selectedCook <= 0)
{
throw new Exception("Должен быть выбран повар");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/ProductAddCooks", Tuple.Create
2023-05-17 17:02:26 +04:00
(
new ProductSearchModel { Id = selectedProduct },
new CookViewModel { Id = selectedCook }
));
2023-05-18 01:40:11 +04:00
Response.Redirect("ProductList");
2023-05-17 17:02:26 +04:00
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult ProductDelete()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
2023-05-17 17:02:26 +04:00
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.ProductList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
2023-05-20 00:18:48 +04:00
return View();
2023-05-18 01:40:11 +04:00
}
[HttpPost]
public void ProductDelete(int id)
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
if (id <= 0)
{
throw new Exception("Выберите продукт");
}
APIClient.PostRequest("api/main/ProductDelete", new ProductBindingModel
{
Id = id
});
Response.Redirect("ProductList");
2023-05-17 17:02:26 +04:00
}
2023-05-17 17:02:26 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult ProductUpdate()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.ProductList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
2023-05-17 17:02:26 +04:00
return View();
}
[HttpPost]
2023-05-18 01:40:11 +04:00
public void ProductUpdate(int Id, string name, double price)
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/productupdate", new ProductBindingModel
2023-05-17 17:02:26 +04:00
{
2023-05-18 01:40:11 +04:00
Id = Id,
ProductName = name,
Price = price,
ManagerId = APIClient.Manager.Id
2023-05-17 17:02:26 +04:00
});
2023-05-18 01:40:11 +04:00
Response.Redirect("ProductList");
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult DishList()
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.DishList = APIClient.GetRequest<List<DishViewModel>>($"api/main/GetDishList?managerId={APIClient.Manager.Id}");
2023-05-17 17:02:26 +04:00
return View();
}
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult DishCreate()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
return View();
}
[HttpPost]
2023-06-19 20:11:35 +04:00
public void DishCreate(string name, int price)
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
2023-05-17 17:02:26 +04:00
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-05-18 01:40:11 +04:00
if (string.IsNullOrEmpty(name))
{
2023-05-17 17:02:26 +04:00
throw new Exception("Наименование блюда не должно быть пустым");
}
2023-06-19 20:11:35 +04:00
if (price <= 0)
{
throw new Exception("Цена блюда должна быть больше нуля");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/dishcreate", new DishBindingModel
2023-05-17 17:02:26 +04:00
{
ManagerId = APIClient.Manager.Id,
2023-06-19 20:11:35 +04:00
DishName = name,
Price = price
});
2023-05-18 01:40:11 +04:00
Response.Redirect("DishList");
}
[HttpGet]
public IActionResult DishAddProducts()
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.DishList = APIClient.GetRequest<List<DishViewModel>>($"api/main/getdishlist?managerId={APIClient.Manager.Id}");
ViewBag.productList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
return View();
}
[HttpPost]
public void DishAddProducts(int selectedDish, int selectedProduct, int count)
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
if (selectedDish <= 0)
{
throw new Exception("Должно быть выбрано блюдо");
}
if (selectedProduct <= 0)
{
throw new Exception("Должен быть выбран продукт");
}
if (count <= 0)
{
throw new Exception("Количество продукта должно быть больше 0");
}
2023-05-19 03:39:58 +04:00
ProductViewModel product = APIClient.GetRequest<ProductViewModel>($"api/main/getproduct?id={selectedProduct}");
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/dishaddproducts", Tuple.Create
(
2023-05-19 03:39:58 +04:00
new DishBindingModel { Id = selectedDish },
new ProductViewModel { Id = selectedProduct, Price = product.Price },
2023-05-18 01:40:11 +04:00
count
));
Response.Redirect("DishList");
2023-05-17 17:02:26 +04:00
}
2023-05-17 17:02:26 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult DishDelete()
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.DishList = APIClient.GetRequest<List<DishViewModel>>($"api/main/getdishlist?managerId={APIClient.Manager.Id}");
return View();
}
2023-05-18 01:40:11 +04:00
[HttpPost]
public void DishDelete(int id)
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
if (id <= 0)
{
throw new Exception("Выберите блюдо");
}
APIClient.PostRequest("api/main/DishDelete", new DishBindingModel
{
Id = id
});
2023-05-18 01:40:11 +04:00
Response.Redirect("ProductList");
}
2023-05-17 17:02:26 +04:00
[HttpGet]
2023-05-18 01:40:11 +04:00
public IActionResult DishUpdate()
2023-04-09 19:05:54 +04:00
{
2023-05-17 17:02:26 +04:00
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
2023-05-18 01:40:11 +04:00
ViewBag.DishList = APIClient.GetRequest<List<DishViewModel>>($"api/main/getdishlist?managerId={APIClient.Manager.Id}");
2023-05-17 17:02:26 +04:00
return View();
2023-04-09 19:05:54 +04:00
}
2023-05-17 17:02:26 +04:00
[HttpPost]
2023-05-18 01:40:11 +04:00
public void DishUpdate(int Id, string name, double price)
2023-05-17 17:02:26 +04:00
{
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
2023-05-18 01:40:11 +04:00
APIClient.PostRequest("api/main/DishUpdate", new DishBindingModel
2023-05-17 17:02:26 +04:00
{
2023-05-18 01:40:11 +04:00
Id = Id,
DishName = name,
Price = price,
ManagerId = APIClient.Manager.Id
2023-05-17 17:02:26 +04:00
});
2023-05-18 01:40:11 +04:00
Response.Redirect("DishList");
2023-05-17 17:02:26 +04:00
}
2023-05-17 17:59:48 +04:00
[HttpGet]
public IActionResult Graphic()
{
if (APIClient.Manager == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Model = APIClient.GetRequest<List<GraphicViewModel>>($"api/main/GetGraphic");
return View();
}
2023-06-14 22:47:30 +04:00
[HttpGet]
public IActionResult Report()
{
2023-06-19 09:12:18 +04:00
ViewBag.ProductList = APIClient.GetRequest<List<ProductViewModel>>($"api/main/getproductlist?managerId={APIClient.Manager.Id}");
2023-06-14 22:47:30 +04:00
return View(new ReportBindingModel());
}
[HttpPost]
public void ReportPdf(ReportBindingModel model)
{
model.UserId = APIClient.Manager.Id;
2023-06-19 20:11:35 +04:00
APIClient.PostRequest("api/main/SaveCooksToPDF", model);
2023-06-14 22:47:30 +04:00
Response.Redirect("Index");
}
[HttpPost]
public void ReportXsl(ReportBindingModel model)
{
model.UserId = APIClient.Manager.Id;
2023-06-19 20:11:35 +04:00
APIClient.PostRequest("api/main/SaveOrdersToXSL", model);
2023-06-14 22:47:30 +04:00
Response.Redirect("Index");
}
[HttpPost]
public void ReportWord(ReportBindingModel model)
{
model.UserId = APIClient.Manager.Id;
APIClient.PostRequest("api/main/SaveOrdersToWORD", model);
Response.Redirect("Index");
}
[HttpPost]
public void ReportEmail(ReportBindingModel model)
{
2023-06-19 09:12:18 +04:00
if (APIClient.Manager == null)
{
throw new Exception("Доступ возможен только авторизованным пользователям");
}
model.UserId = APIClient.Manager.Id;
APIClient.PostRequest($"api/manager/SendEmail", new MailSendInfoBindingModel
{
MailAddress = APIClient.Manager.Login,
Subject = "Отчет",
report = model
});
Response.Redirect("Report");
2023-06-14 22:47:30 +04:00
}
2023-04-09 19:05:54 +04:00
}
}