Exemple #1
0
        public IActionResult ViewQuestion(int questionId)
        {
            if (questionId <= 0)
            {
                return(RedirectToAction("Index"));
            }

            var      repo     = new QTRepository(_connectionString);
            Question question = repo.GetQuestionById(questionId);

            if (question == null)
            {
                return(RedirectToAction("Index"));
            }

            var vm = new ViewQuestionViewModel {
                Question = question, IsAuthenticated = User.Identity.IsAuthenticated
            };

            if (vm.IsAuthenticated == true)
            {
                vm.User = repo.GetUserByEmail(User.Identity.Name);
            }

            return(View(vm));
        }
Exemple #2
0
        public IActionResult ViewQuestion(int id)
        {
            var repo = new QuestionsRepository(_connectionString);
            var vm   = new ViewQuestionViewModel();

            vm.Question = repo.GetQuestionById(id);
            vm.AskedBy  = repo.GetUserNameById(vm.Question.UserId);
            vm.CanLike  = repo.CanLike(id, GetCurrentUserId().Value);
            return(View(vm));
        }
Exemple #3
0
        public IActionResult ViewQuestion(int id)
        {
            var connectionString = _connectionString;
            var repo             = new QuestionsRepository(connectionString);
            var question         = repo.GetQuestionById(id);
            var vm = new ViewQuestionViewModel()
            {
                Question = question
            };

            return(View(vm));
        }
        public IActionResult SelectQuestion(int id)
        {
            var      connectionString = _configuration.GetConnectionString("ConStr");
            var      repo             = new QARepository(connectionString);
            Question q  = repo.GetQuestionById(id);
            User     u  = repo.GetByEmail(User.Identity.Name);
            var      vm = new ViewQuestionViewModel()
            {
                Question = q
            };

            if (u != null)
            {
                vm.IsLiked = q.Likes.Any(l => l.UserId == u.Id);
            }
            return(View(vm));
        }
Exemple #5
0
        public IActionResult ViewQuestion(int questionId)
        {
            var questionsRepo = new QuestionsRepository(_connectionString);
            var userRepo      = new UsersRepository(_connectionString);
            var vm            = new ViewQuestionViewModel();
            var question      = questionsRepo.GetQuestionById(questionId);

            if (question == null)
            {
                return(Redirect("/"));
            }
            vm.Question       = question;
            vm.UserIsLoggedIn = User.Identity.IsAuthenticated;
            if (vm.UserIsLoggedIn)
            {
                vm.User = userRepo.GetByEmail(User.Identity.Name);
            }
            return(View(vm));
        }
        public IActionResult ViewQuestion(int id)
        {
            var questionsRepo = new QuestionsRepository(_connectionString);
            var question      = questionsRepo.Get(id);
            var viewModel     = new ViewQuestionViewModel
            {
                Question = question
            };

            if (User.Identity.IsAuthenticated)
            {
                var userRepo = new UserRepository(_connectionString);
                viewModel.CurrentUser = userRepo.GetByEmail(User.Identity.Name);
            }
            if (question == null)
            {
                return(Redirect("/"));
            }

            return(View(viewModel));
        }
Exemple #7
0
        public ActionResult View(int id)
        {
            var q = RavenSession.Include <Question>(x => x.CreatedBy)
                    .Include("Comments,CreatedByUserId")
                    .Include("Answers,CreatedByUserId")
                    .Load(id);

            if (q == null)
            {
                return(HttpNotFound());
            }

            q.Stats = RavenSession.Load <Stats>(q.Id + "/stats");
            q.Stats.ViewsCount++;

            // Since we are using Includes, this entire code block will not access the server even once
            var users = new Dictionary <string, User>();

            users.Add(q.CreatedBy, RavenSession.Load <User>(q.CreatedBy));
            foreach (var answer in q.Answers)
            {
                users.Add(answer.CreatedByUserId, RavenSession.Load <User>(answer.CreatedByUserId));
            }
            if (q.Comments != null)
            {
                foreach (var comment in q.Comments)
                {
                    users.Add(comment.CreatedByUserId, RavenSession.Load <User>(comment.CreatedByUserId));
                }
            }

            var viewModel = new ViewQuestionViewModel(User);

            viewModel.Question         = q;
            viewModel.Users            = users;
            viewModel.RelatedQuestions = RavenSession.Advanced.MoreLikeThis <Question>("QuestionsIndex", q.Id);
            return(View(viewModel));
        }
        public ActionResult QuestionDetails(int id)
        {
            UnitOfWork unitOfWork = new UnitOfWork();
            Question   questionDb = unitOfWork.QuestionRepository.GetFirst(x => x.Id == id);

            if (questionDb == null)
            {
                ModelState.AddModelError("", "Question not found");
                TempData["ErrorMessage"] = "Question not found";
                return(RedirectToAction("Index", "Home"));
            }
            if (ModelState.IsValid)
            {
                ViewQuestionViewModel viewQuestionViewModel = new ViewQuestionViewModel(questionDb);
                viewQuestionViewModel.AskedBy = questionDb.User.Username;
                List <UserCommentViewModel> usersCommentsViewModel = GetUsersComments(id);
                List <Comment> commentsDb = unitOfWork.CommentRepository.GetAll();

                for (int i = 0; i < usersCommentsViewModel.Count; i++)
                {
                    if (usersCommentsViewModel[i].ParentCommentId == "")
                    {
                        usersCommentsViewModel[i].CommentTo = questionDb.User.Username;
                    }
                    else
                    {
                        usersCommentsViewModel[i].CommentTo = commentsDb.Find(x => x.Id == Int32.Parse(usersCommentsViewModel[i].ParentCommentId)).User.Username;
                    }
                }

                UserCommentsAndQuestionViewModel userCommentsAndQuestionViewModel = new UserCommentsAndQuestionViewModel();
                userCommentsAndQuestionViewModel.ViewQuestionViewModel  = viewQuestionViewModel;
                userCommentsAndQuestionViewModel.UsersCommentsViewModel = usersCommentsViewModel;
                return(View(userCommentsAndQuestionViewModel));
            }
            return(RedirectToAction("Index", "Home"));
        }