diff --git a/Hotel/HotelDataBaseImplement/HotelDataBase.cs b/Hotel/HotelDataBaseImplement/HotelDataBase.cs index ef591cf..bd1a1f2 100644 --- a/Hotel/HotelDataBaseImplement/HotelDataBase.cs +++ b/Hotel/HotelDataBaseImplement/HotelDataBase.cs @@ -10,11 +10,12 @@ namespace HotelDataBaseImplement { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-M2G96S06\SQLEXPRESS;Initial Catalog=HotelDataBase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-7DB3VEN\SQLEXPRESS;Initial Catalog=HotelDataBase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); } base.OnConfiguring(optionsBuilder); } - + // DESKTOP-7DB3VEN + // LAPTOP-M2G96S06 public virtual DbSet Conferences { set; get; } public virtual DbSet MealPlans { set; get; } public virtual DbSet Members { set; get; } diff --git a/Hotel/HotelHeadwaiterApp/Controllers/HomeController.cs b/Hotel/HotelHeadwaiterApp/Controllers/HomeController.cs index 91d7368..c2f8253 100644 --- a/Hotel/HotelHeadwaiterApp/Controllers/HomeController.cs +++ b/Hotel/HotelHeadwaiterApp/Controllers/HomeController.cs @@ -29,7 +29,6 @@ namespace HotelHeadwaiterApp.Controllers return View(); } - [HttpGet] public IActionResult Register() { return View(); @@ -57,7 +56,6 @@ namespace HotelHeadwaiterApp.Controllers return; } - [HttpGet] public IActionResult Enter() { return View(); @@ -78,7 +76,6 @@ namespace HotelHeadwaiterApp.Controllers Response.Redirect("Index"); } - [HttpGet] public IActionResult Privacy() { if (APIClient.Headwaiter == null) diff --git a/Hotel/HotelOrganiserApp/Controllers/HomeController.cs b/Hotel/HotelOrganiserApp/Controllers/HomeController.cs index d0c5250..d6b9652 100644 --- a/Hotel/HotelOrganiserApp/Controllers/HomeController.cs +++ b/Hotel/HotelOrganiserApp/Controllers/HomeController.cs @@ -1,4 +1,5 @@ -using HotelContracts.BindingModels; +using DocumentFormat.OpenXml.Wordprocessing; +using HotelContracts.BindingModels; using HotelContracts.ViewModels; using HotelOrganiserApp.Models; using Microsoft.AspNetCore.Mvc; @@ -56,6 +57,7 @@ namespace HotelOrganiserApp.Controllers return View(); } + [HttpPost] public void Enter(string login, string password) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) @@ -70,37 +72,180 @@ namespace HotelOrganiserApp.Controllers Response.Redirect("Index"); } - public IActionResult Report() + public IActionResult Privacy() { + if (APIClient.Organiser == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.Organiser); + } + + [HttpPost] + public void Privacy(string login, string email, string password, string surname, string name, string patronymic, string telephone) + { + if (APIClient.Organiser == null) + { + throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); + } + if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(surname) || string.IsNullOrEmpty(name) || string.IsNullOrEmpty(patronymic)) + { + throw new Exception("Введите логин, пароль, фамилию, имя и отчество"); + } + APIClient.PostRequest("api/organiser/updatedata", new OrganiserBindingModel + { + Id = APIClient.Organiser.Id, + OrganiserSurname = surname, + OrganiserName = name, + OrganiserPatronymic = patronymic, + OrganiserLogin = login, + OrganiserPassword = password, + OrganiserEmail = email, + OrganiserPhoneNumber = telephone + }); + + APIClient.Organiser.OrganiserSurname = surname; + APIClient.Organiser.OrganiserName = name; + APIClient.Organiser.OrganiserPatronymic = patronymic; + APIClient.Organiser.OrganiserLogin = login; + APIClient.Organiser.OrganiserPassword = password; + APIClient.Organiser.OrganiserEmail = email; + APIClient.Organiser.OrganiserPhoneNumber = telephone; + Response.Redirect("Index"); + } + + public IActionResult ListMembers() + { + if (APIClient.Organiser == null) + { + return Redirect("~/Home/Enter"); + } + return View(APIClient.GetRequest>($"api/member/getmemberlist?organiserId={APIClient.Organiser.Id}")); + } + + public IActionResult CreateMember() + { + if (APIClient.Organiser == null) + { + return Redirect("~/Home/Enter"); + } return View(); } - public IActionResult BindingRoomAndMealPlan() + [HttpPost] + public void CreateMember(string memberSurname, string memberName, string memberPatronymic, string memberPhoneNumber) { - return View(); + if (APIClient.Organiser == null) + { + throw new Exception("Необходима авторизация"); + } + if (string.IsNullOrEmpty(memberSurname) || string.IsNullOrEmpty(memberName) || string.IsNullOrEmpty(memberPatronymic) || string.IsNullOrEmpty(memberPhoneNumber)) + { + throw new Exception("Введите фамилию, имя, отчество и номер телефона"); + } + APIClient.PostRequest("api/member/createmember", new MemberBindingModel + { + MemberSurname = memberSurname, + MemberName = memberName, + MemberPatronymic = memberPatronymic, + MemberPhoneNumber = memberPhoneNumber, + OrganiserId = APIClient.Organiser.Id, + }); + Response.Redirect("ListMembers"); } - public IActionResult FormationLunch() - { - return View(); - } + public IActionResult UpdateMember() + { + if (APIClient.Organiser == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Members = APIClient.GetRequest>($"api/member/getmemberlist?organiserId={APIClient.Organiser.Id}"); + return View(); + } - public IActionResult ShapingLunchIntoRooms() - { - return View(); - } + [HttpPost] + public void UpdateMember(int member, string memberSurname, string memberName, string memberPatronymic, string memberPhoneNumber) + { + if (APIClient.Organiser == null) + { + throw new Exception("Необходима авторизация"); + } + if (string.IsNullOrEmpty(memberSurname)) + { + throw new Exception("Фамилия не может быть пустая"); + } + if (string.IsNullOrEmpty(memberName)) + { + throw new Exception("Имя не может быть пустым"); + } + if (string.IsNullOrEmpty(memberPatronymic)) + { + throw new Exception("Отчество не может быть пустым"); + } + if (string.IsNullOrEmpty(memberPhoneNumber)) + { + throw new Exception("Номер телефона не может быть пустым"); + } - public IActionResult FormationOfLunchInConferenceBookings() - { - return View(); + APIClient.PostRequest("api/member/updatemember", new MemberBindingModel + { + Id = member, + MemberSurname = memberSurname, + MemberName = memberName, + MemberPatronymic = memberPatronymic, + MemberPhoneNumber = memberPhoneNumber, + OrganiserId = APIClient.Organiser.Id, + }); - } - public IActionResult ListOfMealPlans() - { - return View(); - } + Response.Redirect("ListMembers"); + } - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult DeleteMember() + { + if (APIClient.Organiser == null) + { + return Redirect("~/Home/Enter"); + } + ViewBag.Members = APIClient.GetRequest>($"api/member/getmemberlist?organiserId={APIClient.Organiser.Id}"); + return View(); + } + + [HttpPost] + public void DeleteMember(int member) + { + if (APIClient.Organiser == null) + { + throw new Exception("Необходима авторизация"); + } + APIClient.PostRequest("api/member/deletemember", new MemberBindingModel + { + Id = member + }); + Response.Redirect("ListMembers"); + } + + [HttpGet] + public MemberViewModel? GetMember(int memberId) + { + if (APIClient.Organiser == null) + { + throw new Exception("Необходима авторизация"); + } + var result = APIClient.GetRequest($"api/member/getmember?memberid={memberId}"); + if (result == null) + { + return default; + } + var memberSurname = result.MemberSurname; + var memberName = result.MemberName; + var memberPatronymic = result.MemberPatronymic; + var memberPhoneNumber = result.MemberPhoneNumber; + + return result; + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); diff --git a/Hotel/HotelOrganiserApp/Views/Home/CreateMember.cshtml b/Hotel/HotelOrganiserApp/Views/Home/CreateMember.cshtml new file mode 100644 index 0000000..2e2b46a --- /dev/null +++ b/Hotel/HotelOrganiserApp/Views/Home/CreateMember.cshtml @@ -0,0 +1,47 @@ +@{ + ViewData["Title"] = "CreateMember"; +} + +
+
+

