public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var question = await _arDbContext.Questions.SingleOrDefaultAsync(m => m.ID == id); if (question == null) { return(NotFound()); } var vm = Mapper.Map <Question, QuestionManageEditGetViewModel>(question); vm.SelectedGrammarIDCollection = QuestionManageDataBuilder.ConvertGrammarIDStringToGrammarIDList(question.GrammarIDString); vm.EntireGrammarCollection = await _arDbContext.Grammars.ToListAsync(); var applicationUsers = await _userManager.Users.ToListAsync(); vm.ApplicationUserPresenterCollection = await ApplicationUserHandler.ConvertApplicationUsersToPresenterCollection(_userManager, _roleManager, applicationUsers); return(View(vm)); }
public QuestionManageController(ActivityReceiverDbContext arDbContext, UserManager <ApplicationUser> userManager, RoleManager <IdentityRole> roleManager) { _arDbContext = arDbContext; _userManager = userManager; _roleManager = roleManager; _dataBuilder = new QuestionManageDataBuilder(_arDbContext, _userManager, _roleManager); }
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> Delete(int?id) { if (id == null) { return(NotFound()); } var question = await _arDbContext.Questions.SingleOrDefaultAsync(q => q.ID == id); if (question == null) { return(NotFound()); } var vm = Mapper.Map <Question, QuestionManageDeleteGetViewModel>(question); vm.GrammarNameString = QuestionManageDataBuilder.ConvertGrammarIDStringToGrammarNameString(question.GrammarIDString, _arDbContext.Grammars.ToList()); vm.EditorName = (await _userManager.FindByIdAsync(question.EditorID)).UserName; return(View(vm)); }
public async Task <IActionResult> Create(QuestionManageCreatePostViewModel model) { if (ModelState.IsValid) { var question = Mapper.Map <QuestionManageCreatePostViewModel, Question>(model); // I think grammar should be a multiple select and handled here. question.GrammarIDString = QuestionManageDataBuilder.ConvertGrammarIDListToGrammarIDString(model.SelectedGrammarIDCollection); question.CreateDate = DateTime.Now; question.EditorID = (await _userManager.GetUserAsync(HttpContext.User)).Id; _arDbContext.Questions.Add(question); await _arDbContext.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //if isValid is false var vm = Mapper.Map <QuestionManageCreatePostViewModel, QuestionManageCreateGetViewModel>(model); vm.EntireGrammarCollection = _arDbContext.Grammars.ToList(); return(View(vm)); }