コード例 #1
0
        public IActionResult CreateFood(CreateFoodViewModel model)
        {
            var food = new Matratt()
            {
                MatrattNamn = model.Food.MatrattNamn,
                MatrattTyp  = model.Food.MatrattTyp,
                Beskrivning = model.Food.Beskrivning,
                Pris        = model.Food.Pris
            };

            _context.Matratts.Add(food);
            _context.SaveChanges();


            foreach (var ingredient in model.IngredientsChecked)
            {
                var foodIngredient = new MatrattProdukt()
                {
                    MatrattId = food.MatrattId,
                    ProduktId = ingredient
                };

                _context.MatrattProdukts.Add(foodIngredient);
            }
            _context.SaveChanges();


            return(View("CreateFoodConfirmation"));
        }
コード例 #2
0
        public IActionResult UpdateFood(ManageFoodViewModel model)
        {
            if (ModelState.IsValid)
            {
                var original = _context.Matratts.SingleOrDefault(m => m.MatrattId == model.CurrentMatratt.MatrattId);
                _context.Entry(original).CurrentValues.SetValues(model.CurrentMatratt);
                _context.SaveChanges();

                var originalIngredients = _context.MatrattProdukts.Where(m => m.MatrattId == model.CurrentMatratt.MatrattId).Select(y => y.ProduktId).ToList();

                foreach (var item in model.ingredients)
                {
                    if (item.IsChecked && !originalIngredients.Contains(item.ProduktId))
                    {
                        MatrattProdukt newItem = new MatrattProdukt(original.MatrattId, item.ProduktId);
                        _context.Add(newItem);
                    }
                    else if (item.IsChecked == false && originalIngredients.Contains(item.ProduktId))
                    {
                        MatrattProdukt newItem = new MatrattProdukt(original.MatrattId, item.ProduktId);
                        _context.MatrattProdukts.Remove(newItem);
                    }
                }
                TempData["EditFood"] = "Maträtt uppdaterad";
                _context.SaveChanges();
            }
            else
            {
                TempData["EditFood"] = "Maträtt kunde inte uppdateras. Har du inte fyllt i alla uppgifter?";
            }

            return(RedirectToAction("ManageFood"));
        }
コード例 #3
0
        public async Task <IActionResult> AddDish(AddDishViewModel _model)
        {
            if (ModelState.IsValid)
            {
                await _repository.CreateAsync <Matratt>(_model.Dish);

                List <Matratt> getMattRatt = await _repository.SelectAll <Matratt>();

                var matrattId = getMattRatt.OrderByDescending(m => m.MatrattId).First().MatrattId;

                foreach (var product in _model.Products)
                {
                    if (product.Selected == true)
                    {
                        MatrattProdukt smrp = new MatrattProdukt(matrattId, product.ProduktId);

                        await _repository.CreateAsync <MatrattProdukt>(smrp);
                    }
                }
            }

            AddDishViewModel model = new AddDishViewModel(
                await _repository.SelectAll <MatrattTyp>(),
                await _repository.SelectAll <Produkt>(),
                await _repository.SelectAll <Matratt>());

            return(View("Dishes", model));
        }
コード例 #4
0
        public async Task <Matratt> ConvertDishToMatrattAsync(Dish dish, Matratt matratt)
        {
            matratt.MatrattNamn = dish.Name;
            matratt.Beskrivning = dish.Description;
            matratt.MatrattTyp  = int.Parse(dish.DishType);
            matratt.Pris        = dish.Price;

            var ingredients = dish.IngredientsString.Split(",");

            matratt.MatrattProdukt.Clear();
            foreach (var ingredient in ingredients)
            {
                var produkt = await _dbService.GetIngredientFromNameAsync(ingredient.Trim());

                var matrattProdukt = new MatrattProdukt
                {
                    Matratt   = matratt,
                    MatrattId = matratt.MatrattId,
                    Produkt   = produkt,
                    ProduktId = produkt.ProduktId
                };
                matratt.MatrattProdukt.Add(matrattProdukt);
            }

            return(matratt);
        }
コード例 #5
0
        public void UpdateDish(UpdateDishViewModel model)
        {
            var matratt             = _repository.GetDishById(model.id);
            var oldmatrattsprodukts = _repository.GetOldIngredienses(matratt.MatrattId);
            var matrattprodukts     = new List <MatrattProdukt>();

            matratt.MatrattNamn = model.Matrattnamn;
            foreach (var item in model.NewSelectedListItem)
            {
                var matrattprodukt = new MatrattProdukt();
                matrattprodukt.MatrattId = model.id;
                matrattprodukt.ProduktId = item;
                matrattprodukts.Add(matrattprodukt);
            }
            matratt.MatrattTyp     = model.MatrattstypID;
            matratt.Pris           = model.Pris;
            matratt.MatrattProdukt = matrattprodukts;

            if (model.NewSelectedListItem.Count == 0)
            {
                matratt.MatrattProdukt = oldmatrattsprodukts.ToList();
                _repository.UpdateOnlymatratt(matratt);
            }
            else
            {
                _repository.DeleteMatrattProduktList(oldmatrattsprodukts);
                _repository.Update(matratt);
            }
        }
