public IActionResult Index(int id) { _questionImplementation.AddView(id).Wait(); var question = _questionImplementation.GetById(id); var answers = Buildanswers(question.Answers); var model = new QuestionIndexModel { QuestionId = question.QuestionId, QuestionTitle = question.QuestionTitle, AuthorId = question.User.Id, AuthorName = question.User.UserName, AuthorImageUrl = question.User.ProfileImageUrl, AuthorRating = question.User.Rating, QuestionCreated = question.QuestionCreated, QuestionContent = question.QuestionContent, Answers = answers, AnswerCount = question.Answers.Count(), CategoryId = question.Category.CategoryId, CategoryTitle = question.Category.CategoryTitle, IsAuthorAdmin = IsAuthorAdmin(question.User), LikeCount = question.LikeQuestions.Count(), NumberView = question.NumberViews }; return(View(model)); }
private Answer BuildReply(QuestionIndexModel model, ApplicationUser user) { var question = _questionImplementation.GetById(model.QuestionId); return(new Answer { Question = question, AnswerContent = model.AnswerContent, AnswerCreated = DateTime.Now, User = user }); }
public List <QuestionIndexModel> GetAllQuestionsFromTestWithId(int id) { var lis = new List <QuestionIndexModel>(); foreach (var question in this.dbContext.Questions.Where(x => x.TestId == id)) { var curQuestion = new QuestionIndexModel() { Id = question.Id, Name = question.QuestionName, }; lis.Add(curQuestion); } return(lis); }
/// <summary> /// From list of the question make a QuestionIndexModel list to index page /// </summary> /// <param name="questions">Question list</param> /// <returns></returns> public static List <QuestionIndexModel> ToQuestionIndexModel(IEnumerable <Question> questions) { List <QuestionIndexModel> qim = new List <QuestionIndexModel>(); foreach (var item in questions) { var add = new QuestionIndexModel(); add.Question = item; add.Answers = AnswerManager.GetAllAnswerToOneQuestion(item.Id).Count; add.Vote = QuestionManager.GetVote(item.Id); add.Tags = TagManager.GetAllTagToOneQuestion(item.Id); add.QuestionUser = UserManager.GetUserById(item.UserId); qim.Add(add); } return(qim); }
public async Task <IActionResult> AddLike(int questionId) { var userId = _userManager.GetUserId(User); var user = await _userManager.FindByIdAsync(userId); var likeQuestion = BuildLike(questionId, user); await _questionImplementation.AddLike(likeQuestion); var question = _questionImplementation.GetById(questionId); var model = new QuestionIndexModel { LikeCount = question.LikeQuestions.Count(), QuestionId = question.QuestionId }; return(RedirectToAction("Index", "Question", new { id = questionId })); }
public async Task <IActionResult> AddAnswer(QuestionIndexModel model) { var userId = _userManager.GetUserId(User); var user = await _userManager.FindByIdAsync(userId); var answer = BuildReply(model, user); string[] censoredWords = System.IO.File.ReadAllLines(@"CensoredWords.txt"); Censor censor = new Censor(censoredWords); answer.AnswerContent = censor.CensorText(answer.AnswerContent); await _questionImplementation.AddAnswer(answer); await _applicationUserImplementation.UpdateUserRating(userId, typeof(Answer)); return(RedirectToAction("Index", "Question", new { id = model.QuestionId })); }
public async Task <ActionResult> GetQuestionsAsync(int pageSize, int pageNumber, string tagName) { var items = await _questionService.GetQuestions(pageNumber, pageSize, tagName); var countQuestions = await _questionService.CountQuestions(tagName); var questionModel = new QuestionIndexModel() { PageModel = new PageModel(countQuestions, pageNumber, pageSize), QuestionModels = _mapper.Map <List <QuestionModel> >(items) }; var claimValueId = User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Sid)?.Value; var userId = int.TryParse(claimValueId, out var f) ? f : default(int?); questionModel.QuestionModels.ForEach(x => x.SetCurrentVoter(userId)); return(Ok(questionModel)); }
public async Task <IActionResult> Index(Guid topic, FilterType filter = FilterType.New, int page = 1) { if (page < 1) { return(NotFound()); } PagingResult <PostView> postViews = await postService.GetPagingResultAsync(topic, PostResultType.Question, page, filter); if (postViews.PageCount > 1 && page > postViews.PageCount) { return(NotFound()); } QuestionIndexModel model = new QuestionIndexModel { PostViews = postViews }; return(this.View(model)); }