public IHttpActionResult AddToCurrentUsersPlan(Meal currentMeal, string day)
        {
            var currentUsersName = RequestContext.Principal.Identity.Name;
            var id = currentMeal.Id;

            var mealPlan = db.MealPlans.FirstOrDefault(w => w.User.Email == currentUsersName) ?? new MealPlan();

            var currentUser = db.Users.First(x => x.Email == currentUsersName);
            mealPlan.User = mealPlan.User ?? currentUser;

            var meal = db.Meals.Find(id);
            var mealPlanItem = new MealPlanItem
            {
                Day = day,
                Date = DateTime.Now,
                Meal = meal
            };

            //Meals is an ICollection of MealPlanData. so create the list and add the mealPlanData that we created before to it.
            mealPlan.MealPlanItems = mealPlan.MealPlanItems ?? new List<MealPlanItem>();

            mealPlan.MealPlanItems.Add(mealPlanItem);

            db.MealPlans.AddOrUpdate(mealPlan);

            db.SaveChanges();

            return Ok(mealPlan);
        }
        public IHttpActionResult PostMeal(Meal meal)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var currentUsersName = RequestContext.Principal.Identity.Name;
            var currentUser = db.Users.Where(x => x.Email == currentUsersName).First();
            meal.User= currentUser;
            db.Meals.Add(meal);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = meal.Id }, meal);
        }
        public IHttpActionResult PutMeal(int id, Meal meal)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != meal.Id)
            {
                return BadRequest();
            }

            db.Entry(meal).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MealExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
        public IHttpActionResult AddToCurrentUsersPlan(Meal currentMeal, string day)
        {
            var currentUsersName = RequestContext.Principal.Identity.Name;
            var id = currentMeal.Id;
            if (db.MealPlans.Where(w => w.User.Email == currentUsersName).FirstOrDefault() == null)
            {
                MealPlan mealPlan = new MealPlan();
                var meal = db.Meals.Find(id);
                var currentUser = db.Users.Where(x => x.Email == currentUsersName).First();
                mealPlan.User = currentUser;

                List<Meal> userListOfMeals = new List<Meal>();
                userListOfMeals.Add(meal);

                var mealPlanData = new MealPlanData
                {
                    Day = day,
                    Date = DateTime.Now,
                    Meals = userListOfMeals
                };

                //Meals is an ICollection of MealPlanData. so create the list and add the mealPlanData that we created before to it.
                mealPlan.MealPlanData = new List<MealPlanData>()
                {
                    mealPlanData
                };

                db.MealPlans.Add(mealPlan);
            }
            else
            {

                var mealPlan = db.MealPlans.Where(w => w.User.Email == currentUsersName).First();

                //if(mealPlan.User == null)
                //{
                //    mealPlan.User = db.Users.Where(u => u.UserName.Equals(currentUsersName)).FirstOrDefault();
                //    db.SaveChanges();
                //};

                var mondayMeals = mealPlan.MealPlanData.Where(m => m.Day.Equals(day, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
                if(mondayMeals != null)
                {
                    if (mondayMeals.Meals != null)
                    {
                        mondayMeals.Meals.Add(currentMeal);
                    }
                    else
                    {
                        mondayMeals.Meals = new List<Meal>
                        {
                            currentMeal
                        };
                    }
                }
                else
                {
                   var mealPlanData = new MealPlanData
                   {
                       Day = day,
                       Date = DateTime.Now,
                       Meals = new List<Meal>{
                           currentMeal
                       }
                   };

                   mealPlan.MealPlanData.Add(mealPlanData);
                }
            }

            db.SaveChanges();

            return Ok();
        }