Ejemplo n.º 1
0
        private static QuestionViewModel GoToTheNextQuestion(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                             Questionnaire questionnaire)
        {
            var nextQuestionViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex + 1);

            return(nextQuestionViewModel);
        }
        private QuestionViewModel CreateGenericQuestionErrorPrompt(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                                   AmendmentOutcome outcome, Amendment amendment, Question thisQuestion)
        {
            var errorsPromptViewModel =
                new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex, outcome.ValidationErrors)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = thisQuestion.Answer.IsConditional
            };

            string actualMessage = string.Empty;

            foreach (var errorMessage in outcome.ValidationErrors)
            {
                foreach (var promptError in errorMessage.Value)
                {
                    ViewData.ModelState.AddModelError(errorMessage.Key, promptError);
                    actualMessage = promptError;
                }
            }

            if (!string.IsNullOrEmpty(actualMessage))
            {
                ViewData["errorMessage"] = actualMessage;
            }

            return(errorsPromptViewModel);
        }
Ejemplo n.º 3
0
        private QuestionViewModel CreateUploadMoreViewModel(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                            Questionnaire questionnaire)
        {
            var uploadEvidenceViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex);

            ViewBag.Upload   = GetFiles();
            ViewBag.HasAdded = !Request.Form.ContainsKey("skipValidation");
            return(uploadEvidenceViewModel);
        }
        private static QuestionViewModel GoToTheNextQuestion(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                             Amendment amendment)
        {
            var nextQuestionViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex + 1)
            {
                PupilDetails = new PupilViewModel(amendment.Pupil)
            };

            return(nextQuestionViewModel);
        }
Ejemplo n.º 5
0
        internal QuestionViewModel CreateValidationErrorUploadModel(PromptAnswerViewModel promptAnswerViewModel, FileValidationError error, List <Question> questions)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, error.Title);
            ViewData["errorMessage"] = error.Detail;

            var errorUploadViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex);

            ViewBag.Upload = GetFiles();
            return(errorUploadViewModel);
        }
        private static QuestionViewModel CreateConditionalPrompt(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                                 Amendment amendment)
        {
            var conditionalViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = true
            };

            return(conditionalViewModel);
        }
Ejemplo n.º 7
0
        private QuestionViewModel CreateErrorUploadViewModel(PromptAnswerViewModel promptAnswerViewModel, Question thisQuestion,
                                                             List <Question> questions)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, thisQuestion.Validator.NullErrorMessage);
            ViewData["errorMessage"] = thisQuestion.Validator.NullErrorMessage;

            var errorUploadViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex);

            ViewBag.Upload = GetFiles();
            return(errorUploadViewModel);
        }
        private QuestionViewModel CreateUploadMoreViewModel(PromptAnswerViewModel promptAnswerViewModel, List <Question> questions,
                                                            Amendment amendment)
        {
            var uploadEvidenceViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = true
            };

            ViewBag.Upload   = GetFiles();
            ViewBag.HasAdded = !Request.Form.ContainsKey("skipValidation");
            return(uploadEvidenceViewModel);
        }
        internal QuestionViewModel CreateValidationErrorUploadModel(PromptAnswerViewModel promptAnswerViewModel, FileValidationError error, List <Question> questions, Amendment amendment)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, error.Title);
            ViewData["errorMessage"] = error.Detail;

            var errorUploadViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = true
            };

            ViewBag.Upload = GetFiles();
            return(errorUploadViewModel);
        }
        private QuestionViewModel CreateErrorUploadViewModel(PromptAnswerViewModel promptAnswerViewModel, Question thisQuestion,
                                                             List <Question> questions, Amendment amendment)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, thisQuestion.Validator.NullErrorMessage);
            ViewData["errorMessage"] = thisQuestion.Validator.NullErrorMessage;

            var errorUploadViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = true
            };

            ViewBag.Upload = GetFiles();
            return(errorUploadViewModel);
        }
