using Books.Api.EventFlow.Repositories; namespace Books.Api.AiBookkeeper; /// /// Provides chart of accounts data for AI Bookkeeper processing. /// Fetches accounts from repository and filters to expense-type accounts. /// public class ChartOfAccountsProvider(IAccountRepository accountRepository) : IChartOfAccountsProvider { public async Task GetChartOfAccountsAsync( string companyId, CancellationToken cancellationToken = default) { var accounts = await accountRepository.GetActiveByCompanyIdAsync(companyId, cancellationToken); // Filter to expense-type accounts that AI can suggest var expenseAccounts = accounts .Where(a => a.AccountType is "expense" or "cogs" or "personnel" or "financial") .OrderBy(a => a.AccountNumber) .Select(a => new AiAccountDto { AccountNumber = a.AccountNumber, Name = a.Name, AccountType = a.AccountType, VatCodeId = a.VatCodeId, StandardAccountNumber = a.StandardAccountNumber }) .ToList(); return new ChartOfAccountsDto { CompanyId = companyId, Accounts = expenseAccounts }; } }