public static async Task <List <analytic> > FetchAnalyticsForPeriodAsync(RequestFilter filter) { earnanalyticsEntities dbContext = new earnanalyticsEntities(); var baseQuery = FetchAnalyticsQuery(filter, dbContext); return(await baseQuery.ToListAsync()); }
/// <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); } }
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()); }
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()); }
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); }