2023-04-07 11:09:51 +04:00
|
|
|
|
using HotelBusinessLogic.OfficePackage.HelperModels;
|
|
|
|
|
using HotelBusinessLogic.OfficePackage;
|
|
|
|
|
using HotelContracts.BindingModels;
|
|
|
|
|
using HotelContracts.SearchModels;
|
|
|
|
|
using HotelContracts.StoragesContracts;
|
|
|
|
|
using HotelContracts.ViewModels;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using HotelContracts.BusinessLogicsContracts;
|
|
|
|
|
|
|
|
|
|
namespace HotelBusinessLogic.BusinessLogics
|
|
|
|
|
{
|
|
|
|
|
public class ReportLogicHeadwaiter : IReportHeadwaiterLogic
|
|
|
|
|
{
|
|
|
|
|
private readonly IRoomStorage _roomStorage;
|
|
|
|
|
private readonly IDinnerStorage _dinnerStorage;
|
|
|
|
|
private readonly IConferenceBookingStorage _conferenceBookingStorage;
|
|
|
|
|
private readonly AbstractSaveToExcelHeadwaiter _saveToExcel;
|
|
|
|
|
private readonly AbstractSaveToWordHeadwaitre _saveToWord;
|
|
|
|
|
private readonly AbstractSaveToPdfHeadwaiter _saveToPdf;
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public ReportLogicHeadwaiter(IRoomStorage roomStorage, IDinnerStorage dinnerStorage, IConferenceBookingStorage conferenceBookingStorage, AbstractSaveToExcelHeadwaiter saveToExcel, AbstractSaveToWordHeadwaitre saveToWord, AbstractSaveToPdfHeadwaiter saveToPdf)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
_roomStorage = roomStorage;
|
|
|
|
|
_dinnerStorage = dinnerStorage;
|
|
|
|
|
_conferenceBookingStorage = conferenceBookingStorage;
|
|
|
|
|
_saveToExcel = saveToExcel;
|
|
|
|
|
_saveToWord = saveToWord;
|
|
|
|
|
_saveToPdf = saveToPdf;
|
|
|
|
|
}
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public List<ReportDinnerRoomViewModel> GetDinnerRoom(List<int> Ids)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
if (Ids == null)
|
|
|
|
|
{
|
|
|
|
|
return new List<ReportDinnerRoomViewModel>();
|
|
|
|
|
}
|
2023-04-07 13:49:59 +04:00
|
|
|
|
var rooms = _roomStorage.GetFullList();
|
2023-05-18 18:09:59 +04:00
|
|
|
|
List<DinnerViewModel> dinners = new List<DinnerViewModel>();
|
|
|
|
|
foreach (var memId in Ids)
|
|
|
|
|
{
|
|
|
|
|
var res = _dinnerStorage.GetElement(new DinnerSearchModel { Id = memId });
|
|
|
|
|
if (res != null)
|
|
|
|
|
{
|
|
|
|
|
dinners.Add(res);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var list = new List<ReportDinnerRoomViewModel>();
|
2023-04-07 11:09:51 +04:00
|
|
|
|
foreach (var dinner in dinners)
|
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
var record = new ReportDinnerRoomViewModel
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
DinnerName = dinner.DinnerName,
|
2023-05-18 18:09:59 +04:00
|
|
|
|
Rooms = new List<Tuple<string, double>>()
|
2023-04-07 11:09:51 +04:00
|
|
|
|
};
|
2023-04-07 13:49:59 +04:00
|
|
|
|
foreach (var room in rooms)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-04-07 13:49:59 +04:00
|
|
|
|
if (room.RoomDinners.ContainsKey(dinner.Id))
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
record.Rooms.Add(new Tuple<string, double>(room.RoomName, room.RoomPrice));
|
2023-04-07 11:09:51 +04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
list.Add(record);
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public List<ReportDinnersViewModel> GetDinners(ReportHeadwaiterBindingModel model)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
var listAll = new List<ReportDinnersViewModel>();
|
2023-04-07 11:09:51 +04:00
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
var listСonferences = _roomStorage.GetFilteredList(new RoomSearchModel
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
HeadwaiterId = model.HeadwaiterId,
|
2023-05-18 18:09:59 +04:00
|
|
|
|
RoomName = model.RoomName,
|
2023-04-07 11:09:51 +04:00
|
|
|
|
});
|
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
foreach (var room in listСonferences)
|
|
|
|
|
{
|
|
|
|
|
foreach (var c in room.RoomDinners)
|
|
|
|
|
{
|
|
|
|
|
listAll.Add(new ReportDinnersViewModel
|
|
|
|
|
{
|
|
|
|
|
RoomName = room.RoomName,
|
|
|
|
|
DinnerName = c.Value.DinnerName
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var listConferenceBookings = _conferenceBookingStorage.GetFilteredList(new ConferenceBookingSearchModel());
|
2023-04-07 11:09:51 +04:00
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
foreach (var conferenceBooking in listConferenceBookings)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
listAll.Add(new ReportDinnersViewModel
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
2023-05-18 18:09:59 +04:00
|
|
|
|
NameHall = conferenceBooking.NameHall
|
2023-04-07 11:09:51 +04:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return listAll;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public void SaveDinnerRoomToExcelFile(ReportHeadwaiterBindingModel model)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
_saveToExcel.CreateReport(new ExcelInfoHeadwaiter
|
|
|
|
|
{
|
|
|
|
|
FileName = model.FileName,
|
2023-05-18 18:09:59 +04:00
|
|
|
|
Title = "Список номеров",
|
|
|
|
|
DinnerRooms = GetDinnerRoom(model.Ids)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public void SaveDinnerRoomToWordFile(ReportHeadwaiterBindingModel model)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
_saveToWord.CreateDoc(new WordInfoHeadwaiter
|
|
|
|
|
{
|
|
|
|
|
FileName = model.FileName,
|
2023-05-18 18:09:59 +04:00
|
|
|
|
Title = "Список номеров",
|
|
|
|
|
DinnerRooms = GetDinnerRoom(model.Ids)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-18 18:09:59 +04:00
|
|
|
|
public void SaveDinnersToPdfFile(ReportHeadwaiterBindingModel model)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
{
|
|
|
|
|
_saveToPdf.CreateDoc(new PdfInfoHeadwaiter
|
|
|
|
|
{
|
|
|
|
|
FileName = model.FileName,
|
2023-05-18 18:09:59 +04:00
|
|
|
|
Title = "Список обедов",
|
|
|
|
|
Dinners = GetDinners(model)
|
2023-04-07 11:09:51 +04:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|