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()); }
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 })); }