Esempio n. 1
0
        public static void dashboardlinechart(ref AnalyticDashboardViewModel avm, List <Analytic> analytics)
        {
            if (analytics.Count > 1)
            {
                //Figure the Time Range for Days
                List <DateTime> dayTimeRange       = new List <DateTime>();
                List <int>      dayViews           = new List <int>();
                DateTime        day                = DateTime.Now;
                StringBuilder   dayTimeRangeString = new StringBuilder();
                string          quote              = "\"";
                dayTimeRangeString.Append("[");
                for (int i = 0; i < 10; i++)
                {
                    dayTimeRange.Add(day);
                    dayTimeRangeString.Append("new Date(" + quote + day.ToShortDateString() + quote + "),");
                    day = day.AddDays(-1);
                }
                string dayTimeRangeArray = dayTimeRangeString.ToString();
                dayTimeRangeArray = dayTimeRangeArray.Substring(0, dayTimeRangeArray.Length - 1) + "]";
                // *************end the time range for DAYS************* //

                // figure the time range for months
                List <DateTime> monthTimeRange       = new List <DateTime>();
                List <int>      monthViews           = new List <int>();
                DateTime        month                = DateTime.Now;
                StringBuilder   monthTimeRangeString = new StringBuilder();
                monthTimeRangeString.Append("[");
                for (int i = 0; i < 10; i++)
                {
                    monthTimeRange.Add(month);
                    monthTimeRangeString.Append("new Date(" + quote + month.ToShortDateString() + quote + "),");
                    month = month.AddMonths(-1);
                }
                string monthTimeRangeArray = monthTimeRangeString.ToString();
                monthTimeRangeArray = monthTimeRangeArray.Substring(0, monthTimeRangeArray.Length - 1) + "]";
                // *************end the time range for MONTHS************* //

                // figure the time range for year
                List <DateTime> yearTimeRange       = new List <DateTime>();
                List <int>      yearViews           = new List <int>();
                DateTime        year                = DateTime.Now;
                StringBuilder   yearTimeRangeString = new StringBuilder();
                yearTimeRangeString.Append("[");
                for (int i = 0; i < 10; i++)
                {
                    yearTimeRange.Add(year);
                    yearTimeRangeString.Append("new Date(" + quote + year.ToShortDateString() + quote + "),");
                    year = year.AddYears(-1);
                }
                string yearTimeRangeArray = yearTimeRangeString.ToString();
                yearTimeRangeArray = yearTimeRangeArray.Substring(0, yearTimeRangeArray.Length - 1) + "]";
                // *************end the time range for YEAR************* //

                StringBuilder daySeries   = new StringBuilder();
                StringBuilder monthSeries = new StringBuilder();
                StringBuilder yearSeries  = new StringBuilder();


                List <FuneralHome> homes = analytics.GroupBy(a => a.Video.Service.FuneralHome).Select(f => f.FirstOrDefault().Video.Service.FuneralHome).Distinct().ToList();
                foreach (var home in homes)
                {
                    //Get Daily Views for Funeral home
                    int           todayViews    = 0;
                    StringBuilder dayViewString = new StringBuilder();
                    dayViewString.Append("[");
                    foreach (var d in dayTimeRange)
                    {
                        todayViews = analytics.Where(a => a.CreateDate > d.AddDays(-1) && a.CreateDate < d && a.Video.Service.FuneralHome.Id == home.Id).Count();
                        dayViewString.Append(todayViews.ToString() + ",");
                        dayViews.Add(todayViews);
                    }
                    string dayViewsArray = dayViewString.ToString();
                    dayViewsArray = dayViewsArray.Substring(0, dayViewsArray.Length - 1) + "]";
                    daySeries.Append("{label: \"" + home.Name + "\",legendEntry:true, data: {x: " + dayTimeRangeArray + ", y: " + dayViewsArray + "},markers: {visible:true, type:\"circle\"}},");


                    //Get Monthly Views for Funeral Home
                    int           mViews          = 0;
                    StringBuilder monthViewString = new StringBuilder();
                    monthViewString.Append("[");
                    foreach (var d in monthTimeRange)
                    {
                        mViews = analytics.Where(a => a.CreateDate > d.AddMonths(-1) && a.CreateDate < d && a.Video.Service.FuneralHome.Id == home.Id).Count();
                        monthViewString.Append(mViews.ToString() + ",");
                        monthViews.Add(mViews);
                    }
                    string monthViewsArray = monthViewString.ToString();
                    monthViewsArray = monthViewsArray.Substring(0, monthViewsArray.Length - 1) + "]";
                    monthSeries.Append("{label: \"" + home.Name + "\",legendEntry:true, data: {x: " + monthTimeRangeArray + ", y: " + monthViewsArray + "},markers: {visible:true, type:\"circle\"}},");

                    //Get Yearly Views for Funeral Home
                    int           yViews         = 0;
                    StringBuilder yearViewString = new StringBuilder();
                    yearViewString.Append("[");
                    foreach (var d in yearTimeRange)
                    {
                        yViews = analytics.Where(a => a.CreateDate > d.AddYears(-1) && a.CreateDate < d && a.Video.Service.FuneralHome.Id == home.Id).Count();
                        yearViewString.Append(yViews.ToString() + ",");
                        yearViews.Add(yViews);
                    }
                    string yearViewsArray = yearViewString.ToString();
                    yearViewsArray = yearViewsArray.Substring(0, yearViewsArray.Length - 1) + "]";
                    yearSeries.Append("{label: \"" + home.Name + "\",legendEntry:true, data: {x: " + yearTimeRangeArray + ", y: " + yearViewsArray + "},markers: {visible:true, type:\"circle\"}},");
                }

                string daySeriesString   = daySeries.ToString().Substring(0, daySeries.Length - 1);
                string monthSeriesString = monthSeries.ToString().Substring(0, monthSeries.Length - 1);
                string yearSeriesString  = yearSeries.ToString().Substring(0, yearSeries.Length - 1);

                avm.DailySeries   = daySeriesString;
                avm.MonthlySeries = monthSeriesString;
                avm.YearlySeries  = yearSeriesString;
            }
            else
            {
                avm.DailySeries = "No Data";
            }
        }
        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));
        }
