abenteuerzeit / viva-la-carte

E-commerce Eating Lifestyle Service
2 stars 1 forks source link

Implement MealPlan #46

Open abenteuerzeit opened 1 year ago

abenteuerzeit commented 1 year ago
public class MealPlan : IMealPlan
{
    // Properties
    public List<Food> Foods { get; set; }
    public List<Nutrient> Nutrients { get; set; }

    // Constructor
    public MealPlan(List<Food> foods, List<Nutrient> nutrients)
    {
        Foods = foods;
        Nutrients = nutrients;
    }

    // Methods
    public int GetScore()
    {
        // Calculates the score of the meal plan by summing the scores of the individual nutrients
        int mealPlanScore = 0;
        foreach (var nutrient in Nutrients)
        {
            mealPlanScore += nutrient.GetScore();
        }
        return mealPlanScore;
    }

    public bool IsAcceptable()
    {
        // Checks if the meal plan is acceptable by checking if all the nutrient requirements are met
        foreach (var nutrient in Nutrients)
        {
            if (!nutrient.IsMet())
            {
                return false;
            }
        }
        return true;
    }

    public Food SelectFood()
    {
        // Selects a random food from the list of top 100 foods
        Random random = new Random();
        int index = random.Next(0, Foods.Count - 1);
        return Foods[index];
    }

    public void AddFood(Food food)
    {
        // Adds the selected food to the meal plan
        Foods.Add(food);

        // Updates the current amounts of the nutrients in the meal plan
        foreach (var nutrient in Nutrients)
        {
            nutrient.CurrentAmount += food.GetMacronutrientDictionary()[nutrient.Name] + food.GetMicronutrientDictionary()[nutrient.Name];
        }
    }
}

You can then use this class to store information about a personalized meal plan. For example:

var mealPlan = new MealPlan(new List<Food>(), new List<Nutrient>() {
    new Nutrient("Protein", 50, 100, 150, 0, 1),
    new Nutrient("Fat", 20, 30, 40, 0, 2),
    new Nutrient("Carbohydrates", 100, 150, 200, 0, 3)
});

The MealPlan class has methods for calculating the score of the meal plan, checking if the meal plan is acceptable, selecting a food item, and adding the food item to the meal plan.