diff --git a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs index 28a02d0..4979e5a 100644 --- a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs +++ b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs @@ -1,4 +1,6 @@ using HostrelHeadwaiterApp.Models; +using HotelContracts.BindingModels; +using HotelContracts.ViewModels; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; @@ -13,57 +15,218 @@ namespace HostrelHeadwaiterApp.Controllers _logger = logger; } + public IActionResult CreateDinner() + { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + return View(); + } + + [HttpPost] + public void CreateDinner(double dinnerPrice, string dinnerName) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Необходима авторизация"); + } + if (string.IsNullOrEmpty(dinnerName)) + { + throw new Exception("Введите имя"); + } + APIClient.PostRequest("api/main/createdinner", new DinnerBindingModel + { + DinnerPrice = dinnerPrice, + DinnerName = dinnerName, + HeadwaiterId = APIClient.Headwaiter.Id, + }); + Response.Redirect("ListDinners"); + } + + public IActionResult UpdateDinner() + { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Dinners = APIClient.GetRequest>($"api/main/getdinnerlist?headwaiterId={APIClient.Headwaiter.Id}"); + return View(); + } + + [HttpPost] + public void UpdateDinner(int dinner, string dinnerName, double dinnerPrice) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Необходима авторизация"); + } + if (string.IsNullOrEmpty(dinnerName)) + { + throw new Exception("имя не может быть пустым"); + } + + APIClient.PostRequest("api/main/updatedinner", new DinnerBindingModel + { + Id = dinner, + DinnerName = dinnerName, + DinnerPrice = dinnerPrice, + HeadwaiterId = APIClient.Headwaiter.Id, + }); + + Response.Redirect("ListDinners"); + } + + public IActionResult DeleteDinner() + { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Dinners = APIClient.GetRequest>($"api/main/getdinnerlist?headwaiterId={APIClient.Headwaiter.Id}"); + return View(); + } + + [HttpPost] + public void DeleteDinner(int dinner) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Необходима авторизация"); + } + APIClient.PostRequest("api/main/deletedinner", new DinnerBindingModel + { + Id = dinner + }); + Response.Redirect("ListDinners"); + } + + [HttpGet] + public DinnerViewModel? GetDinner(int dinnerId) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Необходима авторизация"); + } + var result = APIClient.GetRequest($"api/main/getdinner?dinnerid={dinnerId}"); + if (result == null) + { + return default; + } + var dinnerPrice = result.DinnerPrice; + var dinnerName = result.DinnerName; + + return result; + } + public IActionResult Index() { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } return View(); } - public IActionResult Register() + public IActionResult ListDinners() { - return View(); + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/main/getdinnerlist?headwaiterId={APIClient.Headwaiter.Id}")); } + [HttpGet] + public IActionResult Privacy() + { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.Headwaiter); + } + + [HttpPost] + public void Privacy(string login, string email, string password, string fio, string telephone) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); + } + if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) + { + throw new Exception("Введите логин, пароль и ФИО"); + } + APIClient.PostRequest("api/headwaiter/updatedata", new HeadwaiterBindingModel + { + Id = APIClient.Headwaiter.Id, + HeadwaiterFIO = fio, + HeadwaiterLogin = login, + HeadwaiterPassword = password, + HeadwaiterEmail = email, + HeadwaiterNumber = telephone + }); + + APIClient.Headwaiter.HeadwaiterFIO = fio; + APIClient.Headwaiter.HeadwaiterLogin = login; + APIClient.Headwaiter.HeadwaiterPassword = password; + APIClient.Headwaiter.HeadwaiterEmail = email; + APIClient.Headwaiter.HeadwaiterNumber = telephone; + 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(); } - public IActionResult Report() + [HttpPost] + public void Enter(string login, string password) + { + if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) + { + throw new Exception("Введите логин и пароль"); + } + APIClient.Headwaiter = APIClient.GetRequest($"api/headwaiter/login?login={login}&password={password}"); + if (APIClient.Headwaiter == null) + { + throw new Exception("Неверный логин/пароль"); + } + Response.Redirect("Index"); + } + + [HttpGet] + public IActionResult Register() { return View(); } - public IActionResult BindingConferenceBindingAndConference() + [HttpPost] + public void Register(string login, string email, string password, string fio, string telephone) { - return View(); - } + if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) + { + throw new Exception("Введите логин, пароль и ФИО"); + } + APIClient.PostRequest("api/headwaiter/register", new HeadwaiterBindingModel + { + HeadwaiterFIO = fio, + HeadwaiterLogin = login, + HeadwaiterPassword = password, + HeadwaiterEmail = email, + HeadwaiterNumber = telephone + }); - public IActionResult FormationDinner() - { - return View(); - } - - public IActionResult ShapingDinnerIntoRooms() - { - return View(); - } - - public IActionResult FormationOfDinnerInConferenceBookings() - { - return View(); - - } - public IActionResult ListOfMealPlans() - { - return View(); - } - - - - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] - public IActionResult Error() - { - return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + Response.Redirect("Enter"); + return; } } } \ No newline at end of file diff --git a/Hotel/HostrelHeadwaiterApp/Program.cs b/Hotel/HostrelHeadwaiterApp/Program.cs index 0727468..1400edb 100644 --- a/Hotel/HostrelHeadwaiterApp/Program.cs +++ b/Hotel/HostrelHeadwaiterApp/Program.cs @@ -1,9 +1,12 @@ +using HostrelHeadwaiterApp; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); var app = builder.Build(); +APIClient.Connect(builder.Configuration); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) diff --git a/Hotel/HostrelHeadwaiterApp/appsettings.json b/Hotel/HostrelHeadwaiterApp/appsettings.json index 10f68b8..e0efc77 100644 --- a/Hotel/HostrelHeadwaiterApp/appsettings.json +++ b/Hotel/HostrelHeadwaiterApp/appsettings.json @@ -5,5 +5,6 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "IPAddress": "http://localhost:5079/" } diff --git a/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs b/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs new file mode 100644 index 0000000..d243e38 --- /dev/null +++ b/Hotel/HotelRestApi/Controllers/HeadwaiterController.cs @@ -0,0 +1,67 @@ +using HotelContracts.BindingModels; +using HotelContracts.BusinessLogicsContracts; +using HotelContracts.SearchModels; +using HotelContracts.ViewModels; +using Microsoft.AspNetCore.Mvc; + +namespace HotelRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class HeadwaiterController : Controller + { + private readonly ILogger _logger; + private readonly IHeadwaiterLogic _logic; + public HeadwaiterController(IHeadwaiterLogic logic, ILogger logger) + { + _logger = logger; + _logic = logic; + } + + [HttpGet] + public HeadwaiterViewModel? Login(string login, string password) + { + try + { + return _logic.ReadElement(new HeadwaiterSearchModel + { + HeadwaiterEmail = login, + HeadwaiterPassword = password + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + [HttpPost] + public void Register(HeadwaiterBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка регистрации"); + throw; + } + } + + [HttpPost] + public void UpdateData(HeadwaiterBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления данных"); + throw; + } + } + } +} diff --git a/Hotel/HotelRestApi/Controllers/MainController.cs b/Hotel/HotelRestApi/Controllers/MainController.cs index 7bda859..6fe62a2 100644 --- a/Hotel/HotelRestApi/Controllers/MainController.cs +++ b/Hotel/HotelRestApi/Controllers/MainController.cs @@ -16,13 +16,19 @@ namespace HotelRestApi.Controllers private readonly IConferenceLogic _conference; private readonly IMemberLogic _member; private readonly IMealPlanLogic _mealPlan; + private readonly IDinnerLogic _dinner; + private readonly IConferenceBookingLogic _conferenceBooking; + private readonly IRoomLogic _room; - public MainController(ILogger logger, IConferenceLogic conference, IMemberLogic member, IMealPlanLogic mealPlan) + public MainController(ILogger logger, IConferenceLogic conference, IMemberLogic member, IMealPlanLogic mealPlan, IDinnerLogic dinner, IConferenceBookingLogic conferenceBooking, IRoomLogic room) { _logger = logger; _conference = conference; _member = member; _mealPlan = mealPlan; + _dinner = dinner; + _conferenceBooking = conferenceBooking; + _room = room; } [HttpGet] @@ -76,6 +82,57 @@ namespace HotelRestApi.Controllers } } + [HttpGet] + public List? GetDinnerList(int headwaiterId) + { + try + { + return _dinner.ReadList(new DinnerSearchModel + { + HeadwaiterId = headwaiterId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка обедов"); + throw; + } + } + + [HttpGet] + public List? GetConferenceBookingList(int headwaiterId) + { + try + { + return _conferenceBooking.ReadList(new ConferenceBookingSearchModel + { + HeadwaiterId = headwaiterId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка бронирования по конференциям"); + throw; + } + } + + [HttpGet] + public List? GetRoomPlanList(int headwaiterId) + { + try + { + return _room.ReadList(new RoomSearchModel + { + HeadwaiterId = headwaiterId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка номеров"); + throw; + } + } + [HttpPost] public void UpdateMember(MemberBindingModel model) { @@ -135,6 +192,65 @@ namespace HotelRestApi.Controllers } } + [HttpPost] + public void UpdateDinner(DinnerBindingModel model) + { + try + { + _dinner.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления данных обеда"); + throw; + } + } + + [HttpGet] + public DinnerViewModel? GetDinner(int dinnerId) + { + try + { + return _dinner.ReadElement(new DinnerSearchModel + { + Id = dinnerId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения обеда по id={Id}", dinnerId); + throw; + } + } + + [HttpPost] + public void CreateDinner(DinnerBindingModel model) + { + try + { + _dinner.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания обеда"); + throw; + } + } + + [HttpPost] + public void DeleteDinner(DinnerBindingModel model) + { + try + { + _dinner.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления обеда"); + throw; + } + } + [HttpPost] public void CreateConference(ConferenceBindingModel model) { @@ -162,5 +278,33 @@ namespace HotelRestApi.Controllers throw; } } + + [HttpPost] + public void CreateRoom(RoomBindingModel model) + { + try + { + _room.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания комнаты"); + throw; + } + } + + [HttpPost] + public void CreateConferenceBooking(ConferenceBookingBindingModel model) + { + try + { + _conferenceBooking.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания бронирования конференций"); + throw; + } + } } } diff --git a/Hotel/HotelRestApi/Program.cs b/Hotel/HotelRestApi/Program.cs index 6b84045..e4f80d7 100644 --- a/Hotel/HotelRestApi/Program.cs +++ b/Hotel/HotelRestApi/Program.cs @@ -22,6 +22,16 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + //builder.Services.AddSingleton(); builder.Services.AddControllers();