示例#1
0
        public void Call_send_mail_given_an_approval_state_changed_message_with_data_collection_in_submitted_state()
        {
            var handler = new NotifyApprovalStateChangedHandler(_mailer, _approvalStateChangedRepository, _urdmsUserService);

            _approvalStateChangedRepository
            .Get(Arg.Is(1))
            .Returns(new ApprovalStateChangedEmailData {
                DataCollectionTitle = "Test", ProjectTitle = "Test Project", Manager = "Paul McTest"
            });
            var urdmsUser = GetUrdmsUser("XX12343", "John", "Doe");

            _urdmsUserService.GetUser(Arg.Is(urdmsUser.UserId)).Returns(urdmsUser);

            Test.Handler(handler)
            .OnMessage <NotifyApprovalStateChanged>(m =>
            {
                m.ApprovalState    = DataCollectionApprovalState.Submitted.ToString();
                m.DataCollectionId = 1;
                m.Approver         = urdmsUser.UserId;
            });

            _mailer.Received().SendEmail(Arg.Any <ApprovalStateChangedEmail>(), "ApprovalStateChangedSubmitted");
            _approvalStateChangedRepository.Received().Get(Arg.Is(1));
        }
示例#2
0
        /// <summary>
        /// Handles the ApprovalStateChanged message.
        /// </summary>
        /// <param name="message">ApprovalStateChanged message.</param>
        public void Handle(NotifyApprovalStateChanged message)
        {
            var emailData = _approvalStateChangedRepository.Get(message.DataCollectionId);

            switch (message.ApprovalState)
            {
            case "Submitted":
                var submittedStateEmail = new ApprovalStateChangedEmail
                {
                    To = new List <string> {
                        _qaApprovalGroupEmail
                    },
                    Subject             = EmailTemplateSubject.ApprovalStateChangedSubmittedSubject,
                    ProjectTitle        = emailData.ProjectTitle,
                    DataCollectionTitle = emailData.DataCollectionTitle,
                    DataCollectionOwner = emailData.Manager,
                    ApproverId          = message.Approver,
                    ApproverName        = GetApproverName(message.Approver)
                };

                Log.InfoFormat("[URDMS] Sending Approval State Changed email. {0}.", submittedStateEmail);
                _mailer.SendEmail(submittedStateEmail, "ApprovalStateChangedSubmitted");
                break;

            case "QaApproved":
                var qaApprovedStateEmail = new ApprovalStateChangedEmail
                {
                    To = new List <string> {
                        _secondaryApprovalGroupEmail
                    },
                    Subject             = EmailTemplateSubject.ApprovalStateChangedQaApprovedSubject,
                    ProjectTitle        = emailData.ProjectTitle,
                    DataCollectionTitle = emailData.DataCollectionTitle,
                    DataCollectionOwner = emailData.Manager,
                    ApproverId          = message.Approver,
                    ApproverName        = GetApproverName(message.Approver)
                };
                Log.InfoFormat("[URDMS] Sending Approval State Changed email. {0}.", qaApprovedStateEmail);
                _mailer.SendEmail(qaApprovedStateEmail, "ApprovalStateChangedQaApproved");
                break;

            case "SecondaryApproved":
                var secondaryApprovedStateEmail = new ApprovalStateChangedEmail
                {
                    To = new List <string> {
                        _qaApprovalGroupEmail
                    },
                    Subject             = EmailTemplateSubject.ApprovalStateChangedSecondaryApprovedSubject,
                    ProjectTitle        = emailData.ProjectTitle,
                    DataCollectionTitle = emailData.DataCollectionTitle,
                    DataCollectionOwner = emailData.Manager,
                    ApproverId          = message.Approver,
                    ApproverName        = GetApproverName(message.Approver)
                };

                Log.InfoFormat("[URDMS] Sending Approval State Changed email. {0}.", secondaryApprovedStateEmail);
                _mailer.SendEmail(secondaryApprovedStateEmail, "ApprovalStateChangedSecondaryApproved");
                break;

            case "RecordAmended":
                var recordAmendedStateEmail = new ApprovalStateChangedEmail
                {
                    To = new List <string> {
                        _secondaryApprovalGroupEmail
                    },
                    Subject             = EmailTemplateSubject.ApprovalStateChangedRecordAmendedSubject,
                    ProjectTitle        = emailData.ProjectTitle,
                    DataCollectionTitle = emailData.DataCollectionTitle,
                    DataCollectionOwner = emailData.Manager,
                    ApproverId          = message.Approver,
                    ApproverName        = GetApproverName(message.Approver)
                };

                Log.InfoFormat("[URDMS] Sending Approval State Changed email. {0}.", recordAmendedStateEmail);
                _mailer.SendEmail(recordAmendedStateEmail, "ApprovalStateChangedRecordAmended");
                break;

            case "Published":
                var managerEmailAddress = _userService.GetUser(emailData.ManagerId).EmailAddress;
                var publishedStateEmail = new ApprovalStateChangedEmail
                {
                    To = new List <string> {
                        managerEmailAddress
                    },
                    Subject             = EmailTemplateSubject.ApprovalStateChangedPublishedSubject,
                    ProjectTitle        = emailData.ProjectTitle,
                    DataCollectionTitle = emailData.DataCollectionTitle
                };

                Log.InfoFormat("[URDMS] Sending Approval State Changed email. {0}.", publishedStateEmail);
                _mailer.SendEmail(publishedStateEmail, "ApprovalStateChangedPublished");
                break;
            }
        }