public JsonResult WeightEntry(WeightEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var context = new DietJournalEntities())
                {
                    WeightEntry weightEntry = null;
                    if (model.Id > 0)
                    {
                        weightEntry = context.WeightEntries.FirstOrDefault(e => e.Id == model.Id);
                    }

                    if (weightEntry == null)
                    {
                        weightEntry = context.WeightEntries.CreateObject();
                        context.WeightEntries.AddObject(weightEntry);
                    }

                    weightEntry.Amount = model.Amount;
                    weightEntry.EntryDate = model.ConsumedDate;
                    weightEntry.SavedDate = DateTime.Now;
                    weightEntry.UserId = CurrentUserId.Value;

                    context.SaveChanges();
                }

                return Json(new { IsValid = true, ReturnUrl = Url.Action("Index", new { date = model.ConsumedDate }) });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        public ActionResult Index(DateTime date)
        {
            ViewBag.Date = date;
            ViewBag.Back = true;

            var model = new WaterCollectionModel { EntriesDate = date };

            date = date.Date;
            var tomorrow = date.AddDays(1);

            if (CurrentUserId.HasValue)
            {
                using (var entities = new DietJournalEntities())
                {
                    var entries = entities.WaterEntries.Where(e => e.UserId == CurrentUserId.Value
                        && e.EntryDate >= date && e.EntryDate < tomorrow);

                    if (entries != null)
                    {
                        foreach (var entry in entries)
                        {
                            model.Add(entry.Id, entry.Ounces);
                        }
                    }
                }

            }

            return View("Index", model);
        }
        public void DeleteFavorite(int id)
        {
            using (var context = new DietJournalEntities())
            {
                var favorite = context.SupplementFavorites.FirstOrDefault(f => f.UserId == CurrentUserId && f.Id == id);
                if (favorite != null)
                    context.SupplementFavorites.DeleteObject(favorite);

                context.SaveChanges();
            }
        }
        public void Delete(int id)
        {
            using (var context = new DietJournalEntities())
            {
                var entry = context.ExerciseEntries.FirstOrDefault(e => e.Id == id);
                if (entry != null && entry.UserId == CurrentUserId.Value)
                    context.ExerciseEntries.DeleteObject(entry);

                context.SaveChanges();
            }
        }
        public ActionResult Entry(int id)
        {
            FoodEntryModel model = null;

            using (var entities = new DietJournalEntities())
            {
                var result = entities.FoodEntries.FirstOrDefault(e => e.Id == id);

                if (result != null && result.UserId == CurrentUserId.Value)
                    model = CreateEntryModel(result);
            }

            return EntryView(model);
        }
        public ActionResult Index(DateTime? date)
        {
            ViewBag.CurrentTab = "Entries";

            var model = new JournalIndexModel
            {
                Date = date != null ? date.Value.Date : DateTime.Today
            };

            var tomorrow = model.Date.AddDays(1);

            using (var context = new DietJournalEntities())
            {
                var weight = context.WeightEntries.FirstOrDefault(e => e.UserId == CurrentUserId
                    && e.EntryDate >= model.Date && e.EntryDate < tomorrow);

                if (weight != null)
                    model.Wieght = weight.Amount;
            }

            return View(model);
        }
        public JsonResult Add(WaterEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var context = new DietJournalEntities())
                {
                    var waterEntry = context.WaterEntries.CreateObject();
                    context.WaterEntries.AddObject(waterEntry);

                    waterEntry.Ounces = model.Ounces;
                    waterEntry.EntryDate = model.ConsumedDate;
                    waterEntry.SavedDate = DateTime.Now;
                    waterEntry.UserId = CurrentUserId.Value;

                    context.SaveChanges();
                }

                return Json(new { IsValid = true, ReturnUrl = Url.Action("Index", new { date = model.ConsumedDate }) });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        public ActionResult Entry(int id)
        {
            SupplementEntryModel model = null;

            using (var entities = new DietJournalEntities())
            {
                var result = entities.SupplementEntries.FirstOrDefault(e => e.Id == id);

                if (result != null && result.UserId == CurrentUserId.Value)
                {
                    model = new SupplementEntryModel
                    {
                        Id = id,
                        Name = result.Name,
                        ConsumedDate = result.EntryDate,
                        Milligrams = result.Milligrams > 0 ? result.Milligrams.ToString() : string.Empty,
                    };
                }
            }

            return EntryView(model);
        }
        public ActionResult Entry(int id)
        {
            ExerciseEntryModel model = null;

            using (var entities = new DietJournalEntities())
            {
                var result = entities.ExerciseEntries.FirstOrDefault(e => e.Id == id);

                if (result != null && result.UserId == CurrentUserId.Value)
                {
                    model = new ExerciseEntryModel
                    {
                        Id = id,
                        Description = result.Description,
                        ConsumedDate = result.EntryDate,
                        ExerciseType = result.Type.ToString(),
                        AvailableExerciseTypes = GetAvailableExerciseTypes()
                    };
                }
            }

            return EntryView(model);
        }
        public JsonResult Add(SupplementEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var context = new DietJournalEntities())
                {
                    var entry = context.SupplementEntries.CreateObject();
                    context.SupplementEntries.AddObject(entry);

                    entry.Name = model.Name;
                    if (!String.IsNullOrEmpty(model.Milligrams))
                        entry.Milligrams = decimal.Parse(model.Milligrams);
                    entry.EntryDate = model.ConsumedDate;
                    entry.SavedDate = DateTime.Now;
                    entry.UserId = CurrentUserId.Value;

                    context.SaveChanges();
                }

                return Json(new { IsValid = true, ReturnUrl = Url.Action("Index", new { date = model.ConsumedDate }) });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        public ActionResult Favorites()
        {
            ViewBag.Back = true;
            ViewBag.CurrentTab = "Favorites";

            Dictionary<string, IEnumerable<ExerciseFavoriteResultModel>> model = null;

            using (var context = new DietJournalEntities())
            {
                model = (from f in context.ExerciseFavorites
                         where f.UserId == CurrentUserId
                         group f by f.Type into g
                         select new
                         {
                             ExerciseType = context.ExerciseTypes.FirstOrDefault(t => t.Id == g.Key),
                             Entries = g.Select(e => new ExerciseFavoriteResultModel { Id = e.Id, Title = e.Description })
                         }).ToDictionary(i => i.ExerciseType.Name, i => i.Entries);
            }

            return View(model);
        }
        public ActionResult FavoriteSearch(string Name)
        {
            List<SupplementFavoriteResultModel> searchResults = null;

            using (var context = new DietJournalEntities())
            {
                searchResults = (from f in context.SupplementFavorites
                                 where f.UserId == CurrentUserId.Value
                                 && (String.IsNullOrEmpty(Name) || f.Name.Contains(Name))
                                 select new SupplementFavoriteResultModel
                                 {
                                     Id = f.Id,
                                     Title = f.Name,
                                     Milligrams = f.Milligrams.HasValue ? f.Milligrams.Value : 0M,
                                 }).ToList();
            }

            return PartialView("FavoriteSearchResults", searchResults);
        }
        public ActionResult SelectFavorite(SupplementFavoriteSelectionModel model)
        {
            var entryModel = new SupplementEntryModel
            {
                ConsumedDate = model.ConsumedDate
            };

            if (ModelState.IsValid && !String.IsNullOrEmpty(model.Selection))
            {
                int favoriteId = int.Parse(model.Selection);

                using (var context = new DietJournalEntities())
                {
                    var favorite = context.SupplementFavorites.FirstOrDefault(f => f.Id == favoriteId);
                    if (favorite != null)
                    {
                        entryModel.Milligrams = favorite.Milligrams.HasValue ? favorite.Milligrams.Value.ToString() : string.Empty;
                        entryModel.Name = favorite.Name;
                        entryModel.Favorite = true;
                    }
                }
            }

            return EntryView(entryModel);
        }
        public JsonResult Entry(SupplementEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var entities = new DietJournalEntities())
                {
                    SupplementEntry entry = null;

                    if (model.Id > 0)
                        entry = entities.SupplementEntries.FirstOrDefault(e => e.Id == model.Id);

                    if (entry == null)
                    {
                        entry = new SupplementEntry();
                        entities.SupplementEntries.AddObject(entry);
                    }

                    entry.UserId = CurrentUserId.Value;
                    entry.Name = model.Name;
                    entry.EntryDate = model.ConsumedDate;
                    entry.SavedDate = DateTime.Now;
                    entry.Milligrams = !String.IsNullOrEmpty(model.Milligrams) ? decimal.Parse(model.Milligrams) : 0M;

                    if (model.Favorite)
                    {
                        var favorite = new SupplementFavorite
                        {
                            UserId = CurrentUserId.Value,
                            Milligrams = entry.Milligrams,
                            Name = entry.Name
                        };

                        entities.SupplementFavorites.AddObject(favorite);
                    }

                    entities.SaveChanges();
                }

                return Json(new { IsValid = true });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        public ActionResult Favorites()
        {
            ViewBag.Back = true;
            ViewBag.CurrentTab = "Favorites";

            IEnumerable<SupplementFavoriteResultModel> model = null;

            using (var context = new DietJournalEntities())
            {
                model = (from f in context.SupplementFavorites
                         where f.UserId == CurrentUserId
                         select new SupplementFavoriteResultModel
                         {
                             Id = f.Id,
                             Title = f.Name,
                             Milligrams = f.Milligrams.HasValue ? f.Milligrams.Value : 0M
                         }).ToList();
            }

            return View(model);
        }
        public ActionResult SelectFavorite(FoodFavoriteSelectionModel model)
        {
            var entryModel = new FoodEntryModel
            {
                ConsumedDate = model.ConsumedDate
            };

            if (ModelState.IsValid && !String.IsNullOrEmpty(model.Selection))
            {
                int favoriteId = int.Parse(model.Selection);

                using (var context = new DietJournalEntities())
                {
                    var favorite = context.FoodFavorites.FirstOrDefault(f => f.Id == favoriteId);
                    if (favorite != null)
                    {
                        entryModel.FoodEntryType = favorite.MealType.ToString();
                        entryModel.Title = favorite.Title;
                        entryModel.Description = favorite.Description;
                        entryModel.Calories = favorite.Calories.HasValue ? favorite.Calories.Value : 0;
                        entryModel.Protein = favorite.Protein.HasValue ? favorite.Protein.Value : 0;
                        entryModel.Carbs = favorite.Carbs.HasValue ? favorite.Carbs.Value : 0;
                        entryModel.Fat = favorite.Fat.HasValue ? favorite.Fat.Value : 0;
                        entryModel.Favorite = true;
                    }
                }
            }

            SetFoodEntryProfileSettings(entryModel);

            return EntryView(entryModel);
        }
        public JsonResult Entry(ExerciseEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var entities = new DietJournalEntities())
                {
                    ExerciseEntry entry = null;

                    if (model.Id > 0)
                        entry = entities.ExerciseEntries.FirstOrDefault(e => e.Id == model.Id);

                    if (entry == null)
                    {
                        entry = new ExerciseEntry();
                        entities.ExerciseEntries.AddObject(entry);
                    }

                    entry.UserId = CurrentUserId.Value;
                    entry.Description = model.Description;
                    entry.EntryDate = model.ConsumedDate;
                    entry.SavedDate = DateTime.Now;
                    entry.Type = !String.IsNullOrEmpty(model.ExerciseType) ? int.Parse(model.ExerciseType) : 0;

                    if (model.Favorite)
                    {
                        var favoriteModel = new ExerciseFavorite
                        {
                            Type = entry.Type,
                            Description = entry.Description,
                            UserId = CurrentUserId.Value
                        };
                        entities.ExerciseFavorites.AddObject(favoriteModel);
                    }

                    entities.SaveChanges();

                    if (model.EntryValues != null && model.EntryValues.Count > 0)
                    {
                        foreach (var entryValue in model.EntryValues)
                        {
                            ExerciseEntryExerciseTypeValue value = null;

                            if (!String.IsNullOrEmpty(entryValue.Id))
                            {
                                var entryValueId = int.Parse(entryValue.Id);
                                value = entities.ExerciseEntryExerciseTypeValues.FirstOrDefault(v => v.Id == entryValueId);
                            }

                            if (value == null)
                            {
                                value = new ExerciseEntryExerciseTypeValue
                                {
                                    ExerciseTypeId = int.Parse(entryValue.EntryTypeValueId),
                                    ExerciseEntryId = entry.Id
                                };
                                entities.ExerciseEntryExerciseTypeValues.AddObject(value);
                            }

                            value.Value = entryValue.Value;
                        }

                        entities.SaveChanges();
                    }
                }

                return Json(new { IsValid = true });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        private IEnumerable<SelectListItem> GetAvailableFoodEntryTypes(ProfileSetting profileSettings)
        {
            if (profileSettings.DietPlanId.HasValue)
            {
                using (var context = new DietJournalEntities())
                {
                    var dietPlan = context.DietPlans.FirstOrDefault(d => d.Id == profileSettings.DietPlanId.Value);

                    var foodEntryTypes = (from t in context.FoodEntryTypes
                                          where t.DietPlanId == profileSettings.DietPlanId.Value
                                                ||
                                                (dietPlan.ParentId.HasValue && t.DietPlanId == dietPlan.ParentId.Value)
                                          select t).ToList();

                    var availableFoodEntryTypes = foodEntryTypes.Select(t => new SelectListItem
                                                                                 {
                                                                                     Value = t.Id.ToString(),
                                                                                     Text = t.Name
                                                                                 }).ToList();

                    availableFoodEntryTypes.Insert(0, new SelectListItem {Text = "--Select Entry Type--", Value = ""});

                    return availableFoodEntryTypes;
                }
            }

            return null;
        }
        private IEnumerable<SelectListItem> GetAvailableExerciseTypes()
        {
            var availableExerciseTypes = new List<SelectListItem>();
            availableExerciseTypes.Add(new SelectListItem
            {
                Value = "",
                Text = "--Select Exercise Type--"
            });
            using (var entities = new DietJournalEntities())
            {
                foreach (var exerciseType in entities.ExerciseTypes.Where(t => t.IsActive))
                {
                    availableExerciseTypes.Add(new SelectListItem
                    {
                        Value = exerciseType.Id.ToString(),
                        Text = exerciseType.Name
                    });
                }
            }

            return availableExerciseTypes;
        }
        public ActionResult Index(DateTime date)
        {
            ViewBag.Date = date;
            ViewBag.Back = true;

            var model = new ExerciseCollectionModel { EntriesDate = date };

            date = date.Date;
            var tomorrow = date.AddDays(1);

            if (CurrentUserId.HasValue)
            {
                using (var entities = new DietJournalEntities())
                {
                    var entries = entities.ExerciseEntries.Where(e => e.UserId == CurrentUserId.Value
                        && e.EntryDate >= date && e.EntryDate < tomorrow);

                    if (entries != null)
                    {
                        var exerciseEntries = from e in entries.Cast<ExerciseEntry>()
                                          group e by e.Type into g
                                          select g;

                        foreach (var exerciseEntry in exerciseEntries)
                        {
                            var exerciseType = entities.ExerciseTypes.FirstOrDefault(t => t.Id == exerciseEntry.Key);
                            var values = exerciseEntry.ToDictionary(e => e.Id, e => e.Description);
                            model.Add(exerciseType.Name, values);
                        }
                    }
                }

            }

            return View(model);
        }
        public ActionResult SelectFavorite(ExerciseFavoriteSelectionModel model)
        {
            var entryModel = new ExerciseEntryModel
            {
                ConsumedDate = model.ConsumedDate
            };

            if (ModelState.IsValid && !String.IsNullOrEmpty(model.Selection))
            {
                int favoriteId = int.Parse(model.Selection);

                using (var context = new DietJournalEntities())
                {
                    var favorite = context.ExerciseFavorites.FirstOrDefault(f => f.Id == favoriteId);
                    if (favorite != null)
                    {
                        entryModel.ExerciseType = favorite.Type.ToString();
                        entryModel.Description = favorite.Description;
                        entryModel.Favorite = true;
                    }
                }
            }

            entryModel.AvailableExerciseTypes = GetAvailableExerciseTypes();

            return EntryView(entryModel);
        }
        public ActionResult FavoriteSearch(string FoodEntryType, string Title)
        {
            List<FoodFavoriteResultModel> searchResults = null;

            var mealType = !String.IsNullOrEmpty(FoodEntryType) ? int.Parse(FoodEntryType) : -1;
            using(var context = new DietJournalEntities())
            {
                searchResults = (from f in context.FoodFavorites
                                 where f.UserId == CurrentProfileSettings.UserId
                                 && (mealType < 0 || f.MealType == mealType)
                                 && (String.IsNullOrEmpty(Title) || f.Title.Contains(Title))
                                 select new FoodFavoriteResultModel
                                    {
                                        Id = f.Id,
                                        Title = f.Title
                                    }).ToList();
            }

            return PartialView("FavoriteSearchResults", searchResults);
        }
        public JsonResult Entry(FoodEntryModel model)
        {
            if (ModelState.IsValid)
            {
                using (var entities = new DietJournalEntities())
                {
                    FoodEntry foodEntry = null;

                    if (model.Id > 0)
                        foodEntry = entities.FoodEntries.FirstOrDefault(e => e.Id == model.Id);

                    if (foodEntry == null)
                    {
                        foodEntry = new FoodEntry();
                        entities.FoodEntries.AddObject(foodEntry);
                    }

                    foodEntry.UserId = CurrentUserId.Value;
                    foodEntry.Title = model.Title;
                    foodEntry.Description = model.Description;
                    foodEntry.Calories = model.Calories;
                    foodEntry.Carbs = model.Carbs;
                    foodEntry.EntryDate = model.ConsumedDate;
                    foodEntry.Fat = model.Fat;
                    foodEntry.Protein = model.Protein;
                    foodEntry.SavedDate = DateTime.Now;
                    foodEntry.MealType = !String.IsNullOrEmpty(model.FoodEntryType) ? int.Parse(model.FoodEntryType) : 0;

                    if (model.Favorite)
                    {
                        var favorite = new FoodFavorite
                        {
                            UserId = CurrentUserId,
                            MealType = foodEntry.MealType,
                            Title = foodEntry.Title,
                            Description = foodEntry.Description,
                            Calories = foodEntry.Calories,
                            Carbs = foodEntry.Carbs,
                            Protein = foodEntry.Protein,
                            Fat = foodEntry.Fat
                        };

                        entities.FoodFavorites.AddObject(favorite);
                    }

                    entities.SaveChanges();

                    if (model.EntryValues != null && model.EntryValues.Count > 0)
                    {
                        foreach (var entryValue in model.EntryValues)
                        {
                            FoodEntryMealTypeValue value = null;

                            if (!String.IsNullOrEmpty(entryValue.Id))
                            {
                                var entryValueId = int.Parse(entryValue.Id);
                                value = entities.FoodEntryMealTypeValues.FirstOrDefault(v => v.Id == entryValueId);
                            }

                            if (value == null)
                            {
                                value = new FoodEntryMealTypeValue
                                {
                                    MealTypeValueId = int.Parse(entryValue.EntryTypeValueId),
                                    FoodEntryId = foodEntry.Id
                                };
                                entities.FoodEntryMealTypeValues.AddObject(value);
                            }

                            value.Value = entryValue.Value;
                        }

                        entities.SaveChanges();
                    }
                }

                return Json(new { IsValid = true });
            }

            return Json(new { IsValid = false, ErrorMessage = "" });
        }
        public String EntryType(int exerciseTypeId, int exerciseEntryId)
        {
            var model = new List<ExerciseTypeValueModel>();

            using (var context = new DietJournalEntities())
            {
                foreach (var exerciseTypeValue in context.ExerciseTypeValues.Where(v => v.ExerciseTypeId == exerciseTypeId))
                {
                    var valueModel = new ExerciseTypeValueModel
                    {
                        Id = exerciseTypeValue.Id,
                        Label = exerciseTypeValue.Label,
                        InputType = exerciseTypeValue.InputType,
                        IsRequired = exerciseTypeValue.IsRequired
                    };

                    if (exerciseEntryId > 0)
                    {
                        var exerciseEntryMealTypeValue = context.ExerciseEntryExerciseTypeValues.FirstOrDefault(v => v.ExerciseEntryId == exerciseEntryId && v.ExerciseTypeId == exerciseTypeValue.Id);
                        if (exerciseEntryMealTypeValue != null)
                        {
                            valueModel.Value = new ExerciseEntryTypeValueModel
                            {
                                Id = exerciseEntryMealTypeValue.Id.ToString(),
                                EntryTypeValueId = exerciseEntryMealTypeValue.ExerciseTypeId.ToString(),
                                Value = exerciseEntryMealTypeValue.Value
                            };
                        }
                    }

                    model.Add(valueModel);
                }
            }

            var rtnString = RenderPartialViewToString("EntryType", model);

            return rtnString;
        }
        public ActionResult ProfileSettings(ProfileSettingsModel model)
        {
            var membership = Membership.GetUser(HttpContext.User.Identity.Name);

            using (var context = new DietJournalEntities())
            {
                var result = context.ProfileSettings.FirstOrDefault(s => s.UserId == (Guid)membership.ProviderUserKey);
                if (result == null)
                {
                    result = context.ProfileSettings.CreateObject();
                    result.UserId = (Guid)membership.ProviderUserKey;
                    context.ProfileSettings.AddObject(result);
                }

                result.FirstName = model.FirstName.Trim();
                result.LastName = model.LastName.Trim();
                if (!String.IsNullOrEmpty(model.Birthday))
                    result.BirthDay = DateTime.Parse(model.Birthday);
                else
                    result.BirthDay = null;
                result.Gender = model.Gender;
                result.CaloriesGoal = model.CaloriesGoal;
                result.CaptureCalories = model.CaptureCalories;
                result.CaptureCarbs = model.CaptureCarbs;
                result.CaptureFat = model.CaptureFat;
                result.CaptureProtein = model.CaptureProtein;
                result.DietPlanId = model.DietPlanId;
                result.WeightGoal = model.WeightGoal;

                context.SaveChanges();

                CurrentProfileSettings = result;
            }

            return RedirectToAction("Settings", "Journal");
        }
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                MembershipCreateStatus createStatus;
                var membershipUser = Membership.CreateUser(model.Email, model.Password, model.Email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    FormsAuthentication.SetAuthCookie(model.Email, false /* createPersistentCookie */);

                    using (var entities = new DietJournalEntities())
                    {
                        var settings = entities.ProfileSettings.CreateObject();
                        settings.UserId = (Guid)membershipUser.ProviderUserKey;
                        if (model.DietPlanId != NoDietPlanValue && model.DietPlanId != SelectDietPlanValue)
                            settings.DietPlanId = model.DietPlanId;
                        entities.ProfileSettings.AddObject(settings);

                        entities.SaveChanges();
                    }

                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", ErrorCodeToString(createStatus));
                }
            }

            model.AvailableDietPlans = GetDietPlanSelectItems();

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public ActionResult FavoriteSearch(string ExerciseType, string Description)
        {
            List<ExerciseFavoriteResultModel> searchResults = null;

            var exerciseType = !String.IsNullOrEmpty(ExerciseType) ? int.Parse(ExerciseType) : 0;
            using (var context = new DietJournalEntities())
            {
                searchResults = (from f in context.ExerciseFavorites
                                 where f.UserId == CurrentUserId.Value
                                 && (exerciseType == 0 || f.Type == exerciseType)
                                 && (String.IsNullOrEmpty(Description) || f.Description.Contains(Description))
                                 select new ExerciseFavoriteResultModel
                                 {
                                     Id = f.Id,
                                     Title = f.Description
                                 }).ToList();
            }

            return PartialView("FavoriteSearchResults", searchResults);
        }
        public String EntryType(int foodEntryTypeId, int foodEntryId)
        {
            var model = new List<FoodEntryTypeValueModel>();

            using (var context = new DietJournalEntities())
            {
                foreach (var foodEntryTypeValue in context.FoodEntryTypeValues.Where(v => v.FoodEntryTypeId == foodEntryTypeId))
                {
                    var valueModel = new FoodEntryTypeValueModel
                    {
                        Id = foodEntryTypeValue.Id,
                        Label = foodEntryTypeValue.Label,
                        InputType = foodEntryTypeValue.ValueType,
                        IsRequired = foodEntryTypeValue.IsRequired
                    };

                    if (foodEntryId > 0)
                    {
                        var foodEntryMealTypeValue = context.FoodEntryMealTypeValues.FirstOrDefault(v => v.FoodEntryId == foodEntryId && v.MealTypeValueId == foodEntryTypeValue.Id);
                        if (foodEntryMealTypeValue != null)
                        {
                            valueModel.Value = new FoodEntryValueModel
                            {
                                Id = foodEntryMealTypeValue.Id.ToString(),
                                EntryTypeValueId = foodEntryMealTypeValue.MealTypeValueId.ToString(),
                                Value = foodEntryMealTypeValue.Value
                            };
                        }
                    }

                    var options = context.FoodEntryTypeValueOptions.Where(o => o.FoodEntryTypeValueId == foodEntryTypeValue.Id);
                    if (options != null && options.Count() > 0)
                    {
                        valueModel.Options = (from o in options.ToList()
                                              select new SelectListItem
                                              {
                                                  Value = o.Id.ToString(),
                                                  Text = o.Value
                                              });
                    }
                    model.Add(valueModel);
                }
            }

            var rtnString = RenderPartialViewToString("EntryType", model);

            return rtnString;
        }