Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    using (TrackerDataContext db = new TrackerDataContext(_connStr))
                    {
                        var trackerItemsNeedingUpdates = (from t in db.TrackerTableListItems
                                                          where t.IsPstSummaryUpdateRequired == null
                                                          || t.IsPstSummaryUpdateRequired.Value == true
                                                          select t).ToList(); //Need to get them all in a list, because of a weird bug in the ORM.
                        foreach (var item in trackerItemsNeedingUpdates)
                        {
                            if (item.EntryType == 0) //ForumBoards
                            {
                                using (ForumBlogsDataContext postsContext = new ForumBlogsDataContext(_connStr))
                                {
                                    try
                                    {
                                        var desiredPost = (from p in postsContext.Posts
                                                           where p.TopicId == item.BlogOrTopicId
                                                           && p.DirectPostLink.EndsWith("#1")
                                                           select p).Single();

                                        item.FirstPostSummary = GenerateSummary(desiredPost.PostContent, true);
                                        item.IsPstSummaryUpdateRequired = false;
                                    }
                                    catch
                                    {
                                        HandleFailure(item);
                                    }
                                    db.SubmitChanges();
                                }
                            }
                            else if (item.EntryType == 1) //Blog entries
                            {
                                using (ForumBlogsDataContext blogEntriesContext = new ForumBlogsDataContext(_connStr))
                                {
                                    try
                                    {
                                        var desiredPost = (from p in blogEntriesContext.BlogEntries
                                                           where p.Id == item.BlogOrTopicId
                                                           select p).Single();

                                        item.FirstPostSummary = GenerateSummary(desiredPost.BlogContent, false);
                                        item.IsPstSummaryUpdateRequired = false;
                                    }
                                    catch
                                    {
                                        HandleFailure(item);
                                    }
                                    db.SubmitChanges();
                                }
                            }
                            else if (item.EntryType == 2) //Twitter conversations
                            {
                                using (TwitterDataContext twitterContext = new TwitterDataContext(_connStr))
                                {
                                    try
                                    {
                                        var desiredPost = (from p in twitterContext.Tweets
                                                           where p.TwitterConversationId == item.BlogOrTopicId
                                                           orderby p.Id ascending
                                                           select p).Take(1).Single();

                                        item.FirstPostSummary = desiredPost.TweetContentNonHtml;
                                        item.IsPstSummaryUpdateRequired = false;
                                    }
                                    catch
                                    {
                                        HandleFailure(item);
                                    }
                                    db.SubmitChanges();
                                }
                            }
                            else
                            {
                                throw new NotImplementedException("EntryType");
                            }
                        }
                    }
                }
                catch { }

                //Job should run once per minute.
                Console.WriteLine("\nJob done. Sleeping for a minute. - " + DateTime.Now + "\n");
                System.Threading.Thread.Sleep(30 * 1000);
            }
        }
Ejemplo n.º 2
0
        public TrackerDo GetTrackerByPosterName(string posterName, int page)
        {
            if (posterName == null)
                throw new ArgumentNullException("posterName");

            TrackerDo tracker = new TrackerDo();
            var dbTracker = new TrackerDataContext(DbConnectionString.Value);
            var dbForumBlogs = new ForumBlogsDataContext(DbConnectionString.Value);

            var threadQuery = (from p in dbForumBlogs.Posts
                               where p.PosterName == posterName
                               && p.PosterType == 2
                               select p.Topic).Distinct().OrderByDescending(x => x.LastPostDate);

            List<int> threadsPostedIn = threadQuery.Skip((page - 1) * 50).Take(50).Select(x => x.Id).ToList();

            var trackerQuery = from t in dbTracker.TrackerTableListItems
                               where threadsPostedIn.Contains(t.BlogOrTopicId)
                               && t.EntryType == 0
                               orderby t.TimeOfLatestPost descending
                               select t;

            List<TrackerTableListItem> trackerListItems = (trackerQuery).ToList();

            tracker.TrackerItems = GetItemsDomainObjects(trackerListItems);
            tracker.PageTitle = posterName;
            tracker.TotalItems = threadQuery.Count();

            return tracker;
        }
