Ejemplo n.º 1
0
        public async Task <ActionResult <AnswerResultDTO> > Post(QuestionAnswerDTO questionAnswer)
        {
            var result = await _questionService.AnswerQuestion(questionAnswer);

            if (result != null)
            {
                return(Ok(result));
            }
            else
            {
                return(Problem());
            }
        }
        public IActionResult AnswerQuestion(AnswerQuestionModel answerQuestion)
        {
            var result = _questionService.AnswerQuestion(answerQuestion);

            if (result.Data != null)
            {
                return(SuccessResponse(result, result.Message));
            }
            else
            {
                return(FailResponse(result.Message));
            }
        }
        public async Task <ActionResult> PostAnswerAsync([FromBody] AnswerQuestionViewModel answerQuestionViewModel, int id)
        {
            try
            {
                var entity = _questionService.GetQuestionById(id);
                if (entity == null)
                {
                    return(NotFound());
                }

                var username = answerQuestionViewModel.Username;

                if (string.IsNullOrWhiteSpace(username))
                {
                    return(StatusCode((int)HttpStatusCode.BadRequest, string.Format("Please enter a valid username", username)));
                }

                var user = await _userService.GetUserByUsernameUser(username);

                if (user == null)
                {
                    return(StatusCode((int)HttpStatusCode.BadRequest, string.Format("{0}  is not associated with an account", username)));
                }

                var answer = _questionService.GetAnswerByQuestionAndUserIds(id, user.ID);
                if (answer != null)
                {
                    return(StatusCode((int)HttpStatusCode.OK, "You have answered the question already !!!"));
                }

                answer = new QuestionAnswer
                {
                    QuestionId  = id,
                    UserId      = user.ID,
                    IsCorrect   = answerQuestionViewModel.IsCorrect,
                    IsDeleted   = false,
                    IsDisplayed = true,
                    CreatedOn   = DateTime.Now,
                    UpdatedOn   = DateTime.Now
                };

                var result = await _questionService.AnswerQuestion(answer);

                if (result)
                {
                    return(StatusCode((int)HttpStatusCode.Created, "Question answered successfully !!!"));
                }
                return(StatusCode((int)HttpStatusCode.OK, "Question not answered !!!"));
            }
            catch (Exception ex) { return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message)); }
        }
Ejemplo n.º 4
0
        public ActionResult AnswerQuestion(int questionId, string content = "", AnswerEnum type = AnswerEnum.Answer)
        {
            Answer answer = new Answer();

            answer.Content        = content;
            answer.UserId         = Int32.Parse(User.Identity.GetUserId());
            answer.CreatedDate    = DateTime.Now;
            answer.LastEditedDate = answer.CreatedDate;
            answer.QuestionId     = questionId;
            answer.Type           = type;
            answer.VoteDown       = 0;
            answer.VoteUp         = 0;
            answer.Accepted       = false;
            answer.Status         = PostStatusEnum.Active;

            qService.AnswerQuestion(answer);

            //new Thread(() =>
            //{
            Question question = qService.GetQuestion(questionId);

            if (question.UserId != _currentUserId)
            {
                Notification notification = new Notification();
                notification.AuthorId    = _currentUserId;
                notification.CreatedDate = DateTime.Now;
                notification.Content     = question.Title;
                notification.Seen        = false;
                notification.Type        = answer.Type == AnswerEnum.Answer ? NotificationSettingEnum.UserAnswerQuestion : NotificationSettingEnum.UserHintQuestion;
                notification.UserId      = question.UserId;
                notification.Link        = Url.Action("Detail", "Question", new { id = question.Id });
                cService.AddNotification(notification);

                using (RealTimeService rService = new RealTimeService(new CPMathHubModelContainer(), notification.UserId))
                {
                    IEnumerable <string> connectionIds = RealTimeHub.Connections.GetConnections(notification.UserId);
                    foreach (string conId in connectionIds)
                    {
                        _hub.Clients.Client(conId).notifyNewActivity(rService.CountNewActivityNotification());
                    }
                }
                //}
                //).Start();
            }
            return(RedirectToAction("Detail", new { id = questionId }));
        }
Ejemplo n.º 5
0
 public async Task <AnswerViewModel> AnswerQuestion(AnswerRequest request, long questionId)
 {
     return(await _questionService.AnswerQuestion(questionId, request.Text, CurrentUser.Id));
 }