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); } }
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)); }