using General_Ledger_Service.DTOs.Accounts; using General_Ledger_Service.DTOs.Reports; using General_Ledger_Service.Models; //using namespace General_Ledger_Service.Interfaces.Repositories { public interface IAccountRepository { Task GetByIdAsync(long accountId); Task GetByCodeAsync(string accountCode); Task GetByNameAndParentAsync(string accountName, long? parentAccountId); Task GetAncestorDepthAsync(long parentAccountId); Task GetAncestorBreadcrumbAsync(long accountId); Task> GetDescendantTreeAsync(long accountId); Task WouldCreateCycleAsync(long accountId, long newParentId); Task<(List Items, int TotalCount)> SearchAsync(short? accountTypeId, bool? isActive, bool? isPostable, int? page, int? pageSize); Task AddAsync(Account account); Task> GetTrialBalanceAsync(DateOnly asOfDate); Task> GetBalanceSheetLeafRowsAsync(DateOnly asOfDate); Task> GetProfitAndLossLeafRowsAsync(DateOnly periodStart, DateOnly periodEnd); Task> GetCashFlowWorkingCapitalChangesAsync(DateOnly periodStart, DateOnly periodEnd, long cashAccountRootId); Task> GetCashFlowCategoryLinesAsync(string category, DateOnly periodStart, DateOnly periodEnd, long cashAccountRootId); Task GetCashBalanceAsync(DateOnly asOfDate, long cashAccountRootId); } }