コード例 #1
0
        public IActionResult Create(int QuestionId)
        {
            var viewModel = new AnswerCreateViewModel();

            viewModel.Question = _context.Question.Find(QuestionId);
            viewModel.Answer   = new Answer()
            {
                QuestionId = QuestionId
            };
            return(View(viewModel));
        }
コード例 #2
0
        public async Task <ActionResult> Create(AnswerCreateViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(ModelState.ToDictionary()));
            }

            await _agentAnswerService.Create(model.Answer, model.QuestionId, User.Identity.GetUserId());

            var questionWithCreatedAnswer = await _agentQuestionServices.Get(model.QuestionId, User.Identity.GetUserId());

            return(Json(questionWithCreatedAnswer));
        }
コード例 #3
0
        public async Task <IActionResult> CreateAnswerSubmit(Guid id, IFormCollection collection, AnswerCreateViewModel answer, bool createSingleAnswer)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }
                string uniqueFileName = null;
                if (answer.Foto != null)
                {
                    string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "images");
                    uniqueFileName = Guid.NewGuid().ToString() + "_" + answer.Foto.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    answer.Foto.CopyTo(new FileStream(filePath, FileMode.Create));
                }
                Answer newAnswer = new Answer
                {
                    Id          = Guid.NewGuid(),
                    Description = answer.Description,
                    FotoURL     = uniqueFileName
                };

                if (answer.Correct.ToString() == "True")
                {
                    newAnswer.Correct = Answer.IsCorrect.True;
                }
                else
                {
                    newAnswer.Correct = Answer.IsCorrect.False;
                }

                newAnswer.QuestionId = id;
                Question question = await quizRepo.GetQuestionForIdAsync(id);

                if (question == null || id == Guid.Empty)
                {
                    return(RedirectToAction(nameof(Quizzes), new { exc = "Wrong QuestionId" }));
                }
                newAnswer.Question = question;
                var created = await quizRepo.AddAnswer(newAnswer);

                if (created == null)
                {
                    return(RedirectToAction(nameof(Quizzes), new { exc = "Answer failed to create" }));
                }

                if (createSingleAnswer)
                {
                    return(RedirectToAction(nameof(QuestionAnswers), new { id = question.Id, QuizId = question.QuizId, QuestionName = question.Description }));
                }

                IEnumerable <Answer> answers = await quizRepo.GetAllAnswersByQuestionId(id);

                var answerCount = answers.Count();
                if (answerCount == 10)
                {
                    return(RedirectToAction(nameof(QuizQuestions), new { id = question.QuizId }));
                }
                else
                {
                    return(RedirectToAction(nameof(CreateAnswer), new { id = id, QuizId = question.QuizId }));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Create is giving an error: " + ex.Message);
                return(View());
            }
        }
