Exemplo n.º 1
0
        private List <EmailInfo> GenerateNotifications(List <Lesson> lessons, Enumerations.NotificationEmailType notificationType)
        {
            List <EmailInfo> emailList = new List <EmailInfo>();

            if (lessons != null && lessons.Count > 0)
            {
                ApplicationContext appContext = new ApplicationContext(this.HttpContext);

                foreach (var lesson in lessons)
                {
                    //If this key exists in the web.config, re-direct all emails to that address.
                    string overrideEmailAddress = Utility.SafeGetAppConfigSetting <string>("Debug_OverrideEmailAddress", null);

                    EmailTemplateViewData model = new EmailTemplateViewData(LessonViewModel.ToViewModel(this.HttpContext, lesson), notificationType, appContext, overrideEmailAddress);
                    string emailMessageBody     = Utils.RenderPartialViewToString(this, "EmailTemplate", model);

                    EmailInfo emailInfo = new EmailInfo
                    {
                        Body    = emailMessageBody,
                        MailTo  = model.Redirecting ? model.OverrideMailTo : model.MailTo,
                        Subject = model.Subject
                    };

                    //Only send 1 email per email address
                    if (!emailList.Where(x => x.MailTo == emailInfo.MailTo).Any())
                    {
                        emailList.Add(emailInfo);
                    }
                }
            }

            return(emailList);
        }
Exemplo n.º 2
0
        private void SendNotification(Lesson lesson, Enumerations.NotificationEmailType notificationType)
        {
            List <EmailInfo> email = new List <EmailInfo>();

            if (lesson != null)
            {
                email = GenerateNotifications(new List <Lesson> {
                    lesson
                }, notificationType);
            }

            LessonBusiness lessonManager = new LessonBusiness(DbContext);

            lessonManager.SendEmails(email);
        }
Exemplo n.º 3
0
        public EmailTemplateViewData(LessonViewModel lesson, Enumerations.NotificationEmailType notificationType, IApplicationContext appContext, string overrideMailTo = null)
        {
            Lesson           = lesson;
            NotificationType = notificationType;
            OwningUser       = appContext.AllUsers.Where(x => x.Sid == lesson.OwnerSid).FirstOrDefault() ?? new RoleUser();
            OwningBpo        = appContext.DisciplineUsers.Where(x => x.Primary && x.DisciplineId == lesson.DisciplineId).FirstOrDefault() ?? new RoleUser();
            Administrator    = appContext.Admins.Where(x => x.Primary).FirstOrDefault() ?? new RoleUser();
            AssignTo         = appContext.AllUsers.Where(x => x.Name == lesson.AssignToUserId).FirstOrDefault();

            if (lesson.CoordinatorOwnerSid == Constants.TextDefaults.LLCListPrimaryAdminLabel)
            {
                OwningCoordinator = Administrator;
            }
            else
            {
                OwningCoordinator = appContext.Coordinators.Where(x => x.Sid == lesson.CoordinatorOwnerSid).FirstOrDefault() ?? new RoleUser();
            }

            OwningCoordinatorCreator = appContext.Coordinators.Where(x => x.Sid == lesson.OwnerSid).FirstOrDefault() ?? new RoleUser();

            switch (notificationType)
            {
            case Enumerations.NotificationEmailType.N1_NewToAdmin:
                Subject = "ACTION REQUIRED: New Lesson Added to LLD";
                MailTo  = Administrator.Email;
                break;

            case Enumerations.NotificationEmailType.N2_AdminToBPO_And_BPOToBPO:
                Subject = "ACTION REQUIRED: You have lessons to validate";
                MailTo  = OwningBpo.Email;
                break;

            case Enumerations.NotificationEmailType.N3_AdminToClarification:
                Subject = "ACTION REQUIRED: You have lessons to clarify";
                MailTo  = OwningCoordinator.Email;
                break;

            case Enumerations.NotificationEmailType.N4_ClarificationToAdmin:
                Subject = "ACTION REQUIRED: Lesson Clarification Complete";
                MailTo  = Administrator.Email;
                break;

            case Enumerations.NotificationEmailType.N5_BPOToClarification:
                Subject = "ACTION REQUIRED: You have lessons to clarify";
                MailTo  = OwningCoordinator.Email;
                break;

            case Enumerations.NotificationEmailType.N6_ClarificationToBPO:
                Subject = "ACTION REQUIRED: Lesson Clarification Complete";
                MailTo  = OwningBpo.Email;
                break;

            case Enumerations.NotificationEmailType.N7_BPOToCloseLLC:
                Subject = "NOTIFICATION: Lesson validation is complete for #" + lesson.Id.ToString();
                MailTo  = OwningCoordinator.Email;
                break;

            case Enumerations.NotificationEmailType.N7_BPOToCloseOwner:
                Subject = "NOTIFICATION: Lesson validation is complete for #" + lesson.Id.ToString();
                MailTo  = OwningUser.Email;
                break;

            case Enumerations.NotificationEmailType.N8_BPOUnvalidatedReminder:
                Subject = "REMINDER: ACTION REQUIRED";
                MailTo  = OwningBpo.Email;
                break;

            case Enumerations.NotificationEmailType.N9_LLCDraftReminder:
                Subject = "REMINDER: ACTION REQUIRED";
                MailTo  = OwningCoordinatorCreator.Email;
                break;

            case Enumerations.NotificationEmailType.N10_AssignToUser:
                Subject = "ACTION REQUIRED: You have lessons to validate";
                MailTo  = AssignTo.Email;
                break;

            default:
                throw new ArgumentOutOfRangeException("notificationType");
            }

            if (string.IsNullOrWhiteSpace(overrideMailTo) && string.IsNullOrWhiteSpace(MailTo))
            {
                OverrideMailTo = Administrator.Email;
            }
            else
            {
                OverrideMailTo = overrideMailTo;
            }
        }