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 AbstractSaveToExcelOrganiser _saveToExcel; private readonly AbstractSaveToWordClerc _saveToWord; private readonly AbstractSaveToPdfClerc _saveToPdf; public ReportLogicOrganiser(IAdditionsPlanStorage mealPlanStorage, IMemberStorage memberStorage, IConferenceStorage conferenceStorage, AbstractSaveToExcelOrganiser saveToExcel, AbstractSaveToWordClerc saveToWord, AbstractSaveToPdfClerc saveToPdf) { _mealPlanStorage = mealPlanStorage; _memberStorage = memberStorage; _conferenceStorage = conferenceStorage; _saveToExcel = saveToExcel; _saveToWord = saveToWord; _saveToPdf = saveToPdf; } public List GetMemberConference() { var conferences = _conferenceStorage.GetFullList(); var members = _memberStorage.GetFullList(); var list = new List(); foreach (var member in members) { var record = new ReportMemberConferenceViewModel { MemberFIO = member.MemberFIO, Conferences = new List>() }; foreach (var conference in conferences) { if (conference.ConferenceMembers.ContainsKey(member.Id)) { record.Conferences.Add(new Tuple(conference.ConferenceName, conference.StartDate)); } } list.Add(record); } return list; } public List GetMembers(ReportBindingModel model) { var listAll = new List(); 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 ExcelInfoOrganiser { 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) }); } } }