Пример #1
0
        public static void AddSingleResource(string title, string link, DateTime datepublished, int timelineId, int feedid = 2
                                             , int resourceType = 1, string factText = "")
        {
            using (var db = new FactFluxEntities())
            {
                Resource newResource = new Resource();
                newResource.ResourceTitle = title;
                newResource.ResourceUrl   = link;
                newResource.DateAdded     = DateTime.Now;
                newResource.DatePublished = datepublished;
                newResource.ResourceType  = resourceType;
                newResource.TimelineId    = timelineId;
                newResource.FeedId        = feedid;
                newResource.Active        = true;
                newResource.FactText      = factText;

                db.Resources.Add(newResource);

                var foundtimeLIne = db.Timelines.FirstOrDefault(x => x.TimelineId == timelineId);

                foundtimeLIne.LastUpdated = DateTime.Now;

                db.SaveChanges();
            }
        }
Пример #2
0
        public string CheckFeedsForWords(bool singleSearch = true, int feedToSearch = -1)
        {
            string updateResults = "UpdateResults: ";

            using (FactFluxEntities db = new FactFluxEntities())
            {
                var feeds = db.RSSFeeds.Where(x => x.FeedId > 4).ToList();

                if (feedToSearch != -1)
                {
                    var feed = feeds.Where(x => x.FeedId == feedToSearch).FirstOrDefault();

                    updateResults = UpdateFeed(updateResults, db, feed);
                }
                else if (singleSearch)
                {
                    var feed = feeds.OrderBy(x => x.LastUpdated).FirstOrDefault();

                    updateResults = UpdateFeed(updateResults, db, feed);
                }
                else
                {
                    foreach (var feed in feeds)
                    {
                        updateResults = UpdateFeed(updateResults, db, feed);
                    }
                }
            }

            return(updateResults);
        }
Пример #3
0
        public ActionResult UpdateWord(int wordId, string newWord)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var word = db.Words.Where(x => x.WordId == wordId).FirstOrDefault();

                word.Word1 = newWord;

                //delete links
                var deleteList = db.WordLogs.Where(x => x.WordId == wordId);

                foreach (var log in deleteList)
                {
                    db.WordLogs.Remove(log);
                }

                //find new matching articles
                var articleList = db.ArticleLinks.Where(x => x.ArticleLinkTitle.Contains(newWord)).ToList();

                foreach (var matchingArticle in articleList)
                {
                    CreateWordLog(db, matchingArticle.DatePublished, matchingArticle.ArticleLinkId, word.WordId, newWord);
                }

                db.SaveChanges();

                return(Redirect(Request.UrlReferrer.ToString()));
            }
        }
Пример #4
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var req  = filterContext.HttpContext.Request;
            var auth = req.Headers["Authorization"];

            if (!String.IsNullOrEmpty(auth))
            {
                var cred = System.Text.ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(auth.Substring(6))).Split(':');
                var user = new { Name = cred[0], Pass = cred[1] };

                using (var db = new FactFluxEntities())
                {
                    var findUser = db.AspNetUsers.Where(x => x.UserName == user.Name).FirstOrDefault();

                    var userIsAdmin = findUser.AspNetRoles.Where(x => x.Id == "1").Any();

                    if (userIsAdmin)
                    {
                        return;
                    }
                }
            }

            throw new Exception("Not Authorized");
        }
Пример #5
0
        private static string UpdateFeed(string updateResults, FactFluxEntities db, RSSFeed feed)
        {
            try
            {
                int articlesAdded = 0;

                if (feed.FeedType == "RSS")
                {
                    articlesAdded = AddNewResourcesFromRSS(ref updateResults, db, feed);
                }

                if (feed.FeedType == "YouTube")
                {
                    AddNewResourcesFromYouTube(ref updateResults, db, feed, ref articlesAdded);
                }

                feed.LastUpdated = DateTime.UtcNow;

                db.SaveChanges();

                updateResults += "\r\n---------------Feed Num: " + feed.FeedTitle.ToString() + " New Articles: " + articlesAdded + Environment.NewLine;
            }
            catch (Exception ex)
            {
                updateResults += "\r\n---------------Feed Num: " + feed.FeedTitle.ToString() + " Error: " + ex.Message + Environment.NewLine;

                feed.LastUpdated = DateTime.UtcNow;

                db.SaveChanges();
            }

            return(updateResults);
        }
