public CandidateExamWrapperModel GetAllSubmittedTests()
        {
            string connectionString         = "server=localhost;uid=root;password=Reset1234;database=OnlineTestManagement;";
            string querryString             = "select * from OnlineTestManagement.CandidateExam where IsTestEnded = true";
            CandidateExamWrapperModel model = new CandidateExamWrapperModel();

            model.CandidateExamList = new List <CandidateExamModel>();
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                MySqlCommand command = new MySqlCommand(querryString, connection);
                connection.Open();
                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    CandidateExamModel obj = new CandidateExamModel();
                    obj.Id            = (int)reader[0];
                    obj.StartedTime   = (DateTime)reader[1];
                    obj.SubmittedTime = (DateTime)reader[2];
                    obj.IsTestEnded   = (bool)reader[3];
                    obj.TestId        = (int)reader[4];
                    obj.CandidateId   = (int)reader[5];
                    model.CandidateExamList.Add(obj);
                }
                connection.Close();
            }
            return(model);
        }
        public int AddExam(CandidateExamModel obj)
        {
            int    candidateExamId  = 0;
            string connectionString = "server=localhost;uid=root;password=Reset1234;database=OnlineTestManagement;";
            string queryString      =
                "INSERT INTO OnlineTestManagement.CandidateExam(StartedTime, SubmittedTime, IsTestEnded, TestId, CandidateId) " +
                "VALUES (@date, @date1, " + obj.IsTestEnded + ", " + obj.TestId + ", " + obj.CandidateId + ");select last_insert_id() ";

            using (MySqlConnection connection =
                       new MySqlConnection(connectionString))
            {
                MySqlCommand command =
                    new MySqlCommand(queryString, connection);
                command.Parameters.AddWithValue("@date", obj.StartedTime);
                command.Parameters.AddWithValue("@date1", obj.SubmittedTime);
                connection.Open();

                //command.ExecuteNonQuery();
                // command.ExecuteNonQuery();
                candidateExamId = Convert.ToInt32(command.ExecuteScalar());

                // Call Close when done reading.
                connection.Close();
            }

            return(candidateExamId);
        }
        public CandidateExamModel GetCandidateExamDetails(int id)
        {
            CandidateExamModel model = new CandidateExamModel();

            model = _candidateExamRepository.GetExamDetails(id);
            CandidateDetailsViewModel candidate = _candidateRepository.GetCandidateDetails(model.CandidateId);

            model.CandidateName = candidate.Name;
            TestDetailsViewModel test = _testRepository.GetTestDetails(model.TestId);

            model.TestName = test.Name;
            model.list     = new List <CandidateExamQuestionLogModel>();
            model.list     = _candidateExamQuestionLogRepository.FindByCandidateExamId(id);
            int CorrectAnswers = 0;
            int TotalQuestions = test.QuestionList.Count();

            foreach (var obj in model.list)
            {
                if (obj.IsAnswerCorrect == true)
                {
                    CorrectAnswers = CorrectAnswers + 1;
                }
            }
            model.Score = CorrectAnswers + "/" + TotalQuestions;
            model.TotalNumberOfQuestions = TotalQuestions;
            model.AttemptedQuestions     = model.list.Count();
            model.CorrectAnswers         = CorrectAnswers;
            model.WrongAnswers           = model.list.Count() - CorrectAnswers;

            foreach (var que in test.QuestionList)
            {
                bool IsPresent = false;
                foreach (var item in model.list)
                {
                    if (que.Id == item.QuestionId)
                    {
                        IsPresent = true;
                    }
                }
                if (IsPresent == false)
                {
                    CandidateExamQuestionLogModel rec = new CandidateExamQuestionLogModel();
                    rec.Question        = que.Question;
                    rec.SelectedAnswer  = "NA";
                    rec.IsAnswerCorrect = false;
                    model.list.Add(rec);
                }
            }
            return(model);
        }
        public TestDetailsViewModel StartTest(string UniqueId)
        {
            TestDetailsViewModel model   = new TestDetailsViewModel();
            int CandidateId              = _candidateUniqueIdRepository.FindCandidateId(UniqueId);
            CandidateViewModel candidate = _candidateRepository.GetCandidateForEdit(CandidateId);

            model = _testRepository.GetTestDetails(candidate.TestId);
            CandidateExamModel obj = new CandidateExamModel()
            {
                StartedTime = DateTime.Now,
                IsTestEnded = false,
                TestId      = candidate.TestId,
                CandidateId = CandidateId
            };
            int candidateExamId = _candidateExamRepository.AddExam(obj);

            model.CandidateExamId = candidateExamId;
            return(model);
        }
        public CandidateExamModel GetExamDetails(int id)
        {
            string             connectionString = "server=localhost;uid=root;password=Reset1234;database=OnlineTestManagement;";
            string             querryString     = "select * from OnlineTestManagement.CandidateExam where Id = " + id + "";
            CandidateExamModel model            = new CandidateExamModel();

            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                MySqlCommand command = new MySqlCommand(querryString, connection);
                connection.Open();
                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    model.Id            = (int)reader[0];
                    model.StartedTime   = (DateTime)reader[1];
                    model.SubmittedTime = (DateTime)reader[2];
                    model.IsTestEnded   = (bool)reader[3];
                    model.TestId        = (int)reader[4];
                    model.CandidateId   = (int)reader[5];
                }
                connection.Close();
            }
            return(model);
        }
        public IActionResult Details(int id)
        {
            CandidateExamModel model = _resultService.GetCandidateExamDetails(id);

            return(View(model));
        }