Beispiel #1
0
 public virtual void AddAnswer(XsAnswer answer)
 {
     if (!Answers.Contains(answer))
     {
         answer.Parent = this;
         Answers.Add(answer);
     }
 }
Beispiel #2
0
 /// <summary>
 /// Returns whether the <paramref name="ntUsername"/> has an Up Vote for the <paramref name="answer"/>
 /// </summary>
 /// <param name="ntUsername"></param>
 /// <param name="answer"></param>
 /// <returns></returns>
 public static bool IsUserAnswerUpVote(String ntUsername, XsAnswer answer)
 {
     bool userHasUpVote = false;
     foreach (XsVote vote in answer.Votes)
     {
         if ((vote.User.Username.Equals(ntUsername)) && (vote.Value == VOTE_UP_VALUE))
         {
             userHasUpVote = true;
             break;
         }
     }
     return userHasUpVote;
 }
        public MockXsQuestionRepository()
        {
            if (null == mockQuestion)
            {
                mockQuestion = new XsQuestion();
                XsUser mockUser = new MockXsUserRepository().GetById(100);

                mockQuestion.ID = IdGenerator.GetNextID(ENTITY_TYPE);
                mockQuestion.CreationDT = DateTime.UtcNow;
                mockQuestion.UpdateDT = DateTime.UtcNow;
                mockQuestion.LastUpdator = "Marius";
                mockQuestion.Title = "What Was Stack Overflow Built With?";
                mockQuestion.Content = "What was Stack Overflow built with? Some even wondered if Stack Overflow was built in Ruby on Rails. I consider that a compliment! This question has been covered in some detail in our podcasts, of course, but I know not everyone has time to listen to a bunch of audio footage to find the answer to their question. So, in that spirit, here’s the technology “stack” of Stack Overflow, the stuff Jarrod, Geoff, and I used to build it:";

                mockQuestion.Author = mockUser;
                mockQuestion.Status = XsStatus.Published;
                mockQuestion.PublishedDT = DateTime.UtcNow;
                XsTag tag1 = new XsTag();
                tag1.Name = ".NET";
                mockQuestion.AddTag(tag1);

                XsTag tag2 = new XsTag();
                tag2.Name = "MVC";
                mockQuestion.AddTag(tag2);
            }

            if (null == questions)
            {

                questions = new List<XsQuestion>();

                for (int i = 0; i <= 100; i++)
                {
                    XsQuestion question = new XsQuestion();

                    int nextID = IdGenerator.GetNextID(ENTITY_TYPE);
                    question.ID = nextID;

                    question.LastUpdator = "Marius " + String.Format("{000}", nextID);
                    question.Title = "What Was Stack Overflow Built With? " + String.Format("{000}", nextID);
                    question.Content = "What was Stack Overflow built with? Some even wondered if Stack Overflow was built in Ruby on Rails. I consider that a compliment! This question has been covered in some detail in our podcasts, of course, but I know not everyone has time to listen to a bunch of audio footage to find the answer to their question. So, in that spirit, here’s the technology “stack” of Stack Overflow, the stuff Jarrod, Geoff, and I used to build it:";

                    question.Author = new MockXsUserRepository().GetById(nextID);
                    question.Status = XsStatus.Published;
                    question.PublishedDT = DateTime.UtcNow;

                    //tags
                    XsTag tag1 = new XsTag();
                    tag1.Name = ".Net " + String.Format("{000}", nextID);
                    question.AddTag(tag1);

                    XsTag tag2 = new XsTag();
                    tag2.Name = "MVC  " + String.Format("{000}", nextID);
                    question.AddTag(tag2);

                    //votes
                    int numberOfVotes = new Random().Next(5, 20);
                    for (int voteIndex = 0; voteIndex < numberOfVotes; voteIndex++)
                    {
                        XsVote vote = new XsVote();
                        vote.Type = VoteType.UpDown;
                        vote.User = new MockXsUserRepository().GetById(nextID);
                        vote.Value = Convert.ToInt16( voteIndex % 2);
                        question.AddVote(vote);
                    }

                    int numberOfAnswers = new Random().Next(10);
                    for (int answerIndex = 0; answerIndex < numberOfAnswers; answerIndex++)
                    {
                        XsAnswer answer = new XsAnswer();
                        answer.Content = "What do you really want to do? If you want to learn Clojure||ruby||C do that. If you just want to get it done do whatever is fastest for you to do. And at the very least when you say Clojure and library you are also saying Java and library, there are lots and some are very good(I don't know what they are though). And the same was said for ruby and python above. So what do you want to do?";
                        answer.Author = question.Author = new MockXsUserRepository().GetById(nextID);
                        answer.ID = IdGenerator.GetNextID("Answer");

                        question.AddAnswer(answer);
                    }

                    questions.Add(question);
                }
            }
        }
        public ActionResult Answer(long ID, String AnswerContent)
        {
            XsQuestion questionToUpdate = null;

            try
            {
                questionToUpdate = questionRepository.GetById(ID);
            }
            catch (Exception ex)
            {
                log.Error(String.Format("Question GetById({0}) error: ", ID) + ex.Message);
            }

            if (null == questionToUpdate)
            {
                ViewData["EntityID"] = ID;
                return View("NotFound");
            }
            else
            {
                try
                {
                    XsAnswer answer = new XsAnswer();
                    answer.CreationDT = DateTime.UtcNow;
                    answer.UpdateDT = DateTime.UtcNow;
                    answer.Content = AnswerContent.Replace("<script", "[script").Replace("</script>", "[/script]");
                    answer.ContentHtml = new Markdown().Transform(answer.Content);

                    XsUser author = userRepository.GetByUsername(User.Identity.Name);

                    if (null == author)
                    {
                        author = new XsUser();
                        author.Username = User.Identity.Name;
                        author.AnswerCount = 1;
                    }
                    author.AnswerCount++;
                    answer.Author = author;

                    questionToUpdate.AddAnswer(answer);
                    questionRepository.Save(questionToUpdate);
                }
                catch (Exception ex)
                {
                    log.Error("There was an error when saving the question in the DB " + ex.Message + "Inner Exception " + ex.InnerException);
                    ViewData["ErrorMessage"] = "There was an error when saving the question in the DB!";
                    return View("Error");
                }
            }

            return RedirectToAction("Details", new { id = ID, seoName = questionToUpdate.SlugTitle });
        }