2023-04-09 13:25:27 +04:00

125 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DocumentFormat.OpenXml.Bibliography;
using BankBusinessLogic.OfficePackage;
using BankBusinessLogic.OfficePackage.HelperModels;
using BankContracts.BindingModels;
using BankContracts.BusinessLogicsContracts;
using BankContracts.SearchModels;
using BankContracts.StoragesContracts;
using BankContracts.ViewModels;
using System.Reflection;
namespace BankBusinessLogic.BusinessLogics
{
public class ReportLogicOrganiser : IReportOrganiserLogic
{
private readonly IAdditionsPlanStorage _mealPlanStorage;
private readonly IMemberStorage _memberStorage;
private readonly IConferenceStorage _conferenceStorage;
private readonly AbstractSaveToExcelClerc _saveToExcel;
private readonly AbstractSaveToWordClerc _saveToWord;
private readonly AbstractSaveToPdfClerc _saveToPdf;
public ReportLogicOrganiser(IAdditionsPlanStorage mealPlanStorage, IMemberStorage memberStorage, IConferenceStorage conferenceStorage, AbstractSaveToExcelClerc saveToExcel, AbstractSaveToWordClerc saveToWord, AbstractSaveToPdfClerc saveToPdf)
{
_mealPlanStorage = mealPlanStorage;
_memberStorage = memberStorage;
_conferenceStorage = conferenceStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_saveToPdf = saveToPdf;
}
public List<ReportMemberConferenceViewModel> GetMemberConference()
{
var conferences = _conferenceStorage.GetFullList();
var members = _memberStorage.GetFullList();
var list = new List<ReportMemberConferenceViewModel>();
foreach (var member in members)
{
var record = new ReportMemberConferenceViewModel
{
MemberFIO = member.MemberFIO,
Conferences = new List<Tuple<string, DateTime>>()
};
foreach (var conference in conferences)
{
if (conference.ConferenceMembers.ContainsKey(member.Id))
{
record.Conferences.Add(new Tuple<string, DateTime>(conference.ConferenceName, conference.StartDate));
}
}
list.Add(record);
}
return list;
}
public List<ReportMembersViewModel> GetMembers(ReportBindingModel model)
{
var listAll = new List<ReportMembersViewModel>();
var listСonferences = _conferenceStorage.GetFilteredList(new ConferenceSearchModel
{
OrganiserId = model.OrganiserId,
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
foreach (var conference in listСonferences)
{
foreach (var c in conference.ConferenceMembers)
{
listAll.Add(new ReportMembersViewModel
{
StartDate = conference.StartDate,
ConferenceName = conference.ConferenceName,
MemberFIO=c.Value.MemberFIO
});
}
}
var listMealPlans = _mealPlanStorage.GetFilteredList(new AdditionsSearchModel());
foreach (var mealPlan in listMealPlans)
{
listAll.Add(new ReportMembersViewModel
{
MealPlanName = mealPlan.MealPlanName,
MealPlanPrice = mealPlan.MealPlanPrice
});
}
return listAll;
}
public void SaveMemberConferenceToExcelFile(ReportBindingModel model)
{
_saveToExcel.CreateReport(new ExcelInfoClerc
{
FileName = model.FileName,
Title = "Список изделий",
MemberConferences = GetMemberConference()
});
}
public void SaveMemberConferenceToWordFile(ReportBindingModel model)
{
_saveToWord.CreateDoc(new WordInfoClerc
{
FileName = model.FileName,
Title = "Список участников",
MemberConferences = GetMemberConference()
}) ;
}
public void SaveMembersToPdfFile(ReportBindingModel model)
{
_saveToPdf.CreateDoc(new PdfInfoClerc
{
FileName = model.FileName,
Title = "Список участников",
DateFrom = model.DateFrom!.Value,
DateTo = model.DateTo!.Value,
Members = GetMembers(model)
});
}
}
}