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); }