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); }
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(); }