using HotelAdministratorApp.Models; using HotelContracts.BindingModels; using HotelContracts.BusinessLogicsContracts; using HotelContracts.SearchModels; using HotelContracts.ViewModels; using HotelDataBaseImplement.Models; using HotelDataModels.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using System.Diagnostics; using System.Numerics; namespace HotelAdministratorApp.Controllers { public class HomeController : Controller { private readonly ILogger _logger; private readonly IDinnerLogic _dinner; public HomeController(ILogger logger, IDinnerLogic dinner) { _logger = logger; _dinner = dinner; } public IActionResult Index() { return View(); } public IActionResult Dinners() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getdinnerlist?administratorId={APIClient.Administrator.Id}")); } public IActionResult Rooms() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getroomlist?administratorId={APIClient.Administrator.Id}")); } public IActionResult ConferenceBookings() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getConferenceBookinglist?administratorId={APIClient.Administrator.Id}")); } public IActionResult ConferenceBookingToConference() { return View(); } [HttpGet] public IActionResult Privacy() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } return View(APIClient.Administrator); } [HttpPost] public void Privacy(string login, string email, string password, string fio, string phone) { if (APIClient.Administrator == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(phone)) { throw new Exception("Введите логин, пароль и ФИО"); } APIClient.PostRequest("api/administrator/updatedata", new AdministratorBindingModel { Id = APIClient.Administrator.Id, AdministratorFIO = fio, AdministratorLogin = login, AdministratorPassword = password, AdministratorEmail = email, AdministratorPhone = phone }); APIClient.Administrator.AdministratorFIO = fio; APIClient.Administrator.AdministratorLogin = login; APIClient.Administrator.AdministratorPassword = password; APIClient.Administrator.AdministratorEmail = email; APIClient.Administrator.AdministratorPhone = phone; Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string fio, string login, string email, string password, string phone) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(phone) || string.IsNullOrEmpty(email)) { throw new Exception("Введите все данные"); } APIClient.PostRequest("api/administrator/register", new AdministratorBindingModel { AdministratorFIO = fio, AdministratorLogin = login, AdministratorPassword = password, AdministratorEmail = email, AdministratorPhone = phone }); Response.Redirect("Enter"); return; } [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.Administrator = APIClient.GetRequest($"api/administrator/login?login={login}&password={password}"); if (APIClient.Administrator == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } public IActionResult AddDinnerRoomToFiles() { return View(); } public IActionResult AddDinnerToFile() { return View(); } public IActionResult CreateDinner() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } return View(); } [HttpPost] public void CreateDinner(double dinnerPrice, string dinnerName, int dinnerСalorie) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(dinnerName) || dinnerPrice<=0 || dinnerСalorie<=0) { throw new Exception("Введите данные"); } APIClient.PostRequest("api/main/createdinner", new DinnerBindingModel { DinnerPrice = dinnerPrice, DinnerName = dinnerName, DinnerСalorieСontent = dinnerСalorie, AdministratorId = APIClient.Administrator.Id, }); Response.Redirect("Dinners"); } public IActionResult UpdateDinner() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } ViewBag.Dinners = APIClient.GetRequest>($"api/main/getdinnerlist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void UpdateDinner(int dinner, string dinnerName, double dinnerPrice, int dinnerСalorie) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(dinnerName) || string.IsNullOrEmpty(dinnerPrice.ToString()) || string.IsNullOrEmpty(dinnerСalorie.ToString())) { throw new Exception("Данные пустые"); } APIClient.PostRequest("api/main/updatedinner", new DinnerBindingModel { Id = dinner, DinnerName = dinnerName, DinnerPrice = dinnerPrice, DinnerСalorieСontent = dinnerСalorie, AdministratorId = APIClient.Administrator.Id, }); Response.Redirect("Dinners"); } public IActionResult DeleteDinner() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } ViewBag.Dinners = APIClient.GetRequest>($"api/main/getdinnerlist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void DeleteDinner(int dinner) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } APIClient.PostRequest("api/main/deletedinner", new DinnerBindingModel { Id = dinner }); Response.Redirect("Dinners"); } [HttpGet] public DinnerViewModel? GetDinner(int dinnerId) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } var result = APIClient.GetRequest($"api/main/getdinner?dinnerid={dinnerId}"); if (result == null) { return default; } return result; } public IActionResult CreateRoom() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } var list = _dinner.ReadList(new DinnerSearchModel { AdministratorId = APIClient.Administrator.Id }); var simpDinner = list.Select(x => new { DinnerId = x.Id, DinnerName = x.DinnerName }); ViewBag.Dinners = new MultiSelectList(simpDinner, "DinnerId", "DinnerName"); return View(); } [HttpPost] public void CreateRoom(int roomNumber, double roomPrice, int[] dinners, DateTime dateCreate) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (roomNumber<=0 || roomPrice<=0 || dinners.Length == 0) { throw new Exception("Введите данные"); } Dictionary RoomDinners = new Dictionary(); foreach (int id in dinners) { RoomDinners.Add(id, _dinner.ReadElement(new DinnerSearchModel { Id = id })); } APIClient.PostRequest("api/main/createroom", new RoomBindingModel { RoomNumber = roomNumber, RoomPrice = roomPrice, DateCreate = dateCreate, AdministratorId = APIClient.Administrator.Id, }); for (int i = 0; i < dinners.Length; i++) { APIClient.PostRequest("api/main/AddDinnerToRoom", Tuple.Create( new RoomSearchModel() { RoomNumber = roomNumber }, new DinnerViewModel() { Id = dinners[i] } )); } Response.Redirect("Rooms"); } public IActionResult UpdateRoom() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } var list = _dinner.ReadList(new DinnerSearchModel { AdministratorId = APIClient.Administrator.Id }); var simpDinner = list.Select(x => new { DinnerId = x.Id, DinnerName = x.DinnerName }); ViewBag.Dinners = new MultiSelectList(simpDinner, "DinnerId", "DinnerName"); ViewBag.Rooms = APIClient.GetRequest>($"api/main/getroomlist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void UpdateRoom(int room, int roomNumber, double roomPrice, DateTime dateCreate) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (roomNumber <= 0 || roomPrice <= 0) { throw new Exception("Введите данные"); } APIClient.PostRequest("api/main/updateroom", new RoomBindingModel { Id = room, RoomNumber = roomNumber, RoomPrice = roomPrice, DateCreate = dateCreate, AdministratorId = APIClient.Administrator.Id, }); Response.Redirect("Rooms"); } public IActionResult DeleteRoom() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } ViewBag.Rooms = APIClient.GetRequest>($"api/main/getroomlist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void DeleteRoom(int room) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } APIClient.PostRequest("api/main/deleteroom", new RoomBindingModel { Id = room }); Response.Redirect("Rooms"); } public IActionResult CreateConferenceBooking() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } var list = _dinner.ReadList(new DinnerSearchModel { AdministratorId = APIClient.Administrator.Id }); var simpDinner = list.Select(x => new { DinnerId = x.Id, DinnerName = x.DinnerName }); ViewBag.Dinners = new MultiSelectList(simpDinner, "DinnerId", "DinnerName"); return View(); } [HttpPost] public void CreateConferenceBooking(string placeСonference, int[] dinners, DateTime dateСonference) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(placeСonference)) { throw new Exception("Введите данные"); } Dictionary ConferenceBookingDinners = new Dictionary(); foreach (int id in dinners) { ConferenceBookingDinners.Add(id, _dinner.ReadElement(new DinnerSearchModel { Id = id })); } APIClient.PostRequest("api/main/createconferencebooking", new ConferenceBookingBindingModel { PlaceСonference = placeСonference, DateСonference = dateСonference, AdministratorId = APIClient.Administrator.Id, }); for (int i = 0; i < dinners.Length; i++) { APIClient.PostRequest("api/main/AddDinnerToConferenceBooking", Tuple.Create( new ConferenceBookingSearchModel() { PlaceСonference = placeСonference }, new DinnerViewModel() { Id = dinners[i] } )); } Response.Redirect("ConferenceBookings"); } public IActionResult UpdateConferenceBooking() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } var list = _dinner.ReadList(new DinnerSearchModel { AdministratorId = APIClient.Administrator.Id }); var simpDinner = list.Select(x => new { DinnerId = x.Id, DinnerName = x.DinnerName }); ViewBag.Dinners = new MultiSelectList(simpDinner, "DinnerId", "DinnerName"); ViewBag.ConferenceBookings = APIClient.GetRequest>($"api/main/getConferenceBookinglist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void UpdateConferenceBooking(int conferencebooking, string placeСonference, DateTime dateСonference) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(placeСonference)) { throw new Exception("Введите данные"); } APIClient.PostRequest("api/main/updateConferenceBooking", new ConferenceBookingBindingModel { Id = conferencebooking, PlaceСonference = placeСonference, DateСonference = dateСonference, AdministratorId = APIClient.Administrator.Id, }); Response.Redirect("ConferenceBookings"); } public IActionResult DeleteConferenceBooking() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } ViewBag.ConferenceBookings = APIClient.GetRequest>($"api/main/getConferenceBookinglist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void DeleteConferenceBooking(int conferencebooking) { if (APIClient.Administrator == null) { throw new Exception("Необходима авторизация"); } APIClient.PostRequest("api/main/deleteconferencebooking", new ConferenceBookingBindingModel { Id = conferencebooking }); Response.Redirect("ConferenceBookings"); } [HttpGet] public IActionResult AddRoomToMealPlan() { if (APIClient.Administrator == null) { return Redirect("~/Home/Enter"); } ViewBag.MealPlans = APIClient.GetRequest>($"api/main/getmealplans"); ViewBag.Rooms = APIClient.GetRequest>($"api/main/getroomlist?administratorId={APIClient.Administrator.Id}"); return View(); } [HttpPost] public void AddRoomToMealPlan(int room, int mealplan) { if (APIClient.Administrator == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } var roomElem = APIClient.GetRequest($"api/main/getroombyid?roomId={room}"); APIClient.PostRequest("api/main/updateroom", new RoomBindingModel { Id = room, MealPlanId = mealplan, RoomNumber = roomElem.RoomNumber, DateCreate = roomElem.DateCreate, RoomPrice = roomElem.RoomPrice, AdministratorId = roomElem.AdministratorId, }); Response.Redirect("Rooms"); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }