// GET: Characters/Edit/5 public async Task <IActionResult> Edit(int?id) { var UCVM = new UpdateCharacterViewModel(); UCVM.Character = await _context.Character.FindAsync(id); var characterFeats = _context.Feat; var characterEquipment = _context.Equipment; List <SelectListItem> EquipmentSelectListItems = new List <SelectListItem>(); List <SelectListItem> FeatSelectListItems = new List <SelectListItem>(); foreach (var equipment in characterEquipment) { SelectListItem li = new SelectListItem { Value = equipment.EquipmentId.ToString(), Text = equipment.EquipmentName }; EquipmentSelectListItems.Add(li); } foreach (var feat in characterFeats) { SelectListItem li = new SelectListItem { Value = feat.FeatId.ToString(), Text = feat.Description }; FeatSelectListItems.Add(li); } UCVM.Equipment = EquipmentSelectListItems; UCVM.Feats = FeatSelectListItems; ViewData["UserId"] = new SelectList(_context.ApplicationUser, "Id", "Id"); return(View(UCVM)); }
public async Task <IActionResult> UpdateCharacter(long id, UpdateCharacterViewModel characterViewModel) { var currentCharacter = await _characterService.GetWithAllByIdAsync(id, false); if (currentCharacter == null) { return(NotFound(NotFoundErrorViewModel.Create(nameof(Character), id))); } var userId = GetUserIdFromClaims(User); if (!userId.HasValue) { return(Unauthorized(new UnauthorizedErrorViewModel())); } var character = Mapper.Map <Character>(characterViewModel); _characterFacadeService.UpdateCharacter(currentCharacter, character, userId.Value); await _dbContext.SaveChangesAsync(); return(Accepted()); }
public async Task <IActionResult> Edit(int id, UpdateCharacterViewModel model) { ModelState.Remove("UserId"); ModelState.Remove("User"); ModelState.Remove("Races"); ModelState.Remove("Feats"); ModelState.Remove("Backgrounds"); ModelState.Remove("CharacterClass"); if (id != model.Character.CharacterId) { return(NotFound()); } if (ModelState.IsValid) { try { var characterUserId = model.Character.UserId; var user = await GetCurrentUserAsync(); model.Character.UserId = user.Id; _context.Update(model.Character); var previousFeats = _context.FeatCharacter.Where(fc => fc.CharacterId == model.Character.CharacterId).ToList(); foreach (var fc in previousFeats) { _context.Remove(fc); } foreach (int currentId in model.FeatIds) { var joinTableEntry = new FeatCharacter { FeatId = currentId, CharacterId = model.Character.CharacterId }; _context.Add(joinTableEntry); } var previousEquipment = _context.EquipmentCharacter.Where(ec => ec.CharacterId == model.Character.CharacterId).ToList(); foreach (var ec in previousEquipment) { _context.Remove(ec); } foreach (int currentId in model.EquipmentIds) { var joinTableEntry2 = new EquipmentCharacter { EquipmentId = currentId, CharacterId = model.Character.CharacterId }; _context.Add(joinTableEntry2); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CharacterExists(model.Character.CharacterId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(model)); }