/// <summary> /// Check if a user badge can be awarded /// </summary> /// <param name="user"></param> /// <param name="badgeMapping"></param> /// <returns></returns> private bool BadgeCanBeAwarded(MembershipUser user, BadgeMapping badgeMapping) { if (user.Badges == null) { _loggingService.Error(string.Format(_localizationService.GetResourceString("Badges.UnableToAward"), user.UserName)); return(false); } var badgeCanBeAwarded = true; if (badgeMapping.BadgeClass == null || badgeMapping.DbBadge == null) { badgeCanBeAwarded = false; } else { var userHasBadge = user.Badges.Any(userBadge => userBadge.Name == badgeMapping.DbBadge.Name); if (userHasBadge) { badgeCanBeAwarded = false; } } return(badgeCanBeAwarded); }
/// <summary> /// Check if a user badge can be awarded /// </summary> /// <param name="user"></param> /// <param name="badgeMapping"></param> /// <returns></returns> private bool BadgeCanBeAwarded(MembershipUser user, BadgeMapping badgeMapping) { var cacheKey = string.Concat(CacheKeys.Badge.StartsWith, "BadgeCanBeAwarded-", user.Id, "-", badgeMapping.GetHashCode()); return(_cacheService.CachePerRequest(cacheKey, () => { if (user.Badges == null) { _loggingService.Error(string.Format(_localizationService.GetResourceString("Badges.UnableToAward"), user.UserName)); return false; } var badgeCanBeAwarded = true; if (badgeMapping.BadgeClass == null || badgeMapping.DbBadge == null) { badgeCanBeAwarded = false; } else { var userHasBadge = user.Badges.Any(userBadge => userBadge.Name == badgeMapping.DbBadge.Name); if (userHasBadge) { badgeCanBeAwarded = false; } } return badgeCanBeAwarded; })); }
/// <summary> /// Get an instance from a badge class (instantiate it) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="badgeMapping"></param> /// <returns></returns> private static IBadge GetInstance <T>(BadgeMapping badgeMapping) { // If we've previously instantiated this class then return the instance if (badgeMapping.BadgeClassInstance != null) { return(badgeMapping.BadgeClassInstance); } var ctor = badgeMapping.BadgeClass.GetConstructors().First(); var createdActivator = ReflectionUtilities.GetActivator <T>(ctor); // Create an instance: badgeMapping.BadgeClassInstance = createdActivator() as IBadge; return(badgeMapping.BadgeClassInstance); }
/// <summary> /// Check if a user badge can be awarded /// </summary> /// <param name="user"></param> /// <param name="badgeMapping"></param> /// <returns></returns> private bool BadgeCanBeAwarded(Member user, BadgeMapping badgeMapping) { var usersBadges = GetallMembersBadges(user.Id); var badgeCanBeAwarded = true; if (badgeMapping.BadgeClass == null || badgeMapping.DbBadge == null) { badgeCanBeAwarded = false; } else { var userHasBadge = usersBadges.Any(userBadge => userBadge.Name == badgeMapping.DbBadge.Name); if (userHasBadge) { badgeCanBeAwarded = false; } } return(badgeCanBeAwarded); }