2023-04-08 22:43:54 +04:00

119 lines
4.5 KiB
C#

using BankBusinessLogic.OfficePackage.HelperModels;
using BankBusinessLogic.OfficePackage;
using BankContracts.BindingModels;
using BankContracts.SearchModels;
using BankContracts.StoragesContracts;
using BankContracts.ViewModels;
using BankContracts.BusinessLogicsContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BankBusinessLogic.BusinessLogics
{
public class ReportLogicHeadwaiter : IReportHeadwaiterLogic
{
private readonly IRoomStorage _roomStorage;
private readonly ICreditStorage _dinnerStorage;
private readonly IAdditionsPlanStorage _mealPlansStorage;
private readonly IConferenceBookingStorage _conferenceBookingStorage;
private readonly AbstractSaveToExcelClient _saveToExcel;
private readonly AbstractSaveToWordHeadwaitre _saveToWord;
private readonly AbstractSaveToPdfClient _saveToPdf;
public ReportLogicHeadwaiter(IRoomStorage roomStorage, ICreditStorage dinnerStorage, IAdditionsPlanStorage mealPlansStorage, IConferenceBookingStorage conferenceBookingStorage, AbstractSaveToExcelClient saveToExcel, AbstractSaveToWordHeadwaitre saveToWord, AbstractSaveToPdfClient saveToPdf)
{
_roomStorage = roomStorage;
_dinnerStorage = dinnerStorage;
_mealPlansStorage = mealPlansStorage;
_conferenceBookingStorage = conferenceBookingStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_saveToPdf = saveToPdf;
}
public List<ReportMealPlanDinnerViewModel> GetMealPlanDinner()
{
var mealPlans = _mealPlansStorage.GetFullList();
var dinners = _dinnerStorage.GetFullList();
var list = new List<ReportMealPlanDinnerViewModel>();
foreach (var dinner in dinners)
{
var record = new ReportMealPlanDinnerViewModel
{
DinnerName = dinner.DinnerName,
MealPlans = new List<Tuple<string, DateTime>>()
};
foreach (var mealPlan in mealPlans)
{
if (mealPlan.MealPlanDinners.ContainsKey(dinner.Id))
{
record.MealPlans.Add(new Tuple<string, DateTime>(mealPlans.MealPlanName, mealPlans.StartDate));
}
}
list.Add(record);
}
return list;
}
public List<ReportConferenceBindingRoomsViewModel> GetConferenceBindingRooms(ReportHeadwaiterBindingModel model)
{
var listAll = new List<ReportConferenceBindingRoomsViewModel>();
var listConferenceBinding = _conferenceBookingStorage.GetFilteredList(new ConferenceBookingSearchModel
{
HeadwaiterId = model.HeadwaiterId,
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
var listRooms = _roomStorage.GetFilteredList(new RoomSearchModel());
foreach (var room in listRooms)
{
listAll.Add(new ReportConferenceBindingRoomsViewModel
{
RoomName = room.RoomName,
RoomPrice = room.RoomPrice,
RoomFrame = room.RoomFrame
});
}
return listAll;
}
public void SaveMealPlanDinnerToExcelFile(ReportHeadwaiterBindingModel model)
{
_saveToExcel.CreateReport(new ExcelInfoClient
{
FileName = model.FileName,
Title = "Список изделий",
MealPlanDinner = GetMealPlanDinner()
});
}
public void SaveMealPlanDinnerToWordFile(ReportHeadwaiterBindingModel model)
{
_saveToWord.CreateDoc(new WordInfoClient
{
FileName = model.FileName,
Title = "Список участников",
MealPlanDinner = GetMealPlanDinner()
});
}
public void SaveConferenceBindingRoomsToPdfFile(ReportHeadwaiterBindingModel model)
{
_saveToPdf.CreateDoc(new PdfInfoClient
{
FileName = model.FileName,
Title = "Список участников",
DateFrom = model.DateFrom!.Value,
DateTo = model.DateTo!.Value,
ConferenceBindingRooms = GetConferenceBindingRooms(model)
});
}
}
}