Beispiel #1
0
        public bool AddNewFeedbackMail(Notification notification, User addedFor, int feedbackId)
        {
            User         addedByUser  = UserDataAccesor.GetUserById(notification.AddedBy);
            EmailContent emailContent = GetEmailContent(notification
                                                        , addedByUser
                                                        , notification.Title);

            emailContent.EmailRecipients.Add(new EmailRecipient
            {
                EmailAddress       = addedFor.Email,
                EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
            });


            foreach (var user in UnitOfWork.EmailAlertSubscriptionRepository.GetAllSubscribedMentors(addedFor.UserId)
                     .Where(user => user.SubscribedByUserId != addedByUser.UserId))
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = user.User.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
                });
            }

            UnitOfWork.EmailRepository.Add(emailContent); //TODO:EmailRepository needs to be EmailContentRepository.
            return(UnitOfWork.Commit() > 0);
        }
Beispiel #2
0
        public bool AddSessionMail(Notification notification, Common.Entity.Session session)
        {
            User         addedByUser  = UserDataAccesor.GetUserById(notification.AddedBy);
            EmailContent emailContent = GetEmailContent(notification
                                                        , addedByUser
                                                        , notification.Title);

            foreach (var user in UnitOfWork.SessionRepository.GetSessionWithAttendees(session.Id).UserSessionMappings)
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = user.User1.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                });
            }

            emailContent.EmailRecipients.Add(new EmailRecipient
            {
                EmailAddress       = addedByUser.Email,
                EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
            });

            UnitOfWork.EmailRepository.Add(emailContent); //TODO:EmailRepository needs to be EmailContentRepository.
            return(UnitOfWork.Commit() > 0);
        }
Beispiel #3
0
        public bool AddNewDiscussionMail(Notification notification)
        {
            User addedByUser = UserDataAccesor.GetUserById(notification.AddedBy);
            List <EmailAlertSubscription> subscriptionList = UnitOfWork.EmailAlertSubscriptionRepository
                                                             .GetAllSubscribedMentors(addedByUser.UserId)
                                                             .Where(x => x.SubscribedByUserId != addedByUser.UserId)
                                                             .Distinct()
                                                             .ToList();

            if (!subscriptionList.Any())
            {
                return(true);                         // escape the routine if no one is subscribed to this trainee.
            }
            EmailContent emailContent = GetEmailContent(notification, addedByUser, notification.Title);

            foreach (var user in subscriptionList)
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = user.User.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                });
            }

            UnitOfWork.EmailRepository.Add(emailContent);
            return(UnitOfWork.Commit() > 0);
        }
Beispiel #4
0
 private EmailContent GetEmailContent(Notification notification, User addedBy, string title)
 {
     return(new EmailContent
     {
         BodyText = GenerateFeedbackMailBody(notification.Link, addedBy, title),
         Attempts = 0,
         IsRichBody = true,
         SubjectText = notification.Title,
         TaskSchedulerJobId = 2,
         IsSent = false
     });
 }
Beispiel #5
0
        public bool AddNewDiscussionThreadMail(Notification notification, int discussionPostId)
        {
            User addedByUser = UserDataAccesor.GetUserById(notification.AddedBy);
            ForumDiscussionPost           forumDiscussionPost = UnitOfWork.ForumDiscussionPostRepository.GetPostWithThreads(discussionPostId);
            List <EmailAlertSubscription> subscriptionList    = UnitOfWork.EmailAlertSubscriptionRepository
                                                                .GetAllSubscribedMentors(forumDiscussionPost.AddedBy)
                                                                .Where(x => x.SubscribedByUserId != addedByUser.UserId)
                                                                .ToList();

            EmailContent emailContent = GetEmailContent(notification, addedByUser, notification.Title);

            List <DAL.EntityFramework.User> allUsers = forumDiscussionPost.ForumDiscussionThreads.Where(x => x.AddedBy != addedByUser.UserId)
                                                       .Select(x => x.User)
                                                       .Union(subscriptionList.Select(x => x.User))
                                                       .ToList();

            if (addedByUser.UserId != forumDiscussionPost.AddedBy)
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = forumDiscussionPost.User.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                });

                foreach (DAL.EntityFramework.User user in allUsers)
                {
                    emailContent.EmailRecipients.Add(new EmailRecipient
                    {
                        EmailAddress       = user.Email,
                        EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
                    });
                }
            }
            else
            {
                if (!allUsers.Any())
                {
                    return(true);                 // / escape the routine if no one is subscribed to this trainee.
                }
                foreach (DAL.EntityFramework.User user in allUsers)
                {
                    emailContent.EmailRecipients.Add(new EmailRecipient
                    {
                        EmailAddress       = user.Email,
                        EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                    });
                }
            }
            UnitOfWork.EmailRepository.Add(emailContent);
            return(UnitOfWork.Commit() > 0);
        }
Beispiel #6
0
        public bool AddNewFeedbackThreadMail(Notification notification, int feedbackId)
        {
            // This need to be changed... but How!!
            var addedByUser = UserDataAccesor.GetUserById(notification.AddedBy);

            Feedback feedback = UnitOfWork.FeedbackRepository.Get(feedbackId);

            EmailContent emailContent = GetEmailContent(notification
                                                        , addedByUser
                                                        , notification.Title);


            if (notification.AddedBy == feedback.User1.UserId)
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = feedback.User.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                });
            }
            else
            {
                emailContent.EmailRecipients.Add(new EmailRecipient
                {
                    EmailAddress       = feedback.User1.Email,
                    EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.To
                });

                if (notification.AddedBy != feedback.User.UserId)
                {
                    emailContent.EmailRecipients.Add(new EmailRecipient
                    {
                        EmailAddress       = feedback.User.Email,
                        EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
                    });
                }
            }

            foreach (var user in UnitOfWork.EmailAlertSubscriptionRepository.GetAllSubscribedMentors(feedback.User1.UserId)
                     .Where(user => user.SubscribedByUserId != addedByUser.UserId))
            {
                if (emailContent.EmailRecipients.All(x => x.EmailAddress != user.User.Email))
                {
                    emailContent.EmailRecipients.Add(new EmailRecipient
                    {
                        EmailAddress       = user.User.Email,
                        EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
                    });
                }
            }


            foreach (var thread in feedback.FeedbackThreads.Where(user => user.AddedBy != addedByUser.UserId))
            {
                if (emailContent.EmailRecipients.All(x => x.EmailAddress != thread.User.Email))
                {
                    emailContent.EmailRecipients.Add(new EmailRecipient
                    {
                        EmailAddress       = thread.User.Email,
                        EmailRecipientType = (int)Common.Enumeration.EmailRecipientType.CarbonCopy
                    });
                }
            }

            UnitOfWork.EmailRepository.Add(emailContent);
            return(UnitOfWork.Commit() > 0);
        }