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; }
/// <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); }