using ROLAC.API.DTOs.Finance;
namespace ROLAC.API.Services;

public interface IFinanceDashboardService
{
    /// <summary>All-time balance: total Givings minus total Paid+Approved expenses.</summary>
    Task<FinanceSummaryDto> GetSummaryAsync();

    /// <summary>Income (Givings) vs expense (Paid+Approved) totals within the date range.</summary>
    Task<IncomeExpenseDto> GetIncomeExpenseAsync(DateOnly? from, DateOnly? to);

    /// <summary>
    /// Expense totals grouped by the drill level implied by the supplied ids:
    /// none -> by Ministry; ministryId -> by CategoryGroup; ministryId+categoryGroupId -> by SubCategory.
    /// </summary>
    Task<List<BreakdownSliceDto>> GetExpenseBreakdownAsync(
        DateOnly? from, DateOnly? to, int? ministryId, int? categoryGroupId);
}
