public ActionResult LogReaction(LogReactionViewModel model) { var customer = GetCustomer(); var loggedMeal = db.FoodLogs.Where(l => l.id == model.id).FirstOrDefault(); List <string> loggedAllergens = loggedMeal.Allergens.Split(',').ToList(); loggedAllergens.RemoveAt(loggedAllergens.Count - 1); loggedMeal.Reactions = "Logged"; List <int> allergenId = new List <int>(); AllergenReactionJunction toLog = new AllergenReactionJunction(); for (int i = 0; i < model.allReactionIds.Length; i++) { int placeHolder = model.allReactionIds[i]; ReactionTotal reactionTotal = db.ReactionTotals.Where(r => r.ReactionId == placeHolder).FirstOrDefault(); if (reactionTotal == null) { ReactionTotal newReaction = new ReactionTotal(); newReaction.CustomerId = customer.id; newReaction.ReactionId = placeHolder; newReaction.Total = 1; db.ReactionTotals.Add(newReaction); db.SaveChanges(); } else { reactionTotal.Total += 1; db.SaveChanges(); } foreach (var allergen in loggedAllergens) { int tempId = db.Allergens.Where(a => a.KnownAllergies == allergen).Select(a => a.id).FirstOrDefault(); toLog = db.AllergensReactionsJunction.Where(a => a.CustomerId == customer.id && a.ReactionId == placeHolder && a.AllergenId == tempId).FirstOrDefault(); if (toLog == null) { AllergenReactionJunction newEntry = new AllergenReactionJunction(); newEntry.CustomerId = customer.id; newEntry.ReactionId = placeHolder; newEntry.AllergenId = tempId; newEntry.Total = 1; db.AllergensReactionsJunction.Add(newEntry); db.SaveChanges(); } else { toLog.Total += 1; db.SaveChanges(); } } DetermineAllergy(model.allReactionIds[i]); } TempData["foods"] = null; return(RedirectToAction("Index")); }
public ActionResult LogReaction() { string userId = User.Identity.GetUserId(); Customer customer = db.Customers.Where(u => u.ApplicationUserId == userId).FirstOrDefault(); LogReactionViewModel model = new LogReactionViewModel(); model.LoggedMeals = new SelectList(db.FoodLogs.Where(f => f.Reactions == null && f.CustomerId == customer.id).ToList(), "id", "MealName"); model.Reaction = new MultiSelectList(db.Reactions.ToList(), "id", "CommonReactions"); return(View(model)); }