// GET: /Administration/Recipes/Edit/5 //[AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int id) { //ViewData["RecipeItemID"] = Request.Form["recipeItems.index"]; Recipe recipeForEdit = db.Recipes.GetById(id); this.editRecipeVM = ParseRecipeModelToRecipeVM(recipeForEdit); return(View(this.editRecipeVM)); }
public ActionResult Edit(AdminRecipeViewModel recipeEditModel) { //if (ModelState.IsValid) //{ //} #region Delete old RecipeItems var recipe = this.db.Recipes.All() .Include(r => r.Categories) .Include(r => r.RecipeItems) .FirstOrDefault(r => r.RecipeID == recipeEditModel.RecipeID); var recipeItems = recipe.RecipeItems; foreach (var recipeItem in recipeItems.ToList()) { foreach (var step in recipeItem.Steps.ToList()) { this.db.Steps.Delete(step); } foreach (var ingredient in recipeItem.RecipeItems_Ingredients.ToList()) { this.db.RecipeItems_Ingredients.Delete(ingredient); } this.db.RecipeItems.Delete(recipeItem); } db.SaveChanges(); #endregion Recipe recipeForEdit = this.db.Recipes.GetById(recipeEditModel.RecipeID); recipeForEdit = ParseRecipeVMToRecipeModel_Update(recipeForEdit, recipeEditModel); this.db.Recipes.Update(recipeForEdit); int result = this.db.SaveChanges(); if (result != 0) { return(RedirectToAction("Details", "Recipes", new { recipeID = recipeEditModel.RecipeID, title = recipeEditModel.Title.Replace(' ', '-'), area = "" })); } //ViewData["RecipeItemID"] = Request.Form["recipeItems.index"]; recipeEditModel.ParentCategories = db.Categories.AllParentCategories(); recipeEditModel.ChildrenCategories = db.Categories.AllChildrenCategories(); recipeEditModel.PrepTimeHours = this.hours; recipeEditModel.PrepTimeMinutes = this.minutes; recipeEditModel.CookTimeHours = this.hours; recipeEditModel.CookTimeMinutes = this.minutes; recipeEditModel.Serves = this.servesArray; recipeEditModel.Rating = this.rating; recipeEditModel.Sources = this.db.Sources.All(); recipeEditModel.Recommendation = this.recommendationArray; return(View(recipeEditModel)); }
public async Task EditByAdminShouldChangeRecipe() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; AutoMapperConfig.RegisterMappings(Assembly.Load("CookingBook.Web.ViewModels")); var dbContext = new ApplicationDbContext(options); var recipeRepo = new EfDeletableEntityRepository <Recipe>(dbContext); var nutritionRepo = new EfDeletableEntityRepository <NutritionValue>(dbContext); var productRepo = new EfDeletableEntityRepository <Product>(dbContext); var userRepo = new EfDeletableEntityRepository <ApplicationUser>(dbContext); var service = new RecipesService(recipeRepo, nutritionRepo, productRepo, userRepo); var category = new Category(); var nutrValue = new NutritionValue(); var user = new ApplicationUser(); var prod = new Collection <RecipeByIdProductsViewModel>(); var recipeCreateViewModel = new RecipeCreateViewModel { CategoryId = 1, CookProcedure = "cookProc", Photo = "photo", Serving = 1, Title = "addNew", CookTime = 2, NutritionValue = new RecipeCreateNutritionValuesViewModel { Calories = 1, Carbohydrates = 1, Fats = 1, Fiber = 1, Protein = 1, Salt = 1, Sugar = 1 }, Products = new List <RecipeCreateProductsViewModel>(), }; string userId = "trayan"; StringValues sv = new StringValues("one"); StringValues sk = new StringValues("1"); var recipeResult = await service.CreateAsync(recipeCreateViewModel, userId, sv, sk); var model = new AdminRecipeViewModel { Id = recipeResult, CategoryId = 5, CookProcedure = "five", CookTime = 5, Photo = "fifthPhoto", Serving = 5, Title = "fifthEdit", }; await service.EditByAdmin(model); Assert.Equal(5, dbContext.Recipes.FirstOrDefault(x => x.Id == recipeResult).CategoryId); }
public async Task EditByAdmin(AdminRecipeViewModel model) { var recipe = await this.recipeRepository.All().FirstOrDefaultAsync(x => x.Id == model.Id); recipe.CategoryId = model.CategoryId; recipe.CookProcedure = model.SanitizedCookProcedure; recipe.Title = model.Title; recipe.CookTime = model.CookTime; recipe.Photo = model.Photo; recipe.Serving = model.Serving; recipe.ModifiedOn = DateTime.UtcNow; this.recipeRepository.Update(recipe); await this.recipeRepository.SaveChangesAsync(); }
public ActionResult AddSection(AdminRecipeViewModel recipeModel) { if (Request.IsAjaxRequest()) { RecipeItem recipeItem = new RecipeItem(); recipeItem.Steps = new List <Step>(); //recipeItem.Steps.Add(new Step() { Description = "bbb" }); newRecipeVM.RecipeItems.Add(recipeItem); return(PartialView("_RecipeItemEditor", recipeItem)); } else { //return RedirectToAction("Create"); //return PartialView("_StepPartial", newStep); return(View(@"~/Areas/Administration/Views/AdminRecipes/Create.cshtml", this.newRecipeVM)); } }
public ActionResult Create(AdminRecipeViewModel recipeModel) { //HttpPostedFileBase img = recipeModel.Image; //UploadRecipeImage(recipeModel.Image,recipeModel.Title); if (ModelState.IsValid) { Recipe newRecipe = ParseRecipeVMToRecipeModel(recipeModel); this.db.Recipes.Add(newRecipe); int result = this.db.SaveChanges(); if (result != 0) { return(RedirectToAction("Index")); } } this.newRecipeVM.RecipeItems = recipeModel.RecipeItems; return(View(this.newRecipeVM)); }
public AdminRecipesController() { this.hours = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; this.minutes = new int[] { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 }; this.servesArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; this.rating = new int[] { 1, 2, 3, 4, 5 }; this.recommendationArray = new string[] { "Да", "Не" }; this.newRecipeVM = new AdminRecipeViewModel(); //newRecipeVM.Recipe = new Recipe(); //List<Step> stepsList = new List<Step>(); //stepsList.Add(new Step()); //List<RecipeItems_Ingredients> ingredientsList = new List<RecipeItems_Ingredients>(); //ingredientsList.Add(new RecipeItems_Ingredients()); //newRecipeVM.Recipe.RecipeItems.Add(new RecipeItem() { Steps = stepsList, RecipeItems_Ingredients = ingredientsList }); //newRecipeVM.Recipe.Date = DateTime.Now; //newRecipeVM.Title = ""; newRecipeVM.ImageURL = @"http://res.cloudinary.com/hqz5ohs1v/image/upload/v1413825708/null_image.png"; newRecipeVM.ParentCategories = db.Categories.AllParentCategories(); newRecipeVM.ChildrenCategories = db.Categories.AllChildrenCategories(); newRecipeVM.PrepTimeHours = this.hours; newRecipeVM.SelectedPrepTimeHours = -1; newRecipeVM.PrepTimeMinutes = this.minutes; newRecipeVM.SelectedPrepTimeMinutes = -1; newRecipeVM.CookTimeHours = this.hours; newRecipeVM.SelectedCookTimeHours = -1; newRecipeVM.CookTimeMinutes = this.minutes; newRecipeVM.SelectedCookTimeMinutes = -1; newRecipeVM.Serves = this.servesArray; newRecipeVM.SelectedServes = 0; newRecipeVM.Rating = this.rating; newRecipeVM.SelectedRating = 0; newRecipeVM.Sources = this.db.Sources.All(); newRecipeVM.SelectedSource = 0; newRecipeVM.Recommendation = this.recommendationArray.ToList(); newRecipeVM.SelectedRecommendation = "--- избери дали да е препоръчана ---"; newRecipeVM.PublishedDate = DateTime.Now; ViewBag.UnitsList = this.db.Units.All().ToList(); ViewBag.IngredientsList = this.db.Ingredients.All().ToList(); RecipeItem recipeItem = new RecipeItem(); recipeItem.Steps = new List <Step>(); recipeItem.RecipeItems_Ingredients = new List <RecipeItems_Ingredients>(); newRecipeVM.RecipeItems.Add(recipeItem); }
//For POST Edit Action private Recipe ParseRecipeVMToRecipeModel_Update(Recipe recipeModel, AdminRecipeViewModel recipeVM) { Recipe recipeForEdit = recipeModel; ImageUploadResult recipeImgUploadResult = new ImageUploadResult(); //var recipeForEdit = this.db.Recipes.All() // .Include(r => r.Categories) // .Include(r => r.RecipeItems) // .FirstOrDefault(r => r.RecipeID == recipeVM.RecipeID); HMLToRTFConverter converter = new HMLToRTFConverter(); recipeForEdit.Title = recipeVM.Title; //recipeForEdit.ImageURL = "null_image.png"; Category newRecipeParentCategory = this.db.Categories.GetById(recipeVM.SelectedParentCategory); recipeForEdit.Categories.Clear(); recipeForEdit.Categories.Add(newRecipeParentCategory); Category newRecipeChildrenCategory = null; if (recipeVM.SelectedChildrenCategory != null) { newRecipeChildrenCategory = this.db.Categories.GetById((int)(recipeVM.SelectedChildrenCategory)); recipeForEdit.Categories.Add(newRecipeChildrenCategory); } if (recipeVM.Image != null && (recipeVM.Image.FileName != "null_image.png" || recipeVM.Image.FileName != "null_image")) { if (newRecipeChildrenCategory == null) { DeleteRecipeImage(recipeVM.ImageURL); recipeImgUploadResult = UploadRecipeImage(recipeVM.Image, recipeVM.Title, newRecipeParentCategory.Name, null); } else { DeleteRecipeImage(recipeVM.ImageURL); recipeImgUploadResult = UploadRecipeImage(recipeVM.Image, recipeVM.Title, newRecipeParentCategory.Name, newRecipeChildrenCategory.Name); } recipeForEdit.ImageVersion = "v" + recipeImgUploadResult.Version; recipeForEdit.ImageURL = "http://res.cloudinary.com" + recipeImgUploadResult.Uri.AbsolutePath; //newRecipe.ImageURL = recipeVM.Title.Replace(" ", "-") + ".jpg"; } else { RenameResult renameResult = null; if (newRecipeChildrenCategory != null) { renameResult = RenameRecipeImage(recipeVM.ImageURL, newRecipeParentCategory.Name, newRecipeChildrenCategory.Name); } else { renameResult = RenameRecipeImage(recipeVM.ImageURL, newRecipeParentCategory.Name); } if (renameResult != null) { recipeForEdit.ImageURL = HttpUtility.UrlDecode(renameResult.Url); } } recipeForEdit.PreparationTime = recipeVM.SelectedPrepTimeHours * 60 + recipeVM.SelectedPrepTimeMinutes; recipeForEdit.CookingTime = recipeVM.SelectedCookTimeHours * 60 + recipeVM.SelectedCookTimeMinutes; recipeForEdit.Serves = recipeVM.SelectedServes; recipeForEdit.Rating = recipeVM.SelectedRating; recipeForEdit.Source = this.db.Sources.GetById(recipeVM.SelectedSource); if (recipeVM.SelectedRecommendation == "Да") { recipeForEdit.Recommended = (bool?)true; } //if (recipeVM.SelectedRecommendation == "Не") else { recipeForEdit.Recommended = (bool?)false; } recipeForEdit.Date = recipeVM.PublishedDate; recipeForEdit.Description = converter.ConvertHTMLToRTF(recipeVM.Description); //recipeForEdit.RecipeItems = recipeVM.RecipeItems; foreach (var recipeItem in recipeVM.RecipeItems) { RecipeItem newRecipeItem = new RecipeItem(); newRecipeItem.RecipeItemName = recipeItem.RecipeItemName; foreach (var recipeItem_ingredient in recipeItem.RecipeItems_Ingredients) { RecipeItems_Ingredients newRecipeItem_ingredient = new RecipeItems_Ingredients(); Unit newUnit = this.db.Units.GetById(recipeItem_ingredient.Unit.UnitID); Ingredient newIngredient = this.db.Ingredients.GetById(recipeItem_ingredient.Ingredient.IngredientID); newRecipeItem_ingredient.Quantity = recipeItem_ingredient.Quantity; newRecipeItem_ingredient.Unit = newUnit; newRecipeItem_ingredient.Ingredient = newIngredient; newRecipeItem.RecipeItems_Ingredients.Add(newRecipeItem_ingredient); } foreach (var step in recipeItem.Steps) { newRecipeItem.Steps.Add(step); } recipeForEdit.RecipeItems.Add(newRecipeItem); } //newRecipe.RecipeItems = recipeVM.RecipeItems; return(recipeForEdit); }
//For GET Edit Action private AdminRecipeViewModel ParseRecipeModelToRecipeVM(Recipe recipeForEdit) { AdminRecipeViewModel editRecipeVM = new AdminRecipeViewModel(); RTFToHTMLConverter converter = new RTFToHTMLConverter(); editRecipeVM.RecipeID = recipeForEdit.RecipeID; editRecipeVM.Title = recipeForEdit.Title; editRecipeVM.ImageURL = recipeForEdit.ImageURL; editRecipeVM.ParentCategories = db.Categories.AllParentCategories(); editRecipeVM.SelectedParentCategory = recipeForEdit.Categories.Where(cat => cat.ParentCategoryID == null).Select(cat => cat.CategoryID).FirstOrDefault(); editRecipeVM.ChildrenCategories = db.Categories.AllChildrenCategories(); editRecipeVM.SelectedChildrenCategory = recipeForEdit.Categories.Where(cat => cat.ParentCategoryID != null).Select(cat => cat.CategoryID).FirstOrDefault(); editRecipeVM.PrepTimeHours = this.hours.ToList(); editRecipeVM.SelectedPrepTimeHours = (int)recipeForEdit.PreparationTime / 60; editRecipeVM.PrepTimeMinutes = this.minutes; editRecipeVM.SelectedPrepTimeMinutes = (int)recipeForEdit.PreparationTime % 60; editRecipeVM.CookTimeHours = this.hours; editRecipeVM.SelectedCookTimeHours = (int)recipeForEdit.CookingTime / 60; editRecipeVM.CookTimeMinutes = this.minutes; editRecipeVM.SelectedCookTimeMinutes = (int)recipeForEdit.CookingTime % 60; editRecipeVM.Serves = this.servesArray; editRecipeVM.SelectedServes = (int)recipeForEdit.Serves; editRecipeVM.Rating = this.rating; editRecipeVM.SelectedRating = (int)recipeForEdit.Rating; editRecipeVM.Sources = this.db.Sources.All(); editRecipeVM.SelectedSource = recipeForEdit.Source.SourceID; editRecipeVM.Recommendation = this.recommendationArray; //editRecipeVM.SelectedRecommendation = recipeForEdit.Recommended; if (recipeForEdit.Recommended == true) { editRecipeVM.SelectedRecommendation = "Да"; } else { editRecipeVM.SelectedRecommendation = "Не"; } editRecipeVM.PublishedDate = (DateTime)recipeForEdit.Date; editRecipeVM.Description = RtfHelper.PlainText(recipeForEdit.Description); //editRecipeVM.RecipeItems = recipeForEdit.RecipeItems.ToList(); foreach (var recipeItem in recipeForEdit.RecipeItems) { RecipeItem newRecipeItem = new RecipeItem(); newRecipeItem.RecipeItemName = recipeItem.RecipeItemName; foreach (var recipeItem_ingredient in recipeItem.RecipeItems_Ingredients) { RecipeItems_Ingredients newRecipeItem_ingredient = new RecipeItems_Ingredients(); Unit newUnit = this.db.Units.GetById(recipeItem_ingredient.Unit.UnitID); Ingredient newIngredient = this.db.Ingredients.GetById(recipeItem_ingredient.Ingredient.IngredientID); newRecipeItem_ingredient.Quantity = recipeItem_ingredient.Quantity; newRecipeItem_ingredient.Unit = newUnit; newRecipeItem_ingredient.Ingredient = newIngredient; newRecipeItem.RecipeItems_Ingredients.Add(newRecipeItem_ingredient); } foreach (var step in recipeItem.Steps) { newRecipeItem.Steps.Add(step); } editRecipeVM.RecipeItems.Add(newRecipeItem); } return(editRecipeVM); }
//For Create Action private Recipe ParseRecipeVMToRecipeModel(AdminRecipeViewModel recipeVM) { Recipe newRecipe = new Recipe(); HMLToRTFConverter converter = new HMLToRTFConverter(); ImageUploadResult recipeImgUploadResult = new ImageUploadResult(); newRecipe.Title = recipeVM.Title; Category newRecipeParentCategory = this.db.Categories.GetById(recipeVM.SelectedParentCategory); newRecipe.Categories.Add(newRecipeParentCategory); Category newRecipeChildrenCategory = null; if (recipeVM.SelectedChildrenCategory != null) { newRecipeChildrenCategory = this.db.Categories.GetById((int)(recipeVM.SelectedChildrenCategory)); newRecipe.Categories.Add(newRecipeChildrenCategory); } if ((recipeVM.Image != null && (recipeVM.Image.FileName != "null_image.png" || recipeVM.Image.FileName != "null_image"))) { if (newRecipeChildrenCategory == null) { recipeImgUploadResult = UploadRecipeImage(recipeVM.Image, recipeVM.Title, newRecipeParentCategory.Name, null); } else { recipeImgUploadResult = UploadRecipeImage(recipeVM.Image, recipeVM.Title, newRecipeParentCategory.Name, newRecipeChildrenCategory.Name); } newRecipe.ImageVersion = "v" + recipeImgUploadResult.Version; newRecipe.ImageURL = "http://res.cloudinary.com/" + recipeImgUploadResult.Uri.AbsolutePath; //newRecipe.ImageURL = recipeVM.Title.Replace(" ", "-") + ".jpg"; } else { newRecipe.ImageURL = "http://res.cloudinary.com/hqz5ohs1v/image/upload/v1413825708/null_image.png"; } newRecipe.PreparationTime = recipeVM.SelectedPrepTimeHours * 60 + recipeVM.SelectedPrepTimeMinutes; newRecipe.CookingTime = recipeVM.SelectedCookTimeHours * 60 + recipeVM.SelectedCookTimeMinutes; newRecipe.Serves = recipeVM.SelectedServes; newRecipe.Rating = recipeVM.SelectedRating; newRecipe.Source = this.db.Sources.GetById(recipeVM.SelectedSource); if (recipeVM.SelectedRecommendation == "Да") { newRecipe.Recommended = true; } //if (recipeVM.SelectedRecommendation == "Не") else { newRecipe.Recommended = false; } DateTime dt = recipeVM.PublishedDate; dt.AddHours(DateTime.Now.Hour); dt.AddMinutes(DateTime.Now.Minute); dt.AddSeconds(DateTime.Now.Second); newRecipe.Date = dt; //newRecipe.Date = recipeVM.PublishedDate; newRecipe.Description = converter.ConvertHTMLToRTF(recipeVM.Description); newRecipe.NumberOfHits = 1; newRecipe.NumberOfLikes = 1; foreach (var recipeItem in recipeVM.RecipeItems) { RecipeItem newRecipeItem = new RecipeItem(); newRecipeItem.RecipeItemName = recipeItem.RecipeItemName; foreach (var recipeItem_ingredient in recipeItem.RecipeItems_Ingredients) { RecipeItems_Ingredients newRecipeItem_ingredient = new RecipeItems_Ingredients(); Unit newUnit = this.db.Units.GetById(recipeItem_ingredient.Unit.UnitID); Ingredient newIngredient = this.db.Ingredients.GetById(recipeItem_ingredient.Ingredient.IngredientID); newRecipeItem_ingredient.Quantity = recipeItem_ingredient.Quantity; newRecipeItem_ingredient.Unit = newUnit; newRecipeItem_ingredient.Ingredient = newIngredient; newRecipeItem.RecipeItems_Ingredients.Add(newRecipeItem_ingredient); } foreach (var step in recipeItem.Steps) { newRecipeItem.Steps.Add(step); } newRecipe.RecipeItems.Add(newRecipeItem); } //newRecipe.RecipeItems = recipeVM.RecipeItems; return(newRecipe); }
public async Task <IActionResult> EditById(AdminRecipeViewModel recipe) { await this.recipesService.EditByAdmin(recipe); return(this.Redirect($"/Administration/Main")); }