From 4205b0c0523b82c3f66a6df4da1f486cf22c87da Mon Sep 17 00:00:00 2001 From: Viltskaa Date: Fri, 19 May 2023 20:55:43 +0400 Subject: [PATCH] Complete --- .../BusinessLogics/CleaningLogic.cs | 2 +- .../BusinessLogics/ReportLogic.cs | 9 +- .../BindingModels/ReportBindingModel.cs | 1 + .../BusinessLogicsContracts/IReportLogic.cs | 2 +- .../ViewModels/ReportGuestViewModel.cs | 5 + Hotel/HotelView/Api.cs | 30 +-- Hotel/HotelView/Controllers/HomeController.cs | 187 ++++++++++++++++-- ...унов_Игоревич_19.05.2023.docx | Bin 0 -> 1374 bytes ...зунов_Игоревич_19.05.2023.pdf | Bin 0 -> 60118 bytes ...унов_Игоревич_19.05.2023.xlsx | Bin 0 -> 3113 bytes Hotel/HotelView/Views/Home/Cleaning.cshtml | 5 + .../Views/Home/CleaningInstruments.cshtml | 5 + .../HotelView/Views/Home/EditCleaning.cshtml | 22 +++ .../Views/Home/EditCleaningInstrument.cshtml | 23 +++ Hotel/HotelView/Views/Home/EditGuest.cshtml | 31 +++ .../Views/Home/EditReservation.cshtml | 27 +++ Hotel/HotelView/Views/Home/EditRoom.cshtml | 35 ++++ Hotel/HotelView/Views/Home/Guests.cshtml | 5 + Hotel/HotelView/Views/Home/Index.cshtml | 2 +- Hotel/HotelView/Views/Home/Report.cshtml | 98 ++++++--- .../HotelView/Views/Home/Reservations.cshtml | 7 +- Hotel/HotelView/Views/Home/Rooms.cshtml | 21 +- Hotel/HotelView/wwwroot/css/site.css | 4 +- 23 files changed, 448 insertions(+), 73 deletions(-) create mode 100644 Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.docx create mode 100644 Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.pdf create mode 100644 Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.xlsx create mode 100644 Hotel/HotelView/Views/Home/EditCleaning.cshtml create mode 100644 Hotel/HotelView/Views/Home/EditCleaningInstrument.cshtml create mode 100644 Hotel/HotelView/Views/Home/EditGuest.cshtml create mode 100644 Hotel/HotelView/Views/Home/EditReservation.cshtml create mode 100644 Hotel/HotelView/Views/Home/EditRoom.cshtml diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/CleaningLogic.cs b/Hotel/HotelBusinessLogic/BusinessLogics/CleaningLogic.cs index d2515c8..c587f24 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/CleaningLogic.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/CleaningLogic.cs @@ -50,7 +50,7 @@ public class CleaningLogic : ICleaningLogic public bool Update(CleaningBindingModel model) { - CheckModel(model); + CheckModel(model, false); if (_cleaningStorage.Update(model) != null) return true; _logger.LogWarning("Update operation failed"); return false; diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogic.cs b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogic.cs index cd97b78..d12ee11 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogic.cs @@ -40,9 +40,10 @@ public class ReportLogic : IReportLogic _saveToPdf = saveToPdf; } - public List GetListCleaning() + public List GetListCleaning(List reservationsId) { - var reservations = _reservationStorage.GetFullList(); + var reservations = _reservationStorage.GetFullList() + .Where(x => reservationsId.Contains(x.Id)); List list = new(); foreach (var reservation in reservations) @@ -127,7 +128,7 @@ public class ReportLogic : IReportLogic { FileName = model.FileName, Title = "Комплекты для уборки", - ListCleaningModels = GetListCleaning() + ListCleaningModels = GetListCleaning(model.Reservations) }); } @@ -137,7 +138,7 @@ public class ReportLogic : IReportLogic { FileName = model.FileName, Title = "Комплекты для уборки", - ListCleaningModels = GetListCleaning() + ListCleaningModels = GetListCleaning(model.Reservations) }); } diff --git a/Hotel/HotelContracts/BindingModels/ReportBindingModel.cs b/Hotel/HotelContracts/BindingModels/ReportBindingModel.cs index 212cdd3..9d703cc 100644 --- a/Hotel/HotelContracts/BindingModels/ReportBindingModel.cs +++ b/Hotel/HotelContracts/BindingModels/ReportBindingModel.cs @@ -5,4 +5,5 @@ public class ReportBindingModel public string FileName { get; set; } = string.Empty; public DateTime? From { get; set; } public DateTime? To { get; set; } + public List? Reservations { get; set; } } \ No newline at end of file diff --git a/Hotel/HotelContracts/BusinessLogicsContracts/IReportLogic.cs b/Hotel/HotelContracts/BusinessLogicsContracts/IReportLogic.cs index ea4937f..2e12d29 100644 --- a/Hotel/HotelContracts/BusinessLogicsContracts/IReportLogic.cs +++ b/Hotel/HotelContracts/BusinessLogicsContracts/IReportLogic.cs @@ -5,7 +5,7 @@ namespace HotelContracts.BusinessLogicsContracts; public interface IReportLogic { - List GetListCleaning(); + List GetListCleaning(List reservationsId); List GetGuests(ReportBindingModel model); void SaveListCleaningToWordFile(ReportBindingModel model); void SaveListCleaningToExcelFile(ReportBindingModel model); diff --git a/Hotel/HotelContracts/ViewModels/ReportGuestViewModel.cs b/Hotel/HotelContracts/ViewModels/ReportGuestViewModel.cs index 7434bfd..2068482 100644 --- a/Hotel/HotelContracts/ViewModels/ReportGuestViewModel.cs +++ b/Hotel/HotelContracts/ViewModels/ReportGuestViewModel.cs @@ -9,4 +9,9 @@ public class ReportGuestViewModel public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public Dictionary CleaningInstruments; + + public string GetCleaningInstruments() + { + return string.Join(", ", CleaningInstruments.Values.Select(x => x.Type)); + } } \ No newline at end of file diff --git a/Hotel/HotelView/Api.cs b/Hotel/HotelView/Api.cs index 4894d25..6c663ea 100644 --- a/Hotel/HotelView/Api.cs +++ b/Hotel/HotelView/Api.cs @@ -3,7 +3,6 @@ using HotelBusinessLogic.MailWorker; using HotelContracts.BindingModels; using HotelContracts.BusinessLogicsContracts; using HotelContracts.SearchModels; -using HotelContracts.StoragesContracts; using HotelContracts.ViewModels; namespace HotelView; @@ -74,33 +73,34 @@ public class Api Maitre.Fio.Replace(" ", "_") + "_" + DateTime.Now.ToShortDateString() + "." + ext; - public void SendReportWord() + public string SendReportWord(List reservations) { var fileName = GenerateFileName(); _reportLogic.SaveListCleaningToWordFile(new ReportBindingModel { - FileName = fileName - }); - _mailWorker.MailSendAsync(new MailSendInfoBindingModel - { - MailAddress = Maitre.Login, - Subject = "Список составляющих комплектов для подготовки номеров", - AttachmentMail = new Attachment(fileName) + FileName = fileName, + Reservations = reservations }); + return fileName; } - public void SendReportExcel() + public string SendReportExcel(List reservations) { var filename = GenerateFileName("xlsx"); _reportLogic.SaveListCleaningToExcelFile(new ReportBindingModel { - FileName = filename + FileName = filename, + Reservations = reservations }); - _mailWorker.MailSendAsync(new MailSendInfoBindingModel + return filename; + } + + public List GetPreRenderReport(DateTime from, DateTime to) + { + return _reportLogic.GetGuests(new ReportBindingModel { - MailAddress = Maitre.Login, - Subject = "Список составляющих комплектов для подготовки номеров", - AttachmentMail = new Attachment(filename) + From = from, + To = to }); } diff --git a/Hotel/HotelView/Controllers/HomeController.cs b/Hotel/HotelView/Controllers/HomeController.cs index 2e2c85d..0c694ed 100644 --- a/Hotel/HotelView/Controllers/HomeController.cs +++ b/Hotel/HotelView/Controllers/HomeController.cs @@ -4,10 +4,8 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using HotelContracts.BindingModels; using HotelContracts.SearchModels; -using HotelContracts.ViewModels; using HotelDataModels.Models; using HotelView.Utils; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace HotelView.Controllers; @@ -44,11 +42,11 @@ public class HomeController : Controller ViewBag.GuestLiving = Math.Round((double)ViewBag.GuestLivingCount / guests.Count * 100); ViewBag.MaxDay = reservations.Max(x => x.EndDate - x.StartDate).Days; - ViewBag.AverageDay = reservations.Select(x => x.EndDate - x.StartDate) - .Select(x => x.Days).Average(); + ViewBag.AverageDay = Math.Round(reservations.Select(x => x.EndDate - x.StartDate) + .Select(x => x.Days).Average()); ViewBag.MaxCost = reservations.Max(x => x.GetCost()); - ViewBag.AverageCost = reservations.Select(x => x.GetCost()).Average(); + ViewBag.AverageCost = Math.Round(reservations.Select(x => x.GetCost()).Average()); ViewBag.LastReservation = reservations.Last(); ViewBag.LastReservationRooms = string.Join(",", reservations.Last().ReservationsRooms @@ -124,6 +122,34 @@ public class HomeController : Controller return View(_api.GetRoomLogic.ReadList(null)); } + [HttpGet] + public IActionResult EditRoom(int id) + { + ViewBag.Maitre = _api.Maitre; + var item = _api.GetRoomLogic.ReadElement(new RoomSearchModel + { + Id = id + }); + return View(item); + } + + [HttpPost] + public void EditRoom(int id, string type, double cost) + { + if (string.IsNullOrEmpty(type) || cost == 0) + { + throw new Exception("Invalid arguments"); + } + + _api.GetRoomLogic.Update(new RoomBindingModel + { + Id = id, + Cost = cost, + Type = type + }); + Response.Redirect("Rooms"); + } + [HttpPost] public void CreateRoom(string type, double cost) { @@ -162,6 +188,38 @@ public class HomeController : Controller }); Response.Redirect("Guests"); } + + [HttpGet] + public IActionResult EditGuest(int id) + { + ViewBag.Maitre = _api.Maitre; + var guest = _api.GetGuestLogic.ReadElement(new GuestSearchModel + { + Id = id + }); + return View(guest); + } + + [HttpPost] + public void EditGuest(int id, string name, string secondName, string lastName) + { + if (string.IsNullOrEmpty(name) || + string.IsNullOrEmpty(secondName) || + string.IsNullOrEmpty(lastName) || + id == 0) + { + throw new Exception("Invalid arguments"); + } + + _api.GetGuestLogic.Update(new GuestBindingModel + { + Id = id, + Name = name.FirstCharToUpper(), + SecondName = secondName.FirstCharToUpper(), + LastName = lastName.FirstCharToUpper() + }); + Response.Redirect("Guests"); + } [SuppressMessage("ReSharper.DPA", "DPA0000: DPA issues")] public IActionResult Reservations() @@ -212,12 +270,75 @@ public class HomeController : Controller Response.Redirect("Reservations"); } + [HttpGet] + public IActionResult EditReservation(int id) + { + ViewBag.Maitre = _api.Maitre; + var item = _api.GetReservationLogic.ReadElement(new ReservationSearchModel() + { + Id = id + }); + ViewBag.Guests = _api.GetGuestLogic.ReadList(null); + ViewBag.RoomsModel = item.ReservationsRooms.Select(x => x.Key).ToList(); + ViewBag.Rooms = _api.GetRoomLogic.ReadList(new RoomSearchModel + { + IsReserved = false + }); + ViewBag.StartDate = item.StartDate.ToString("MM/dd/yyyy").Replace(".", "/"); + ViewBag.EndDate = item.EndDate.ToString("MM/dd/yyyy").Replace(".", "/"); + + return View(item); + } + + [HttpPost] + public void EditReservation(int id, + DateTime dateStart, + DateTime dateEnd) + { + if (dateEnd < dateStart || dateStart < DateTime.Now) + { + throw new Exception("Invalid arguments"); + } + _api.GetReservationLogic.Update(new ReservationBindingModel + { + Id = id, + MaitreId = _api.Maitre.Id, + StartDate = dateStart, + EndDate = dateEnd + }); + Response.Redirect("Reservations"); + } + public IActionResult CleaningInstruments() { ViewBag.Maitre = _api.Maitre; return View(_api.GetCleaningInstrumentsLogic.ReadList(null)); } + [HttpGet] + public IActionResult EditCleaningInstrument(int id) + { + ViewBag.Maitre = _api.Maitre; + var item = _api.GetCleaningInstrumentsLogic.ReadElement(new() + { + Id = id + }); + return View(item); + } + + [HttpPost] + public void EditCleaningInstrument(int id, string type) + { + if (string.IsNullOrEmpty(type)) + throw new ArgumentException("Type must be not null"); + _api.GetCleaningInstrumentsLogic.Update(new CleaningInstrumentsBindingModel + { + Id = id, + Type = type + }); + Response.Redirect("CleaningInstruments"); + } + [HttpPost] public void CreateCleaningInstrument(string type) { @@ -256,6 +377,24 @@ public class HomeController : Controller }); Response.Redirect("Cleaning"); } + + [HttpGet] + public IActionResult EditCleaning(int id) + { + ViewBag.Maitre = _api.Maitre; + return View(); + } + + [HttpPost] + public void EditCleaning(int id, DateTime dateTime) + { + _api.GetCleaningLogic.Update(new CleaningBindingModel + { + Id = id, + Date = dateTime + }); + Response.Redirect("Cleaning"); + } [HttpGet] public void DeleteReservation(int id) @@ -315,28 +454,40 @@ public class HomeController : Controller public IActionResult Report() { ViewBag.Maitre = _api.Maitre; + ViewBag.Reservations = _api.GetReservationLogic.ReadList(null); return View(); } - [HttpGet] - public void CreateWordReport() + [HttpPost] + public IActionResult CreateReport(List reservations, string options) { - _api.SendReportWord(); - Response.Redirect("Report"); - } - - [HttpGet] - public void CreateExcelReport() - { - _api.SendReportExcel(); - Response.Redirect("Report"); + switch (options) + { + case "word": + { + var file = _api.SendReportWord(reservations); + return new PhysicalFileResult(file, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + } + case "excel": + { + var file = _api.SendReportExcel(reservations); + return new PhysicalFileResult(file, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + } + default: + return null; + } } [HttpPost] - public void CreatePdfReport(DateTime from, DateTime to) + public IActionResult Report(DateTime from, DateTime to) { _api.SendReportPdf(from, to); - Response.Redirect("Report"); + ViewBag.Maitre = _api.Maitre; + ViewBag.Reservations = _api.GetReservationLogic.ReadList(null); + ViewBag.PreRender = _api.GetPreRenderReport(from, to); + return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] diff --git a/Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.docx b/Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.docx new file mode 100644 index 0000000000000000000000000000000000000000..7643efe0d9437688e98e7f860bb15f1e791e4f9a GIT binary patch literal 1374 zcmWIWW@Zs#VBp|j(3!e9YyneeNE0Ii!zpG420;b}hVuNP6#bO^18%Wq-MX7rzVMZ&;YX&1oELnkLg7%ycN?nF@_Rhv`+H+Cqge7Jq17C#ukcS`DlR;7^QA(X+*kIfHJ1eWwcW#X zUS*wqBr`=Id+Me-u9N>C+_?QdcxLn|z1;^6txV}Uskm6TqDjW?A-9-8^G?Z`hK=SC zGpdvF9*Pzf^A`Wms3CQos6e|F=(7O>ByGWS@ gT_buTKxkwE7L8bvM1VId8%Pl|5bgxh{VX6J0F6xUb^rhX literal 0 HcmV?d00001 diff --git a/Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.pdf b/Hotel/HotelView/TempDirectoryForReports/Андрей_Базунов_Игоревич_19.05.2023.pdf new file mode 100644 index 0000000000000000000000000000000000000000..853fdeb8f4abf13bc5cdd8999bc619af09dff0e4 GIT binary patch literal 60118 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 K6zGvbpg#dTH3&Qa literal 0 HcmV?d00001 diff --git a/Hotel/HotelView/Views/Home/Cleaning.cshtml b/Hotel/HotelView/Views/Home/Cleaning.cshtml index 0d36e44..3369eb3 100644 --- a/Hotel/HotelView/Views/Home/Cleaning.cshtml +++ b/Hotel/HotelView/Views/Home/Cleaning.cshtml @@ -39,6 +39,11 @@ class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored"> Удалить + + Изменить + diff --git a/Hotel/HotelView/Views/Home/CleaningInstruments.cshtml b/Hotel/HotelView/Views/Home/CleaningInstruments.cshtml index 1463681..1047062 100644 --- a/Hotel/HotelView/Views/Home/CleaningInstruments.cshtml +++ b/Hotel/HotelView/Views/Home/CleaningInstruments.cshtml @@ -22,6 +22,11 @@ class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored"> Удалить + + Изменить + } diff --git a/Hotel/HotelView/Views/Home/EditCleaning.cshtml b/Hotel/HotelView/Views/Home/EditCleaning.cshtml new file mode 100644 index 0000000..433a73f --- /dev/null +++ b/Hotel/HotelView/Views/Home/EditCleaning.cshtml @@ -0,0 +1,22 @@ +@{ + ViewData["Title"] = "Уборки"; + Layout = "_Layout"; +} + +
+ +

Изменение уборки

+
+
+ Дата уборки +
+ +
+
+
+ + Отмена +
+
+
+
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/EditCleaningInstrument.cshtml b/Hotel/HotelView/Views/Home/EditCleaningInstrument.cshtml new file mode 100644 index 0000000..255276e --- /dev/null +++ b/Hotel/HotelView/Views/Home/EditCleaningInstrument.cshtml @@ -0,0 +1,23 @@ +@model HotelContracts.ViewModels.CleaningInstrumentsViewModel +@{ + ViewData["Title"] = "Инструменты для уборки"; + Layout = "_Layout"; +} + +
+ +

Изменение иструмента

+
+
+
+ + +
+
+
+ + Отмена +
+
+
+
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/EditGuest.cshtml b/Hotel/HotelView/Views/Home/EditGuest.cshtml new file mode 100644 index 0000000..34f60fa --- /dev/null +++ b/Hotel/HotelView/Views/Home/EditGuest.cshtml @@ -0,0 +1,31 @@ +@model HotelContracts.ViewModels.GuestViewModel +@{ + ViewData["Title"] = "Гости"; + Layout = "_Layout"; +} + +
+ +

Изменить постояльца

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + Отмена +
+
+
+
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/EditReservation.cshtml b/Hotel/HotelView/Views/Home/EditReservation.cshtml new file mode 100644 index 0000000..171292f --- /dev/null +++ b/Hotel/HotelView/Views/Home/EditReservation.cshtml @@ -0,0 +1,27 @@ +@model HotelContracts.ViewModels.ReservationViewModel +@{ + ViewData["Title"] = "Бронирования"; + Layout = "_Layout"; +} + +
+ +

Изменить бронирование

+
+
+ Дата заселения +
+ +
+ Дата выселения +
+ +
+
+
+ + Отмена +
+
+
+
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/EditRoom.cshtml b/Hotel/HotelView/Views/Home/EditRoom.cshtml new file mode 100644 index 0000000..2c42073 --- /dev/null +++ b/Hotel/HotelView/Views/Home/EditRoom.cshtml @@ -0,0 +1,35 @@ +@model HotelContracts.ViewModels.RoomViewModel + +@{ + ViewData["Title"] = "Home Page"; + Layout = "_Layout"; +} + +
+ +

Изменение номера

+
+
+
+ + +
+
+ + +
+
+
+ + Отмена +
+
+
+
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/Guests.cshtml b/Hotel/HotelView/Views/Home/Guests.cshtml index 24d04de..4dcb276 100644 --- a/Hotel/HotelView/Views/Home/Guests.cshtml +++ b/Hotel/HotelView/Views/Home/Guests.cshtml @@ -22,6 +22,11 @@ class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored"> Удалить + + Изменить + } diff --git a/Hotel/HotelView/Views/Home/Index.cshtml b/Hotel/HotelView/Views/Home/Index.cshtml index 226e3b7..5988064 100644 --- a/Hotel/HotelView/Views/Home/Index.cshtml +++ b/Hotel/HotelView/Views/Home/Index.cshtml @@ -13,7 +13,7 @@
Постояльцев проживает (@ViewBag.GuestLivingCount из @ViewBag.GuestCount)
-
+
0
@ViewBag.AverageDay
@ViewBag.MaxDay
diff --git a/Hotel/HotelView/Views/Home/Report.cshtml b/Hotel/HotelView/Views/Home/Report.cshtml index c2beeef..2f1d814 100644 --- a/Hotel/HotelView/Views/Home/Report.cshtml +++ b/Hotel/HotelView/Views/Home/Report.cshtml @@ -1,49 +1,101 @@ -@model List +@using HotelContracts.ViewModels +@model List @{ ViewData["Title"] = "Отчеты"; Layout = "_Layout"; }
-
-
Создать отчет в формате (.docx) и отправить его на почту @ViewBag.Maitre.Login
- - Отправить - -
-
Создать отчет в формате (.xlsx) и отправить его на почту @ViewBag.Maitre.Login
- - Отправить - +
Создать отчет в формате (.xlsx|.docx) и скачать его @ViewBag.Maitre.Login
+
+
+ Бронирования +
+ +
+ + + +
+
Создать отчет в формате (.pdf) и отправить его на почту @ViewBag.Maitre.Login
-
- Начальная дата + + Начальная дата
- Конечная дата + Конечная дата
+ @{ + if (ViewBag.PreRender != null) + { +
+
Данный отчет отправлен на почту @ViewBag.Maitre.Login
+ + + + + + + + + + + + + @{ + @foreach (var item in ViewBag.PreRender) + { + + + + + + + + + } + } + +
ФамилияИмяОтчествоЗаселениеВыселениеНабор
@item.SecondName@item.Name@item.LastName@item.StartDate.ToShortDateString()@item.EndDate.ToShortDateString() + @item.GetCleaningInstruments() +
+
+ } + }
\ No newline at end of file diff --git a/Hotel/HotelView/Views/Home/Reservations.cshtml b/Hotel/HotelView/Views/Home/Reservations.cshtml index 3c8196e..39f6405 100644 --- a/Hotel/HotelView/Views/Home/Reservations.cshtml +++ b/Hotel/HotelView/Views/Home/Reservations.cshtml @@ -40,7 +40,12 @@ - Удалить + Удалить + + + Изменить
diff --git a/Hotel/HotelView/Views/Home/Rooms.cshtml b/Hotel/HotelView/Views/Home/Rooms.cshtml index 3ca136c..bb682da 100644 --- a/Hotel/HotelView/Views/Home/Rooms.cshtml +++ b/Hotel/HotelView/Views/Home/Rooms.cshtml @@ -1,4 +1,5 @@ @model List + @{ ViewData["Title"] = "Home Page"; Layout = "_Layout"; @@ -46,14 +47,20 @@ Забронирована } } - - @item.GetTypeRoom() - - Удалить - + + + @item.GetTypeRoom() + + Удалить + + + Изменить + } diff --git a/Hotel/HotelView/wwwroot/css/site.css b/Hotel/HotelView/wwwroot/css/site.css index 2d850cb..961a249 100644 --- a/Hotel/HotelView/wwwroot/css/site.css +++ b/Hotel/HotelView/wwwroot/css/site.css @@ -249,8 +249,8 @@ body { dialog { position: absolute; - top: 30%; - left: 20px; + top: 50px; + left: 40%; } .mdl-list__item-avatar {