/// <summary> /// Shows the page of a user /// </summary> /// <param name="id">User id</param> /// <returns></returns> public ActionResult GetUser(int id, int? questionpage, int? answerpage) { var usermanager = new UserManager(); var questionmanager = new QuestionManager(); var answermanager = new AnswerManager(); var tagmanager = new TagManager(); var ucm = new UserControllerModel(); //If the pages are not given, set it to 1 var actquestionpage = questionpage ?? 1; var actanswerpage = answerpage ?? 1; //Get the questions for the actual page int totalquestions; var retrievedQuestions = questionmanager.AllQuestionToOneUserToPagedList(id, actquestionpage, 5, out totalquestions); //Convert it to a StaticPagedList for the pager var actualQuestions = new StaticPagedList<Question>(retrievedQuestions, actquestionpage, 5, totalquestions); //Add it to the model ucm.Questions = actualQuestions; //Set the actual pagenumbers ViewBag.QuestionPage = actquestionpage; ViewBag.AnswerPage = actanswerpage; //Add the actual user to the model ucm.UserProfile = usermanager.GetUserById(id); //Get the answered questions by the user for the actual page int totalanswers; var retrievedAnsweredQuestions = questionmanager.AnsweredQuestionsToPagedList(id, actanswerpage, 5, out totalanswers); //Convert it to a StaticPagedList for the pager var actualAnsweredQuestions = new StaticPagedList<Question>(retrievedAnsweredQuestions, actanswerpage, 5, totalanswers); //Add it to the model ViewBag.AnsweredQuestions = actualAnsweredQuestions; //Add the reputation of the user to the model ucm.UserRating = usermanager.GetUserRating(id); //Create a list with the answered questions var answeredquestions = new List<GetQuestionModels>(); foreach (var item in actualAnsweredQuestions) { var actansweredquestion = new GetQuestionModels(); //Add the current question to the model actansweredquestion.CurrentQuestion = item; //Add the answers by the user of the current question to the model actansweredquestion.Answers = answermanager.GetAllAnswerToOneQuestionFromOneUser(item.Id, ucm.UserProfile.UserId); //Add the vote of current question to the model actansweredquestion.Vote = questionmanager.GetVote(item.Id); //Add the tags of the current question to the model actansweredquestion.QuestionTags = tagmanager.GetAllTagToOneQuestion(item.Id); //Create a dictionary for the answers and the votes of them actansweredquestion.AnswerVotes = new Dictionary<Answer, int>(); //Upload the dictionary with the votes foreach (var answer in actansweredquestion.Answers) { actansweredquestion.AnswerVotes.Add(answer, answermanager.GetVote(answer.Id)); } //Add the author of the question to the model actansweredquestion.QuestionUser = usermanager.GetUserById(item.UserId); //Sort the answers by the votes of them actansweredquestion.Answers = actansweredquestion.Answers.OrderByDescending(d => actansweredquestion.AnswerVotes[d]).ToList(); //Add this QuestionModel to the list answeredquestions.Add(actansweredquestion); } //Add the list of the questionmodels to the model ucm.AnsweredQuesitions = answeredquestions; return View(ucm); }
public ActionResult GetQuestion(int id) { //Manager objects var manager = new QuestionManager(); var ansman = new AnswerManager(); var usman = new UserManager(); var tagman = new TagManager(); var actQues = manager.GetQuestion(id); var model = new GetQuestionModels(); model.CurrentQuestion = actQues; //We gets the answers which belong to this question model.Answers = ansman.GetAllAnswerToOneQuestion(id); //We gets the vote of the question model.Vote = manager.GetVote(model.CurrentQuestion.Id); //We lists the tags of the question model.QuestionTags = tagman.GetAllTagToOneQuestion(id); //We gets the votes of the answers Dictionary<Answer, int> ansvotes = new Dictionary<Answer, int>(); Dictionary<Answer, UserProfile> answeruser = new Dictionary<Answer, UserProfile>(); foreach (var item in model.Answers) { int vote = ansman.GetVote(item.Id); UserProfile userprof = usman.GetUserById(item.UserId); answeruser.Add(item, userprof); ansvotes.Add(item, vote); } //We creates the viewmodel model.AnswerVotes = ansvotes; model.AnswerUser = answeruser; model.QuestionUser = usman.GetUserById(model.CurrentQuestion.UserId); model.Answers = model.Answers.OrderByDescending(d => model.AnswerVotes[d]).ToList(); return View(model); }