コード例 #1
0
        public AnswersViewModel GetAnswers(string examId, string UserId)
        {
            UserParticipateInExam participant = ctx.UsersParticipateInExams.Where(o => o.ExamFK == examId && o.ParticipantFK == UserId).FirstOrDefault();

            if (participant == null)
            {
                return(null);
            }

            List <Answer>          anss       = ctx.Answers.Where(o => o.ExamParticipant == participant).ToList();
            List <AnswerViewModel> RetAnswers = new List <AnswerViewModel>();

            foreach (Answer ans in anss)
            {
                RetAnswers.Add(
                    new AnswerViewModel
                {
                    AnswerText = ans.AnswerText,
                    //ExamId=ans.ExamId,
                    QuestionId = ans.QuestionId
                });
            }

            AnswersViewModel AnsVM = new AnswersViewModel();

            AnsVM.UserName = ctx.AppUsers.Where(o => o.Id == UserId).FirstOrDefault().UserName;
            AnsVM.ExamName = ctx.Exams.Where(o => o.ExamId == examId).FirstOrDefault().ExamName;
            AnsVM.Answers  = RetAnswers;

            return(AnsVM);
        }
コード例 #2
0
        public ActionResult Answers()
        {
            //treba zoznam užívateľov a zoznam ich odpovedí + názvy súťaží + názov otázky
            var answersViewModel = new AnswersViewModel();

            var userAnswers = _context.ContestQuestionUsers
                              .Include(cqu => cqu.ContestQuestion)
                              .Include(cqu => cqu.ApplicationUser)
                              .Include(cqu => cqu.ContestQuestion.Contest)
                              .Include(cqu => cqu.ContestQuestion.Question)
                              .Take(answersViewModel.PaginationViewModel.PageLength)
                              .ToList();

            userAnswers.Reverse();

            var contests = _context.Contests.Select(c => c.Name).ToList();
            var users    = _context.ApplicationUsers.Select(u => u.Email).ToList();

            answersViewModel.PaginationViewModel.Entities  = userAnswers;
            answersViewModel.PaginationViewModel.PageCount = (int)Math.Ceiling((double)_context.ContestQuestionUsers.Count()
                                                                               / answersViewModel.PaginationViewModel.PageLength);
            answersViewModel.Contests = contests;
            answersViewModel.Users    = users;

            return(View(answersViewModel));
        }
コード例 #3
0
        public AnswersViewModel GetAnswerByAnswerID(int AnswerID)
        {
            Answer           a   = ar.GetAnswersByAnswerID(AnswerID).FirstOrDefault();
            AnswersViewModel avm = null;

            if (a != null)
            {
                var     config = new MapperConfiguration(cfg => { cfg.CreateMap <Answer, AnswersViewModel>(); cfg.IgnoreUnMapped(); });
                IMapper mapper = config.CreateMapper();
                avm = mapper.Map <Answer, AnswersViewModel>(a);
            }
            return(avm);
        }
コード例 #4
0
        /// <summary>
        /// Gets the view model for an answer.
        /// </summary>
        /// <param name="answer">The answer.</param>
        /// <returns></returns>
        /// <exception cref="CustomException"></exception>
        public AnswersViewModel GetViewModel(Answers answer)
        {
            try {
                AnswersViewModel avm = new AnswersViewModel();
                avm.AnswerId    = answer.AnswerId;
                avm.AnswerType  = answer.AnswerType;
                avm.AnswerValue = answer.AnswerValue;

                return(avm);
            }
            catch (Exception ex) {
                throw new CustomException(ex.Message);
            }
        }
コード例 #5
0
        public IActionResult GetParticipantAnswers(string ExamId, string ParticipantId)
        {
            AnswersViewModel Answers = examRepository.GetAnswers(ExamId, ParticipantId);

            //check if the user actually takes the exam

            if (Answers == null)
            {
                return(NotFound());
            }
            else
            {
                return(Ok(Answers));
            }
        }
コード例 #6
0
    public ActionResult Index()
    {
        AnswersViewModel model = new AnswersViewModel();

        model.Answers = new List <Answer>();
        IEnumerable <Question> questions = _questionRepository.GetRandomQuestions();

        foreach (Question question in questions)
        {
            model.Answers.Add(new Answer()
            {
                QuestionText = question.QuestionText
            });
        }
        return(View(model));
    }
コード例 #7
0
        public async Task <IActionResult> SaveAnswers([FromBody] AnswersViewModel respondentData)
        {
            Guid respondentId = await _respondentService.AddAsync();

            await _surveySectionRespondentService.AddAsync(respondentData.SurveyId, respondentId);

            List <BaseAnswerModel> typedAnswerList = new List <BaseAnswerModel>();

            typedAnswerList = _answerService.GetTypedAnswerList(respondentData.AnswerList);
            if (typedAnswerList.Any())
            {
                foreach (var item in typedAnswerList)
                {
                    var question = _questionService.GetQuestionById(item.Id);
                    item.OptionGroupId = question.OptionGroupId.Value;
                    _answerService.SaveAnswerByType(item, respondentId);
                }
            }
            PortalController.respondentId = respondentId.ToString();
            return(Ok());
        }
