ISEbd-22_CourseWork_School/School/SchoolBusinessLogics/BusinessLogics/ReportLogic.cs

119 lines
4.4 KiB
C#
Raw Normal View History

2024-05-01 17:54:58 +04:00
using SchoolBusinessLogics.OfficePackage;
using SchoolContracts.BindingModels;
using SchoolContracts.BusinessLogicContracts;
using SchoolContracts.StoragesContracts;
namespace SchoolBusinessLogics.BusinessLogics;
public class ReportLogic : IReportLogic
{
private readonly AbstractSaveToWord _saveToWord;
private readonly IDisciplineStorage _disciplineStorage;
private readonly IStudentStorage _studentStorage;
private readonly AbstractSaveToExcel _saveToExcel;
private readonly IAccountStorage _accountStorage;
private readonly AbstractSaveToPdf _saveToPdf;
public ReportLogic(AbstractSaveToWord saveToWord, IDisciplineStorage disciplineStorage, AbstractSaveToExcel saveToExcel,
IAccountStorage accountStorage, AbstractSaveToPdf saveToPdf, IStudentStorage studentStorage)
{
_accountStorage = accountStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_disciplineStorage = disciplineStorage;
_saveToPdf = saveToPdf;
_studentStorage = studentStorage;
}
public void SaveDisciplinesToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список дисциплин вместе с клиентами",
ReportObjects = _disciplineStorage.GetFilteredList(new() { ClientsIds = option.Ids?.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SaveDisciplinesToExcel(ReportBindingModel option)
{
var ids = option.Ids?.ToList();
_saveToExcel.CreateReportDisciplines(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список дисциплин вместе с клиентами",
ReportObjects = _disciplineStorage.GetFilteredList(new() { StudentsIds = ids })
.Select(x => (object)x).ToList(),
Headers = new() { "Дисциплина", "Дата создания", "Дата прохождения" }
});
}
public void SendAccountsToEmail(ReportDateRangeBindingModel option, string email)
{
var accounts = _accountStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForAccounts(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по клиентом с накопительными счетами за период",
ReportObjects = accounts.Select(x => (object)x).ToList()
});
}
public void SaveClientsToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список клиентов вместе с их дисциплинами",
ReportObjects = _clientStorage.GetFilteredList(new() { DisciplinesIds = option.Ids?.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SaveClientsToExcel(ReportBindingModel option)
{
_saveToExcel.CreateReportClients(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список клиентов вместе с их дисциплинами",
ReportObjects = _clientStorage.GetFilteredList(new() { DisciplinesIds = option.Ids?.ToList() })
.Select(x => (object)x).ToList(),
Headers = new() { "Клиент", "Дата", "Дисциплина", "Курс" }
});
}
public void SendRequirementsToEmail(ReportDateRangeBindingModel option, string email)
{
var dicscipline = _disciplineStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForDisciplines(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по дисциплинам с требованиями за период",
ReportObjects = dicscipline.Select(x => (object)x).ToList()
});
}
}