namespace MyOffice.Data.Repositories.Account; using Models.Accounts; public interface IAccountRepository { List GetAll(Guid userId); Task> GetAllAsync(Guid userId, CancellationToken cancellationToken = default); List GetByCategory(Guid userId, Guid categoryId); Task> GetByCategoryAsync(Guid userId, Guid categoryId, CancellationToken cancellationToken = default); List GetByCategoryDetailed(Guid userId, Guid categoryId); Task> GetByCategoryDetailedAsync(Guid userId, Guid categoryId, CancellationToken cancellationToken = default); AccountDetailed? GetByIdDetailed(Guid userId, Guid id); Task GetByIdDetailedAsync(Guid userId, Guid id, CancellationToken cancellationToken = default); bool Add(Account account); Task AddAsync(Account account, CancellationToken cancellationToken = default); bool Delete(Account account); Task DeleteAsync(Account account, CancellationToken cancellationToken = default); Account? Get(Guid userId, Guid id); Task GetAsync(Guid userId, Guid id, CancellationToken cancellationToken = default); bool Update(Account account); Task UpdateAsync(Account account, CancellationToken cancellationToken = default); bool Remove(Account account); List FindAccounts(Guid userId, string term); Task> FindAccountsAsync(Guid userId, string term, CancellationToken cancellationToken = default); List GetRestAtDate(Guid userId, DateTime date); Task> GetRestAtDateAsync(Guid userId, DateTime date, CancellationToken cancellationToken = default); List GetIncomeByCategories(Guid userId, DateTime from, DateTime to); Task> GetIncomeByCategoriesAsync(Guid userId, DateTime from, DateTime to, CancellationToken cancellationToken = default); List GetIncomeByCategory(Guid userId, Guid categoryId, DateTime from, DateTime to); Task> GetIncomeByCategoryAsync(Guid userId, Guid categoryId, DateTime from, DateTime to, CancellationToken cancellationToken = default); List GetOutcomeByCategories(Guid userId, DateTime from, DateTime to); Task> GetOutcomeByCategoriesAsync(Guid userId, DateTime from, DateTime to, CancellationToken cancellationToken = default); List GetOutcomeByCategory(Guid userId, Guid categoryId, DateTime from, DateTime to); Task> GetOutcomeByCategoryAsync(Guid userId, Guid categoryId, DateTime from, DateTime to, CancellationToken cancellationToken = default); }