/// <summary>
        ///     Check to see if the badge type has been recently processed for this user
        /// </summary>
        /// <param name="badgeType"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private bool RecentlyProcessed(BadgeType badgeType, MembershipUser user)
        {
            var cacheKey = string.Concat(CacheKeys.Badge.StartsWith, "RecentlyProcessed-", user.Id, "-", badgeType);

            return(_cacheService.CachePerRequest(cacheKey, () =>
            {
                var recentlyProcessed = false;
                var now = DateTime.UtcNow;

                BadgeTypeTimeLastChecked timeBadgeLastChecked = null;

                // Go through all the badge-check time records for this user
                foreach (var nextBadgeTypeCheckedForUser in user.BadgeTypesTimeLastChecked)
                {
                    var previouslyCheckedBadgeType = FromString(nextBadgeTypeCheckedForUser.BadgeType);

                    if (previouslyCheckedBadgeType == null || previouslyCheckedBadgeType != badgeType)
                    {
                        continue;
                    }

                    // Block the badge check if not enough time has elapsed since last check
                    if ((now - nextBadgeTypeCheckedForUser.TimeLastChecked).TotalMinutes < BadgeCheckIntervalMinutes)
                    {
                        recentlyProcessed = true;
                    }

                    timeBadgeLastChecked = nextBadgeTypeCheckedForUser;
                    timeBadgeLastChecked.TimeLastChecked = now;

                    break;
                }

                // If this badge type never checked for this user, add it
                if (timeBadgeLastChecked == null)
                {
                    timeBadgeLastChecked = new BadgeTypeTimeLastChecked
                    {
                        BadgeType = badgeType.ToString(),
                        TimeLastChecked = now,
                        User = user
                    };

                    user.BadgeTypesTimeLastChecked.Add(timeBadgeLastChecked);
                }

                return recentlyProcessed;
            }));
        }
Beispiel #2
0
        /// <summary>
        /// Check to see if the badge type has been recently processed for this user
        /// </summary>
        /// <param name="badgeType"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private bool RecentlyProcessed(BadgeType badgeType, Member user)
        {
            var recentlyProcessed = false;
            var now = DateTime.UtcNow;

            BadgeTypeTimeLastChecked timeBadgeLastChecked = null;

            var usersBadgeTypesTimeLastChecked = BadgeTypeTimeLastCheckedByMember(user.Id);

            // Go through all the badge-check time records for this user
            foreach (var nextBadgeTypeCheckedForUser in usersBadgeTypesTimeLastChecked)
            {
                var previouslyCheckedBadgeType = FromString(nextBadgeTypeCheckedForUser.BadgeType);

                if (previouslyCheckedBadgeType == null || previouslyCheckedBadgeType != badgeType)
                {
                    continue;
                }

                // Block the badge check if not enough time has elapsed since last check
                if ((now - nextBadgeTypeCheckedForUser.TimeLastChecked).TotalMinutes < BadgeCheckIntervalMinutes)
                {
                    recentlyProcessed = true;
                }

                timeBadgeLastChecked = nextBadgeTypeCheckedForUser;
                timeBadgeLastChecked.TimeLastChecked = now;

                break;
            }

            // If this badge type never checked for this user, add it
            if (timeBadgeLastChecked == null)
            {
                timeBadgeLastChecked = new BadgeTypeTimeLastChecked
                {
                    BadgeType       = badgeType.ToString(),
                    TimeLastChecked = now,
                    Member          = user,
                    MemberId        = user.Id
                };

                ContextPerRequest.Db.BadgeTypeTimeLastChecked.Add(timeBadgeLastChecked);
            }

            return(recentlyProcessed);
        }
Beispiel #3
0
 public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked)
 {
     _badgeRepository.DeleteTimeLastChecked(badgeTypeTimeLastChecked);
 }
Beispiel #4
0
 public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked)
 {
     _context.BadgeTypeTimeLastChecked.Remove(badgeTypeTimeLastChecked);
 }
Beispiel #5
0
 public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked)
 {
     ContextPerRequest.Db.BadgeTypeTimeLastChecked.Remove(badgeTypeTimeLastChecked);
 }