public async Task <IActionResult> Edit(QuestionManageEditPostViewModel model) { var question = await _arDbContext.Questions.SingleOrDefaultAsync(q => q.ID == model.ID); if (question == null) { return(NotFound()); } if (ModelState.IsValid) { question.GrammarIDString = QuestionManageDataBuilder.ConvertGrammarIDListToGrammarIDString(model.SelectedGrammarIDCollection); Mapper.Map <QuestionManageEditPostViewModel, Question>(model, question); try { _arDbContext.Update(question); await _arDbContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!_arDbContext.Questions.Any(q => q.ID == question.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } var vm = Mapper.Map <QuestionManageEditPostViewModel, QuestionManageEditGetViewModel>(model); vm.EntireGrammarCollection = await _arDbContext.Grammars.ToListAsync(); vm.ApplicationUserPresenterCollection = await ApplicationUserHandler.ConvertApplicationUsersToPresenterCollection(_userManager, _roleManager, _userManager.Users.ToList()); return(View(vm)); }
public async Task <IActionResult> Edit(ExerciseManageEditPostViewModel model) { var exercise = await _arDbContext.Exercises.SingleOrDefaultAsync(e => e.ID == model.ID); if (exercise == null) { return(NotFound()); } if (ModelState.IsValid) { Mapper.Map <ExerciseManageEditPostViewModel, Exercise>(model, exercise); try { _arDbContext.Update(exercise); await _arDbContext.SaveChangesAsync(); // Delete current relations var currentExerciseQuestionRelationCollection = await _arDbContext.ExerciseQuestionRelationMap.Where(eqc => eqc.ExerciseID == exercise.ID).ToListAsync(); _arDbContext.RemoveRange(currentExerciseQuestionRelationCollection); await _arDbContext.SaveChangesAsync(); // Add new relations if (model.SelectedQuestionIDCollection != null) { foreach (var questionID in model.SelectedQuestionIDCollection) { var question = _arDbContext.Questions.SingleOrDefault(q => q.ID == questionID); if (question == null) { return(NotFound()); } var exerciseQuestionRelation = new ExerciseQuestionRelation { ExerciseID = exercise.ID, QuestionID = question.ID }; _arDbContext.ExerciseQuestionRelationMap.Add(exerciseQuestionRelation); await _arDbContext.SaveChangesAsync(); } } } catch (DbUpdateConcurrencyException) { if (!_arDbContext.Exercises.Any(e => e.ID == exercise.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } var vm = Mapper.Map <ExerciseManageEditPostViewModel, ExerciseManageEditGetViewModel>(model); vm.EntireQuestionCollection = await _arDbContext.Questions.ToListAsync(); var applicationUsers = await _userManager.Users.ToListAsync(); vm.ApplicationUserPresenterCollection = await ApplicationUserHandler.ConvertApplicationUsersToPresenterCollection(_userManager, _roleManager, applicationUsers); return(View(vm)); }