private void Edit(AnalyticDisplayModel analyticDisplayModel) { AnalyticEditModel analytic = new AnalyticEditModel { FirstName = analyticDisplayModel.FirstName, LastName = analyticDisplayModel.LastName, PhoneNumber = analyticDisplayModel.PhoneNumber, Login = analyticDisplayModel.Login }; AnalyticInfoViewModel viewModel = new AnalyticInfoViewModel(analytic); AnalyticInfoControl control = new AnalyticInfoControl(viewModel); Window window = WindowFactory.CreateByContentsSize(control); viewModel.AnalyticEdited += (s, e) => { AnalyticEditModel analyticEditModel = e.Analytic; AnalyticEditDTO analyticEditDTO = Mapper.Map <AnalyticEditModel, AnalyticEditDTO>(analyticEditModel); using (IAnalyticService service = factory.CreateAnalyticService()) { ServiceMessage serviceMessage = service.Update(analyticEditDTO); RaiseReceivedMessageEvent(serviceMessage); if (serviceMessage.IsSuccessful) { window.Close(); Notify(); } } }; window.Show(); }
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 AnalyticInfoViewModel GetServiceStats(List <Service> Services) { AnalyticInfoViewModel avim = new AnalyticInfoViewModel(); List <ServiceDetails> details = new List <ServiceDetails>(); int serviceCount = 0; foreach (Service service in Services) { if (service.FuneralHome.DevHome == false) { ServiceDetails detail = new ServiceDetails(); detail.Age = getYearsWithDecimalPrecision(service.Birthday, service.DeathDay); detail.DaysDeathToService = (service.ServiceDate - service.DeathDay).TotalDays; detail.DeathDay = service.DeathDay.DayOfWeek.ToString(); detail.ServiceDay = service.ServiceDate.DayOfWeek.ToString(); details.Add(detail); serviceCount++; } } avim.DaysBetweenDeathAndService = Math.Round(details.Average(a => a.DaysDeathToService), 0); avim.AvgAge = Math.Round(details.Average(a => a.Age), 2); avim.PopularDeathDay = details.GroupBy(d => d.DeathDay).Select(d => new { DeathDay = d.Key, Count = d.Count() }) .OrderByDescending(d => d.Count) .Select(d => d.DeathDay).First(); avim.PopularServiceDay = details.GroupBy(d => d.ServiceDay).Select(d => new { ServiceDay = d.Key, Count = d.Count() }) .OrderByDescending(d => d.Count) .Select(d => d.ServiceDay).First(); return(avim); }
public AnalyticInfoControl(AnalyticInfoViewModel viewModel) { InitializeComponent(); this.DataContext = viewModel; }
public AnalyticInfoViewModel GetAverageViewsPerService(List <Analytic> Analytics, List <Service> Services) { List <int> ServiceIds = new List <int>(); int devServices = 0; List <ServiceAnalytic> sa = new List <ServiceAnalytic>(); foreach (Analytic analytic in Analytics) { if (sa.Where(a => a.ServiceId == analytic.VideoId).Count() == 0) { ServiceAnalytic serva = new ServiceAnalytic(); if (analytic.VideoId != null) { Service dbService = Services.Where(s => s.Id == analytic.VideoId).FirstOrDefault(); double lifeSpan = 0; if (dbService != null) { if (dbService.FuneralHome.DevHome == true) { devServices++; } lifeSpan = dbService.DeathDay.Year - dbService.Birthday.Year; double totaldays = (dbService.Birthday - dbService.DeathDay).TotalDays; //Could've been a baby, but most likely bad data if (lifeSpan > 1) { serva.Age = lifeSpan; } else { serva.Age = 0; } } serva.ServiceId = analytic.VideoId; serva.Views = 1; sa.Add(serva); } } else { ServiceAnalytic service = sa.Where(s => s.ServiceId == analytic.VideoId).FirstOrDefault(); if (service != null) { service.Views = service.Views + 1; } } } double totalViews = sa.Sum(s => s.Views); double totalService = sa.Count(); double averageServiceViews = Math.Round(totalViews / totalService, 0); double bla = devServices; List <ServiceAnalytic> ServicesUnder30 = sa.Where(a => a.Age < 30 && a.Age != 0).ToList(); List <ServiceAnalytic> ServicesUnder40 = sa.Where(a => a.Age < 40 && a.Age != 0).ToList(); List <ServiceAnalytic> ServicesUnder50 = sa.Where(a => a.Age < 50 && a.Age != 0 && a.Age > 40).ToList(); List <ServiceAnalytic> ServicesUnder60 = sa.Where(a => a.Age < 60 && a.Age != 0 && a.Age > 50).ToList(); List <ServiceAnalytic> ServicesOver60 = sa.Where(a => a.Age != 0 && a.Age > 60).ToList(); AnalyticInfoViewModel avim = new AnalyticInfoViewModel(); avim.AllServiceAvgViews = Math.Round(totalViews / totalService, 0); avim.AvgViews30 = Math.Round(ServicesUnder30.Sum(s => s.Views) / (double)ServicesUnder30.Count()); avim.AvgViews40 = Math.Round(ServicesUnder40.Sum(s => s.Views) / (double)ServicesUnder40.Count()); avim.AvgViews50 = Math.Round(ServicesUnder50.Sum(s => s.Views) / (double)ServicesUnder50.Count()); avim.AvgViews60 = Math.Round(ServicesUnder60.Sum(s => s.Views) / (double)ServicesUnder60.Count()); avim.AvgViews70 = Math.Round(ServicesOver60.Sum(s => s.Views) / (double)ServicesOver60.Count()); return(avim); }