public static ViewPostViewModel MapPostViewModel(PermissionSet permissions, Post post, Member currentMember, DialogueSettings settings, Topic topic, List<Vote> allPostVotes, List<Favourite> favourites, bool showTopicLinks = false) { var postViewModel = new ViewPostViewModel { Permissions = permissions, Post = post, User = currentMember, ParentTopic = topic, Votes = allPostVotes.Where(x => x.Post.Id == post.Id).ToList(), LoggedOnMemberId = currentMember != null ? currentMember.Id : 0, AllowedToVote = (currentMember != null && currentMember.Id != post.MemberId && currentMember.TotalPoints > settings.AmountOfPointsBeforeAUserCanVote), PostCount = post.Member.PostCount, IsAdminOrMod = HttpContext.Current.User.IsInRole(AppConstants.AdminRoleName) || permissions[AppConstants.PermissionModerate].IsTicked, HasFavourited = favourites.Any(x => x.PostId == post.Id), IsTopicStarter = post.IsTopicStarter, ShowTopicLinks = showTopicLinks }; postViewModel.UpVotes = postViewModel.Votes.Count(x => x.Amount > 0); postViewModel.DownVotes = postViewModel.Votes.Count(x => x.Amount < 0); return postViewModel; }
public static Member MapMember(IPublishedContent member, bool populateAll = false) { if (member != null) { var key = string.Format("umb-member{0}{1}", member.Id, populateAll); if (!HttpContext.Current.Items.Contains(key)) { var siteMember = new Member(); // Map Properties MapMemberProperties(member, siteMember); // Get points siteMember.Points = ContextPerRequest.Db.MemberPoints.Where(x => x.MemberId == siteMember.Id).ToList(); // Only do extra db calls if populate all is called if (populateAll) { var badgeIds = ContextPerRequest.Db.BadgeToMember.Where(x => x.MemberId == siteMember.Id).Select(x => x.DialogueBadgeId); siteMember.Badges = badgeIds.Any() ? ContextPerRequest.Db.Badge.Where(x => badgeIds.Contains(x.Id)).ToList() : new List<Badge>(); siteMember.Votes = ContextPerRequest.Db.Vote.Where(x => x.MemberId == siteMember.Id).ToList(); } HttpContext.Current.Items.Add(key, siteMember); } return HttpContext.Current.Items[key] as Member; } return null; }
public bool Rule(Member user) { //Post is marked as the answer to a topic - give the post author a badge var usersSolutions = ServiceFactory.PostService.GetSolutionsByMember(user.Id); return (usersSolutions.Count >= 10); }
public void RefreshMemberPosts(Member member, int amount) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberPostCount].Value = amount; _memberService.Save(baseMember); }
/// <summary> /// Saves a front end member /// </summary> /// <param name="member"></param> /// <param name="changedUsername"></param> public void SaveMember(Member member, bool changedUsername) { var baseMember = _memberService.GetById(member.Id); // Only change username if it's different if (changedUsername) { baseMember.Username = member.UserName; baseMember.Name = member.UserName; } baseMember.Email = member.Email; baseMember.Properties[AppConstants.PropMemberSignature].Value = member.Signature; //baseMember.Properties[AppConstants.PropMemberWebsite].Value = member.Website; //baseMember.Properties[AppConstants.PropMemberTwitter].Value = member.Twitter; baseMember.Properties[AppConstants.PropMemberAvatar].Value = member.Avatar; baseMember.Properties[AppConstants.PropMemberCanEditOtherUsers].Value = member.CanEditOtherMembers; baseMember.Properties[AppConstants.PropMemberDisableEmailNotifications].Value = member.DisableEmailNotifications; baseMember.Properties[AppConstants.PropMemberDisablePosting].Value = member.DisablePosting; baseMember.Properties[AppConstants.PropMemberDisablePrivateMessages].Value = member.DisablePrivateMessages; baseMember.Properties[AppConstants.PropMemberDisableFileUploads].Value = member.DisableFileUploads; baseMember.Properties[AppConstants.PropMemberUmbracoMemberComments].Value = member.Comments; _memberService.Save(baseMember); }
public void ApproveMember(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberUmbracoMemberApproved].Value = 1; _memberService.Save(baseMember); }
public void UnBanMember(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 0; _memberService.Save(baseMember); }
public static Member MapMember(IPublishedContent member, bool populateAll = false) { if (member != null) { var key = string.Format("umb-member{0}{1}", member.Id, populateAll); if (!HttpContext.Current.Items.Contains(key)) { var siteMember = new Member(); // Map Properties MapMemberProperties(member, siteMember); // Get points siteMember.Points = ContextPerRequest.Db.MemberPoints.Where(x => x.MemberId == siteMember.Id).ToList(); // Only do extra db calls if populate all is called if (populateAll) { var badgeIds = ContextPerRequest.Db.BadgeToMember.Where(x => x.MemberId == siteMember.Id).Select(x => x.DialogueBadgeId); siteMember.Badges = badgeIds.Any() ? ContextPerRequest.Db.Badge.Where(x => badgeIds.Contains(x.Id)).ToList() : new List <Badge>(); siteMember.Votes = ContextPerRequest.Db.Vote.Where(x => x.MemberId == siteMember.Id).ToList(); } HttpContext.Current.Items.Add(key, siteMember); } return(HttpContext.Current.Items[key] as Member); } return(null); }
public void UpdateLastActiveDate(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberLastActiveDate].Value = member.LastActiveDate; _memberService.Save(baseMember); }
public void AddPostCount(Member member) { var baseMember = _memberService.GetById(member.Id); var newPostCount = (member.PostCount + 1); baseMember.Properties[AppConstants.PropMemberPostCount].Value = newPostCount; _memberService.Save(baseMember); }
public ActionResult ForgotPassword(ForgotPasswordViewModel model) { var changePasswordSucceeded = true; var currentUser = new Member(); var newPassword = AppHelpers.RandomString(8); try { if (ModelState.IsValid) { currentUser = ServiceFactory.MemberService.GetByEmail(model.EmailAddress); if (currentUser != null) { changePasswordSucceeded = ServiceFactory.MemberService.ResetPassword(currentUser, newPassword); } else { changePasswordSucceeded = false; } } } catch (Exception ex) { LogError(string.Format("Error resetting password for {0}", model.EmailAddress), ex); changePasswordSucceeded = false; } if (changePasswordSucceeded) { var sb = new StringBuilder(); sb.AppendFormat("<p>{0}</p>", string.Format(Lang("Members.ForgotPassword.Email"), Settings.ForumName)); sb.AppendFormat("<p><b>{0}</b></p>", newPassword); var email = new Email { EmailFrom = Settings.NotificationReplyEmailAddress, EmailTo = currentUser.Email, NameTo = currentUser.UserName, Subject = Lang("Members.ForgotPassword.Subject") }; email.Body = ServiceFactory.EmailService.EmailTemplate(email.NameTo, sb.ToString()); ServiceFactory.EmailService.SendMail(email); // We use temp data because we are doing a redirect ShowMessage(new GenericMessageViewModel { Message = Lang("Members.ForgotPassword.SuccessMessage"), MessageType = GenericMessages.Success }); return(CurrentUmbracoPage()); } ModelState.AddModelError("", Lang("Members.ForgotPassword.ErrorMessage")); // Hack to show form validation ShowModelErrors(); return(CurrentUmbracoPage()); }
public bool Delete(Member member, UnitOfWork unitOfWork) { if (DeleteAllAssociatedMemberInfo(member.Id, unitOfWork)) { var baseMember = _memberService.GetById(member.Id); _memberService.Delete(baseMember); return(true); } return(false); }
/// <summary> /// Use this when banning a spammer /// They use signature and website fields for urls. This clears both as well as banning them /// </summary> /// <param name="member"></param> /// <param name="banMemberToo"></param> public void KillSpammer(Member member, bool banMemberToo = false) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberWebsite].Value = string.Empty; baseMember.Properties[AppConstants.PropMemberSignature].Value = string.Empty; baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 1; baseMember.Properties[AppConstants.PropMemberPostCount].Value = 0; _memberService.Save(baseMember); }
public void ReducePostCount(Member member, int amount) { var baseMember = _memberService.GetById(member.Id); if (member.PostCount > 0) { baseMember.Properties[AppConstants.PropMemberPostCount].Value = (member.PostCount - amount); _memberService.Save(baseMember); } }
private string MarkPostUpOrDown(Post post, Member postWriter, Member voter, PostType postType) { // Check this user is not the post owner if (voter.Id != postWriter.Id) { // Not the same person, now check they haven't voted on this post before if (post.Votes.All(x => x.MemberId != CurrentMember.Id)) { // Points to add or subtract to a user var usersPoints = (postType == PostType.Negative) ? (-Settings.PointsDeductedForNegativeVote) : (Settings.PointsAddedForPositiveVote); // Update the users points who wrote the post ServiceFactory.MemberPointsService.Add(new MemberPoints { Points = usersPoints, Member = postWriter, MemberId = postWriter.Id, RelatedPostId = post.Id }); // Update the post with the new vote of the voter var vote = new Vote { Post = post, Member = voter, MemberId = voter.Id, Amount = (postType == PostType.Negative) ? (-1) : (1), VotedByMember = CurrentMember, DateVoted = DateTime.Now }; ServiceFactory.VoteService.Add(vote); // Update the post with the new points amount var allVotes = post.Votes.ToList(); var allVoteCount = allVotes.Sum(x => x.Amount); //var newPointTotal = (postType == PostType.Negative) ? (post.VoteCount - 1) : (post.VoteCount + 1); post.VoteCount = allVoteCount; var postTypeVoteCount = 0; if (postType == PostType.Positive) { postTypeVoteCount = allVotes.Count(x => x.Amount > 0); } else { postTypeVoteCount = allVotes.Count(x => x.Amount < 0); } return string.Concat(postTypeVoteCount, ",", allVoteCount); } } return "0"; }
public bool Rule(Member user) { var usersPosts = ServiceFactory.PostService.GetByMember(user.Id); var lastPost = usersPosts.OrderByDescending(x => x.DateCreated).FirstOrDefault(); if (lastPost != null && lastPost.PostContent.IndexOf("umbraco", StringComparison.CurrentCultureIgnoreCase) >= 0) { return true; } return false; }
public bool ResetPassword(Member member, string newPassword) { try { var iMember = _memberService.GetById(member.Id); _memberService.SavePassword(iMember, newPassword); return(true); } catch (Exception ex) { AppHelpers.LogError("ResetPassword()", ex); return(false); } }
public static List <Member> MapMember(List <IPublishedContent> members, bool populateAll = false) { if (members.Any()) { var ids = members.Select(x => x.Id).ToList(); var key = string.Format("umb-members-{0}", string.Join("-", ids.Select(x => x.ToString()).ToArray())); if (!HttpContext.Current.Items.Contains(key)) { var siteMembers = new List <Member>(); var allMembersPoints = ContextPerRequest.Db.MemberPoints.Where(x => ids.Contains(x.MemberId)).ToList(); var allBadges = new List <Badge>(); var allMembersVotes = new List <Vote>(); var allMembersBadges = new List <BadgeToMember>(); if (populateAll) { // Only now populate Badges, Votes and Checktimes allMembersBadges = ContextPerRequest.Db.BadgeToMember.Where(x => ids.Contains(x.MemberId)).ToList(); allBadges = ContextPerRequest.Db.Badge.ToList(); allMembersVotes = ContextPerRequest.Db.Vote.Where(x => ids.Contains(x.MemberId)).ToList(); } foreach (var member in members) { // Create new member var siteMember = new Member(); // Map Properties MapMemberProperties(member, siteMember); // Member Points siteMember.Points = allMembersPoints.Where(x => x.MemberId == siteMember.Id).ToList(); if (populateAll) { // Only now populate Badges, Votes and Checktimes var badgeIds = allMembersBadges.Where(x => x.MemberId == siteMember.Id).Select(x => x.DialogueBadgeId); siteMember.Badges = allBadges.Where(x => badgeIds.Contains(x.Id)).ToList(); siteMember.Votes = allMembersVotes.Where(x => x.MemberId == siteMember.Id).ToList(); } siteMembers.Add(siteMember); } HttpContext.Current.Items.Add(key, siteMembers); } return(HttpContext.Current.Items[key] as List <Member>); } return(new List <Member>()); }
private static void MapMemberProperties(IPublishedContent member, Member siteMember) { siteMember.Id = member.Id; siteMember.UserName = member.Name; siteMember.DateCreated = member.CreateDate; siteMember.Email = member.GetPropertyValue <string>(AppConstants.PropMemberEmail); siteMember.Signature = member.GetPropertyValue <string>(AppConstants.PropMemberSignature); siteMember.Website = member.GetPropertyValue <string>(AppConstants.PropMemberWebsite); siteMember.Twitter = member.GetPropertyValue <string>(AppConstants.PropMemberTwitter); siteMember.Avatar = member.GetPropertyValue <string>(AppConstants.PropMemberAvatar); siteMember.Comments = member.GetPropertyValue <string>(AppConstants.PropMemberUmbracoMemberComments); siteMember.LastActiveDate = member.GetPropertyValue <DateTime>(AppConstants.PropMemberLastActiveDate); siteMember.Slug = member.GetPropertyValue <string>(AppConstants.PropMemberSlug); siteMember.CanEditOtherMembers = member.GetPropertyValue <bool>(AppConstants.PropMemberCanEditOtherUsers); siteMember.DisableEmailNotifications = member.GetPropertyValue <bool>(AppConstants.PropMemberDisableEmailNotifications); siteMember.DisablePosting = member.GetPropertyValue <bool>(AppConstants.PropMemberDisablePosting); siteMember.DisablePrivateMessages = member.GetPropertyValue <bool>(AppConstants.PropMemberDisablePrivateMessages); siteMember.DisableFileUploads = member.GetPropertyValue <bool>(AppConstants.PropMemberDisableFileUploads); siteMember.PostCount = member.GetPropertyValue <int>(AppConstants.PropMemberPostCount); siteMember.FacebookAccessToken = member.GetPropertyValue <string>(AppConstants.PropMemberFacebookAccessToken); siteMember.FacebookId = member.GetPropertyValue <string>(AppConstants.PropMemberFacebookId); siteMember.GoogleAccessToken = member.GetPropertyValue <string>(AppConstants.PropMemberGoogleAccessToken); siteMember.GoogleId = member.GetPropertyValue <string>(AppConstants.PropMemberGoogleId); siteMember.IsApproved = member.GetPropertyValue <bool>(AppConstants.PropMemberUmbracoMemberApproved); siteMember.IsLockedOut = member.GetPropertyValue <bool>(AppConstants.PropMemberUmbracoMemberLockedOut); siteMember.LastLoginDate = member.GetPropertyValue <DateTime>(AppConstants.PropMemberUmbracoMemberLastLogin); var roleNames = AppHelpers.UmbServices().MemberService.GetAllRoles(siteMember.Id).ToList(); // We do this so it's only one trip, and then cache per request var allGroups = AppHelpers.GetAllMemberGroups(); var groups = new List <IMemberGroup>(); // Fish out the roles/groups we need foreach (var role in roleNames) { groups.Add(allGroups.FirstOrDefault(x => x.Name == role)); } siteMember.Groups = groups; }
/// <summary> /// Profile has been updated /// </summary> /// <param name="user"></param> public void ProfileUpdated(Member user) { var profileUpdatedActivity = ProfileUpdatedActivity.GenerateMappedRecord(user, DateTime.UtcNow); Add(profileUpdatedActivity); }
public ActionResult LogOn(LogOnViewModel model) { try { if (ModelState.IsValid) { var message = new GenericMessageViewModel(); var user = new Member(); if (ServiceFactory.MemberService.Login(model.UserName, model.Password)) { // Set last login date user = ServiceFactory.MemberService.Get(model.UserName); if (user.IsApproved && !user.IsLockedOut) { if (Url.IsLocalUrl(model.ReturnUrl) && model.ReturnUrl.Length > 1 && model.ReturnUrl.StartsWith("/") && !model.ReturnUrl.StartsWith("//") && !model.ReturnUrl.StartsWith("/\\")) { return Redirect(model.ReturnUrl); } message.Message = Lang("Members.NowLoggedIn"); message.MessageType = GenericMessages.Success; return RedirectToUmbracoPage(Dialogue.Settings().ForumId); } } // Only show if we have something to actually show to the user if (!string.IsNullOrEmpty(message.Message)) { ShowMessage(message); } else { if (user.IsApproved) { ModelState.AddModelError(string.Empty, Lang("Members.Errors.NotApproved")); } else if (user.IsLockedOut) { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LockedOut")); } else { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LogonGeneric")); } } } else { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LogonGeneric")); } } catch (Exception ex) { LogError("Error when user logging in", ex); } // Hack to show form validation ShowModelErrors(); return CurrentUmbracoPage(); }
public ActionResult LogOn(LogOnViewModel model) { try { if (ModelState.IsValid) { var message = new GenericMessageViewModel(); var user = new Member(); if (ServiceFactory.MemberService.Login(model.UserName, model.Password)) { // Set last login date user = ServiceFactory.MemberService.Get(model.UserName); if (user.IsApproved && !user.IsLockedOut) { if (Url.IsLocalUrl(model.ReturnUrl) && model.ReturnUrl.Length > 1 && model.ReturnUrl.StartsWith("/") && !model.ReturnUrl.StartsWith("//") && !model.ReturnUrl.StartsWith("/\\")) { return(Redirect(model.ReturnUrl)); } message.Message = Lang("Members.NowLoggedIn"); message.MessageType = GenericMessages.Success; return(RedirectToUmbracoPage(Dialogue.Settings().ForumId)); } } // Only show if we have something to actually show to the user if (!string.IsNullOrEmpty(message.Message)) { ShowMessage(message); } else { if (user.IsApproved) { ModelState.AddModelError(string.Empty, Lang("Members.Errors.NotApproved")); } else if (user.IsLockedOut) { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LockedOut")); } else { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LogonGeneric")); } } } else { ModelState.AddModelError(string.Empty, Lang("Members.Errors.LogonGeneric")); } } catch (Exception ex) { LogError("Error when user logging in", ex); } // Hack to show form validation ShowModelErrors(); return(CurrentUmbracoPage()); }
public void RefreshMemberPosts(Member member, int amount) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberPostCount].Value = amount; _memberService.Save(baseMember); }
public ActionResult ForgotPassword(ForgotPasswordViewModel model) { var changePasswordSucceeded = true; var currentUser = new Member(); var newPassword = AppHelpers.RandomString(8); try { if (ModelState.IsValid) { currentUser = ServiceFactory.MemberService.GetByEmail(model.EmailAddress); if (currentUser != null) { changePasswordSucceeded = ServiceFactory.MemberService.ResetPassword(currentUser, newPassword); } else { changePasswordSucceeded = false; } } } catch (Exception ex) { LogError(string.Format("Error resetting password for {0}", model.EmailAddress), ex); changePasswordSucceeded = false; } if (changePasswordSucceeded) { var sb = new StringBuilder(); sb.AppendFormat("<p>{0}</p>", string.Format(Lang("Members.ForgotPassword.Email"), Settings.ForumName)); sb.AppendFormat("<p><b>{0}</b></p>", newPassword); var email = new Email { EmailFrom = Settings.NotificationReplyEmailAddress, EmailTo = currentUser.Email, NameTo = currentUser.UserName, Subject = Lang("Members.ForgotPassword.Subject") }; email.Body = ServiceFactory.EmailService.EmailTemplate(email.NameTo, sb.ToString()); ServiceFactory.EmailService.SendMail(email); // We use temp data because we are doing a redirect ShowMessage(new GenericMessageViewModel { Message = Lang("Members.ForgotPassword.SuccessMessage"), MessageType = GenericMessages.Success }); return CurrentUmbracoPage(); } ModelState.AddModelError("", Lang("Members.ForgotPassword.ErrorMessage")); // Hack to show form validation ShowModelErrors(); return CurrentUmbracoPage(); }
/// <summary> /// New badge has been awarded /// </summary> /// <param name="badge"></param> /// <param name="user"> </param> /// <param name="timestamp"> </param> public void BadgeAwarded(Badge badge, Member user, DateTime timestamp) { var badgeActivity = BadgeActivity.GenerateMappedRecord(badge, user, timestamp); Add(badgeActivity); }
/// <summary> /// Mark a topic as solved /// </summary> /// <param name="topic"></param> /// <param name="post"></param> /// <param name="marker"></param> /// <param name="solutionWriter"></param> /// <returns>True if topic has been marked as solved</returns> public bool SolveTopic(Topic topic, Post post, Member marker, Member solutionWriter) { var solved = false; // Make sure this user owns the topic, if not do nothing if (topic.MemberId == marker.Id) { // Update the post post.IsSolution = true; // Update the topic topic.Solved = true; // Assign points // Do not give points to the user if they are marking their own post as the solution if (marker.Id != solutionWriter.Id) { ServiceFactory.MemberPointsService.Add(new MemberPoints { Points = Dialogue.Settings().PointsAddedForASolution, Member = solutionWriter, MemberId = solutionWriter.Id, RelatedPostId = post.Id }); } solved = true; } return solved; }
public void ApproveMember(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberUmbracoMemberApproved].Value = 1; _memberService.Save(baseMember); }
/// <summary> /// New member has joined /// </summary> /// <param name="user"></param> public void MemberJoined(Member user) { var memberJoinedActivity = MemberJoinedActivity.GenerateMappedRecord(user); Add(memberJoinedActivity); }
/// <summary> /// Return notifications for a specified user and category /// </summary> /// <param name="user"></param> /// <param name="category"></param> /// <returns></returns> public IList<CategoryNotification> GetByUserAndCategory(Member user, Category category) { return ContextPerRequest.Db.CategoryNotification.Where(x => x.CategoryId == category.Id && x.MemberId == user.Id).ToList(); }
public void Delete(int amount, Member user) { var points = ContextPerRequest.Db.MemberPoints.FirstOrDefault(x => x.Points == amount && x.MemberId == user.Id); Delete(points); }
/// <summary> /// Saves a front end member /// </summary> /// <param name="member"></param> /// <param name="changedUsername"></param> public void SaveMember(Member member, bool changedUsername) { var baseMember = _memberService.GetById(member.Id); // Only change username if it's different if (changedUsername) { baseMember.Username = member.UserName; baseMember.Name = member.UserName; } baseMember.Email = member.Email; baseMember.Properties[AppConstants.PropMemberSignature].Value = member.Signature; baseMember.Properties[AppConstants.PropMemberWebsite].Value = member.Website; baseMember.Properties[AppConstants.PropMemberTwitter].Value = member.Twitter; baseMember.Properties[AppConstants.PropMemberAvatar].Value = member.Avatar; baseMember.Properties[AppConstants.PropMemberCanEditOtherUsers].Value = member.CanEditOtherMembers; baseMember.Properties[AppConstants.PropMemberDisableEmailNotifications].Value = member.DisableEmailNotifications; baseMember.Properties[AppConstants.PropMemberDisablePosting].Value = member.DisablePosting; baseMember.Properties[AppConstants.PropMemberDisablePrivateMessages].Value = member.DisablePrivateMessages; baseMember.Properties[AppConstants.PropMemberDisableFileUploads].Value = member.DisableFileUploads; baseMember.Properties[AppConstants.PropMemberUmbracoMemberComments].Value = member.Comments; _memberService.Save(baseMember); }
public void RefreshMemberPosts(Member member, int amount) { var baseMember = _memberService.GetById(member.Id); if (baseMember.ContentTypeAlias == "DialogueMember") { baseMember.Properties[AppConstants.PropMemberPostCount].Value = amount; _memberService.Save(baseMember); } baseMember.Properties[AppConstants.PropMemberPostCount].Value = amount; _memberService.Save(baseMember); }
/// <summary> /// Use this when banning a spammer /// They use signature and website fields for urls. This clears both as well as banning them /// </summary> /// <param name="member"></param> /// <param name="banMemberToo"></param> public void KillSpammer(Member member, bool banMemberToo = false) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberWebsite].Value = string.Empty; baseMember.Properties[AppConstants.PropMemberSignature].Value = string.Empty; baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 1; baseMember.Properties[AppConstants.PropMemberPostCount].Value = 0; _memberService.Save(baseMember); }
public void AddPostCount(Member member) { var baseMember = _memberService.GetById(member.Id); var newPostCount = (member.PostCount + 1); baseMember.Properties[AppConstants.PropMemberPostCount].Value = newPostCount; _memberService.Save(baseMember); }
public bool Rule(Member user) { return ServiceFactory.TopicService.GetSolvedTopicsByMember(user.Id).Count >= 1; }
public bool Delete(Member member, UnitOfWork unitOfWork) { if (DeleteAllAssociatedMemberInfo(member.Id, unitOfWork)) { var baseMember = _memberService.GetById(member.Id); _memberService.Delete(baseMember); return true; } return false; }
/// <summary> /// Return list of paged private messages by sent user /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="user"></param> /// <returns></returns> public PagedList<PrivateMessage> GetPagedSentMessagesByUser(int pageIndex, int pageSize, Member user) { var totalCount = ContextPerRequest.Db.PrivateMessage.Count(x => x.MemberFromId == user.Id); // Get the topics using an efficient var results = ContextPerRequest.Db.PrivateMessage.AsNoTracking() .Where(x => x.MemberFromId == user.Id) .Where(x => x.IsSentMessage == true) .OrderByDescending(x => x.DateSent) .Skip((pageIndex - 1) * pageSize) .Take(pageSize) .ToList(); PopulateMembers(results); // Return a paged list return new PagedList<PrivateMessage>(results, pageIndex, pageSize, totalCount); }
public void ReducePostCount(Member member, int amount) { var baseMember = _memberService.GetById(member.Id); if (member.PostCount > 0) { baseMember.Properties[AppConstants.PropMemberPostCount].Value = (member.PostCount - amount); _memberService.Save(baseMember); } }
public void UpdateLastActiveDate(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberLastActiveDate].Value = member.LastActiveDate; _memberService.Save(baseMember); }
public bool ResetPassword(Member member, string newPassword) { try { var iMember = _memberService.GetById(member.Id); _memberService.SavePassword(iMember, newPassword); return true; } catch (Exception ex) { AppHelpers.LogError("ResetPassword()", ex); return false; } }
public bool Rule(Member user) { var points = user.Points.Sum(x => x.Points); return points >= 1000; }
public void UnBanMember(Member member) { var baseMember = _memberService.GetById(member.Id); baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 0; _memberService.Save(baseMember); }
public IList<MemberPoints> GetByUser(Member user) { return GetByUser(user.Id); }
/// <summary> /// Add a new post /// </summary> /// <param name="postContent"> </param> /// <param name="topic"> </param> /// <param name="user"></param> /// <param name="permissions"> </param> /// <returns>True if post added</returns> public Post AddNewPost(string postContent, Topic topic, Member user, out PermissionSet permissions) { // Get the permissions for the category that this topic is in permissions = ServiceFactory.PermissionService.GetPermissions(topic.Category, user.Groups.FirstOrDefault()); // Check this users role has permission to create a post if (permissions[AppConstants.PermissionDenyAccess].IsTicked || permissions[AppConstants.PermissionReadOnly].IsTicked) { // Throw exception so Ajax caller picks it up throw new ApplicationException(AppHelpers.Lang("Errors.NoPermission")); } // Has permission so create the post var newPost = new Post { PostContent = postContent, Member = user, MemberId = user.Id, Topic = topic, IpAddress = AppHelpers.GetUsersIpAddress(), DateCreated = DateTime.UtcNow, DateEdited = DateTime.UtcNow }; newPost = SanitizePost(newPost); var category = topic.Category; if (category.ModerateAllPostsInThisCategory == true) { newPost.Pending = true; } // create the post Add(newPost); // Update the users points score and post count for posting ServiceFactory.MemberPointsService.Add(new MemberPoints { Points = Dialogue.Settings().PointsAddedPerNewPost, MemberId = user.Id, RelatedPostId = newPost.Id }); // add the last post to the topic topic.LastPost = newPost; // Add post to members count ServiceFactory.MemberService.AddPostCount(user); return newPost; }
/// <summary> /// Return notifications for a specified user /// </summary> /// <param name="user"></param> /// <returns></returns> public IList<CategoryNotification> GetByUser(Member user) { return GetByUser(user.Id); }