public async Task <IActionResult> GetReportDetailAsync(int questionId) { Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(questionId); var r = await question.GetDetailAsync(Domain.Questions.Question.DetailSource.Report, null); return(Pack(r)); }
public async Task <IActionResult> BackAsync(int id, [FromBody] Share.SingleContent model) { Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Resp resp = await question.BackAsync(model.Content); return(Pack(resp)); }
public async Task <IActionResult> EnabledAsync(int id) { Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Resp resp = await question.EnabledAsync(); return(Pack(resp)); }
public async Task <ICollection <DomainQuestion> > GetQuestionsByProjectIdAsync(Guid projectId) { var questionCollection = this.database.GetCollection <Question>(Constants.QUESTIONS_COLLECTION); var commentCollection = this.database.GetCollection <Comment>(Constants.COMMENTS_COLLECTION); var mongoQuestions = await questionCollection.FindAsync(f => f.ProjectId == projectId).ConfigureAwait(false); var questions = await mongoQuestions.ToListAsync(); List <DomainQuestion> domainQuestions = new List <DomainQuestion>(); foreach (var question in questions) { var mongoComments = await commentCollection.FindAsync(c => c.QuestionId == question.QuestionId).ConfigureAwait(false); var comments = mongoComments.ToList().Map(c => this.mapper.Map <DomainComment>(c)).ToList(); var dc = new DomainQuestion(comments) { Importance = question.Importance, ProjectId = question.ProjectId, QuestionId = question.QuestionId, QuestionText = question.QuestionText, ResponseCount = question.ResponseCount }; domainQuestions.Add(dc); } return(domainQuestions); }
public Task UpdateQuestionAsync(DomainQuestion question) { var questionCollection = this.database.GetCollection <Question>(Constants.QUESTIONS_COLLECTION); return(questionCollection.ReplaceOneAsync <Question> (q => q.QuestionId == question.QuestionId, this.mapper.Map <Question>(question))); }
public async Task <IActionResult> UnLikeAsync(int id) { Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Resp r = await question.UnLikeAsync(); return(Pack(r)); }
public async Task <IActionResult> GetDetailAsync(int id) { Paginator pager = Paginator.New(1, 10); Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Resp resp = await question.GetDetailAsync(Domain.Questions.Question.DetailSource.Admin, pager); return(Pack(resp)); }
public async Task <IActionResult> EditQuestionAsync(int id, [FromBody] Domain.Questions.Models.EditQuestion model) { if (CurrentUser.IsEmpty()) { return(Pack(Domain.Resp.NeedLogin(Domain.Resp.NONE, "请重新登录"))); } model.CurrentUserId = CurrentUser.Id; Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); var r = await question.EditAsync(model); return(Pack(r)); }
public async Task <IActionResult> EditQuestionAsync(int id) { SetTitle("修改提问"); Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Questions.Results.QuestionEditInfo model = await question.GetEditInfoAsync(id); if (model == default) { return(NotFound()); } return(View("Edit", model)); }
public async Task <IActionResult> PostComment(int id, [FromBody] Domain.Share.SingleContent model) { // 必须登录 if (CurrentUser.IsEmpty()) { return(Pack(Domain.Resp.NeedLogin())); } Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Resp r = await question.AddCommentAsyns(CurrentUser.Id, model.Content); return(Pack(r)); }
public Task <Guid> AddQuestionAsync(DomainQuestion domainQuestion) { // TODO validate the projectId? try { var questionCollection = this.database.GetCollection <Question>(Constants.QUESTIONS_COLLECTION); var question = this.mapper.Map <Question>(domainQuestion); questionCollection.InsertOne(question); return(Task.FromResult(question.QuestionId)); } catch (Exception e) { this.logger.LogError(e, e.Message); throw; } }
public async Task <IActionResult> GetQuestionDetailAsync(int id, string title, int index, int size) { SetTitle(title); Domain.Paginator pager = Domain.Paginator.New(index, size, 1); pager["currentUserId"] = CurrentUser.Id.ToString(); Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); Domain.Resp resp = await question.GetDetailAsync(Domain.Questions.Question.DetailSource.Client, pager); if (!resp.IsSuccess) { return(Redirect(string.Format($"/questions/?{ALERT_WARNING}", resp.Message))); } Domain.Questions.Results.QuestionDetailForClient model = resp.GetData <Domain.Questions.Results.QuestionDetailForClient>(); return(View("QuestionDetail", model)); }
public async Task <IActionResult> PostAnswerAsync(int id, [FromBody] Domain.Answers.Models.PostAnswer model) { Domain.Questions.Question question = Domain.Questions.Hub.GetQuestion(id); bool isLogin = !CurrentUser.IsEmpty(); if (isLogin != model.IsLogin) { return(Pack(Domain.Resp.NeedLogin(Domain.Resp.NONE, "登录超时"))); } if (isLogin) { return(Pack(await question.AddAnswerAsync(CurrentUser.Id, model.Content))); } return(Pack(await question.AddAnswerAsync(model.NickName, model.Content))); }
public async Task <DomainQuestion> GetQuestionByIdAsync(Guid questionId, bool includeComments = false) { // https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/ var questions = this.database.GetCollection <Question>(Constants.QUESTIONS_COLLECTION); var mongoQuestion = await questions.FindAsync(p => p.QuestionId == questionId).ConfigureAwait(false); var question = mongoQuestion.FirstOrDefault(); if (question == null) { return(null); } if (!includeComments) { var domainQuestion = new DomainQuestion { Active = question.Active, Importance = question.Importance, ProjectId = question.ProjectId, QuestionId = question.QuestionId, QuestionText = question.QuestionText, ResponseCount = question.ResponseCount }; return(domainQuestion); } var comments = await this.GetCommentsByQuestionIdAsync(questionId); return(new DomainQuestion(comments) { Active = question.Active, Importance = question.Importance, ProjectId = question.ProjectId, QuestionId = question.QuestionId, QuestionText = question.QuestionText, ResponseCount = question.ResponseCount }); }
public Task <PolicyResult> AddQuestionAsync(Domain.Questions.Question question) { throw new NotImplementedException(); }