Esempio n. 1
0
        public IActionResult Reply(FormReplyDTO formReply)
        {
            FormReply reply = new FormReply()
            {
                Answers = new List <Answer>(),
                Email   = formReply.Email
            };

            foreach (FormAnswerDTO formAnswer in formReply.Answers)
            {
                Answer answer;

                switch (formAnswer.FieldType)
                {
                case FieldType.OpenText:
                    answer = new OpenTextAnswer()
                    {
                        Value = formAnswer.Reply
                    };
                    break;

                case FieldType.MultipleChoice:
                    answer = new MultipleChoiceAnswer()
                    {
                        SelectedChoices = formAnswer.MultipleAnswer.ToList()
                    };
                    break;

                case FieldType.DropDown:
                case FieldType.SingleChoice:
                    answer = new SingleChoiceAnswer()
                    {
                        SelectedChoice = formAnswer.SelectedChoice
                    };
                    break;

                case FieldType.Statement:
                    answer = new SingleChoiceAnswer()
                    {
                        SelectedChoice = formAnswer.SelectedChoice
                    };
                    break;

                default:
                    throw new NotSupportedException("Fieldtype not supported yet");
                }
                reply.Answers.Add(answer);
            }

            _formManager.AddFormReply(reply);
            _unitOfWorkManager.Save();

            return(Ok());
        }
Esempio n. 2
0
        public IActionResult Reply(FormViewModel formVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(formVM));
            }

            Form form = _formManager.GetForm(formVM.FormId);

            FormReply reply = new FormReply()
            {
                Answers = new List <Answer>(),
                Email   = formVM.Email.Email,
                Form    = form
            };

            int index = 0;

            foreach (FormQuestionViewModel questionVM in formVM.Questions)
            {
                Answer answer;
                bool   isValid = true;
                switch (questionVM.FieldType)
                {
                case FieldType.OpenText:
                    isValid = questionVM.OpenAnswer != null;
                    answer  = new OpenTextAnswer()
                    {
                        QuestionIndex = index,
                        OrderIndex    = index,
                        Value         = questionVM.OpenAnswer
                    };
                    break;

                case FieldType.MultipleChoice:
                    isValid = questionVM.MultipleChoiceAnswer.Contains(true);
                    answer  = new MultipleChoiceAnswer()
                    {
                        QuestionIndex   = index,
                        OrderIndex      = index,
                        SelectedChoices = questionVM.MultipleChoiceAnswer.ToList()
                    };
                    break;

                case FieldType.DropDown:
                case FieldType.SingleChoice:
                case FieldType.Statement:
                    if (questionVM.SingleChoiceAnswer.HasValue)
                    {
                        answer = new SingleChoiceAnswer()
                        {
                            QuestionIndex  = index,
                            OrderIndex     = index,
                            SelectedChoice = questionVM.SingleChoiceAnswer.Value
                        };
                    }
                    else
                    {
                        answer  = null;
                        isValid = false;
                    }

                    break;

                default:
                    throw new NotSupportedException("Fieldtype not supported yet");
                }

                if (isValid)
                {
                    reply.Answers.Add(answer);
                }
                index++;
            }
            _formManager.AddFormReply(reply);
            _unitOfWorkManager.Save();

            return(RedirectToAction("Confirmation", new { email = reply.Email }));
        }