コード例 #8
0
        public async Task <IActionResult> SubmitAllAnswers(AnswersViewModel answers, string ExamId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            //TODO: check the clock

            if (!takeExamRepository.FillAllAnswers(answers, ExamId,
                                                   User.FindFirstValue(ClaimTypes.NameIdentifier)))
            {
                return(BadRequest());
            }

            if (!await takeExamRepository.SaveChangesAsync())
            {
                return(BadRequest());
            }

            return(Ok());
        }
コード例 #9
0
        /// <summary>
        /// Get answers for the one questions
        /// </summary>
        /// <param name="id">Question ID</param>
        /// <param name="sortby">Sort parameter</param>
        /// <returns></returns>
        public ActionResult GetAnswersForAQuestion(int id, string sortby)
        {
            AnswersViewModel model = new AnswersViewModel();


            //Get the answers which belong to this question
            model.Answers = AnswerManager.GetAllAnswerToOneQuestion(id);

            //Get the votes of the answers
            Dictionary <Answer, int>         ansvotes   = new Dictionary <Answer, int>();
            Dictionary <Answer, UserProfile> answeruser = new Dictionary <Answer, UserProfile>();

            foreach (var item in model.Answers)
            {
                int         vote     = AnswerManager.GetVote(item.Id);
                UserProfile userprof = UserManager.GetUserById(item.UserId);
                answeruser.Add(item, userprof);
                ansvotes.Add(item, vote);
            }
            //Create the viewmodel
            model.AnswerVotes = ansvotes;
            model.AnswerUser  = answeruser;

            //Order the answers by the given method
            if (sortby == "time")
            {
                model.Answers = model.Answers.OrderBy(d => d.Date).ToList();
            }
            else if (sortby == "reversedtime")
            {
                model.Answers = model.Answers.OrderByDescending(d => d.Date).ToList();
            }
            else
            {
                model.Answers = model.Answers.OrderByDescending(d => model.AnswerVotes[d]).ToList();
            }

            return(PartialView("_ShowAnswers", model));
        }
コード例 #10
0
        public ActionResult GetPartialViewData(string userEmail, string contestName, string searchString, int pageLength, int pageNumber)
        {
            IQueryable <ContestQuestionUser> query = _context.ContestQuestionUsers
                                                     .Include(cqu => cqu.ContestQuestion)
                                                     .Include(cqu => cqu.ApplicationUser)
                                                     .Include(cqu => cqu.ContestQuestion.Contest)
                                                     .Include(cqu => cqu.ContestQuestion.Question);

            if (!string.IsNullOrEmpty(searchString))
            {
                query = query.Where(q => q.ApplicationUser.Email.Contains(searchString));
            }

            if (!string.IsNullOrEmpty(userEmail))
            {
                query = query.Where(q => q.ApplicationUser.Email.Contains(userEmail));
            }

            if (!string.IsNullOrEmpty(contestName))
            {
                query = query.Where(q => q.ContestQuestion.Contest.Name.Contains(contestName));
            }

            var answersViewModel = new AnswersViewModel();

            answersViewModel.PaginationViewModel = GetViewModelData(searchString, pageLength, pageNumber, query);

            var contests = _context.Contests.Select(c => c.Name).ToList();
            var users    = _context.ApplicationUsers.Select(u => u.Email).ToList();

            answersViewModel.Contests        = contests;
            answersViewModel.Users           = users;
            answersViewModel.SelectedUser    = userEmail;
            answersViewModel.SelectedContest = contestName;

            return(PartialView("_AnswersPartial", answersViewModel));
        }
コード例 #11
0
 public IActionResult Post([FromBody] AnswersViewModel model)
 {
     try
     {
         if (ModelState.IsValid)
         {
             var newAnswer = _map.Map <AnswersViewModel, SurveryAnswer>(model);
             _repo.AddEntity(newAnswer);
             if (_repo.SaveAll())
             {
                 return(Created($"/api/survey/{newAnswer.Id}", _map.Map <SurveryAnswer, AnswersViewModel>(newAnswer)));
             }
         }
         else
         {
             return(BadRequest(ModelState));
         }
     }
     catch (Exception ex)
     {
         _log.LogError($"Failed to save a new answer: {ex}");
     }
     return(BadRequest("Failed to save new answer"));
 }
コード例 #12
0
        public bool FillAllAnswers(AnswersViewModel answers, string ExamId, string UserId)
        {
            UserParticipateInExam part = ctx.UsersParticipateInExams.Where(o =>
                                                                           o.ExamFK == ExamId &&
                                                                           o.ParticipantFK == UserId).FirstOrDefault();

            if (part == null)
            {
                return(false);
            }

            List <Answer> anss = ctx.Answers.Where(o =>
                                                   o.ExamId == ExamId &&
                                                   o.ExamParticipant == part)
                                 .ToList();

            foreach (var ans in answers.Answers)
            {
                anss.Where(o => o.QuestionId == ans.QuestionId)
                .FirstOrDefault().AnswerText = ans.AnswerText;
            }

            return(true);
        }
コード例 #13
0
 public ActionResult Index(AnswersViewModel model)
 {
     //the model will be properly bound here
     return(View(model));
 }