Example #1
0
        private void SendProcessingStatusMail(PermissionItem permission)
        {
            try
            {
                // Send Mail for moderators.
                var moderatorPermissionStatusRequest = new ModeratorPermissionStatusRequest();
                moderatorPermissionStatusRequest.CommunityID = permission.CommunityID;
                moderatorPermissionStatusRequest.CommunityName = permission.CommunityName;
                moderatorPermissionStatusRequest.RequestorID = permission.UserID;
                moderatorPermissionStatusRequest.RequestorName = permission.Name;
                moderatorPermissionStatusRequest.ApprovedRole = permission.Role;
                moderatorPermissionStatusRequest.IsApproved = permission.Approved == true;
                moderatorPermissionStatusRequest.RequestorLink = string.Format(CultureInfo.InvariantCulture, "{0}Profile/Index/{1}", HttpContext.Request.Url.GetServerLink(), permission.UserID);
                moderatorPermissionStatusRequest.CommunityLink = string.Format(CultureInfo.InvariantCulture, "{0}Community/Index/{1}", HttpContext.Request.Url.GetServerLink(), permission.CommunityID);

                _notificationService.NotifyModeratorPermissionStatus(moderatorPermissionStatusRequest);

                // Send Mail for moderators.
                var request = new UserPermissionStatusRequest();
                request.CommunityID = permission.CommunityID;
                request.CommunityName = permission.CommunityName;
                request.RequestorID = permission.UserID;
                request.RequestorName = permission.Name;
                request.IsApproved = permission.Approved == true;
                request.RequestorLink = string.Format(CultureInfo.InvariantCulture, "{0}Profile/Index/{1}", HttpContext.Request.Url.GetServerLink(), permission.UserID);
                request.CommunityLink = string.Format(CultureInfo.InvariantCulture, "{0}Community/Index/{1}", HttpContext.Request.Url.GetServerLink(), permission.CommunityID);

                _notificationService.NotifyUserRequestPermissionStatus(request);
            }
            catch (Exception)
            {
                // Ignore all exceptions.
            }
        }
        public static EmailRequest UpdateFrom(this EmailRequest thisObject, ModeratorPermissionStatusRequest request)
        {
            if (thisObject == null)
            {
                thisObject = new EmailRequest();
            }

            ICommunityRepository communityRepository = DependencyResolver.Current.GetService(typeof(ICommunityRepository)) as ICommunityRepository;
            IContentRepository contentRepository = DependencyResolver.Current.GetService(typeof(IContentRepository)) as IContentRepository;

            IEnumerable<User> approvers = new List<User>();

            string entityName = string.Empty;
            bool isFolder = false;

            approvers = communityRepository.GetApprovers(request.CommunityID);
            Community community = communityRepository.GetItem(c => c.CommunityID == request.CommunityID);
            if (community != null)
            {
                entityName = community.Name;
                isFolder = community.CommunityTypeID == (int)CommunityTypes.Folder;
            }

            foreach (User user in approvers)
            {
                if (user.IsSubscribed && !(request.ApprovedRole >= UserRole.Moderator && request.RequestorID == user.UserID))
                {
                    thisObject.Recipients.Add(new MailAddress(user.Email.FixEmailAddress(), user.FirstName + " " + user.LastName));
                }
            }

            IUserRepository userRepository = DependencyResolver.Current.GetService(typeof(IUserRepository)) as IUserRepository;
            User requestor = userRepository.GetItem(u => u.UserID == request.RequestorID);

            thisObject.IsHtml = true;

            // Update the body and the subject.
            thisObject.Subject = string.Format(CultureInfo.CurrentUICulture, "Request from {0} to join the Layerscape {1} {2} has been {3}", requestor.GetFullName(), isFolder ? "folder" : "community", entityName, request.IsApproved ? "Approved" : "Denied");

            var replacements = new Dictionary<string, string>
            {
                { "@@ApproverName@@", string.Empty }, 
                { "@@CommunityName@@", HttpUtility.UrlDecode(entityName) }, 
                { "@@CommunityLink@@", HttpUtility.UrlDecode(request.CommunityLink) },
                { "@@RequestorName@@", HttpUtility.UrlDecode(requestor.GetFullName()) },
                { "@@RequestorID@@", request.RequestorID.ToString() },
                { "@@RequestorLink@@", HttpUtility.UrlDecode(request.RequestorLink) },
                { "@@CommunityType@@", isFolder ? "folder" : "community" },
                { "@@PermissionStatus@@", HttpUtility.UrlDecode(request.IsApproved ? "Approved" : "Denied") },
            };
            thisObject.MessageBody = FormatMailBodyUsingTemplate("moderatorsapprovedrequest.html", replacements);

            return thisObject;
        }
Example #3
0
 /// <summary>
 /// Notify the moderators and owners about a approval/denial on a user request.
 /// </summary>
 /// <param name="notification">Permission details</param>
 public void NotifyModeratorPermissionStatus(ModeratorPermissionStatusRequest notification)
 {
     SendMail(notification);
 }