/// <summary> /// 获取自己的回答 /// </summary> public async Task <Paginator> GetSelfAnswersByDetailAsync(Domain.Paginator pager) { Answers.Hub answerHub = new Answers.Hub(); var r = await answerHub.GetAnswerFormUserPageAsync(pager); Paginator resultPager = r.GetData <Paginator>(); return(resultPager); }
/// <summary> /// 获取用户自己的回答,只获取第一页 /// クライアント自身の回答、最初のページのみを取得する /// </summary> public async Task <List <Answers.Results.AnswerItem_UserPage> > GetSelfAnswersByDetailAsync(int currentUserId) { Paginator pager = Paginator.New(1, 5, 2); pager["userId"] = Id.ToString(); pager["currentUserId"] = currentUserId.ToString(); pager["questionTitle"] = ""; Answers.Hub answerHub = new Answers.Hub(); var r = await answerHub.GetAnswerFormUserPageAsync(pager); var list = r.GetData <Paginator>().GetList <Answers.Results.AnswerItem_UserPage>(); return(list); }
public async Task <Resp> GetDetailAsync(int questionId, Paginator page) { using var db = new YGBContext(); DB.Tables.Question question = await db.Questions.Include(q => q.Asker) .ThenInclude(asker => asker.Avatar) .Include(q => q.QuestionComments) .FirstOrDefaultAsync(q => q.Id == questionId); if (question is null) { return(Resp.Fault(Resp.NONE, Question.QUESTION_NO_EXIST)); } Answers.Hub answerHub = new Answers.Hub(); // 获取第一页的答案分页 // 获取提问下的答案分页 Answers.List.AnswerList answers = answerHub.GetAnswers(Answers.Hub.AnswerSource.Question); (page.List, page.TotalRows) = await answers.GetAnswersAsync(questionId, page.Index, page.Size, Answers.Answer.AnswerState.NoSelected); Results.QuestionDetailForAdmin detail = new Results.QuestionDetailForAdmin { Id = question.Id, Title = question.Title, Description = question.Description, Tags = question.Tags.Split(','), Votes = question.Votes, Views = question.Views, Actived = question.Actived.ToStandardString(), CreateDate = question.CreateDate.ToStandardString(), State = KeyValue <int, string> .Create(question.State, question.State.GetDescription <Question.QuestionState>()), Comments = question.QuestionComments.Select(q => KeyValue <int, string> .Create(q.Id, q.Content)).ToArray(), User = new Clients.Results.UserIntro { Id = question.Asker.Id, Account = question.Asker.Name, Avatar = question.Asker.Avatar.Thumbnail }, Page = page }; await db.SaveChangesAsync(); return(Resp.Success(detail, "")); }
public async Task <Resp> GetDetailAsync(int questionId, Paginator page) { if (!int.TryParse(page["currentUserId"], out int currentUserId)) { currentUserId = 0; } await using var db = new YGBContext(); DB.Tables.Question question = await db.Questions.Include(q => q.Asker) .ThenInclude(asker => asker.Avatar) .Include(q => q.QuestionComments) .FirstOrDefaultAsync(q => q.Id == questionId); if (question is null) { return(Resp.Fault(Resp.NONE, Question.QUESTION_NO_EXIST)); } // 被删除的答案无法查看 if (question.State == (int)Question.QuestionState.Delete) { return(Resp.Fault(Resp.NONE, "该提问暂时无法查看")); } // 如果不是本人,则不能看启用之外的提问 if (currentUserId != question.Asker.Id) { if (question.State != (int)Question.QuestionState.Enabled) { return(Resp.Fault(Resp.NONE, "该提问暂时无法查看")); } } Answers.Hub answerHub = new Answers.Hub(); // 获取第一页的答案分页 Answers.List.AnswerList answers = answerHub.GetAnswers(Answers.Hub.AnswerSource.Question); (page.List, page.TotalRows) = await answers.GetAnswersAsync(questionId, page.Index, page.Size, Answers.Answer.AnswerState.Enabled); Results.QuestionDetailForClient detail = new Results.QuestionDetailForClient { Id = question.Id, Title = question.Title, Description = question.Description, Tags = question.Tags.Split(',', ','), Votes = question.Votes, Views = question.Views, Actived = question.Actived.ToStandardString(), CreateDate = question.CreateDate.ToStandardString(), State = Share.KeyValue <int, string> .Create(question.State, question.State.GetDescription <Question.QuestionState>()), User = new Clients.Results.UserIntro { Id = question.Asker.Id, Account = question.Asker.Name, Avatar = question.Asker.Avatar.Thumbnail }, Page = page, Comments = question.QuestionComments.Take(5).Select(c => c.Content).ToArray(), IsSelf = question.AskerId == currentUserId }; question.Views++; question.Actived = DateTimeOffset.Now; await db.SaveChangesAsync(); return(Resp.Success(detail, "")); }