Ejemplo n.º 3
0
        public TrackerDo GetTrackerByBlog(string game, string lang, string region, int page)
        {
            if (game == null)
                throw new ArgumentNullException("game");
            if (lang == null)
                throw new ArgumentNullException("lang");
            if (region == null)
                throw new ArgumentNullException("region");

            game = game.ToUpper();
            lang = lang.ToUpper();
            region = region.ToUpper();

            TrackerDo tracker = new TrackerDo();

            var db = new TrackerDataContext(DbConnectionString.Value);

            tracker.CurrentPage = page;

            var trackerQuery = from t in db.TrackerTableListItems
                               where t.Game == game
                                && t.Lang == lang
                                && t.Region == region
                                && t.EntryType == 1
                               orderby t.TimeOfLatestPost descending
                               select t;

            List<TrackerTableListItem> trackerListItems = (trackerQuery).Skip((page - 1) * 50).Take(50).ToList();

            //TODO: This should be detected in the frontend, and appropriate action taken.
            tracker.PageTitle = "{REPLACE WITH GAME}";

            tracker.TotalItems = trackerQuery.Count();
            tracker.TrackerItems = GetItemsDomainObjects(trackerListItems);

            if (tracker.TotalItems > 0)
            {
                tracker.SecondaryTitle1 = tracker.TrackerItems[0].SubForumName;
            }

            return tracker;
        }
Ejemplo n.º 4
0
        public TrackerDo GetTracker(string game, string lang, string p, bool includeBlogs, bool includeThreads, bool includeTwitter)
        {
            if (String.IsNullOrEmpty(game))
                throw new ArgumentNullException("game");
            if (String.IsNullOrEmpty(lang))
                throw new ArgumentNullException("lang");

            List<short> rawIncludes = new List<short>();
            if (includeThreads)
                rawIncludes.Add(0);
            if (includeBlogs)
                rawIncludes.Add(1);
            if (includeTwitter)
                rawIncludes.Add(2);

            int page = 1;
            if (!String.IsNullOrEmpty(p))
            {
                if (!(int.TryParse(p, out page)))
                {
                    throw new ArgumentException("p");
                }
            }

            game = game.ToUpper();
            lang = lang.ToUpper();

            TrackerDo tracker = new TrackerDo();
            tracker.CurrentPage = page;

            List<TrackerTableListItem> trackerListItems = null;

            var db = new TrackerDataContext(DbConnectionString.Value);

            if (game == "ALL")
            {
                trackerListItems = (from t in db.TrackerTableListItems
                                    where t.Lang == lang
                                    && rawIncludes.Contains(t.EntryType)
                                    orderby t.TimeOfLatestPost descending
                                    select t).Skip((page - 1) * 50).Take(50).ToList();

                tracker.TotalItems = (from t in db.TrackerTableListItems
                                      where t.Lang == lang
                                      && rawIncludes.Contains(t.EntryType)
                                      select t).Count();

            }
            else
            {
                trackerListItems = (from t in db.TrackerTableListItems
                                    where t.Lang == lang
                                    && t.Game == game
                                    && rawIncludes.Contains(t.EntryType)
                                    orderby t.TimeOfLatestPost descending
                                    select t).Skip((page - 1) * 50).Take(50).ToList();

                tracker.TotalItems = (from t in db.TrackerTableListItems
                                      where t.Lang == lang
                                      && t.Game == game
                                      && rawIncludes.Contains(t.EntryType)
                                      select t).Count();
            }

            tracker.TrackerItems = GetItemsDomainObjects(trackerListItems);

            if (game == "ALL")
            {
                tracker.PageTitle = "Home"; //this would be the home page.
                tracker.TotalItems = (from t in db.TrackerTableListItems
                                      where t.Lang == lang
                                      && rawIncludes.Contains(t.EntryType)
                                      select t).Count();
            }
            else
            {
                //TODO: This should be detected in the frontend, and appropriate action taken.
                tracker.PageTitle = "{REPLACE WITH GAME}";
            }

            return tracker;
        }