コード例 #6
0
        public async Task <bool> AddIngredientToDish(string name, int matrattId)
        {
            // Get the current dish
            var dish = await GetDishAsync(matrattId);

            // Get all ingredients in DB
            var produkter = await GetDishIngredientsAsync();

            MatrattProdukt matrattProdukt;

            // Check if the name doesn't already exists in the DB
            if (!produkter.Any(p => string.Equals(p.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)))
            {
                // Name doesn't exist, create it and attach the id to the current dish through connection table
                var newProdukt = new Produkt {
                    ProduktNamn = name.ToFirstLetterUpper()
                };
                _context.Add(newProdukt);
                _context.SaveChanges();

                // Attach tne new produkt to MatrattProdukt.
                matrattProdukt = new MatrattProdukt
                {
                    MatrattId = matrattId,
                    ProduktId = newProdukt.ProduktId
                };
                dish.MatrattProdukt.Add(matrattProdukt);
                _context.Entry(dish).State = EntityState.Modified;
                var result = await _context.SaveChangesAsync();

                return(result == 1);
            }

            // Check if the dish doesn't have that produkt already
            if (!dish.MatrattProdukt.Any(p => string.Equals(p.Produkt.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)))
            {
                // Take the produkt from the list of existing produkts and attach it to the dish.
                matrattProdukt = new MatrattProdukt
                {
                    MatrattId = matrattId,
                    ProduktId = produkter.First(p =>
                                                string.Equals(p.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)).ProduktId
                };
                _context.MatrattProdukt.Add(matrattProdukt);
                _context.Entry(dish).State = EntityState.Modified;
                var result = await _context.SaveChangesAsync();

                return(result == 1);
            }
            return(false);
        }
コード例 #7
0
        public IActionResult AddDish(AddDishViewModel model)
        {
            var dish = new Matratt();

            if (!ModelState.IsValid)
            {
                model.DishTypes            = GetDishTypes();
                model.IngredientCheckBoxes = GetCheckBoxDataForDishes();
                return(View(model));
            }

            try
            {
                dish.Beskrivning  = model.CurrentMatratt.Beskrivning;
                dish.Pris         = model.CurrentMatratt.Pris;
                dish.MatrattNamn  = model.CurrentMatratt.MatrattNamn;
                dish.MatrattTypId = int.Parse(model.CurrentMatrattDishTypeID);


                _context.Matratts.Add(dish);
                _context.SaveChanges();
            }
            catch (Exception)
            {
                ViewBag.Message = "Please correct inputs";
                return(View(model));
            }



            foreach (var item in model.IngredientCheckBoxes)
            {
                if (item.IsSelected == true)
                {
                    MatrattProdukt newProd = new MatrattProdukt();

                    newProd.MatrattId = dish.MatrattId;
                    newProd.ProduktId = item.IngredientID;

                    _context.MatrattProdukts.Add(newProd);
                    _context.SaveChanges();
                }
            }



            ViewBag.Message = "Dish saved to the menu!";
            return(RedirectToAction("EditFoodMenu", "Admin"));
        }
コード例 #8
0
        private void AddIngredientsToDish(Matratt dish, List <IngredientViewModel> ingredientCheckBoxes)
        {
            foreach (var item in ingredientCheckBoxes)
            {
                if (item.IsSelected == true)
                {
                    MatrattProdukt mr = new MatrattProdukt();
                    mr.MatrattId = dish.MatrattId;
                    mr.ProduktId = item.IngredientID;

                    _context.MatrattProdukts.Add(mr);
                    _context.SaveChanges();
                }
            }
        }
コード例 #9
0
        public async Task <IActionResult> SaveNewProduct(AdminProductNewDish dish)
        {
            if (ModelState.IsValid)
            {
                List <Produkt> ingredientList;
                if (HttpContext.Session.GetString("NewIngredients") == null)
                {
                    string error = "Inga ingridienser kopplade till maträtten. Försök igen";
                    return(View("SaveProduct", error));
                }

                //Hämta listan från Sessionen
                var serializedValue = HttpContext.Session.GetString("NewIngredients");
                ingredientList = JsonConvert.DeserializeObject <List <Produkt> >(serializedValue);


                var dishName = dish.NewDish.MatrattNamn;
                dishName = char.ToUpper(dishName[0]) + dishName.Substring(1);

                var newProduct = new Matratt()
                {
                    MatrattNamn = dishName,
                    Beskrivning = dish.NewDish.Beskrivning,
                    MatrattTyp  = dish.Type,
                    Pris        = dish.NewDish.Pris
                };

                _context.Matratt.Add(newProduct);

                foreach (var item in ingredientList)
                {
                    var newConn = new MatrattProdukt()
                    {
                        MatrattId = newProduct.MatrattId,
                        ProduktId = item.ProduktId
                    };
                    _context.MatrattProdukt.Add(newConn);
                }
                _context.SaveChanges();

                return(View("SaveProduct", "Ny produkt sparad!"));
            }
            return(RedirectToAction("NewProduct"));
        }
