public JsonResult LocaleStatistics(List<int> AdIds, string sDate = "", string eDate = "") { var ads = service.GetUserAds(User.Identity.GetUserId()).Where(a=>AdIds.Contains(a.Id)); List<LocaleVisitorsTable> table = new List<LocaleVisitorsTable>(); CompareChartModel chartCompare = new CompareChartModel(); //var sessionsByWeek = ads.SelectMany(a => a.AdSessions).Where(a => a.DateTimeStart.Date.CompareTo(date.Date) == 0); var sessionsByLocale = ads.SelectMany(a => a.AdSessions).GroupBy(a => a.UserLocale); StatChartJS chartModel = new StatChartJS(); chartModel.name = "Лояльность по странам"; foreach (var session in sessionsByLocale) { LocaleVisitorsTable row = new LocaleVisitorsTable(); row.Locale = session.Key; row.ViewsByWeek = session.Count(a => a.DateTimeStart.AddDays(7).CompareTo(DateTime.Now) > 0).ToString(); row.ViewsByMonth = session.Count(a => a.DateTimeStart.AddMonths(1).CompareTo(DateTime.Now) > 0).ToString(); chartModel.labels.Add(session.Key); chartModel.data.Add(row.ViewsByMonth); row.PopularPresentation = ads.First(b => b.Id == session .GroupBy(a => a.AdId) .OrderByDescending(a => a.Count()) .First().Key).Name; table.Add(row); } chartCompare.charts.Add(chartModel); return Json(chartCompare); }
public HttpResponseMessage LocaleVisitorsStatistics(bool chart = false) { var ads = service.GetUserAds(User.Identity.GetUserId()); List<LocaleVisitorsTable> table = new List<LocaleVisitorsTable>(); CompareChartModel chartCompare = new CompareChartModel(); if (ads.Count > 0) { //var sessionsByWeek = ads.SelectMany(a => a.AdSessions).Where(a => a.DateTimeStart.Date.CompareTo(date.Date) == 0); var sessionsByLocale = ads.SelectMany(a => a.AdSessions).GroupBy(a => a.UserLocale); StatChartJS chartModel = new StatChartJS(); chartModel.name = "Лояльность по странам"; foreach (var session in sessionsByLocale) { LocaleVisitorsTable row = new LocaleVisitorsTable(); row.Locale = session.Key; row.ViewsByWeek = session.Count(a => a.DateTimeStart.AddDays(7).CompareTo(DateTime.Now) > 0).ToString(); row.ViewsByMonth = session.Count(a => a.DateTimeStart.AddMonths(1).CompareTo(DateTime.Now) > 0).ToString(); chartModel.labels.Add(session.Key); chartModel.data.Add(row.ViewsByMonth); row.PopularPresentation = ads.First(b => b.Id == session .GroupBy(a => a.AdId) .OrderByDescending(a => a.Count()) .First().Key).Name; table.Add(row); } } return Request.CreateResponse(HttpStatusCode.OK, table); }