コード例 #4
0
        public async Task <IActionResult> Complete(int id, AnswerCreateViewModel viewModel)
        {
            var user = await GetCurrentUserAsync();

            var currentDateTimeTwo = DateTime.Now;
            var userDB             = _context.Users;
            var surveyDB           = await _context.Surveys.FirstOrDefaultAsync(m => m.SurveyId == id);

            var questionDB = await _context.Questions.Where(q => q.SurveyId == id).ToListAsync();

            //var aqVM = viewModel.AnswerQuestionViewModels;

            List <SelectListItem> recipientList = new List <SelectListItem>();

            recipientList.Insert(0, new SelectListItem {
                Text = "REQUIRED!! Select a person to Receive Feedback", Value = ""
            });

            foreach (var focusU in userDB)
            {
                SelectListItem li = new SelectListItem
                {
                    Value = focusU.Id,
                    Text  = focusU.FullName
                };
                recipientList.Add(li);
            }

            var nullResponse = false;

            var vmitem = new List <AnswerQuestionViewModel>();

            foreach (var aqVM in viewModel.AnswerQuestionViewModels)
            {
                var oldResponse   = aqVM.Response;
                var oldQuestionId = aqVM.QuestionId;

                Question oldQuestion = await _context.Questions.FindAsync(oldQuestionId);

                AnswerQuestionViewModel taco = new AnswerQuestionViewModel();
                {
                    taco.QuestionId   = oldQuestionId;
                    taco.QuestionText = oldQuestion.QuestionText;
                    taco.Response     = oldResponse;
                };
                vmitem.Add(taco);

                if (taco.Response == null)
                {
                    nullResponse = true;
                }

                //Answer duplicate = await _context.Answers
                //    .FirstOrDefaultAsync(a => a.FocusId == viewModel.FocusUserId
                //    && viewModel.ResponderUserId == user.Id && taco.QuestionId == a.QuestionId);
                //if (duplicate != null)
                //{
                //    return RedirectToAction("LoggedIn", "Surveys");
                //}
            }

            viewModel.AnswerQuestionViewModels = vmitem;
            viewModel.SurveyId          = surveyDB.SurveyId;
            viewModel.SurveyName        = surveyDB.SurveyName;
            viewModel.Description       = surveyDB.Description;
            viewModel.Instructions      = surveyDB.Instructions;
            viewModel.ResponderUserId   = user.Id;
            viewModel.ResponderUserName = user.FullName;
            viewModel.ResponseDate      = DateTime.Now;
            viewModel.Recipients        = recipientList;
            ViewData["Recipients"]      = new SelectList(_context.ApplicationUsers, "FocusUserId", "FullName");

            if (nullResponse == true || viewModel.FocusUserId == null)
            {
                return(View(viewModel));
            }

            for (int i = 0; i < viewModel.AnswerQuestionViewModels.Count; i++)
            {
                Answer newAnswer = new Answer
                {
                    ResponderId  = user.Id,
                    FocusId      = viewModel.FocusUserId,
                    QuestionId   = viewModel.AnswerQuestionViewModels[i].QuestionId,
                    Response     = viewModel.AnswerQuestionViewModels[i].Response,
                    ResponseDate = viewModel.ResponseDate
                };
                _context.Add(newAnswer);
            }

            await _context.SaveChangesAsync();

            return(RedirectToAction("LoggedIn", "Surveys"));
        }
コード例 #5
0
        // ************************************************************************  COMPLETE
        public async Task <IActionResult> Complete(int?id)
        {
            var model = new AnswerCreateViewModel();

            var surveyDB = await _context.Surveys.FirstOrDefaultAsync(m => m.SurveyId == id);

            var questionDB = await _context.Questions.Where(q => q.SurveyId == id).ToListAsync();

            // Get current user to assign ResponderUserId in VM
            var user = await GetCurrentUserAsync();

            // Get ALL Users to create a Select List to choose FocusUser
            var userDB = _context.Users;

            List <SelectListItem> recipientList = new List <SelectListItem>();

            recipientList.Insert(0, new SelectListItem {
                Text = "REQUIRED!! Select a person to Receive Feedback", Value = ""
            });

            foreach (var focusU in userDB)
            {
                SelectListItem li = new SelectListItem
                {
                    Value = focusU.Id,
                    Text  = focusU.FullName
                };
                recipientList.Add(li);
            }

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

            var currentDateTime = DateTime.Now;

            var vmitem = new List <AnswerQuestionViewModel>();

            foreach (var question in questionDB)
            {
                AnswerQuestionViewModel taco = new AnswerQuestionViewModel();
                {
                    taco.QuestionId   = question.QuestionId;
                    taco.QuestionText = question.QuestionText;
                    taco.Response     = null;
                };
                vmitem.Add(taco);
            }

            var viewModel = new AnswerCreateViewModel();

            viewModel.SurveyId                 = surveyDB.SurveyId;
            viewModel.SurveyName               = surveyDB.SurveyName;
            viewModel.Description              = surveyDB.Description;
            viewModel.Instructions             = surveyDB.Instructions;
            viewModel.AnswerQuestionViewModels = vmitem;
            viewModel.ResponderUserId          = user.Id;
            viewModel.ResponderUserName        = user.FullName;
            viewModel.Recipients               = recipientList;
            viewModel.ResponseDate             = currentDateTime;

            ViewData["Recipients"] = new SelectList(_context.ApplicationUsers, "FocusUserId", "FullName");

            return(View(viewModel));
        }