public async Task UpdateQuestionAsync( int questionId, QuestionRequestViewModel questionRequestViewModel) { var question = await this.questionsRepository.FirstAsync(x => x.Id == questionId); if (question.Author != this.currentUser) { throw new QaException(Messages.NoRightsToModifyQuestion); } question.QuestionText = questionRequestViewModel.Question; question.Title = questionRequestViewModel.Title; question.ShortDescription = questionRequestViewModel.ShortDescription; question.UpdatedAt = DateTime.Now; await this.questionTagRepository.DeleteAllRelatedToAQuestion(questionId); await this.questionTagRepository.AddTagsToAQuestion(questionRequestViewModel.Tags, question.Id); this.questionsRepository.Update(question); await this.questionsRepository.UpdateSearchTableAsync(question.Id, question.Title); await this.uow.SaveChangesAsync(); }
public async Task <IActionResult> UpdateQuestion(int questionId, [FromBody] QuestionRequestViewModel qvm) { if (ModelState.IsValid == false) { return(BadRequest(ModelState)); } await this.questionsService.UpdateQuestionAsync(questionId, qvm); return(NoContent()); }
public async Task <IActionResult> AddQuestion([FromBody] QuestionRequestViewModel qvm) { if (ModelState.IsValid == false) { return(BadRequest(ModelState)); } var newQuestionId = await this.questionsService.AddQuestionAsync(qvm); return(Ok(newQuestionId)); }
public async Task <BaseResponseViewModel> AddQuestionAsync( QuestionRequestViewModel questionRequestViewModel) { var question = new Question(); question.QuestionText = questionRequestViewModel.Question; question.Title = questionRequestViewModel.Title; question.ShortDescription = questionRequestViewModel.ShortDescription; question.CreatedAt = DateTime.Now; question.UpdatedAt = DateTime.Now; question.Author = this.currentUser; await this.questionsRepository.AddAsync(question); await this.questionTagRepository.AddTagsToAQuestion(questionRequestViewModel.Tags, question.Id); await this.uow.SaveChangesAsync(); // Not required to catch this. Since this storing is only for search purpose now. // TODO Find a different way to generate and get the questionId or find it // before calling uow save changes. So that calling it two times can eb avoided. try { await this.questionsRepository.InsertIntoSearchTableAsync(question.Id, question.Title); await this.uow.SaveChangesAsync(); } catch { } return(new BaseResponseViewModel() { Id = question.Id }); }