// GET: Creatures/Edit/5 public async Task <IActionResult> Edit(int?id) { if (_userManager.GetUserAsync(User).Result.isAdmin) { var currentUser = await GetCurrentUserAsync(); if (id == null) { return(NotFound()); } var creature = await _context.Creature.FindAsync(id); CreatureEditViewModel viewModel = new CreatureEditViewModel { Creature = creature }; if (creature == null) { return(NotFound()); } return(View(viewModel)); } else { var creature = await _context.Creature.FindAsync(id); var currentUser = await GetCurrentUserAsync(); if (currentUser.Id != creature.UserId) { return(NotFound()); } CreatureEditViewModel viewModel = new CreatureEditViewModel { Creature = creature }; return(View(viewModel)); } }
public async Task <IActionResult> Edit(int id, CreatureEditViewModel viewModel) { if (id != viewModel.Creature.Id) { return(NotFound()); } var currentUser = await GetCurrentUserAsync(); ModelState.Remove("Creature.UserId"); ModelState.Remove("Creature.User"); ModelState.Remove("Creature.Image"); var creature = viewModel.Creature; if (ModelState.IsValid) { try { var creatureFromDatabase = await _context.Creature.FindAsync(id); string photoFileName = null; if (viewModel.Image != null) { string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "images"); photoFileName = Guid.NewGuid().ToString() + "_" + viewModel.Image.FileName; string filePath = Path.Combine(uploadsFolder, photoFileName); viewModel.Image.CopyTo(new FileStream(filePath, FileMode.Create)); creature.ImagePath = photoFileName; } creatureFromDatabase.Name = creature.Name; creatureFromDatabase.Lore = creature.Lore; creatureFromDatabase.Region = creature.Region; creatureFromDatabase.ImagePath = creature.ImagePath; //creatureFromDatabase.UserId = viewModel.Creature.UserId; //creatureFromDatabase.User = viewModel.Creature.User; _context.Update(creatureFromDatabase); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CreatureExists(creature.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(viewModel)); }