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));
        }