ПИбд-21. Басалов А.Д. Лабораторная 3 #3 #3
101
project/ProjectTourAgency/Reports/DocReport.cs
Normal file
101
project/ProjectTourAgency/Reports/DocReport.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using ProjectEmployeeAgency.Repositories;
|
||||
using ProjectRouteAgency.Repositories;
|
||||
using ProjectTourAgency.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectTourAgency.Reports;
|
||||
|
||||
internal class DocReport
|
||||
{
|
||||
private readonly IRouteRepository _routeRepository;
|
||||
|
||||
private readonly IEmployeeRepository _employeeRepository;
|
||||
|
||||
private readonly IClientRepository _clientRepository;
|
||||
|
||||
private readonly ILogger<DocReport> _logger;
|
||||
|
||||
public DocReport(IRouteRepository routeRepository, IClientRepository clientRepository,
|
||||
IEmployeeRepository employeeRepository, ILogger<DocReport> logger)
|
||||
{
|
||||
_routeRepository = routeRepository ??
|
||||
throw new ArgumentNullException(nameof(routeRepository));
|
||||
_clientRepository = clientRepository ??
|
||||
throw new ArgumentNullException(nameof(clientRepository));
|
||||
_employeeRepository = employeeRepository ??
|
||||
throw new ArgumentNullException(nameof(employeeRepository));
|
||||
_logger = logger ??
|
||||
throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
public bool CreateDoc(string filePath, bool includeClients, bool includeEmployees, bool includeRoutes)
|
||||
{
|
||||
try
|
||||
{
|
||||
var builder = new WordBuilder(filePath)
|
||||
.AddHeader("Документ со справочниками");
|
||||
|
||||
if (includeClients)
|
||||
{
|
||||
builder.AddParagraph("Клиенты")
|
||||
.AddTable([1200, 2400, 1200], GetClients());
|
||||
}
|
||||
|
||||
if (includeEmployees)
|
||||
{
|
||||
builder.AddParagraph("Сотрудники")
|
||||
.AddTable([2400], GetEmployees());
|
||||
}
|
||||
|
||||
if (includeRoutes)
|
||||
{
|
||||
builder.AddParagraph("Маршруты")
|
||||
.AddTable([2400, 2400, 2400], GetRoutes());
|
||||
}
|
||||
|
||||
builder.Build();
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при формировании документа");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private List<string[]> GetClients()
|
||||
{
|
||||
return [
|
||||
["Полное имя", "Дата Рождения", "Номер Телефона", "Статус Клиента", "Денежный Счет"],
|
||||
.. _clientRepository
|
||||
.ReadClients()
|
||||
.Select(x => new string[]{x.FullName,x.BirthDate.ToString(), x.PhoneNumber, x.ClientStatus.ToString(), x.Money.ToString()}),
|
||||
];
|
||||
}
|
||||
|
||||
private List<string[]> GetEmployees()
|
||||
{
|
||||
return [
|
||||
["Полное имя", "Должность"],
|
||||
.. _employeeRepository
|
||||
.ReadEmployees()
|
||||
.Select(x => new string[]{x.FullName,x.EmployeeJob.ToString()}),
|
||||
];
|
||||
}
|
||||
|
||||
private List<string[]> GetRoutes()
|
||||
{
|
||||
return [
|
||||
["Место отправления", "Место прибытя", "Продолжительность"],
|
||||
.. _routeRepository
|
||||
.ReadRoutes()
|
||||
.Select(x => new string[]{x.Destination,x.Departure, x.Duration.ToString()}),
|
||||
];
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user