public IActionResult TakeAssessment(Guid?id)
        {
            Assessment assessment = _assessmentService.GetAssessmentAndQuestionsById(id.Value);

            if (User.Identity.IsAuthenticated && User.IsInRole("Student"))
            {
                Guid    studentId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
                Student student   = _studentService.GetStudentWithAssessments(studentId);

                Student studentWithAssessments = _studentService.GetEnrolledCourseAssessments(studentId);

                if (studentWithAssessments.StudentAssessments.FirstOrDefault(stdass => stdass.AssessmentId.Equals(id.Value)) == null)
                {
                    return(RedirectToAction(nameof(Details), new { id = id.Value }));
                }

                foreach (var studentAssessment in student.StudentAssessments)
                {
                    if (studentAssessment.AssessmentId.Equals(id.Value))
                    {
                        if (studentAssessment.HasTaken)
                        {
                            return(RedirectToAction(nameof(Details), new { id = id.Value }));
                        }
                    }
                }
            }



            if (assessment == null)
            {
                return(NotFound());
            }

            TakeAssessmentVM takeAssessmentVM = new TakeAssessmentVM
            {
                questions = assessment.Questions.ToArray()
            };

            foreach (var question in takeAssessmentVM.questions)
            {
                question.CorrectOption = null;
            }

            return(View(takeAssessmentVM));
        }
        public IActionResult TakeAssessment(Guid?id, TakeAssessmentVM takeAssessmentVM)
        {
            int correctAnswers = 0;

            Assessment assessment = _assessmentService.GetAssessmentAndQuestionsById(id.Value);

            Question[] questions = assessment.Questions.ToArray();
            Guid       studentId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);

            string answers = string.Empty;

            for (int i = 0; i < questions.Length; i++)
            {
                Question question = questions[i];

                string optionIndexString = $"selectedAnswer[{i}]";

                string option = Request.Form[optionIndexString];

                if (option != null)
                {
                    answers += option;
                    if (question.CorrectOption.Equals(option))
                    {
                        correctAnswers++;
                    }
                }
                else
                {
                    answers += "null";
                }

                if (i < questions.Length - 1)
                {
                    answers += "-";
                }
            }

            _studentService.RegisterAssessmentPerformance(studentId, id.Value, correctAnswers, questions.Length);

            HttpContext.Response.Cookies.Append("Score", $"You scored {correctAnswers} / {questions.Length}");
            HttpContext.Response.Cookies.Append("Answers", answers);
            HttpContext.Response.Cookies.Append("AssessmentId", assessment.Id.ToString());

            return(RedirectToAction(nameof(Result)));
        }