using ROLAC.API.DTOs.MealAttendance;
namespace ROLAC.API.Services;
public interface IMealAttendanceService
{
/// Today's date in the server's local time zone (the church's "current Sunday").
DateOnly ServiceDay { get; }
/// Returns the counts for , creating a zeroed row if none exists.
Task GetOrCreateAsync(DateOnly date);
///
/// Atomically adds (may be negative) to one age-group column,
/// clamped at zero, and returns the resulting authoritative counts.
///
Task IncrementAsync(DateOnly date, string category, int delta);
///
/// Sets one age-group column to an absolute (clamped at zero),
/// overwriting the current count, and returns the resulting authoritative counts.
///
Task SetAsync(DateOnly date, string category, int value);
///
/// Overwrites all three age-group columns for with absolute
/// values (each clamped at zero), creating the row if it does not exist, and returns
/// the resulting authoritative counts. Used by the back-office Sunday-attendance editor.
///
Task SetCountsAsync(DateOnly date, int adult, int youth, int kid);
/// Returns the daily counts within the inclusive date range, ordered by date (for the dashboard).
Task> GetRangeAsync(DateOnly from, DateOnly to);
}