Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        public static async Task <bool> IsFeatureUsedXDays(this UsageRule self, LocalAnalytics analytics)
        {
            var allEvents = await analytics.GetAllEventsForCategory(self.categoryId);

            return(allEvents.GroupByDay().Count() >= self.days);
        }