Добавление участника

+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
\ No newline at end of file diff --git a/Hotel/HotelOrganiserApp/Views/Home/DeleteMember.cshtml b/Hotel/HotelOrganiserApp/Views/Home/DeleteMember.cshtml new file mode 100644 index 0000000..1d7f9f5 --- /dev/null +++ b/Hotel/HotelOrganiserApp/Views/Home/DeleteMember.cshtml @@ -0,0 +1,22 @@ +@{ + ViewData["Title"] = "DeleteMember"; +} + +
+
+

Удаление участника

+
+
+ + +
+
+
+ +
+
\ No newline at end of file diff --git a/Hotel/HotelOrganiserApp/Views/Home/ListMembers.cshtml b/Hotel/HotelOrganiserApp/Views/Home/ListMembers.cshtml new file mode 100644 index 0000000..8b59eb6 --- /dev/null +++ b/Hotel/HotelOrganiserApp/Views/Home/ListMembers.cshtml @@ -0,0 +1,79 @@ +@using HotelContracts.ViewModels + +@model List + +@{ + ViewData["Title"] = "ListMembers"; +} + +
+

Список участников

+
+ +
+
+
+
+ +
+ + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + } + +
+ Номер + + Фамилия участника + + Имя участника + + Отчество участника + + Номер телефона +
+ @Html.DisplayFor(modelItem => item.Id) + + @Html.DisplayFor(modelItem => item.MemberSurname) + + @Html.DisplayFor(modelItem => item.MemberName) + + @Html.DisplayFor(modelItem => item.MemberPatronymic) + + @Html.DisplayFor(modelItem => item.MemberPhoneNumber) +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Hotel/HotelOrganiserApp/Views/Home/Privacy.cshtml b/Hotel/HotelOrganiserApp/Views/Home/Privacy.cshtml index ee5e2e4..432fabd 100644 --- a/Hotel/HotelOrganiserApp/Views/Home/Privacy.cshtml +++ b/Hotel/HotelOrganiserApp/Views/Home/Privacy.cshtml @@ -34,7 +34,7 @@ @@ -44,7 +44,7 @@ @@ -54,7 +54,7 @@ diff --git a/Hotel/HotelOrganiserApp/Views/Home/UpdateMember.cshtml b/Hotel/HotelOrganiserApp/Views/Home/UpdateMember.cshtml new file mode 100644 index 0000000..f696e5a --- /dev/null +++ b/Hotel/HotelOrganiserApp/Views/Home/UpdateMember.cshtml @@ -0,0 +1,86 @@ +@using HotelContracts.ViewModels; +@using HotelDataModels.Models; + +@{ + ViewData["Title"] = "UpdateMember"; +} + +
+
+

Изменение участника

+
+
+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +@section Scripts +{ + +} \ No newline at end of file diff --git a/Hotel/HotelOrganiserApp/appsettings.json b/Hotel/HotelOrganiserApp/appsettings.json index 6cf2940..b941db5 100644 --- a/Hotel/HotelOrganiserApp/appsettings.json +++ b/Hotel/HotelOrganiserApp/appsettings.json @@ -6,5 +6,5 @@ } }, "AllowedHosts": "*", - "IPAddress": "https://localhost:7093" + "IPAddress": "https://localhost:7093/" } diff --git a/Hotel/HotelRestApi/Controllers/MemberController.cs b/Hotel/HotelRestApi/Controllers/MemberController.cs index 78790c0..ef2d430 100644 --- a/Hotel/HotelRestApi/Controllers/MemberController.cs +++ b/Hotel/HotelRestApi/Controllers/MemberController.cs @@ -6,6 +6,8 @@ using Microsoft.AspNetCore.Mvc; namespace HotelRestApi.Controllers { + [Route("api/[controller]/[action]")] + [ApiController] public class MemberController : Controller { private readonly ILogger _logger;