public async Task <IActionResult> Edit(int id, EditQuestionGroupViewModel questionGroupViewModel) { if (id != questionGroupViewModel.QuestionGroupId) { return(NotFound()); } if (ModelState.IsValid) { // Check if user is authorized to edit recording /*if (!IsOwner(questionGroup.RecordingID)) return Unauthorized();*/ try { //get the old questionGrp question html content... var currQG = _context.Questions .FirstOrDefault(q => q.QuestionGroupId == questionGroupViewModel.QuestionGroupId); var existingURLPath = currQG.QuestionGroupURL; //Replace the old content with the new content var newContent = questionGroupViewModel.QuestionGroupURL; //<-- the URL stores the content in the view /* Write content to file */ System.IO.File.WriteAllText(existingURLPath, newContent); //Relocate QuestionGrp Data currQG.TaskType = questionGroupViewModel.TaskType; // Save QuestionGrp await _context.SaveChangesAsync(); //Relocate MarkScheme Data if (questionGroupViewModel.MarkSchemes != null) { foreach (var item in questionGroupViewModel.MarkSchemes) { var record = _context.MarkSchemes.Find(item.MarkSchemeID); if (record != null) { record.Answer = item.Answer; } } //Save all await _context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException) { if (!QuestionGroupExists(questionGroupViewModel.QuestionGroupId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", "Recordings", new { id = questionGroupViewModel.RecordingID })); } return(View(questionGroupViewModel)); }
// GET: QuestionGroups/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var questionGroup = await _context.Questions .Include(q => q.MarkSchemes) .FirstOrDefaultAsync(m => m.QuestionGroupId == id); if (questionGroup == null) { return(NotFound()); } // Check if user is authorized to edit recording /*if (!IsOwner(questionGroup.RecordingID)) return Unauthorized();*/ var recording = _context.Recordings .FirstOrDefault(r => r.RecordingId == questionGroup.RecordingID); ViewData["RecordingModel"] = recording; // Relocate data to get markscheme in List not collection ... var questionGrpWifListMarkScheme = new EditQuestionGroupViewModel(); var markSchemeList = new List <EditMarkSchemeViewModel>(); questionGrpWifListMarkScheme.QuestionGroupId = questionGroup.QuestionGroupId; questionGrpWifListMarkScheme.QuestionNoStart = questionGroup.QuestionNoStart; questionGrpWifListMarkScheme.QuestionNoEnd = questionGroup.QuestionNoEnd; questionGrpWifListMarkScheme.TaskType = questionGroup.TaskType; questionGrpWifListMarkScheme.QuestionGroupURL = questionGroup.QuestionGroupURL; questionGrpWifListMarkScheme.RecordingID = questionGroup.RecordingID; foreach (var x in questionGroup.MarkSchemes) { var ms = new EditMarkSchemeViewModel { MarkSchemeID = x.MarkSchemeID, Index = x.Index, Answer = x.Answer, QuestionGroupID = x.QuestionGroupID }; markSchemeList.Add(ms); } questionGrpWifListMarkScheme.MarkSchemes = markSchemeList; return(View(questionGrpWifListMarkScheme)); }