Пример #1
0
        public static async Task <List <analytic> > FetchAnalyticsForPeriodAsync(RequestFilter filter)
        {
            earnanalyticsEntities dbContext = new earnanalyticsEntities();
            var baseQuery = FetchAnalyticsQuery(filter, dbContext);

            return(await baseQuery.ToListAsync());
        }
Пример #2
0
        /// <summary>
        /// Saves the analytics event record to the database.
        /// </summary>
        /// <param name="analyticsModel">The record to persist to database.</param>
        /// <returns>The status of the request.</returns>
        public static async Task <bool> TrySaveAnalyticsRecordToDatabase(AnalyticsModel analyticsModel)
        {
            try
            {
                using (earnanalyticsEntities entities = new earnanalyticsEntities())
                {
                    entities.analytics.Add(DatabaseAdapter.GetDatabaseModel(analyticsModel));
                    await entities.SaveChangesAsync();

                    return(true);
                }
            }
            catch
            {
                return(false);
            }
        }
Пример #3
0
        public static async Task <List <AggregatedVisitorsByDateRecord> > FetchVisitorsByDateAnalyticsForPeriodAsync(RequestFilter filter)
        {
            earnanalyticsEntities dbContext = new earnanalyticsEntities();
            var baseQuery = FetchAnalyticsQuery(filter, dbContext);
            var query     = from a in
                            (from bq in baseQuery
                             where (filter.StartDate <= bq.ServerTimeStamp) && (bq.ServerTimeStamp < filter.EndDate)
                             select new { SessionId = bq.SessionId, Date = bq.ServerTimeStamp }).Distinct()
                            group a by DbFunctions.TruncateTime(a.Date).Value into gr
                            select new AggregatedVisitorsByDateRecord
            {
                Date          = gr.Key,
                TotalVisitors = gr.Count()
            };

            return(await query.ToListAsync());
        }
Пример #4
0
        public static async Task <List <AggregatedByDeviceTypeRecord> > FetchByDeviceTypeAnalyticsForPeriodAsync(RequestFilter filter)
        {
            earnanalyticsEntities dbContext = new earnanalyticsEntities();
            var baseQuery = FetchAnalyticsQuery(filter, dbContext);
            var query     = from a in
                            (from bq in baseQuery
                             where (filter.StartDate <= bq.ServerTimeStamp) && (bq.ServerTimeStamp < filter.EndDate)
                             select new { SessionId = bq.SessionId, DeviceType = bq.DeviceType }).Distinct()
                            group a by a.DeviceType into gr
                            select new AggregatedByDeviceTypeRecord
            {
                DeviceType = gr.Key,
                Count      = gr.Count()
            };

            return(await query.ToListAsync());
        }
Пример #5
0
        protected static IQueryable <analytic> FetchAnalyticsQuery(RequestFilter filter, earnanalyticsEntities dbContext)
        {
            dbContext = new earnanalyticsEntities();
            IQueryable <analytic> query = from a in dbContext.analytics
                                          where (filter.StartDate <= a.ServerTimeStamp) && (a.ServerTimeStamp < filter.EndDate)
                                          select a;

            if (!string.IsNullOrWhiteSpace(filter.CampaignId))
            {
                query = query.Where(x => x.cmp_ref.Contains(filter.CampaignId));
            }

            if (filter.EventId != EventFilter.All)
            {
                string eventId = GetEventIdFilterValue(filter.EventId);
                query = query.Where(x => x.EventId == eventId);
            }

            return(query);
        }