Ejemplo n.º 1
0
        public IHttpActionResult PostSubmitQuiz(List <SubmitQuizModel> submitQuizModels)
        {
            if (ModelState.IsValid)
            {
                var submitedTime = userRepository.CheckUserIsSubmited(submitQuizModels[0].UserId);
                if (submitedTime)
                {
                    return(Ok(new ReturnResults(301, "The user was submited before", null)));
                }
                var exsited = answersRepository.GetAnswersByUserId(submitQuizModels[0].UserId);
                if (exsited != null)
                {
                    answersRepository.DeleteAnswersByUserId(submitQuizModels[0].UserId);
                }
                int countCorrect = 0;
                var listAnswers  = new List <Answer>();
                foreach (var item in submitQuizModels)
                {
                    var answers = new Answer();
                    answers.UserId     = item.UserId.Trim();
                    answers.QuestionId = item.QuestionId;
                    answers.ChoosenId  = item.ChoosenId == 0 ? (int?)null : item.ChoosenId;
                    if (item.IsCorrect)
                    {
                        countCorrect++;
                    }
                    answers.CreatedAt = DateTime.Now;
                    listAnswers.Add(answers);
                }

                bool flag = answersRepository.InsertedAnswers(listAnswers);
                if (!flag)
                {
                    return(Ok(new ReturnResults(400, "Failed", null)));
                }


                DateTime loginAt  = userRepository.GetTimeLoginAt(listAnswers[0].UserId);
                TimeSpan timeUsed = DateTime.Now.Subtract(loginAt);
                userRepository.UpdateSubmitTimeQuizAndScoreAndTimeUsed(DateTime.Now, listAnswers[0].UserId, countCorrect, timeUsed);
                return(Ok(new ReturnResults(200, "Success", new SubmitedInfo(timeUsed, countCorrect))));
            }
            return(Ok(new ReturnResults(400, "Failed", null)));
        }