using Microsoft.EntityFrameworkCore; using TrafagSalesExporter.Data; using TrafagSalesExporter.Models; namespace TrafagSalesExporter.Services; public class ManagementCockpitService : IManagementCockpitService { private readonly CockpitValueAggregator _aggregator; private readonly ExcelCockpitAnalyzer _excelAnalyzer; private readonly CentralCockpitAnalyzer _centralAnalyzer; private readonly FinanceSummaryAnalyzer _financeAnalyzer; public ManagementCockpitService(IDbContextFactory dbFactory) : this(dbFactory, new CurrencyExchangeRateService(dbFactory)) { } public ManagementCockpitService(IDbContextFactory dbFactory, ICurrencyExchangeRateService exchangeRateService) { _aggregator = new CockpitValueAggregator(exchangeRateService); _excelAnalyzer = new ExcelCockpitAnalyzer(dbFactory, _aggregator); _centralAnalyzer = new CentralCockpitAnalyzer(dbFactory, _aggregator); _financeAnalyzer = new FinanceSummaryAnalyzer(dbFactory); } public Task> GetAvailableFilesAsync() => _excelAnalyzer.GetAvailableFilesAsync(); public IReadOnlyList GetValueFieldOptions() => _aggregator.GetValueFieldOptions(); public Task AnalyzeAsync(string filePath) => _excelAnalyzer.AnalyzeAsync(filePath, null); public Task AnalyzeAsync(string filePath, ManagementCockpitAnalysisOptions? options) => _excelAnalyzer.AnalyzeAsync(filePath, options); public Task> GetAvailableCentralYearsAsync() => _centralAnalyzer.GetAvailableCentralYearsAsync(); public Task AnalyzeCentralAsync(int year, int? month) => _centralAnalyzer.AnalyzeCentralAsync(year, month, null); public Task AnalyzeCentralAsync(int year, int? month, ManagementCockpitAnalysisOptions? options) => _centralAnalyzer.AnalyzeCentralAsync(year, month, options); public Task AnalyzeFinanceSummaryAsync(int year, string? countryKey, string? currency) => _financeAnalyzer.AnalyzeFinanceSummaryAsync(year, countryKey, currency); }