Пример #6
0
        private static void AddNewResourcesFromYouTube(ref string updateResults, FactFluxEntities db, RSSFeed feed, ref int articlesAdded)
        {
            var youTubeLogic = new Logic.YouTubeLogic();

            var videoList = youTubeLogic.GetVidsForFeed(feed.FeedLink);

            var vidListResult = videoList.Result.Where(x => x.Id.VideoId != null).ToList();

            foreach (var item in vidListResult)
            {
                var text = item.Snippet.Title;

                if (OnlyAddUniqueArticle(text))
                {
                    try
                    {
                        if (item.Snippet.PublishedAt == null)
                        {
                            item.Snippet.PublishedAt = DateTime.UtcNow;
                        }

                        ArticleLink newArticleLinke = CreateNewArticleLink(db, feed, item.Snippet.Title, item.Id.VideoId, item.Snippet.PublishedAt.Value);

                        articlesAdded += 1;
                    }
                    catch (Exception ex)
                    {
                        updateResults += ex.Message;
                    }
                }
            }
        }
Пример #7
0
        // GET: Going to cap the max articles at 1000 for now

        public ActionResult LoadTimelineFromWord(string wordSlug, int howMany = 1000, int articleType = 1, int startingAt = 0, string searchPhrase = "")
        {
            if (searchPhrase == "")
            {
                searchPhrase = null;
            }

            Word searchWord;

            using (FactFluxEntities db = new FactFluxEntities())
            {
                var cachedTimeline = MemoryCache.Default["timelineResources_" + wordSlug];

                searchWord = db.Words.Where(x => x.Slug == wordSlug).FirstOrDefault();

                var orderedResources = new List <GetTimeline_Result>();

                ViewBag.MainWord = searchWord;

                if (cachedTimeline != null)
                {
                    orderedResources = (List <GetTimeline_Result>)cachedTimeline;

                    return(View("TimeLine", orderedResources));
                }

                var orderedResourcesQuery = db.GetTimeline(wordSlug, howMany, articleType, startingAt, searchPhrase);

                orderedResources = orderedResourcesQuery.ToList();

                MemoryCache.Default["timelineResources_" + wordSlug] = orderedResources;

                return(View("TimeLine", orderedResources));
            }
        }
Пример #8
0
 public Word CreateNewWordInternal(string singleWord)
 {
     using (FactFluxEntities db = new FactFluxEntities())
     {
         return(CreateNewWord(db, DateTime.Now, singleWord));
     }
 }
Пример #9
0
        public ActionResult DeleteTimeline(int timelineId)
        {
            using (FactFluxEntities context = new FactFluxEntities())
            {
                Timeline foundTimeLine = context.Timelines.FirstOrDefault(x => x.TimelineId == timelineId);

                var resources = context.Resources.Where(x => x.TimelineId == foundTimeLine.TimelineId).ToList();

                var searchWOrds = context.SearchWords.Where(x => x.TimelineId == foundTimeLine.TimelineId).ToList();

                foreach (var word in searchWOrds)
                {
                    context.SearchWords.Remove(word);
                }

                foreach (var res in resources)
                {
                    context.Resources.Remove(res);
                }

                context.Timelines.Remove(foundTimeLine);
                context.SaveChanges();
            }
            return(RedirectToAction("Index", "Home"));
        }
Пример #10
0
 public int ResourceCount(int feedId)
 {
     using (var db = new FactFluxEntities())
     {
         int newFeed = db.Resources.Where(x => x.FeedId == feedId).Count();
         return(newFeed);
     }
 }
