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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
 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;
     }
 }
Exemplo n.º 12
0
        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));
        }
Exemplo n.º 13
0
        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)));
        }
Exemplo n.º 14
0
        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
            });
        }
Exemplo n.º 15
0
 public Task <PolicyResult> AddQuestionAsync(Domain.Questions.Question question)
 {
     throw new NotImplementedException();
 }