public IHttpActionResult DeleteAllergen(int id)
        {
            Allergen allergen = db.Allergens.Find(id);
            string   userId   = User.Identity.GetUserId();

            RemoveAllergenFromLog(id);
            Customer customer = db.Customers.Where(c => c.ApplicationUserId == userId).FirstOrDefault();

            if (allergen == null)
            {
                return(NotFound());
            }

            try
            {
                AllergenTotal total = db.AllergenTotals.Where(a => a.AllergenId == id).FirstOrDefault();
                db.AllergenTotals.Remove(total);
            }
            catch { }
            try
            {
                AllergenJunction user = db.AllergensJunction.Where(a => a.AllergenId == id && a.CustomerId == customer.id).FirstOrDefault();
                db.AllergensJunction.Remove(user);
            }
            catch { }
            try
            {
                List <AllergenReactionJunction> logged = db.AllergensReactionsJunction.Where(a => a.AllergenId == id && a.CustomerId == customer.id).ToList();
                db.AllergensReactionsJunction.RemoveRange(logged);
            }
            catch { }

            db.Allergens.Remove(allergen);
            db.SaveChanges();

            return(Ok(allergen));
        }
Beispiel #2
0
        public ActionResult LogFood(int?routeId)  //find a way to break this up
        {
            List <string> editedAllergens = new List <string>();
            string        mealName        = "";

            //goes this route if logging a beer
            if (routeId > 0)
            {
                BeerClass1[] beers        = TempData["BeerIngredients"] as BeerClass1[];
                BeerClass1   selectedBeer = beers.Where(a => a.id == routeId).FirstOrDefault();
                string       ingredients  = "";
                if (selectedBeer.ingredients.hops != null)
                {
                    ingredients += "hops, ";
                }
                if (selectedBeer.ingredients.malt != null)
                {
                    ingredients += "malt, ";
                }
                if (selectedBeer.ingredients.yeast != null)
                {
                    ingredients += "yeast, ";
                }
                editedAllergens = FindAllergens(ingredients, true);
            }
            //goes this route if logging a non-restaurant item
            else if (routeId == 0 || routeId == null)
            {
                List <string> allergensToLog = TempData["foundAllergies"] as List <string>;
                editedAllergens = allergensToLog.Distinct().ToList();
                mealName        = TempData["MealName"] as string;
            }
            //goes this way if logging a restaurant meal or LogByAllergen
            else
            {
                editedAllergens = TempData["foundAllergens"] as List <string>;
                //goes this way if coming from LogByAllergen
                if (routeId == -2)
                {
                    mealName = TempData["MealName"] as string;
                }
            }

            var           customer    = GetCustomer();
            FoodLog       logger      = new FoodLog();
            AllergenTotal logAllergen = new AllergenTotal();

            if (editedAllergens == null)
            {
                TempData["foods"] = null;
                return(RedirectToAction("Index"));
            }

            for (int i = 0, j = 1; i < editedAllergens.Count; i += 2, j += 2)
            {
                logger.Allergens += editedAllergens[i] + ",";
                int tempId = int.Parse(editedAllergens[j]);
                var temp   = db.AllergenTotals.Where(a => a.CustomerId == customer.id && a.AllergenId == tempId).FirstOrDefault();
                if (temp == null)
                {
                    logAllergen.CustomerId = customer.id;
                    logAllergen.AllergenId = tempId;
                    logAllergen.Total      = 1;
                    db.AllergenTotals.Add(logAllergen);
                    db.SaveChanges();
                }
                else
                {
                    temp.Total += 1;
                }
            }
            logger.Reactions  = null;
            logger.CustomerId = customer.id;
            logger.MealName   = mealName;
            logger.MealId     = db.FoodLogs.Where(f => f.CustomerId == customer.id).Max(m => m.MealId);
            if (logger.MealId == null)
            {
                logger.MealId = 1;
            }
            else
            {
                logger.MealId++;
            }

            db.FoodLogs.Add(logger);
            db.SaveChanges();
            TempData["foods"] = null;
            return(RedirectToAction("Index"));
        }