コード例 #10
0
        public IActionResult Update(Matratt dish, int?dishId, int?removeIngredient, int?addIngredient)
        {
            //Remove Ingredient
            if (removeIngredient != null)
            {
                _context.MatrattProdukt.Remove(_context.MatrattProdukt.SingleOrDefault(x =>
                                                                                       x.MatrattId == dishId && x.ProduktId == removeIngredient));

                _context.SaveChanges();

                return(RedirectToAction("EditProduct", new { id = dishId }));
            }

            //AddIngredient
            if (addIngredient != null && dishId != null)
            {
                var newValue = new MatrattProdukt()
                {
                    MatrattId = (int)dishId,
                    ProduktId = (int)addIngredient
                };

                _context.MatrattProdukt.Add(newValue);

                _context.SaveChanges();

                return(RedirectToAction("EditProduct", new { id = dishId }));
            }

            //Save Dish
            var changeDish = _context.Matratt.Single(d => d.MatrattId == dishId);

            dish.MatrattNamn = char.ToUpper(dish.MatrattNamn[0]) + dish.MatrattNamn.Substring(1);

            changeDish.MatrattNamn = dish.MatrattNamn;
            changeDish.Beskrivning = dish.Beskrivning;
            changeDish.Pris        = dish.Pris;

            _context.SaveChanges();

            return(RedirectToAction("ViewProducts"));
        }
コード例 #11
0
        public async Task <IActionResult> UpdateDish(EditDishViewModel model, List <int> selectedProducts)
        {
            Matratt dish = await _repository.SelectById <Matratt>(model.Dish.MatrattId);

            dish.MatrattNamn = model.Dish.MatrattNamn;
            dish.Beskrivning = model.Dish.Beskrivning;
            dish.Pris        = model.Dish.Pris;
            dish.MatrattTyp  = model.Dish.MatrattTyp;

            await _repository.UpdateAsync <Matratt>(dish);

            _repository.DeleteMattrattJ(dish.MatrattId);

            foreach (var product in selectedProducts)
            {
                MatrattProdukt smrp = new MatrattProdukt(dish.MatrattId, product);

                await _repository.CreateAsync <MatrattProdukt>(smrp);
            }

            return(RedirectToAction("Dishes"));
        }
コード例 #12
0
        public void CreateDish(NewDishViewModel model)
        {
            var matratt = new Matratt()
            {
                MatrattNamn = model.Matratt.MatrattNamn,
                Beskrivning = model.Matratt.Beskrivning,
                MatrattTyp  = model.Matratt.MatrattTyp,
                Pris        = model.Matratt.Pris
            };

            _repository.Create(matratt);
            var matrattbyid = _repository.GetDishByName(model.Matratt.MatrattNamn);

            foreach (var item in model.SelectedListItem)
            {
                var matrattprodukt = new MatrattProdukt();
                matrattprodukt.MatrattId = matrattbyid.MatrattId;
                matrattprodukt.ProduktId = item;

                matrattbyid.MatrattProdukt.Add(matrattprodukt);
            }
            _repository.UpdateDishIngredienses(matrattbyid.MatrattProdukt.ToList());
        }
コード例 #13
0
        public async Task <bool> AddIngredient(int dishID, int ingredientID)
        {
            var result = false;

            var dishIngredient = new MatrattProdukt
            {
                MatrattId = dishID,
                ProduktId = ingredientID
            };

            var ingredientExists = _context.MatrattProdukt
                                   .Any(x => x.MatrattId == dishID && x.ProduktId == ingredientID);

            if (ingredientExists == false)
            {
                _context.MatrattProdukt.Add(dishIngredient);
                await _context.SaveChangesAsync();

                result = true;
                return(result);
            }

            return(result);
        }
コード例 #14
0
        public IActionResult AddFood(ManageFoodViewModel model)
        {
            var foodAldreadyExist = _context.Matratts.Where(m => m.MatrattNamn == model.CurrentMatratt.MatrattNamn).ToList();

            if (ModelState.IsValid)
            {
                if (foodAldreadyExist.Count == 0)
                {
                    _context.Add(model.CurrentMatratt);
                    _context.SaveChanges();
                    TempData["AddFood"] = "Ny maträtt tillagd";

                    var selectedIngredients = model.ingredients.Where(i => i.IsChecked == true).ToList();
                    var newFoodId           = _context.Matratts.SingleOrDefault(m => m.MatrattNamn == model.CurrentMatratt.MatrattNamn).MatrattId;

                    foreach (var ingredient in selectedIngredients)
                    {
                        MatrattProdukt newItem = new MatrattProdukt();
                        newItem.MatrattId = newFoodId;
                        newItem.ProduktId = ingredient.ProduktId;
                        _context.Add(newItem);
                    }

                    _context.SaveChanges();

                    return(RedirectToAction("ManageFood"));
                }
                else
                {
                    TempData["AddFood"] = "Maträtt kunde inte läggas till. Namn på maträtt upptaget?";
                    return(RedirectToAction("ManageFood"));
                }
            }

            return(RedirectToAction("ManageFood"));
        }