public IActionResult SaveAnswers(AddAnswerViewModel test) { User user = ctx.Users.SingleOrDefault(a => a.Username == test.Username); List <Choice> choices = new List <Choice>(); foreach (var item in test.selectedAns) { choices.Add(new Choice() { ChoiceId = item, ChoiceText = ctx.choices.Find(item).ChoiceText, question = ctx.choices.Find(item).question }); } foreach (var item in choices) { AnswerDetails details = new AnswerDetails() { choice = item, PickedByUser = user }; ctx.answerDetails.Add(details); ctx.SaveChanges(); } return(RedirectToAction("Results")); }
public IActionResult Index() { AddAnswerViewModel model = new AddAnswerViewModel(); model.choices = ctx.choices.Include(a => a.question).ToList(); model.Questions = ctx.Questions.ToList(); return(View(model)); }
public IActionResult AddAnswer(AddAnswerViewModel addAnswerViewModel) { // Basic checks first if (addAnswerViewModel == null) { return(View("Error")); } if (!ModelState.IsValid) { return(View("Error")); } // Create answer controller because we will just use it var answerController = new AnswerController(_answerService, _profanityService, _suggestionService, _userService, _antiforgery, _statisticsService) { ControllerContext = new ControllerContext() { HttpContext = this.HttpContext } }; // Create object to post var answer = new AnswerDto() { LeftWord = addAnswerViewModel.LeftWord, RightWord = addAnswerViewModel.RightWord, Phrase = addAnswerViewModel.Phrase, UserId = this.GetUserId(this.User, _userService) }; // Roll the dice and post. var task = answerController.AddAnswer(answer); task.Wait(); var resultAnswer = task.Result; // Create the object for passing data between controllers. var navigationData = new NavigationDataDto(); // Read the reason to return it to UI. // All good if (resultAnswer.ErrorMessage == null) { navigationData.Reason = _resourcesService.GetString(this.Culture, Lines.OPINION_WAS_ADDED_SUCCESSFULLY); navigationData.AnswerId = resultAnswer.Answer.Id; navigationData.UserLevelingResult = resultAnswer.UserLevelingResult; // Redirect to show the answer. This will prevent user refreshing the page. return(RedirectToAction("ShowAnswer", "AnswerAction", new { data = NavigationHelper.Encode(navigationData) })); } // All bad else { navigationData.Reason = string.Format(_resourcesService.GetString(this.Culture, Lines.OPINION_WAS_NOT_ADDED), resultAnswer.ErrorMessage); return(RedirectToAction("Index", "Home", new { reason = navigationData.Reason })); } }
public async Task <ActionResult> Add(AddAnswerViewModel answer) { if (ModelState.IsValid) { Question question = await db.Questions.SingleAsync(x => x.Id == answer.QuestionId); question.Answers.Add(new Answer(answer.Text)); await db.SaveChangesAsync(); return(RedirectToAction("Details", "Questions", new { id = answer.QuestionId })); } return(View(answer)); }
public async Task <IActionResult> Add([FromBody] AddAnswerViewModel model) { try { var response = await _service.AddAnswerToQuestion(User, model, ModelState); return(response.JsonResult()); } catch (Exception error) { _logger.Error(error); return(StandardResponse.ForError().JsonResult()); } }
public IActionResult AddUser(UserViewModel user) { ViewBag.Data = user.Username; AddAnswerViewModel addModel = new AddAnswerViewModel(); addModel.Username = user.Username; addModel.choices = ctx.choices.Include(a => a.question).ToList(); addModel.Questions = ctx.Questions.ToList(); if (ctx.Users.Any(a => a.Username == user.Username)) { return(RedirectToAction("Index")); } else { ctx.Users.Add(new User() { Username = user.Username, Name = user.Name, Age = user.Age }); ctx.SaveChanges(); return(View(addModel)); } }
public async Task <StandardResponse> AddAnswerToQuestion(ClaimsPrincipal identity, AddAnswerViewModel model, ModelStateDictionary modelState) { if (!modelState.IsValid) { return(modelState.StandardError()); } using (var db = new ServiceDb()) { using (var user = await _userService.Become(db, identity, null)) { var answer = await _answerService.CreateAnswer(db, user, model.QuestionId, model.Body); await db.SaveChangesAsync(); return(StandardResponse.For(new { answer.AnswerId })); } } }