public IEnumerable <Subscription> GetSubscriptions()
 {
     return(repo.Readsubscriptions());
 }
示例#2
0
        // Gaat alle subscriptions ophalen voor de onderwerpen die op dit moment trending zijn
        private List <Alert> BerekenTrending(Dictionary <string, int> onderwerpenMapOudeData, Dictionary <string, int> onderwerpenMapNieuwBinnengekomenData)
        {
            int teller;
            int noemer;
            // Hoe hoger het arbitrair getal, hoe minder politiekers er trending zijn.

            double trendingScore = 0;
            List <Subscription> subscriptionsTrendingOnderwerpen = new List <Subscription>();

            // TODO : Filteren op datum!
            foreach (var key in onderwerpenMapNieuwBinnengekomenData.Keys)
            {
                teller = onderwerpenMapNieuwBinnengekomenData[key];
                noemer = onderwerpenMapOudeData[key];

                trendingScore = VoerTrendingBerekeningUit(teller, noemer);
                repo.ReadOnderwerpString(key).TrendingScore = trendingScore;

                if (trendingScore >= 0.13)
                {
                    repo.ReadOnderwerpString(key).isTrending = true;
                    foreach (var item in subscriptionRepo.ReadSubscriptionsMetNaamOnderwerp(key))
                    {
                        item.Onderwerp.TrendingScore = trendingScore;
                        item.Onderwerp.isTrending    = true;
                    }
                }
            }


            List <Onderwerp> trendingOnderwerpen = repo.ReadOnderwerpen().Where(x => x.isTrending == true).ToList();

            // Gaat per Trending onderwerp alle subscriptions halen, en daar in die repo de isTrending ook op true zetten, zodat de alerts geactiveerd worden.
            foreach (var item in trendingOnderwerpen)
            {
                if (item.isTrending)
                {
                    foreach (var item2 in subscriptionRepo.Readsubscriptions().ToList())
                    {
                        if (item.id == item2.Onderwerp.id)
                        {
                            item2.Onderwerp.isTrending = true;
                            subscriptionsTrendingOnderwerpen.Add(item2);
                        }
                    }
                }
            }
            // hierin worden de alerts aangemaakt die terug worden gestuurd

            List <Alert> AlertList = new List <Alert>();

            foreach (var item in subscriptionsTrendingOnderwerpen)
            {
                Alert alert = new Alert()
                {
                    Subscription = item,
                    text         = item.Onderwerp.ToString()
                };
                AlertList.Add(alert);
            }
            return(AlertList);
        }