public void DeleteBadgeToMember(BadgeToMember badgeToMember) { ContextPerRequest.Db.BadgeToMember.Remove(badgeToMember); }
/// <summary> /// Processes the user for the specified badge type /// </summary> /// <param name="badgeType"></param> /// <param name="user"></param> /// <returns>True if badge was awarded</returns> public bool ProcessBadge(BadgeType badgeType, Member user) { var databaseUpdateNeeded = false; if (_badges.ContainsKey(badgeType)) { if (!RecentlyProcessed(badgeType, user)) { databaseUpdateNeeded = true; var badgeSet = _badges[badgeType]; foreach (var badgeMapping in badgeSet) { if (!BadgeCanBeAwarded(user, badgeMapping)) { continue; } // Instantiate the badge and execute the rule var badge = GetInstance <IBadge>(badgeMapping); // Award badge? if (badge != null && badge.Rule(user)) { // Re-fetch the badge otherwise system will try and create new badges! var dbBadge = GetallBadges().FirstOrDefault(x => x.Id == badgeMapping.DbBadge.Id); if (dbBadge != null) { if (dbBadge.AwardsPoints != null && dbBadge.AwardsPoints > 0) { var points = new MemberPoints { DateAdded = DateTime.UtcNow, Points = (int)dbBadge.AwardsPoints, MemberId = user.Id }; ServiceFactory.MemberPointsService.Add(points); } var exists = ContextPerRequest.Db.BadgeToMember .FirstOrDefault(x => x.DialogueBadgeId == dbBadge.Id && x.MemberId == user.Id); if (exists == null) { // Add the badge mapping var badgeMember = new BadgeToMember { DialogueBadgeId = dbBadge.Id, MemberId = user.Id }; ContextPerRequest.Db.BadgeToMember.Add(badgeMember); // This needs to be //ContextPerRequest.Db.Badge.Add(dbBadge); ServiceFactory.ActivityService.BadgeAwarded(badgeMapping.DbBadge, user, DateTime.UtcNow); } } } } } } return(databaseUpdateNeeded); }