using Models; using System.Collections.Immutable; namespace Services { /// /// This service handles the preferences of a bound account /// public interface IAccountRecipesPreferencesService { /// /// The bound account /// public Account Account { get; } /// /// Adds a recipe in the favorites of the bound account /// /// The information about the recipe to add in favorites public void AddToFavorites(RecipeInfo info); /// /// Removes a recipe from the favorites of the bound account /// /// The information about the recipe to remove from favorites public void RemoveFromFavorites(RecipeInfo info); /// /// Sets a score for the specified recipe /// /// The information about the targeted recipe /// The score to set public void SetReviewScore(RecipeInfo info, uint score); /// /// Adds a recipe to the weekly list, specifying the amount of persons that must be fed for the week /// /// The information about the targeted recipe /// The amount of guests that needs to be fed by the recipe for the week /// public bool AddToWeeklyList(RecipeInfo info, uint persAmount); /// /// Retrieves the rate of the targeted recipe /// The rate contains the user's score and whether if the recipe is in the favorites list. /// /// /// The information about the targeted recipe /// public RecipeRate GetRate(RecipeInfo info); /// /// The favorites recipes of the account /// /// A list containing all the recipe info that are marked as favorite by the bound account public ImmutableList GetFavorites(); /// /// The recommended recipes for the user based on his preferences. /// /// A list of the recommended recipes based on the preferences of the bound account public ImmutableList GetRecommendedRecipes(); /// /// The weekly list of the bound account /// /// The weekly list of the bound account, containing tuples that binds a recipe to the number of guests to feed for the week public ImmutableList<(RecipeInfo, uint)> GetWeeklyList(); } }