public static async Task <bool> IsFeatureUsedInTheLastXDays(this UsageRule self, LocalAnalytics analytics) { var allEvents = await analytics.GetAllEventsForCategory(self.categoryId); if (allEvents.IsNullOrEmpty()) { return(false); } DateTime lastEvent = allEvents.Last().GetDateTimeUtc(); TimeSpan lastEventVsNow = DateTimeV2.UtcNow - lastEvent; return(lastEventVsNow.Days <= self.days); }
public static async Task <bool> IsNotificationMinXDaysOld(this UsageRule self, LocalAnalytics analytics) { var allEvents = await analytics.GetAllEventsForCategory(EventConsts.catUsage); var showEvents = allEvents.Filter(x => x.action == EventConsts.SHOW + "_" + self.categoryId); if (showEvents.IsNullOrEmpty()) { return(false); } DateTime firstShownEvent = showEvents.First().GetDateTimeUtc(); TimeSpan firstShownVsNow = DateTimeV2.UtcNow - firstShownEvent; return(firstShownVsNow.Days >= self.days); }
public static async Task <IEnumerable <AppFlowEvent> > GetStartEvents(this LocalAnalytics self, string categoryId) { var allEvents = await self.GetAllEventsForCategory(categoryId); return(allEvents.Filter(x => x.action == EventConsts.START)); }
public static async Task <bool> IsFeatureUsedXDays(this UsageRule self, LocalAnalytics analytics) { var allEvents = await analytics.GetAllEventsForCategory(self.categoryId); return(allEvents.GroupByDay().Count() >= self.days); }