Пример #11
0
 public int ArticleCount(int timelineID)
 {
     using (var db = new FactFluxEntities())
     {
         int articleCount = db.Resources.Where(x => x.TimelineId == timelineID).Count();
         return(articleCount);
     }
 }
Пример #12
0
        public static void NoteLastUpdated(int RssID)
        {
            using (var db = new FactFluxEntities())
            {
                var newFeed = db.RSSFeeds.FirstOrDefault(x => x.FeedId == RssID);

                newFeed.LastUpdated = DateTime.Now;

                db.SaveChanges();
            }
        }
Пример #13
0
        public ActionResult DeleteSearchWord(int searchWordId, string slug)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var foundWord = db.SearchWords.FirstOrDefault(x => x.SearchWordId == searchWordId);

                db.SearchWords.Remove(foundWord);
                db.SaveChanges();
            }
            return(RedirectToAction("LoadTimeline", "TimelineLogic", new { slug = slug }));
        }
Пример #14
0
        public string ReRunWordCounts()
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                db.Database.CommandTimeout = 480;

                db.ReRunWordCounts();
            }

            return("Success");
        }
Пример #15
0
        public ActionResult AddImageToWord(int wordId, HttpPostedFileBase imageFile)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var getWord = db.Words.Where(x => x.WordId == wordId).FirstOrDefault();
                getWord.Image = UploadImage(imageFile);
                db.SaveChanges();
            }

            return(Redirect(Request.UrlReferrer.ToString()));
        }
Пример #16
0
        public ActionResult PublishTimeline(int timelineId)
        {
            using (FactFluxEntities context = new FactFluxEntities())
            {
                Timeline foundTimeLine = context.Timelines.FirstOrDefault(x => x.TimelineId == timelineId);

                foundTimeLine.Active = true;
                context.SaveChanges();
            }
            return(RedirectToAction("Index", "Home"));
        }
Пример #17
0
        public ActionResult ChangeImage(string slug, string newImage)
        {
            using (FactFluxEntities context = new FactFluxEntities())
            {
                Timeline foundTimeLine = context.Timelines.FirstOrDefault(x => x.TimelineSlug == slug);

                foundTimeLine.TimelineImage = newImage;

                context.SaveChanges();
            }
            return(RedirectToAction("LoadTimeline", "TimelineLogic", new { slug = slug }));
        }
Пример #18
0
        public ActionResult Index()
        {
            List <Timeline> context;

            using (FactFluxEntities db = new FactFluxEntities())
            {
                context = db.Timelines.OrderByDescending(x => x.LastUpdated).ToList();
            }

            return(View(context));
            //return RedirectToAction("WordsInTheNews", "Word");
        }
Пример #19
0
        public ActionResult Cores(int timeFrame = -1)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var words = db.Words.Where(x => x.Banned == false);

                var popularWords = words.GroupBy(j => j.Word1).Where(g => g.Count() > 1).SelectMany(group => group).ToList();

                ViewBag.Articles = db.ArticleLinks.ToList();

                return(View(popularWords));
            }
        }
Пример #20
0
        public string CutLatestArticleIntoWords()
        {
            using (var db = new FactFluxEntities())
            {
                var mostRecentArticle = db.ArticleLinks.SqlQuery(
                    "select * from " +
                    "articlelinks al left join wordlogs wl on wl.ArticleLinkId = al.ArticleLinkId " +
                    "where wl.wordlogid is null order by DatePublished desc")
                                        .FirstOrDefault();

                return(CutArticleIntoWords(db, mostRecentArticle));
            }
        }
Пример #21
0
        public ActionResult DeactivateResource(int resourceId, string slug)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var resource = db.Resources.FirstOrDefault(x => x.ResourceId == resourceId);

                resource.Active = false;

                db.SaveChanges();
            }

            return(RedirectToAction("LoadTimeline", "TimelineLogic", new { slug = slug }));
        }
