diff --git a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs index ec8b5e8..60cab97 100644 --- a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs +++ b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs @@ -622,5 +622,33 @@ namespace HostrelHeadwaiterApp.Controllers { return new PhysicalFileResult("E:\\ReportsCourseWork\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); } + + [HttpGet] + public IActionResult ListDinnersToPdfFile() + { + if (APIClient.Headwaiter == null) + { + return Redirect("~/Home/Enter"); + } + + return View(); + } + + [HttpPost] + public void ListDinnersToPdfFile(string roomName) + { + if (APIClient.Headwaiter == null) + { + throw new Exception("Не авторизованы"); + } + + APIClient.PostRequest("api/Report/CreateHeadwaiterReportToPdfFile", new ReportHeadwaiterBindingModel() + { + RoomName = roomName, + HeadwaiterId = APIClient.Headwaiter.Id + }); + + Response.Redirect("ListDinnersToPdfFile"); + } } } \ No newline at end of file diff --git a/Hotel/HostrelHeadwaiterApp/Views/Home/ListDinnersToPdfFile.cshtml b/Hotel/HostrelHeadwaiterApp/Views/Home/ListDinnersToPdfFile.cshtml new file mode 100644 index 0000000..f163046 --- /dev/null +++ b/Hotel/HostrelHeadwaiterApp/Views/Home/ListDinnersToPdfFile.cshtml @@ -0,0 +1,27 @@ +@{ + ViewData["Title"] = "ListDinnersToPdf"; +} + + +
+

+ Создание отчета по участникам за период +

+
+ +
+
+ + +
+
+
+
+
+
\ No newline at end of file diff --git a/Hotel/HostrelHeadwaiterApp/Views/Shared/_Layout.cshtml b/Hotel/HostrelHeadwaiterApp/Views/Shared/_Layout.cshtml index 24a9fdc..2eb2388 100644 --- a/Hotel/HostrelHeadwaiterApp/Views/Shared/_Layout.cshtml +++ b/Hotel/HostrelHeadwaiterApp/Views/Shared/_Layout.cshtml @@ -39,6 +39,8 @@ Отчет (word/excel) + Отчет (pdf) + diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs index 77a459e..d03693a 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs @@ -4,6 +4,8 @@ using HotelContracts.BindingModels; using HotelContracts.SearchModels; using HotelContracts.StoragesContracts; using HotelContracts.ViewModels; +using HotelDataBaseImplement; +using HotelDataBaseImplement.Models; using System; using System.Collections.Generic; using System.Linq; @@ -78,24 +80,33 @@ namespace HotelBusinessLogic.BusinessLogics foreach (var room in listСonferences) { - foreach (var c in room.RoomDinners) + foreach (var m in room.RoomDinners.Values) { listAll.Add(new ReportDinnersViewModel { RoomName = room.RoomName, - DinnerName = c.Value.DinnerName + RoomPrice = room.RoomPrice, + DinnerName = m.DinnerName, + DinnerPrice = m.DinnerPrice }); } } - var listConferenceBookings = _conferenceBookingStorage.GetFilteredList(new ConferenceBookingSearchModel()); + var listConferenceBookings = _conferenceBookingStorage.GetFilteredList(new ConferenceBookingSearchModel + { + HeadwaiterId = model.HeadwaiterId, + }); foreach (var conferenceBooking in listConferenceBookings) { - listAll.Add(new ReportDinnersViewModel + foreach (var mp in conferenceBooking.ConferenceBookingDinners.Values) { - NameHall = conferenceBooking.NameHall - }); - + listAll.Add(new ReportDinnersViewModel + { + DinnerName = mp.DinnerName, + DinnerPrice = mp.DinnerPrice, + NameHall = conferenceBooking.NameHall + }); + } } return listAll; diff --git a/Hotel/HotelBusinessLogic/OfficePackage/AbstractSaveToPdfHeadwaiter.cs b/Hotel/HotelBusinessLogic/OfficePackage/AbstractSaveToPdfHeadwaiter.cs index b709298..1149240 100644 --- a/Hotel/HotelBusinessLogic/OfficePackage/AbstractSaveToPdfHeadwaiter.cs +++ b/Hotel/HotelBusinessLogic/OfficePackage/AbstractSaveToPdfHeadwaiter.cs @@ -25,18 +25,18 @@ namespace HotelBusinessLogic.OfficePackage Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); - CreateTable(new List { "2cm", "3cm", "6cm", "3cm", "3cm" }); + CreateTable(new List { "3cm", "3cm", "3cm", "4cm", "4cm" }); CreateRow(new PdfRowParameters { - Texts = new List { "Название команты", "Корпус комнтаы", "Цена комнаты" }, + Texts = new List { "Обед", "Комната", "Цена комнаты", "Бронирование" }, Style = "NormalTitle", ParagraphAlignment = PdfParagraphAlignmentType.Center }); - foreach (var conferenceBindingRooms in info.Dinners) + foreach (var dinner in info.Dinners) { CreateRow(new PdfRowParameters { - Texts = new List { conferenceBindingRooms.Id.ToString(), conferenceBindingRooms.RoomName, conferenceBindingRooms.RoomFrame, conferenceBindingRooms.RoomPrice.ToString() }, + Texts = new List { dinner.DinnerName.ToString(), dinner.RoomName, dinner.RoomPrice.ToString(), dinner.NameHall }, Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Left }); diff --git a/Hotel/HotelContracts/ViewModels/ReportDinnersViewModel.cs b/Hotel/HotelContracts/ViewModels/ReportDinnersViewModel.cs index 5fff054..81cddb2 100644 --- a/Hotel/HotelContracts/ViewModels/ReportDinnersViewModel.cs +++ b/Hotel/HotelContracts/ViewModels/ReportDinnersViewModel.cs @@ -12,6 +12,7 @@ namespace HotelContracts.ViewModels public string RoomName { get; set; } = string.Empty; public string NameHall { get; set; } = string.Empty; public string DinnerName { get; set; } = string.Empty; + public double DinnerPrice { get; set; } public double RoomPrice { get; set; } public string RoomFrame { get; set; } = string.Empty; diff --git a/Hotel/HotelDataBaseImplement/HotelDataBase.cs b/Hotel/HotelDataBaseImplement/HotelDataBase.cs index 5f56ccf..7141379 100644 --- a/Hotel/HotelDataBaseImplement/HotelDataBase.cs +++ b/Hotel/HotelDataBaseImplement/HotelDataBase.cs @@ -9,7 +9,7 @@ namespace HotelDataBaseImplement { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-V0ON61E\SQLEXPRESS;Initial Catalog=HotelDataBaseFu;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-V0ON61E\SQLEXPRESS;Initial Catalog=HotelDataBaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); } base.OnConfiguring(optionsBuilder); } diff --git a/Hotel/HotelRestApi/Controllers/ReportController.cs b/Hotel/HotelRestApi/Controllers/ReportController.cs index e25ef12..0213bfa 100644 --- a/Hotel/HotelRestApi/Controllers/ReportController.cs +++ b/Hotel/HotelRestApi/Controllers/ReportController.cs @@ -94,5 +94,24 @@ namespace HotelRestApi.Controllers throw; } } + + [HttpPost] + public void CreateHeadwaiterReportToPdfFile(ReportHeadwaiterBindingModel model) + { + try + { + _reportHeadwaiterLogic.SaveDinnersToPdfFile(new ReportHeadwaiterBindingModel + { + FileName = "Отчет PDF.pdf", + RoomName = model.RoomName, + HeadwaiterId = model.HeadwaiterId, + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания отчета"); + throw; + } + } } } diff --git a/Hotel/HotelRestApi/Отчет PDF.pdf b/Hotel/HotelRestApi/Отчет PDF.pdf index f75cc5a..f4460a0 100644 Binary files a/Hotel/HotelRestApi/Отчет PDF.pdf and b/Hotel/HotelRestApi/Отчет PDF.pdf differ