Exemple #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());
        }
        public IActionResult PostIdeationReply([FromForm] IdeationReplyDTO ideationReplyDto)
        {
            // return Created("/ideation/overview/1", null);
            //log test 1
            Ideation ideation = _ideationManager.GetIdeationWithQuestions(ideationReplyDto.IdeationId);
            //log test 2
            User user = _usermanager.GetUserAsync(User).Result;

            //log test 3
            if (ideation == null || user == null)
            {
                return(NotFound());
            }
            //log test 4

            IdeationReply newReply = new IdeationReply()
            {
                Ideation = ideation,
                Title    = ideationReplyDto.Title,
                Answers  = new List <Answer>(),
                Votes    = new List <Vote>(),
                Comments = new List <Comment>(),
                Created  = DateTime.Now,
                User     = user,
                Reports  = new List <IdeationReport>()
            };
            //log test 5
            int index = 0;

            ideationReplyDto.Answers.ForEach(dto =>
            {
                Answer newAnswer = null;

                switch (dto.FieldType)
                {
                case FieldType.OpenText:
                    newAnswer = new OpenTextAnswer()
                    {
                        QuestionIndex = dto.QuestionIndex,
                        Value         = dto.OpenAnswer
                    };
                    break;

                case FieldType.Image:
                case FieldType.Video:
                    string fileName = Util.Util.GenerateDataStoreObjectName(dto.FileAnswer.FileName);
                    string pathName = _fileUploader.UploadFile(fileName, "ideationReply", dto.FileAnswer).Result;
                    newAnswer       = new MediaAnswer()
                    {
                        QuestionIndex = dto.QuestionIndex,
                        Value         = new Media()
                        {
                            Name = dto.FileAnswer.FileName,
                            Url  = pathName
                        }
                    };
                    break;

                case FieldType.SingleChoice:
                case FieldType.DropDown:
                    newAnswer = new SingleChoiceAnswer()
                    {
                        QuestionIndex  = dto.QuestionIndex,
                        SelectedChoice = dto.SingleAnswer
                    };
                    break;

                case FieldType.MultipleChoice:
                    newAnswer = new MultipleChoiceAnswer()
                    {
                        QuestionIndex   = dto.QuestionIndex,
                        SelectedChoices = dto.MultipleAnswer
                    };
                    break;

                case FieldType.Location:
                    newAnswer = new LocationAnswer()
                    {
                        QuestionIndex = dto.QuestionIndex,
                        Value         = new Location()
                        {
                            Latitude  = dto.LocationAnswer.Latitude,
                            Longitude = dto.LocationAnswer.Longitude,
                            ZoomLevel = dto.LocationAnswer.ZoomLevel,
                        }
                    };
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                newAnswer.OrderIndex = index++;
                newReply.Answers.Add(newAnswer);
            });
            //log test 6
            _ideationManager.AddIdeationReply(newReply);
            //log test 7
            // Create activity
            var activity = CreateActivity(ActivityType.IdeationReply, user);

            activity.IdeationReply = newReply;
            _activityManager.AddActivity(activity);
            //log test 8
            // Save everything
            _unitOfWorkManager.Save();
            //log test 9
            // Push activity
            var activityVm = new ActivityViewModel(activity);

            //log test 10
            PushWebsockets(activityVm).Wait();
            //log test 11
            return(Created("/ideation/view/" + newReply.IdeationReplyId, new { id = newReply.IdeationReplyId }));
        }
        public IActionResult PostIdeationReplyApp([FromBody] IdeationReplyAppDto ideationReplyApp)
        {
            Ideation ideation = _ideationManager.GetIdeationWithReplies(ideationReplyApp.IdeationId);

            User user = _usermanager.FindByEmailAsync(HttpContext.User.Claims.FirstOrDefault(c => c.Type == "Email").Value).Result;

            IdeationReply newReply = new IdeationReply()
            {
                Ideation = ideation,
                Title    = ideationReplyApp.Title,
                Answers  = new List <Answer>(),
                Votes    = new List <Vote>(),
                Created  = DateTime.Now,
                Comments = new List <Comment>(),
                User     = user,
                Reports  = new List <IdeationReport>()
            };

            int index = 0;

            foreach (var dto in ideationReplyApp.Answers)
            {
                Answer newAnswer = null;

                switch (dto.FieldType)
                {
                case FieldType.OpenText:
                    newAnswer = new OpenTextAnswer()
                    {
                        QuestionIndex = dto.QuestionIndex,
                        Value         = dto.Reply
                    };
                    break;

                case FieldType.SingleChoice:
                case FieldType.DropDown:
                    newAnswer = new SingleChoiceAnswer()
                    {
                        QuestionIndex  = dto.QuestionIndex,
                        SelectedChoice = dto.SelectedChoice
                    };
                    break;

                case FieldType.MultipleChoice:
                    newAnswer = new MultipleChoiceAnswer()
                    {
                        QuestionIndex   = dto.QuestionIndex,
                        SelectedChoices = dto.MultipleAnswer
                    };
                    break;

                case FieldType.Location:
                    newAnswer = new LocationAnswer()
                    {
                        QuestionIndex = dto.QuestionIndex,
                        Value         = new Location()
                        {
                            Latitude  = dto.LocationAnswer.Latitude,
                            Longitude = dto.LocationAnswer.Longitude,
                            ZoomLevel = dto.LocationAnswer.ZoomLevel,
                        }
                    };
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                newAnswer.OrderIndex = index++;
                newReply.Answers.Add(newAnswer);
            }

            // Create activity
            var activity = CreateActivity(ActivityType.IdeationReply, user, ideation.Project.Platform);

            activity.IdeationReply = newReply;
            _activityManager.AddActivity(activity);

            // Save everything
            _unitOfWorkManager.Save();

            // Push activity
            var activityVm = new ActivityViewModel(activity);

            PushWebsockets(activityVm).Wait();

            return(Ok());
        }
Exemple #4
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 }));
        }