예제 #1
0
        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"));
        }
예제 #2
0
        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 }));
            }
        }
예제 #4
0
        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));
        }
예제 #5
0
        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());
            }
        }
예제 #6
0
        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
                    }));
                }
            }
        }