119 lines
4.4 KiB
C#
119 lines
4.4 KiB
C#
|
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()
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|