using MealPlan.Api.DTOs.Diet; namespace MealPlan.Api.Services; public interface IDietTrackingService { Task GetGoalsAsync(Guid userId, CancellationToken ct = default); Task UpsertGoalsAsync(Guid userId, UserDailyGoalsDto dto, CancellationToken ct = default); Task GetDailySummaryAsync(Guid userId, DateOnly date, CancellationToken ct = default); Task> GetMealsAsync(Guid userId, DateOnly date, CancellationToken ct = default); Task LogMealAsync(Guid userId, LogMealDto dto, CancellationToken ct = default); Task PreviewMealAsync(Guid userId, DateOnly date, LogMealDto dto, CancellationToken ct = default); Task> GetMealSuggestionsAsync(Guid userId, DateOnly date, int limit = 5, CancellationToken ct = default); Task DeleteMealAsync(Guid userId, int id, CancellationToken ct = default); Task> GetDrinkCatalogAsync(CancellationToken ct = default); Task> GetDrinksAsync(Guid userId, DateOnly date, CancellationToken ct = default); Task LogDrinkAsync(Guid userId, LogDrinkDto dto, CancellationToken ct = default); Task DeleteDrinkAsync(Guid userId, int id, CancellationToken ct = default); Task> GetRemindersAsync(Guid userId, CancellationToken ct = default); Task CreateReminderAsync(Guid userId, CreateDietReminderDto dto, CancellationToken ct = default); Task UpdateReminderAsync(Guid userId, int id, UpdateDietReminderDto dto, CancellationToken ct = default); Task DeleteReminderAsync(Guid userId, int id, CancellationToken ct = default); Task> GetDueRemindersAsync(Guid userId, DateOnly? date, TimeOnly? time, CancellationToken ct = default); Task> GetHistoryAsync(Guid userId, DateOnly from, DateOnly to, CancellationToken ct = default); Task> GetRecentMealsAsync(Guid userId, int limit = 10, CancellationToken ct = default); Task CopyYesterdayMealsAsync(Guid userId, DateOnly targetDate, CancellationToken ct = default); Task> GetFavoriteRecipesAsync(Guid userId, CancellationToken ct = default); Task AddFavoriteRecipeAsync(Guid userId, int recipeId, CancellationToken ct = default); Task RemoveFavoriteRecipeAsync(Guid userId, int recipeId, CancellationToken ct = default); Task> GetFavoriteCatalogItemsAsync(Guid userId, CancellationToken ct = default); Task AddFavoriteCatalogItemAsync(Guid userId, int catalogItemId, CancellationToken ct = default); Task RemoveFavoriteCatalogItemAsync(Guid userId, int catalogItemId, CancellationToken ct = default); }