public static EmailRequest UpdateFrom(this EmailRequest thisObject, object request) { //// TODO: Need to Get the Email request from the content of the message. //// TODO: Also we need to write a static methods for converting from the input request to the Email Request. if (thisObject == null) { thisObject = new EmailRequest(); } JoinCommunityRequest joinRequest = request as JoinCommunityRequest; if (joinRequest != null) { return(thisObject.UpdateFrom(joinRequest)); } FlaggedRequest flaggedRequest = request as FlaggedRequest; if (flaggedRequest != null) { return(thisObject.UpdateFrom(flaggedRequest)); } EntityCommentRequest entityCommentRequest = request as EntityCommentRequest; if (entityCommentRequest != null) { return(thisObject.UpdateFrom(entityCommentRequest)); } ModeratorPermissionStatusRequest moderatorPermissionStatusRequest = request as ModeratorPermissionStatusRequest; if (moderatorPermissionStatusRequest != null) { return(thisObject.UpdateFrom(moderatorPermissionStatusRequest)); } UserPermissionStatusRequest userPermissionStatusRequest = request as UserPermissionStatusRequest; if (userPermissionStatusRequest != null) { return(thisObject.UpdateFrom(userPermissionStatusRequest)); } RemoveUserRequest removeUserRequest = request as RemoveUserRequest; if (removeUserRequest != null) { return(thisObject.UpdateFrom(removeUserRequest)); } UserPermissionChangedRequest userPermissionChangedRequest = request as UserPermissionChangedRequest; if (userPermissionChangedRequest != null) { return(thisObject.UpdateFrom(userPermissionChangedRequest)); } NotifyInviteRequest notifyInviteRequest = request as NotifyInviteRequest; if (notifyInviteRequest != null) { return(thisObject.UpdateFrom(notifyInviteRequest)); } EntityAdminActionRequest entityAdminDeleteRequest = request as EntityAdminActionRequest; if (entityAdminDeleteRequest != null) { return(thisObject.UpdateFrom(entityAdminDeleteRequest)); } NewEntityRequest newEntityRequest = request as NewEntityRequest; if (newEntityRequest != null) { return(thisObject.UpdateFrom(newEntityRequest)); } return(null); }
public static EmailRequest UpdateFrom(this EmailRequest thisObject, EntityCommentRequest 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> contributors = new List <User>(); IEnumerable <User> commenters = new List <User>(); string entityName = string.Empty; if (request.EntityType == EntityType.Content) { Content content = contentRepository.GetItem(c => c.ContentID == request.ID); if (content != null) { if (content.CommunityContents.Count > 0) { contributors = communityRepository.GetContributors(Enumerable.ElementAt <CommunityContents>(content.CommunityContents, 0).CommunityID); } contributors.Concat(new[] { content.User }); entityName = content.Title; } IContentCommentsRepository contentCommentsRepository = DependencyResolver.Current.GetService(typeof(IContentCommentsRepository)) as IContentCommentsRepository; commenters = contentCommentsRepository.GetCommenters(request.ID); } else { contributors = communityRepository.GetContributors(request.ID); Community community = communityRepository.GetItem(c => c.CommunityID == request.ID); if (community != null) { entityName = community.Name; } ICommunityCommentRepository communityCommentRepository = DependencyResolver.Current.GetService(typeof(ICommunityCommentRepository)) as ICommunityCommentRepository; commenters = communityCommentRepository.GetCommenters(request.ID); } List <User> recipients = new List <User>(); if (contributors != null && contributors.Count() > 0) { recipients.AddRange(contributors); } if (commenters != null && commenters.Count() > 0) { recipients.AddRange(commenters.Where(p => !contributors.Any(x => x.UserID.Equals(p.UserID)))); } foreach (User user in recipients) { if (user.IsSubscribed && user.UserID != request.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.UserID); thisObject.IsHtml = true; // Update the body and the subject. thisObject.Subject = string.Format(CultureInfo.CurrentUICulture, "{0} has commented on the Layerscape {1} \"{2}\"", requestor.GetFullName(), request.EntityType.ToString().ToLower(), entityName); var replacements = new Dictionary <string, string> { { "@@RecipientName@@", string.Empty }, { "@@Type@@", HttpUtility.UrlDecode(request.EntityType.ToString().ToLower()) }, { "@@Name@@", HttpUtility.UrlDecode(entityName) }, { "@@Link@@", HttpUtility.UrlDecode(request.Link) }, { "@@UserName@@", HttpUtility.UrlDecode(requestor.GetFullName()) }, { "@@UserLink@@", HttpUtility.UrlDecode(request.UserLink) }, { "@@UserComments@@", HttpUtility.UrlDecode(request.UserComments) }, }; thisObject.MessageBody = FormatMailBodyUsingTemplate("entitycommentrequest.html", replacements); return(thisObject); }
/// <summary> /// Notify the moderators and owners about a new comment on an entity. /// </summary> /// <param name="notification">Comment details</param> public void NotifyEntityComment(EntityCommentRequest notification) { SendMail(notification); }
public static EmailRequest UpdateFrom(this EmailRequest thisObject, EntityCommentRequest 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> contributors = new List<User>(); IEnumerable<User> commenters = new List<User>(); string entityName = string.Empty; if (request.EntityType == EntityType.Content) { Content content = contentRepository.GetItem(c => c.ContentID == request.ID); if (content != null) { if (content.CommunityContents.Count > 0) { contributors = communityRepository.GetContributors(Enumerable.ElementAt<CommunityContents>(content.CommunityContents, 0).CommunityID); } contributors.Concat(new[] { content.User }); entityName = content.Title; } IContentCommentsRepository contentCommentsRepository = DependencyResolver.Current.GetService(typeof(IContentCommentsRepository)) as IContentCommentsRepository; commenters = contentCommentsRepository.GetCommenters(request.ID); } else { contributors = communityRepository.GetContributors(request.ID); Community community = communityRepository.GetItem(c => c.CommunityID == request.ID); if (community != null) { entityName = community.Name; } ICommunityCommentRepository communityCommentRepository = DependencyResolver.Current.GetService(typeof(ICommunityCommentRepository)) as ICommunityCommentRepository; commenters = communityCommentRepository.GetCommenters(request.ID); } List<User> recipients = new List<User>(); if (contributors != null && contributors.Count() > 0) { recipients.AddRange(contributors); } if (commenters != null && commenters.Count() > 0) { recipients.AddRange(commenters.Where(p => !contributors.Any(x => x.UserID.Equals(p.UserID)))); } foreach (User user in recipients) { if (user.IsSubscribed && user.UserID != request.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.UserID); thisObject.IsHtml = true; // Update the body and the subject. thisObject.Subject = string.Format(CultureInfo.CurrentUICulture, "{0} has commented on the Layerscape {1} \"{2}\"", requestor.GetFullName(), request.EntityType.ToString().ToLower(), entityName); var replacements = new Dictionary<string, string> { { "@@RecipientName@@", string.Empty }, { "@@Type@@", HttpUtility.UrlDecode(request.EntityType.ToString().ToLower()) }, { "@@Name@@", HttpUtility.UrlDecode(entityName) }, { "@@Link@@", HttpUtility.UrlDecode(request.Link) }, { "@@UserName@@", HttpUtility.UrlDecode(requestor.GetFullName()) }, { "@@UserLink@@", HttpUtility.UrlDecode(request.UserLink) }, { "@@UserComments@@", HttpUtility.UrlDecode(request.UserComments) }, }; thisObject.MessageBody = FormatMailBodyUsingTemplate("entitycommentrequest.html", replacements); return thisObject; }