/// <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; })); }
/// <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); }
public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked) { _badgeRepository.DeleteTimeLastChecked(badgeTypeTimeLastChecked); }
public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked) { _context.BadgeTypeTimeLastChecked.Remove(badgeTypeTimeLastChecked); }
public void DeleteTimeLastChecked(BadgeTypeTimeLastChecked badgeTypeTimeLastChecked) { ContextPerRequest.Db.BadgeTypeTimeLastChecked.Remove(badgeTypeTimeLastChecked); }