488 lines
18 KiB
C#
488 lines
18 KiB
C#
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<HomeController> _logger;
|
||
private readonly IDinnerLogic _dinner;
|
||
|
||
public HomeController(ILogger<HomeController> 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<List<DinnerViewModel>>($"api/main/getdinnerlist?administratorId={APIClient.Administrator.Id}"));
|
||
}
|
||
public IActionResult Rooms()
|
||
{
|
||
if (APIClient.Administrator == null)
|
||
{
|
||
return Redirect("~/Home/Enter");
|
||
}
|
||
return View(APIClient.GetRequest<List<RoomViewModel>>($"api/main/getroomlist?administratorId={APIClient.Administrator.Id}"));
|
||
}
|
||
public IActionResult ConferenceBookings()
|
||
{
|
||
if (APIClient.Administrator == null)
|
||
{
|
||
return Redirect("~/Home/Enter");
|
||
}
|
||
return View(APIClient.GetRequest<List<ConferenceBookingViewModel>>($"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<AdministratorViewModel>($"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<List<DinnerViewModel>>($"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<List<DinnerViewModel>>($"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<DinnerViewModel>($"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<int, IDinnerModel> RoomDinners = new Dictionary<int, IDinnerModel>();
|
||
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<List<RoomViewModel>>($"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<List<RoomViewModel>>($"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<int, IDinnerModel> ConferenceBookingDinners = new Dictionary<int, IDinnerModel>();
|
||
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<List<ConferenceBookingViewModel>>($"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<List<ConferenceBookingViewModel>>($"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<List<MealPlanViewModel>>($"api/main/getmealplans");
|
||
ViewBag.Rooms = APIClient.GetRequest<List<RoomViewModel>>($"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<RoomViewModel>($"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 });
|
||
}
|
||
}
|
||
}
|