using TrafagSalesExporter.Models; namespace TrafagSalesExporter.Services; public interface IManagementCockpitPageService { Task InitializeAsync(string? selectedFilePath, int selectedCentralYear); Task> LoadFilesAsync(); Task> LoadCentralYearsAsync(); Task AnalyzeAsync(string filePath); Task AnalyzeCentralAsync(int year, int? month); } public sealed class ManagementCockpitPageService : IManagementCockpitPageService { private readonly IManagementCockpitService _cockpitService; public ManagementCockpitPageService(IManagementCockpitService cockpitService) { _cockpitService = cockpitService; } public async Task InitializeAsync(string? selectedFilePath, int selectedCentralYear) { var files = await _cockpitService.GetAvailableFilesAsync(); var years = await _cockpitService.GetAvailableCentralYearsAsync(); return new ManagementCockpitPageState { Files = files, CentralYears = years, SelectedFilePath = selectedFilePath ?? files.FirstOrDefault()?.Path, SelectedCentralYear = selectedCentralYear == 0 ? years.LastOrDefault() : selectedCentralYear }; } public Task> LoadFilesAsync() => _cockpitService.GetAvailableFilesAsync(); public Task> LoadCentralYearsAsync() => _cockpitService.GetAvailableCentralYearsAsync(); public Task AnalyzeAsync(string filePath) => _cockpitService.AnalyzeAsync(filePath); public Task AnalyzeCentralAsync(int year, int? month) => _cockpitService.AnalyzeCentralAsync(year, month); } public sealed class ManagementCockpitPageState { public List Files { get; set; } = []; public List CentralYears { get; set; } = []; public string? SelectedFilePath { get; set; } public int SelectedCentralYear { get; set; } }