Esempio n. 3
0
        public static void PageViews(ref AnalyticDashboardViewModel avm, List <Analytic> analytics, List <FuneralHome> homes)
        {
            List <Service> services = new List <Service>();

            //List<string> owernames = new List<string>();
            foreach (var home in homes)
            {
                foreach (var s in home.Services.ToList())
                {
                    services.Add(s);
                    //owernames.Add(s.FuneralHome.Owner.Name);
                }
            }

            DateTime today = DateTime.Now;

            int totalViews = analytics.Count();
            int todayViews = analytics.Where(a => a.CreateDate > today.AddDays(-1) && a.CreateDate < today).Count();
            int weekViews  = analytics.Where(a => a.CreateDate > today.AddDays(-7) && a.CreateDate < today).Count();
            int monthViews = analytics.Where(a => a.CreateDate > today.AddMonths(-1) && a.CreateDate < today).Count();

            int VideoCount    = 0;
            int PDFCount      = 0;
            int VideoAndPdf   = 0;
            int totalServices = 0;

            foreach (var s in services)
            {
                if (s.FuneralHome.Owner != null && s.FuneralHome.Owner.Name != "DevHome")
                {
                    totalServices++;
                    if (s.Video != null)
                    {
                        VideoCount++;
                    }
                    if (s.PDF != null)
                    {
                        PDFCount++;
                    }
                    if (s.Video != null && s.PDF != null)
                    {
                        VideoAndPdf++;
                    }
                }
            }

            double percentWithVideos = Math.Round(((double)VideoCount / (double)totalServices) * 100, 0);
            double percentWithPdf    = Math.Round(((double)PDFCount / (double)totalServices) * 100, 0);
            double percentWithBoth   = Math.Round(((double)VideoAndPdf / (double)totalServices) * 100, 0);

            avm.TotalVideoViews    = totalViews;
            avm.TotalFuneralVideos = VideoCount;
            avm.TotalFuneralPDFs   = PDFCount;

            //avm.FuneralsWithVideos = percentWithVideos;
            avm.FuneralsWithPDFs = percentWithPdf;
            avm.FuneralsWithBoth = percentWithBoth;

            avm.TodayViews = todayViews;
            avm.WeekViews  = weekViews;
            avm.MonthViews = monthViews;
        }
        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));
        }