Пример #1
0
 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);
     }
 }
Пример #2
0
        public IActionResult GetFormReply(int id)
        {
            FormReply reply = _formManager.GetFormReply(id);

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

            return(Ok(reply));
        }
Пример #3
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());
        }
Пример #4
0
        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 }));
        }
Пример #5
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 }));
        }
Пример #6
0
 public FormReply CreateFormReply(FormReply formReply)
 {
     _ctx.FormReplies.Add(formReply);
     _ctx.SaveChanges();
     return(formReply);
 }
Пример #7
0
 public FormReply AddFormReply(FormReply formReply)
 {
     return(_formRepository.CreateFormReply(formReply));
 }