Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public void RefreshMemberPosts(Member member, int amount)
        {
            var baseMember = _memberService.GetById(member.Id);

            baseMember.Properties[AppConstants.PropMemberPostCount].Value = amount;
            _memberService.Save(baseMember);
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        public void ApproveMember(Member member)
        {
            var baseMember = _memberService.GetById(member.Id);

            baseMember.Properties[AppConstants.PropMemberUmbracoMemberApproved].Value = 1;
            _memberService.Save(baseMember);
        }
Ejemplo n.º 7
0
        public void UnBanMember(Member member)
        {
            var baseMember = _memberService.GetById(member.Id);

            baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 0;
            _memberService.Save(baseMember);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        public void UpdateLastActiveDate(Member member)
        {
            var baseMember = _memberService.GetById(member.Id);

            baseMember.Properties[AppConstants.PropMemberLastActiveDate].Value = member.LastActiveDate;
            _memberService.Save(baseMember);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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());
        }
Ejemplo n.º 12
0
 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);
 }
Ejemplo n.º 13
0
        /// <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);
        }
Ejemplo n.º 14
0
        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);
            }
        }
Ejemplo n.º 15
0
        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";
        }
Ejemplo n.º 16
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;
        }
Ejemplo n.º 17
0
 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);
     }
 }
Ejemplo n.º 18
0
        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>());
        }
Ejemplo n.º 19
0
        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;
        }
Ejemplo n.º 20
0
 /// <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();
        }
Ejemplo n.º 22
0
        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());
        }
Ejemplo n.º 23
0
 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();
        }
Ejemplo n.º 25
0
 /// <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);
 }
Ejemplo n.º 26
0
        /// <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;
        }
Ejemplo n.º 27
0
 public void ApproveMember(Member member)
 {
     var baseMember = _memberService.GetById(member.Id);
     baseMember.Properties[AppConstants.PropMemberUmbracoMemberApproved].Value = 1;
     _memberService.Save(baseMember);
 }
Ejemplo n.º 28
0
 /// <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();
 }
Ejemplo n.º 30
0
 public void Delete(int amount, Member user)
 {
     var points = ContextPerRequest.Db.MemberPoints.FirstOrDefault(x => x.Points == amount && x.MemberId == user.Id);
     Delete(points);
 }
Ejemplo n.º 31
0
        /// <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);
        }
Ejemplo n.º 32
0
 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);
 }
Ejemplo n.º 33
0
 /// <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);
 }
Ejemplo n.º 34
0
 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);
 }
Ejemplo n.º 35
0
 public bool Rule(Member user)
 {
     return ServiceFactory.TopicService.GetSolvedTopicsByMember(user.Id).Count >= 1;
 }
Ejemplo n.º 36
0
 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;
 }
Ejemplo n.º 37
0
        /// <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);
        }
Ejemplo n.º 38
0
 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);
     }
 }
Ejemplo n.º 39
0
 public void UpdateLastActiveDate(Member member)
 {
     var baseMember = _memberService.GetById(member.Id);
     baseMember.Properties[AppConstants.PropMemberLastActiveDate].Value = member.LastActiveDate;
     _memberService.Save(baseMember);
 }
Ejemplo n.º 40
0
 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;
     }
 }
Ejemplo n.º 41
0
 public bool Rule(Member user)
 {
     var points = user.Points.Sum(x => x.Points);
     return points >= 1000;
 }
Ejemplo n.º 42
0
 public void UnBanMember(Member member)
 {
     var baseMember = _memberService.GetById(member.Id);
     baseMember.Properties[AppConstants.PropMemberUmbracoMemberLockedOut].Value = 0;
     _memberService.Save(baseMember);
 }
Ejemplo n.º 43
0
 public IList<MemberPoints> GetByUser(Member user)
 {
     return GetByUser(user.Id);
 }
Ejemplo n.º 44
0
        /// <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);
 }