Ejemplo n.º 11
0
        private QuestionViewModel CreateNullableInvalidDateErrorPrompt(PromptAnswerViewModel promptAnswerViewModel,
                                                                       Question thisQuestion, List <Question> questions)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, thisQuestion.Validator.NullErrorMessage);
            ViewData["errorMessage"] = thisQuestion.Validator.NullErrorMessage;

            List <string> errorCollection = new List <string> {
                thisQuestion.Validator.NullErrorMessage
            };
            var validationErrors = new Dictionary <string, ICollection <string> >
            {
                { promptAnswerViewModel.QuestionId, errorCollection }
            };

            var errorsPromptViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex, validationErrors)
            {
                ShowConditional = thisQuestion.Answer.IsConditional
            };

            return(errorsPromptViewModel);
        }
        private QuestionViewModel CreateNullableDateErrorPrompt(PromptAnswerViewModel promptAnswerViewModel,
                                                                Question thisQuestion, List <Question> questions, Amendment amendment)
        {
            ViewData.ModelState.AddModelError(promptAnswerViewModel.QuestionId, thisQuestion.Answer.Label);
            ViewData["errorMessage1"] = thisQuestion.Answer.Label;
            ViewData["errorType"]     = "NoneSelected";

            List <string> errorCollection = new List <string> {
                thisQuestion.Answer.Label
            };
            var validationErrors = new Dictionary <string, ICollection <string> >
            {
                { promptAnswerViewModel.QuestionId, errorCollection }
            };

            var errorsPromptViewModel = new QuestionViewModel(questions, promptAnswerViewModel.CurrentIndex, validationErrors)
            {
                PupilDetails    = new PupilViewModel(amendment.Pupil),
                ShowConditional = thisQuestion.Answer.IsConditional
            };

            return(errorsPromptViewModel);
        }
        public IActionResult Prompt(PromptAnswerViewModel promptAnswerViewModel, bool Continue)
        {
            var questions    = GetQuestions();
            var thisQuestion = FindQuestion(questions, promptAnswerViewModel.QuestionId);

            var promptAnswer = promptAnswerViewModel.GetAnswerAsString(Request.Form);

            SaveAnswer(new UserAnswer {
                QuestionId = promptAnswerViewModel.QuestionId, Value = promptAnswer
            });

            var amendment = GetAmendment();

            if (thisQuestion.QuestionType == QuestionType.Evidence)
            {
                if (Request.Form.Files.Count > 0)
                {
                    var result = UploadEvidence(amendment);

                    if (result != null)
                    {
                        var errorUploadViewModel = CreateValidationErrorUploadModel(promptAnswerViewModel, result,
                                                                                    questions, amendment);

                        return(View("Prompt", errorUploadViewModel));
                    }
                }
                else if (!Continue && Request.Form.ContainsKey("remove"))
                {
                    var fileId = Request.Form["remove"];
                    var file   = GetFiles().Files.Single(x => x.Id == fileId);
                    _evidenceService.DeleteEvidenceFile(Guid.Parse(file.Id));

                    RemoveFile(fileId);
                    var uploadEvidenceViewModel = CreateUploadMoreViewModel(promptAnswerViewModel, questions,
                                                                            amendment);

                    ViewBag.HasAdded = !Request.Form.ContainsKey("skipValidation");
                    return(View("Prompt", uploadEvidenceViewModel));
                }
                else if (!Continue && !Request.Form.ContainsKey("skipValidation"))
                {
                    var errorUploadViewModel = CreateErrorUploadViewModel(promptAnswerViewModel, thisQuestion,
                                                                          questions, amendment);

                    return(View("Prompt", errorUploadViewModel));
                }

                if (!Continue)
                {
                    var uploadEvidenceViewModel = CreateUploadMoreViewModel(promptAnswerViewModel, questions,
                                                                            amendment);

                    ViewBag.HasAdded = !Request.Form.ContainsKey("skipValidation");
                    return(View("Prompt", uploadEvidenceViewModel));
                }

                SaveAnswer(new UserAnswer {
                    QuestionId = promptAnswerViewModel.QuestionId, Value = amendment.EvidenceFolderName
                });
            }

            amendment = GetAmendment();

            if (ConditionalQuestion(thisQuestion, promptAnswer))
            {
                var conditionalViewModel = CreateConditionalPrompt(promptAnswerViewModel, questions, amendment);

                return(View("Prompt", conditionalViewModel));
            }

            var outcome = _amendmentService.CreateAmendment(amendment);

            if (outcome.FurtherQuestions != null)
            {
                SaveQuestions(outcome.FurtherQuestions);
                questions = GetQuestions();
            }

            if (NotNullableDateIsSelected(thisQuestion))
            {
                var errorsPromptViewModel = CreateNullableDateErrorPrompt(promptAnswerViewModel,
                                                                          thisQuestion, questions, amendment);

                return(View("Prompt", errorsPromptViewModel));
            }

            if (NullableDateQuestionHasErrors(thisQuestion))
            {
                var errorsPromptViewModel = CreateNullableInvalidDateErrorPrompt(promptAnswerViewModel,
                                                                                 thisQuestion, questions, amendment);

                return(View("Prompt", errorsPromptViewModel));
            }

            if (GenericQuestionHasErrors(outcome))
            {
                var errorsPromptViewModel = CreateGenericQuestionErrorPrompt(promptAnswerViewModel, questions,
                                                                             outcome, amendment, thisQuestion);

                return(View("Prompt", errorsPromptViewModel));
            }

            var nextQuestionViewModel = GoToTheNextQuestion(promptAnswerViewModel, questions, amendment);

            if (nextQuestionViewModel.HasMoreQuestions)
            {
                return(View("Prompt", nextQuestionViewModel));
            }

            return(RedirectToAction("Confirm", "Amendments"));
        }