Пример #22
0
        public ActionResult Ban(int wordId)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var word = db.Words.Where(x => x.WordId == wordId).FirstOrDefault();

                word.Banned = true;

                db.SaveChanges();

                return(Redirect(Request.UrlReferrer.ToString()));
            }
        }
Пример #23
0
        public ActionResult CheckFeedsForResources()
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var feeds = db.RSSFeeds.ToList();

                foreach (var feed in feeds)
                {
                    PullDownAllLinksFromFeeds(feed);
                }
            }

            return(Redirect(Request.UrlReferrer.ToString()));
        }
Пример #24
0
        public ActionResult CheckRecentWords(int daysBack)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                DateTime start = DateTime.Now.AddDays(-daysBack);
                DateTime end   = DateTime.Now.AddDays(-daysBack + 1);

                var words = db.Words.Where(x => x.Banned == false &&
                                           x.DateCreated > start && x.DateCreated < end)
                            .OrderBy(x => x.DateCreated).ToList();

                return(View(words));
            }
        }
Пример #25
0
        public ActionResult LoadOldTimeline(string slug)
        {
            Timeline         findTimeLine;
            FactFluxEntities db = new FactFluxEntities();

            findTimeLine = db.Timelines.Include("Resources").FirstOrDefault(x => x.TimelineSlug == slug);

            var orderedResources = db.Resources.Where(x => x.TimelineId == findTimeLine.TimelineId && x.Active == true).OrderByDescending(y => y.DatePublished).ToList();

            ViewBag.Resources = orderedResources;

            ViewBag.SearchWords = db.SearchWords.Where(x => x.TimelineId == findTimeLine.TimelineId).ToList();

            return(View(findTimeLine));
        }
Пример #26
0
        private static List <GetWordsWithCount_Result> GetWordsWithCountInternal(string timeFrame)
        {
            DateTime AddedSinceDate = DateTime.Now;

            AddedSinceDate = ChangedAddedSince(timeFrame, AddedSinceDate);

            List <GetWordsWithCount_Result> wordsWithCount;

            using (FactFluxEntities db = new FactFluxEntities())
            {
                wordsWithCount = db.GetWordsWithCount(AddedSinceDate).Where(x => x.Count > 1).OrderByDescending(x => x.Count).ToList();
            }

            return(wordsWithCount);
        }
Пример #27
0
        // GET: RSSFeed/Edit/5
        public ActionResult Update(int RssId, string title, string link, string image)
        {
            using (var db = new FactFluxEntities())
            {
                var newFeed = db.RSSFeeds.FirstOrDefault(x => x.FeedId == RssId);

                newFeed.FeedTitle   = title;
                newFeed.FeedLink    = link;
                newFeed.SourceImage = image;

                db.SaveChanges();
            }

            return(Redirect(Request.UrlReferrer.ToString()));
        }
Пример #28
0
        public static bool OnlyAddUniqueArticle(string articleTitle)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var repeats = db.ArticleLinks.FirstOrDefault(x => x.ArticleLinkTitle == articleTitle);

                if (repeats == null)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Пример #29
0
        public static bool OnlyAddUniqueArticle(string articleTitle, int timelineId)
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var repeats = db.Resources.FirstOrDefault(x => x.ResourceTitle == articleTitle && x.TimelineId == timelineId);

                if (repeats == null)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Пример #30
0
        public ActionResult MostDiscussed()
        {
            using (FactFluxEntities db = new FactFluxEntities())
            {
                var topDaily = db.Words
                               .Where(x => x.Banned == false &&
                                      !db.ParentWords.Select(y => y.ChildWordId).Contains(x.WordId))
                               .OrderByDescending(x => x.DailyCount).Take(20).Select(x => new WordApiWordInfo()
                {
                    Word = x.Word1, Slug = x.Slug, Image = x.Image, DailyCount = x.DailyCount.Value, WeeklyCount = x.WeeklyCount.Value, MonthlyCount = x.MonthlyCount.Value, YearlyCount = x.YearlyCount.Value, WordId = x.WordId
                })
                               .ToList();

                return(View("Front", topDaily));
            }
        }