Пример #1
0
        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);
        }
Пример #2
0
        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);
        }