WorkTracker/Services/Exports/MonthlyTimesheetExcelExportService.cs
2026-04-24 10:45:44 +02:00

33 lines
No EOL
1.3 KiB
C#

using WorkTracker.Services.WorkDays;
namespace WorkTracker.Services.Exports;
public sealed class MonthlyTimesheetExcelExportService(
IWorkDayService workDayService,
IMonthlyTimesheetExcelExporter exporter,
IWebHostEnvironment environment) : IMonthlyTimesheetExcelExportService
{
private readonly IWorkDayService workDayService = workDayService;
private readonly IMonthlyTimesheetExcelExporter exporter = exporter;
private readonly IWebHostEnvironment environment = environment;
public async Task<MonthlyTimesheetExcelFile> ExportAsync(int year, int month, bool includePreview, CancellationToken cancellationToken = default)
{
var templatePath = Path.Combine(environment.ContentRootPath, "Templates", "monthly-timesheet-template.xlsx");
if (!File.Exists(templatePath))
{
throw new FileNotFoundException("Monthly timesheet template not found.", templatePath);
}
var timesheet = await workDayService.GetMonthlyTimesheetAsync(year, month, includePreview, cancellationToken);
await using var templateStream = File.OpenRead(templatePath);
var content = exporter.Export(timesheet, templateStream);
return new MonthlyTimesheetExcelFile
{
FileName = $"timesheet-{year}-{month:00}.xlsx",
Content = content
};
}
}