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;
        }
Esempio n. 5
0
 /// <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);
 }