public void Delete(MemberPoints item) { if (item != null) { ContextPerRequest.Db.MemberPoints.Remove(item); } }
public MemberPoints Add(MemberPoints points) { if (points.MemberId <= 0) { AppHelpers.LogError("Error adding point memberId null"); } else { points.DateAdded = DateTime.UtcNow; ContextPerRequest.Db.MemberPoints.Add(points); } return(points); }
/// <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); }
protected void UploadMembers(object sender, EventArgs e) { if (fuXml.HasFile) { // Upload file to App_Data temp folder var xmlFilepath = Server.MapPath("~/App_Data/TEMP/memberimport.xml"); fuXml.SaveAs(xmlFilepath); // Once saved load xml var xml = new XmlDocument(); xml.Load(xmlFilepath); // Now loop through the members var allMembers = xml.SelectNodes("//member"); // Do we have any members if (allMembers != null && allMembers.Count > 0) { // Store all mapped members var members = new List <MemberImport>(); // Yes, we have members - So map them foreach (XmlNode mem in allMembers) { var import = MapImport(mem); if (import != null) { members.Add(import); } } //TODO - Refactor - Must be a more performant way of mass creating members var memService = AppHelpers.UmbServices().MemberService; var memHelper = AppHelpers.UmbMemberHelper(); var memberGroupService = AppHelpers.UmbServices().MemberGroupService; var startingGroup = memberGroupService.GetByName(DialogueConfiguration.Instance.MemberGroupDefault); var adminGroup = memberGroupService.GetByName(AppConstants.AdminRoleName); var unitOfWorkManager = new UnitOfWorkManager(ContextPerRequest.Db); var pointService = ServiceResolver.Current.Instance <MemberPointsService>(); var bannedWordService = ServiceResolver.Current.Instance <BannedWordService>(); using (var unitOfWork = unitOfWorkManager.NewUnitOfWork()) { try { foreach (var newmem in members) { //var m = memService.CreateMemberWithIdentity("username", "email", "name", AppConstants.MemberTypeAlias); var userToSave = memHelper.CreateRegistrationModel(DialogueConfiguration.Instance.MemberTypeAlias); userToSave.Username = bannedWordService.SanitiseBannedWords(newmem.Username); userToSave.Name = userToSave.Username; userToSave.UsernameIsEmail = false; userToSave.Email = newmem.Email; userToSave.Password = Membership.GeneratePassword(10, 1); MembershipCreateStatus createStatus; memHelper.RegisterMember(userToSave, out createStatus, false); if (createStatus == MembershipCreateStatus.Success) { // Get the umbraco member var umbracoMember = memService.GetByUsername(userToSave.Username); // Set the role/group they should be in if (newmem.IsAdmin) { // Add to admin role memService.AssignRole(umbracoMember.Id, adminGroup.Name); // Add can edit member property umbracoMember.Properties[AppConstants.PropMemberCanEditOtherUsers].Value = newmem.IsAdmin; } else { // Standard role memService.AssignRole(umbracoMember.Id, startingGroup.Name); } // Add points if (newmem.Points > 0) { // Create the DB points var points = new MemberPoints { DateAdded = DateTime.Now, MemberId = umbracoMember.Id, Points = newmem.Points }; pointService.Add(points); } // Do a save on the member memService.Save(umbracoMember); } else { //TODO- Show errors to the user } Server.ScriptTimeout = 600; } // Commit the transaction unitOfWork.Commit(); // Yes pnlResults.Controls.Add(new LiteralControl("Success - Members Imported")); pnlResults.Visible = true; } catch (Exception ex) { // Roll back database changes unitOfWork.Rollback(); // No pnlResults.Controls.Add(new LiteralControl("There was an error during import")); pnlResults.Visible = true; } } } else { // No pnlResults.Controls.Add(new LiteralControl("No members found in the XML")); pnlResults.Visible = true; } } else { pnlResults.Controls.Add(new LiteralControl("No file selected")); pnlResults.Visible = true; } }