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