Пример #1
0
        protected override void OnProcess(AggregationPipelineArgs args)
        {
            var dimension = args.GetDimension <MediaFrameworkMedia>();
            var fact      = args.GetFact <MediaFrameworkEvents>();

            VisitData visit = args.Context.Visit;

            DateTime date = args.DateTimeStrategy.Translate(visit.StartDateTime);

            foreach (PageEventData pageEvent in this.GetPageEvents(visit))
            {
                var mediaEvent = MediaEventData.Parse(pageEvent);
                if (mediaEvent == null)
                {
                    continue;
                }

                Hash128    mediaId  = dimension.AddValue(mediaEvent);
                Sites.Site site     = Sites.SiteManager.GetSite(visit.SiteName);
                var        encoder  = new Hash32Encoder();
                string     hashName = encoder.Encode(visit.SiteName);

                var key = new MediaFrameworkEventsKey
                {
                    Date    = date,
                    MediaId = mediaId,
                    PageEventDefinitionId = pageEvent.PageEventDefinitionId,
                    EventParameter        = mediaEvent.EventParameter,
                    SiteNameId            = int.Parse(hashName)
                };

                var value = new MediaFrameworkEventsValue {
                    Count = 1
                };

                fact.Emit(key, value);
            }
        }
        protected override void OnProcess(InteractionAggregationPipelineArgs args)
        {
            var dimension = args.Context.Results.GetDimension <MediaFrameworkMedia>();
            var fact      = args.Context.Results.GetFact <MediaFrameworkEvents>();

            var visit = args.Context.Interaction;

            DateTime date = args.DateTimeStrategy.Translate(visit.StartDateTime);

            foreach (var pageEvent in visit.Events)
            {
                var mediaEvent = MediaEventData.Parse(pageEvent);
                if (mediaEvent == null)
                {
                    continue;
                }

                Hash128 mediaId  = dimension.AddValue(mediaEvent);
                var     encoder  = new Hash32Encoder();
                string  hashName = encoder.Encode((visit.VenueId ?? Guid.Empty).ToString());

                var key = new MediaFrameworkEventsKey
                {
                    Date    = date,
                    MediaId = mediaId,
                    PageEventDefinitionId = pageEvent.DefinitionId,
                    EventParameter        = mediaEvent.EventParameter,
                    SiteNameId            = int.Parse(hashName)
                };

                var value = new MediaFrameworkEventsValue {
                    Count = 1
                };

                fact.Emit(key, value);
            }
        }
Пример #3
0
        public IHttpActionResult Get(string datasource, string siteName)
        {
            ReportDataProviderBase reportingDataProvider = ApiContainer.Configuration.GetReportingDataProvider();
            var cachingPolicy = new CachingPolicy
            {
                ExpirationPeriod = TimeSpan.FromHours(1)
                                   //must find cache expiration node
            };

            Item dataSourceItem = Database.GetDatabase("core").GetItem(new ID(datasource));
            var  reportSQLQuery = dataSourceItem.Fields["{0AA8B742-BBDF-4405-AB8D-6FAC7E79433B}"].Value;

            NameValueCollection parameters = HttpUtility.ParseQueryString(this.Request.RequestUri.Query);
            var    from     = DateTime.ParseExact(parameters["dateFrom"], "dd-MM-yyyy", new DateTimeFormatInfo());
            var    to       = DateTime.ParseExact(parameters["dateTo"], "dd-MM-yyyy", new DateTimeFormatInfo());
            string dateFrom = from.ToString("yyyy-MM-dd");
            string dateTo   = to.ToString("yyyy-MM-dd");

            if (from.Equals(to) && parameters["dateTo"].Length <= 10)
            {
                dateFrom = from.ToString("yyyy-MM-dd 00:00:00");
                dateTo   = to.ToString("yyyy-MM-dd 23:59:59");
            }

            reportSQLQuery = reportSQLQuery.Replace("@StartDate", "'" + dateFrom + "'");
            reportSQLQuery = reportSQLQuery.Replace("@EndDate", "'" + dateTo + "'");

            string hashedSiteName = "0";

            if (siteName != "all")
            {
                var encoder = new Hash32Encoder();
                hashedSiteName = encoder.Encode(siteName);
                reportSQLQuery = reportSQLQuery.Replace("@SiteNameIdOperator", "=");
            }
            else
            {
                reportSQLQuery = reportSQLQuery.Replace("@SiteNameIdOperator", "!=");
            }

            reportSQLQuery = reportSQLQuery.Replace("@SiteNameId", hashedSiteName);

            var query = new ReportDataQuery(reportSQLQuery);

            DataTableReader reader = reportingDataProvider.GetData("reporting", query, cachingPolicy).GetDataTable().CreateDataReader();

            var data = new ReportData();

            int counter = 0;

            while (reader.Read())
            {
                var row = new Dictionary <string, string>();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    row.Add(reader.GetName(i), reader[i].ToString());
                }

                data.AddRow(row);
                counter++;
            }

            var responce = new ReportResponse
            {
                data             = data,
                TotalRecordCount = counter
            };

            return(new JsonResult <ReportResponse>(responce, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }, Encoding.UTF8, this));
        }