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)); }
/// <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; } }