namespace MyOffice.Data.Repositories.Account;

using Models.Accounts;

public interface IAccountRepository
{
	List<Account> GetAll(Guid userId);
	List<Account> GetByCategory(Guid userId, Guid categoryId);
	List<AccountDetailed> GetByCategoryDetailed(Guid userId, Guid categoryId);
	AccountDetailed? GetByIdDetailed(Guid userId, Guid id);
	bool Add(Account account);
	bool Delete(Account account);
	Account? Get(Guid userId, Guid id);
	bool Update(Account account);
	bool Remove(Account account);
	List<Account> FindAccounts(Guid userId, string term);

	decimal GetPeriodIncome(Guid userId, DateTime from, DateTime to);
	decimal GetPeriodOutcome(Guid userId, DateTime from, DateTime to);
	List<AccountSimple> GetRestAtDate(Guid userId, DateTime date);
}