public void VoteDown(User.User user) { if (Form != null) { FormReply reply = new FormReply() { Answers = new List <Answer.Answer>(), User = user, Anonymous = user == null, Form = Form }; Answer.Answer answer = new SingleChoiceAnswer() { SelectedChoice = 0, OrderIndex = 0, QuestionIndex = 0, }; reply.Answers.Add(answer); Form.Replies.Add(reply); } else if (IdeationReply != null) { IdeationReply.VoteDown(user); } }
public IActionResult GetFormReply(int id) { FormReply reply = _formManager.GetFormReply(id); if (reply == null) { return(NotFound()); } return(Ok(reply)); }
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 Vote(int id, int vote, [FromServices] UserManager <User> userManager) { Form form = _formManager.GetForm(id); if (form == null) { return(NotFound()); } User user = userManager.GetUserAsync(User).Result; bool anonymous = false; anonymous = user == null; FormReply reply = new FormReply() { User = user, Anonymous = anonymous, Answers = new List <Answer>(), Form = form, }; Answer answer = new SingleChoiceAnswer() { OrderIndex = 0, QuestionIndex = 0, SelectedChoice = vote }; reply.Answers.Add(answer); _formManager.AddFormReply(reply); //form.Replies.Add(reply); _unitOfWorkManager.Save(); int upvotes = form.Replies.Select(f => ((SingleChoiceAnswer)f.Answers[0]).SelectedChoice).Count(c => c == 1); int downvotes = form.Replies.Select(f => ((SingleChoiceAnswer)f.Answers[0]).SelectedChoice).Count(c => c == 0); _voteHubContext.Clients.Group($"form - {id}").ReceiveUpvote(); return(Created("", new { upvotes = upvotes, downvotes = downvotes })); }
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 })); }
public FormReply CreateFormReply(FormReply formReply) { _ctx.FormReplies.Add(formReply); _ctx.SaveChanges(); return(formReply); }
public FormReply AddFormReply(FormReply formReply) { return(_formRepository.CreateFormReply(formReply)); }