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)); } }
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 })); }
public async Task <AnswerViewModel> AnswerQuestion(AnswerRequest request, long questionId) { return(await _questionService.AnswerQuestion(questionId, request.Text, CurrentUser.Id)); }