public async Task <ActionResult> Info() { CalculateAnalytics analyticsClass = new CalculateAnalytics(); AnalyticInfoViewModel avim = new AnalyticInfoViewModel(); List <Service> services = new List <Service>(); List <Analytic> Analytics = new List <Analytic>(); if (User.IsInRole("FuneralHome")) { var userId = User.Identity.GetUserId(); services.AddRange(db.Services.Where(s => s.FuneralHome.UserId == userId).ToList()); Analytics.AddRange(db.Analytics.Where(a => a.Video.Service.FuneralHome.UserId == userId).ToList()); } else { services.AddRange(db.Services.Where(h => h.FuneralHome.DevHome == false).ToList()); //Analytics.AddRange(db.Analytics.ToList()); } avim = analyticsClass.GetAverageViewsPerService(Analytics, services); AnalyticInfoViewModel serviceInfo = new AnalyticInfoViewModel(); serviceInfo = analyticsClass.GetServiceStats(services); avim.DaysBetweenDeathAndService = serviceInfo.DaysBetweenDeathAndService; avim.PopularServiceDay = serviceInfo.PopularServiceDay; avim.PopularDeathDay = serviceInfo.PopularDeathDay; avim.AvgAge = serviceInfo.AvgAge; return(View(avim)); }
public async Task <ActionResult> Dashboard(int?OwnerId, int?HomeId, int?ServiceId) { if (!User.IsInRole("Admin")) { return(View("NotFound")); } List <FuneralHome> Homes = db.FuneralHomes.Where(f => f.DevHome == false).ToList(); List <Analytic> Analytics = new List <Analytic>(); AnalyticViewModel AVM = new AnalyticViewModel(); AnalyticDashboardViewModel ADVM = new AnalyticDashboardViewModel(); List <Service> Services = new List <Service>(); ADVM.TotalVideoViews = db.Analytics.Count(); DateTime OneMonth = DateTime.Now.AddDays(-30); ADVM.MonthViews = db.Analytics.Where(a => a.CreateDate > OneMonth).Count(); if (OwnerId == null && HomeId == null && ServiceId == null) { // Analytics = db.Analytics.Where(a=>a.Video.Service.FuneralHome.DevHome==false).ToList(); Services = db.Services.Where(s => s.FuneralHome.DevHome == false).ToList(); } else { if (OwnerId != null) { // Analytics = db.Analytics.Where(a=>a.Video.Service.FuneralHome.OwnerId==OwnerId).ToList(); Services = db.Services.Where(a => a.FuneralHome.OwnerId == OwnerId).ToList(); } else { if (HomeId != null) { // Analytics = db.Analytics.Where(a => a.Video.Service.FuneralHome.Id == HomeId).ToList(); Services = db.Services.Where(a => a.FuneralHome.Id == HomeId).ToList(); } else { // Analytics = db.Analytics.Where(a => a.Video.ServiceId == ServiceId).ToList(); } } } //List<IpAddressObject> addresses = new List<IpAddressObject>(); //foreach (var an in Analytics) //{ // if (an.Latitude != 0 && an.Longitude != 0) // { // //Database got mucked up with a bunch of hard coded values // //So lets exclude those IP addresses from the heat map // if (an.IPAddress != "174.17.56.90") // { // IpAddressObject add = new IpAddressObject(); // add.IpAdd = an.IPAddress; // add.latitude = an.Latitude; // add.longitude = an.Longitude; // addresses.Add(add); // } // } //} DateTime LastWeek = DateTime.Now.AddDays(-7); List <Analytic> thisWeekAnalytics = Analytics.Where(a => a.CreateDate > LastWeek).ToList(); string mostViewedHome = ""; int HighestVIews = 0; int popularhomeId = 0; foreach (var home in Homes) { int homeViews = thisWeekAnalytics.Where(a => a.Video.Service.FuneralHome.Id == home.Id).Count(); if (homeViews > HighestVIews) { mostViewedHome = home.Name; HighestVIews = homeViews; popularhomeId = home.Id; } } //CRMFuneralHome popFH = db.CRMFuneralHome.Where(f => f.FuneralHomeId == popularhomeId).FirstOrDefault(); //CRMContact PopularHomePicCont = null; //if(popFH !=null) //{ // PopularHomePicCont = popFH.PrimaryCRMContact; //} // if(PopularHomePicCont!=null) // { // ADVM.PopularHomeOfTheWeekImage = PopularHomePicCont.PictureFileName; // } // ADVM.PopularHomeOfTheWeek = mostViewedHome; //ADVM.PopularHomeNumOfViews = HighestVIews; //ADVM.ServicesBarChartArray = Admin.GetServicesBarChart(Services, DateTime.Now.AddMonths(-3), DateTime.Now); //AVM.Details = addresses; //CalculateAnalytics.PageViews(ref ADVM, Analytics, Homes); // CalculateAnalytics.AverageTime(ref AVM, Analytics); //ADVM.NeedsToBeContacted = Admin.GetContactsThatNeedToBeContacted(db); //Admin.dashboardlinechart(ref ADVM, Analytics); //CalculateAnalytics.linechart(ref AVM, Analytics); ADVM.TotalFuneralsWithVideos = Admin.GetTotalServicesWithVideo(Services); ADVM.MonthlyFuneralsWithVideos = Admin.GetServicesThisMonthWithVideo(Services); ADVM.LowUsageHomes = CalculateAnalytics.LowUsageHomes(Homes); return(View(ADVM)); }
// GET: Analytics // id is for service public async Task <ActionResult> Index(int?id) { //if (!User.IsInRole("Admin")) //{ // return View("NotFound"); //} List <FuneralHome> homes = new List <FuneralHome>(); List <Analytic> Analytics = new List <Analytic>(); AnalyticViewModel AVM = new AnalyticViewModel(); if (id == null) { if (User.IsInRole("FuneralHome")) { var userId = User.Identity.GetUserId(); FuneralHome fh = db.FuneralHomes.Where(u => u.UserId == userId).FirstOrDefault(); Analytics.AddRange(db.Analytics.Where(a => a.Video.Service.FuneralHome.Id == fh.Id).ToList()); homes.Add(fh); CalculateAnalytics.PageViews(ref AVM, Analytics, homes); } else { //homes.AddRange(db.FuneralHomes.Where(f => f.DevHome == false).ToList()); //Analytics.AddRange(db.Analytics.ToList()); } } else { Service serv = db.Services.Where(s => s.Id == id).FirstOrDefault(); if (!Authorize(serv)) { return(View("NotFound")); } AVM.FirstName = serv.FirstName; AVM.LastName = serv.LastName; homes.Add(db.FuneralHomes.Where(f => f.Id == serv.FuneralHome.Id).FirstOrDefault()); Analytics.AddRange(db.Analytics.Where(a => a.Video.Service.Id == serv.Id).ToList()); CalculateAnalytics.PageViewsForService(ref AVM, Analytics); AVM.TotalVideoViews = Analytics.Count(); } List <IpAddressObject> addresses = new List <IpAddressObject>(); foreach (var an in Analytics) { if (an.Video != null) { if (an.Latitude != 0 && an.Longitude != 0) { //Database got mucked up with a bunch of hard coded values //So lets exclude those IP addresses from the heat map if (an.IPAddress != "174.17.56.90") { IpAddressObject add = new IpAddressObject(); add.IpAdd = an.IPAddress; add.latitude = an.Latitude; add.longitude = an.Longitude; if (an.Video != null && an.Video.Service != null && an.Video.Service.VideoTitle == null) { add.VideoTitle = an.Video.Service.FirstName + " " + an.Video.Service.LastName + "'s Service"; } else { add.VideoTitle = an.Video.Service.VideoTitle; } add.ViewingDate = an.CreateDate.ToShortDateString(); add.Name = an.Video.Service.FirstName + " " + an.Video.Service.LastName; int age = an.Video.Service.DeathDay.Year - an.Video.Service.Birthday.Year; add.Age = age.ToString(); add.FuneralHomeName = an.Video.Service.FuneralHome.Name; add.ServiceDate = an.Video.Service.ServiceDate.ToShortDateString(); add.DaysAfterService = (an.CreateDate - an.Video.Service.ServiceDate).Days.ToString(); add.city = an.City; if (an.Stop < 280) { add.AmountWatched = "NA"; } else { add.AmountWatched = Math.Round(((double)an.Stop / 60), 0).ToString(); } addresses.Add(add); } } } } AVM.Details = addresses; CalculateAnalytics.AverageTime(ref AVM, Analytics); CalculateAnalytics.linechart(ref AVM, Analytics, false); return(View(AVM)); }
public ActionResult Dashboard() { if (!User.IsInRole("Admin")) { return(View("NotFound")); } //TODO: write logic to derive the owner id based on user that is logged in int ownerId = 2; List <FuneralHome> Homes = db.FuneralHomes.Where(f => f.DevHome == false && f.OwnerId == ownerId).ToList(); List <Analytic> Analytics = new List <Analytic>(); AnalyticViewModel AVM = new AnalyticViewModel(); AnalyticDashboardViewModel ADVM = new AnalyticDashboardViewModel(); List <Service> Services = new List <Service>(); Analytics = db.Analytics.Where(a => a.Video.Service.FuneralHome.DevHome == false && a.Video.Service.FuneralHome.OwnerId == ownerId).ToList(); Services = db.Services.Where(s => s.FuneralHome.DevHome == false && s.FuneralHome.OwnerId == ownerId).ToList(); List <IpAddressObject> addresses = new List <IpAddressObject>(); foreach (var an in Analytics) { if (an.Latitude != 0 && an.Longitude != 0) { //Database got mucked up with a bunch of hard coded values //So lets exclude those IP addresses from the heat map if (an.IPAddress != "174.17.56.90") { IpAddressObject add = new IpAddressObject(); add.IpAdd = an.IPAddress; add.latitude = an.Latitude; add.longitude = an.Longitude; addresses.Add(add); } } } DateTime LastWeek = DateTime.Now.AddDays(-7); List <Analytic> thisWeekAnalytics = Analytics.Where(a => a.CreateDate > LastWeek).ToList(); string mostViewedHome = ""; int HighestVIews = 0; int popularhomeId = 0; foreach (var home in Homes) { int homeViews = thisWeekAnalytics.Where(a => a.Video.Service.FuneralHome.Id == home.Id).Count(); if (homeViews > HighestVIews) { mostViewedHome = home.Name; HighestVIews = homeViews; popularhomeId = home.Id; } } CRMFuneralHome popFH = db.CRMFuneralHome.Where(f => f.FuneralHomeId == popularhomeId).FirstOrDefault(); CRMContact PopularHomePicCont = null; if (popFH != null) { PopularHomePicCont = popFH.PrimaryCRMContact; } if (PopularHomePicCont != null) { ADVM.PopularHomeOfTheWeekImage = PopularHomePicCont.PictureFileName; } ADVM.PopularHomeOfTheWeek = mostViewedHome; ADVM.PopularHomeNumOfViews = HighestVIews; ADVM.ServicesBarChartArray = Admin.GetServicesBarChart(Services, DateTime.Now.AddMonths(-3), DateTime.Now); AVM.Details = addresses; CalculateAnalytics.PageViews(ref ADVM, Analytics, Homes); CalculateAnalytics.AverageTime(ref AVM, Analytics); Admin.dashboardlinechart(ref ADVM, Analytics); CalculateAnalytics.linechart(ref AVM, Analytics); ADVM.TotalFuneralsWithVideos = Admin.GetTotalServicesWithVideo(Services); ADVM.MonthlyFuneralsWithVideos = Admin.GetServicesThisMonthWithVideo(Services); ADVM.LowUsageHomes = CalculateAnalytics.LowUsageHomes(Homes); return(View(ADVM)); }