예제 #1
0
        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"));
        }
예제 #2
0
        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));
        }