Esempio n. 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));
        }
Esempio n. 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));
        }