public Dictionary <string, double> BerekenGrafiekWaarde(Domain.Enum.GrafiekType grafiekType, List <Entiteit> entiteiten, List <string> CijferOpties, string VergelijkOptie)
        {
            initNonExistingRepo();
            Dictionary <string, double> grafiekMap = new Dictionary <string, double>();

            switch (grafiekType)
            {
            case Domain.Enum.GrafiekType.CIJFERS:
                Entiteit    e1          = entiteitRepository.getAlleEntiteiten().Single(x => x.EntiteitId == entiteiten.First().EntiteitId);
                List <Post> postsEerste = e1.Posts;
                foreach (var cijferOptie in CijferOpties)
                {
                    if (cijferOptie.ToLower() == "aantalposts")
                    {
                        int aantalPosts = postsEerste.Count;
                        grafiekMap.Add("Aantal posts", aantalPosts);
                    }
                    if (cijferOptie.ToLower() == "aantalretweets")
                    {
                        int retweets = postsEerste.Where(x => x.retweet == true).Count();
                        grafiekMap.Add("Aantal retweets", retweets);
                    }
                    if (cijferOptie.ToLower() == "aanwezigetrends")
                    {
                        foreach (var trend in e1.Trends)
                        {
                            switch (trend.Voorwaarde)
                            {
                            case Voorwaarde.SENTIMENT:
                                grafiekMap.Add("Trend Sentiment", 1);
                                break;

                            case Voorwaarde.AANTALVERMELDINGEN:
                                grafiekMap.Add("Trend Aantal Vermeldingen", 1);
                                break;

                            case Voorwaarde.TRENDING:
                                grafiekMap.Add("Trend trending", 1);
                                break;

                            case Voorwaarde.KEYWORDS:
                                grafiekMap.Add("Trend Keywords", 1);
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
                break;

            case GrafiekType.VERGELIJKING:
                if (VergelijkOptie.ToLower() == "populariteit")
                {
                    foreach (var e in entiteiten)
                    {
                        grafiekMap.Add("Post " + e.Naam, e.Posts.Count);
                    }
                }
                if (VergelijkOptie.ToLower() == "postfrequentie")
                {
                    DateTime today   = DateTime.Today;
                    int      counter = 0;
                    foreach (var e in entiteiten)
                    {
                        for (int i = 10; i > 0; i--)
                        {
                            List <Post> postsHuidigeDag = e.Posts.Where(x => x.Date.Date == today.AddDays(-i).Date).ToList();
                            grafiekMap.Add("Posts" + i + " " + e.Naam, postsHuidigeDag.Count);
                        }
                        grafiekMap.Add("EndPostFrequentie" + counter, counter);
                        counter++;
                    }
                }
                break;
            }
            return(grafiekMap);
        }
Esempio n. 2
0
        public void grafiekAanGebruikerToevoegen(string IdentityId, Domain.Enum.GrafiekType TypeGrafiek, List <int> entiteitInts, List <string> CijferOpties, string VergelijkOptie, Domain.Enum.GrafiekSoort grafiekSoort)
        {
            initNonExistingRepo(true);
            //IPostManager postManager = new PostManager(uowManager);
            IEntiteitManager entiteitManager = new EntiteitManager(uowManager);

            Domain.Account.Account user    = accountRepository.ReadAccount(IdentityId);
            Domain.Post.Grafiek    grafiek = new Domain.Post.Grafiek();
            grafiek.Entiteiten = new List <Entiteit>();
            List <Entiteit> entiteiten = new List <Entiteit>();

            foreach (var i in entiteitInts)
            {
                var e = entiteitManager.getAlleEntiteiten().Single(x => x.EntiteitId == i);
                entiteiten.Add(e);
                grafiek.Entiteiten.Add(e);
            }
            Dictionary <string, double>      waardes        = entiteitManager.BerekenGrafiekWaarde(TypeGrafiek, entiteiten, CijferOpties, VergelijkOptie);
            List <Domain.Post.GrafiekWaarde> grafiekWaardes = new List <Domain.Post.GrafiekWaarde>();

            foreach (var item in waardes)
            {
                Domain.Post.GrafiekWaarde w = new Domain.Post.GrafiekWaarde()
                {
                    Naam   = item.Key,
                    Waarde = item.Value
                };
                grafiekWaardes.Add(w);
            }
            if (CijferOpties != null)
            {
                grafiek.CijferOpties = new List <Domain.Post.CijferOpties>();
                foreach (var opt in CijferOpties)
                {
                    if (opt.ToLower() == "aantalposts")
                    {
                        grafiek.CijferOpties.Add(new Domain.Post.CijferOpties
                        {
                            optie = opt
                        });
                    }
                    if (opt.ToLower() == "aantalretweets")
                    {
                        grafiek.CijferOpties.Add(new Domain.Post.CijferOpties
                        {
                            optie = opt
                        });
                    }
                    if (opt.ToLower() == "aanwezigetrends")
                    {
                        grafiek.CijferOpties.Add(new Domain.Post.CijferOpties
                        {
                            optie = opt
                        });
                    }
                }
            }
            grafiek.Type         = TypeGrafiek;
            grafiek.Waardes      = grafiekWaardes;
            grafiek.GrafiekSoort = grafiekSoort;
            if (VergelijkOptie.ToLower() == "populariteit")
            {
                grafiek.soortGegevens = Domain.Enum.SoortGegevens.POPULARITEIT;
            }
            else if (VergelijkOptie.ToLower() == "postfrequentie")
            {
                grafiek.soortGegevens = Domain.Enum.SoortGegevens.POSTFREQUENTIE;
            }


            //cijfers
            switch (TypeGrafiek)
            {
            case Domain.Enum.GrafiekType.CIJFERS:
                grafiek.Naam = "Cijfer gegevens - " + entiteiten.First().Naam;
                break;

            case Domain.Enum.GrafiekType.VERGELIJKING:
                if (grafiek.soortGegevens == Domain.Enum.SoortGegevens.POSTFREQUENTIE)
                {
                    grafiek.Naam = "Vergelijking post frequentie";
                }
                else if (grafiek.soortGegevens == Domain.Enum.SoortGegevens.POPULARITEIT)
                {
                    grafiek.Naam = "Vergelijking populariteit";
                }
                break;
            }
            foreach (Entiteit e in grafiek.Entiteiten)
            {
                e.Posts = null;
            }
            Domain.Account.DashboardBlok dashboardBlok = new Domain.Account.DashboardBlok()
            {
                Grafiek = grafiek
            };

            if (user.Dashboard.Configuratie.DashboardBlokken == null)
            {
                user.Dashboard.Configuratie.DashboardBlokken = new List <DashboardBlok>();
            }
            user.Dashboard.Configuratie.DashboardBlokken.Add(dashboardBlok);
            accountRepository.updateUser(user);
            uowManager.Save();
        }