public async Task <IActionResult> Edit(ExperienceEditViewModel input) { if (!this.ModelState.IsValid) { this.ViewBag.Messages = new[] { new AlertViewModel("danger", "Warning!", "You have entered invalid data!"), }; return(this.View(input)); } var exists = this.experiencesService.Exists(input.Id); if (exists) { var isAllowed = await this.IsAllowedToAccess(input.Id); if (isAllowed) { var experienceId = await this.experiencesService.EditAsync(input); return(this.Redirect($"/Experiences/Details/{experienceId}?status=success")); } else { return(this.Forbid()); } } return(this.NotFound()); }
public IActionResult Edit(ExperienceEditViewModel experienceEditVM) { if (ModelState.IsValid) { var product = _productRepository.GetProductUsingNameAndCategory(experienceEditVM.ProductName, int.Parse(experienceEditVM.CategoryID)); /*experienceEditVM.Category.CategoryName*/ if (product == null) { product = new Product { ProductName = experienceEditVM.ProductName, CategoryID = int.Parse(experienceEditVM.CategoryID) }; _productRepository.AddProduct(product); } string uniqueFileName = PhotoHelper.SaveImageAndReturnUniqueFileName(experienceEditVM.Photo, _hostingEnvironment, "images/products"); if (!string.IsNullOrEmpty(uniqueFileName) && System.IO.File.Exists("wwwroot/images/products/" + experienceEditVM.ExistingPhotoPath)) { try { System.IO.File.Delete("wwwroot/images/products/" + experienceEditVM.ExistingPhotoPath); } catch { } } var photoPath = uniqueFileName ?? experienceEditVM.ExistingPhotoPath; var experience = new Experience { ExperienceID = experienceEditVM.ExperienceID, ProductID = product.ProductID, Evaluation = experienceEditVM.Evaluation, Describe = experienceEditVM.Describe, Recommendation = experienceEditVM.Recommendation, UserName = User.FindFirst(ClaimTypes.Name).Value, PhotoPath = photoPath, Date = DateTime.Now }; var updateExperience = _experienceRepository.UpdateExperience(experience); return(RedirectToAction("details", new { experienceID = updateExperience.ExperienceID })); } return(View()); }
public async Task <int> EditAsync(ExperienceEditViewModel input) { var experience = this.experienceRepository.All() .Where(x => x.Id == input.Id) .FirstOrDefault(); experience.DateOfVisit = input.DateOfVisit; experience.Title = input.Title; experience.Description = input.Description; experience.Guide = input.Guide; experience.Intensity = input.Intensity; this.experienceRepository.Update(experience); await this.experienceRepository.SaveChangesAsync(); return(experience.Id); }
public async Task EditAsync_ShouldReturnCorrectValue() { await this.SeedData(this.context); var expectedTitle = "New Title"; var input = new ExperienceEditViewModel() { Id = 1, Title = expectedTitle, Description = "Description of test", }; var resultId = await this.experienceService.EditAsync(input); Assert.True(resultId == 1, "Edit method does not work correctly"); Assert.True(input.Title == expectedTitle, "Edit method does not work correctly"); }
public ViewResult Edit(int experienceID) { Experience experience = _experienceRepository.GetExperienceForEdit(experienceID); ExperienceEditViewModel experienceEditVM = new ExperienceEditViewModel { ExperienceID = experience.ExperienceID, ProductName = experience.Product.ProductName, CategoryID = experience.Product.Category.CategoryID.ToString(), Evaluation = experience.Evaluation, Describe = experience.Describe, Recommendation = experience.Recommendation, ExistingPhotoPath = experience.PhotoPath }; ViewBag.Categories = _categoryRepository.Categories.OrderBy(c => c.CategoryName); return(View(experienceEditVM)); }
public async Task EditAsync_ShouldThrowException() { var context = WilderExperienceContextInMemoryFactory.InitializeContext(); await this.SeedData(context); var expectedTitle = "New Title"; var input = new ExperienceEditViewModel() { Id = 3, Title = expectedTitle, Description = "Description of test", }; var repository = new EfDeletableEntityRepository <Experience>(context); var service = new ExperiencesService(repository); Task act() => service.EditAsync(input); await Assert.ThrowsAsync <ArgumentNullException>(act); }