private List<SiteDetails> getOfflineSitesToReport(List<string> healthboardsThatHaveExceededNumberOfOfflineSitesToBeReportedLimit) { // Get offline sites to be reported var sitesToBeReportedInOfflineSitesTable = (from x in _reportingEntity.tbRPT_OfflineSites where x.DateOfflineNotificationSent == null && !(healthboardsThatHaveExceededNumberOfOfflineSitesToBeReportedLimit.Contains(x.Healthboard)) select x); List<SiteDetails> offlineSitesToReport = new List<SiteDetails>(); foreach (var siteToBeReportedOffline in sitesToBeReportedInOfflineSitesTable) { string orgId = siteToBeReportedOffline.Org; string supplier = siteToBeReportedOffline.Supplier; string healthboard = siteToBeReportedOffline.Healthboard; string orgName = getOrgName(orgId); string supplierRef = getSupplierReference(orgId); DateTime? lastMsgDate = getLastMessageDate(orgId); SiteDetails siteToBeReportedDetails = new SiteDetails(orgId, orgName, healthboard, supplier, supplierRef, lastMsgDate); offlineSitesToReport.Add(siteToBeReportedDetails); } return offlineSitesToReport; }
private string setEmailBody(SiteDetails siteToBeReportedOffline) { string emailBody = null; if (siteToBeReportedOffline.Supplier == "EMIS") emailBody = setEmailBodyForEmisSite(siteToBeReportedOffline); else if (siteToBeReportedOffline.Supplier == "INPS") emailBody = setEmailBodyForInpsSite(siteToBeReportedOffline); return emailBody; }
private string setEmailBodyForEmisSite(SiteDetails siteToBeReportedOffline) { string emailBody = null; emailBody = "Transmission Fault in ePharmacy\n\n" + "This site (" + siteToBeReportedOffline.OrgName + ", CDB " + siteToBeReportedOffline.SupplierReference + ", OrgID " + siteToBeReportedOffline.OrgId + ") is reported as being offline. The last AMS message was received on " + siteToBeReportedOffline.LastMessageDate + "\n Please arrange for this to be investigated and brought back online as soon as possible."; return emailBody; }
private MailMessage CreateOfflineReport(SiteDetails siteToBeReportedOffline) { MailMessage offlineReport = new MailMessage(); // Get email address information MailAddress fromAddress = _repository.GetOfflineReportFromAddress(); MailAddress replyToAddress = _repository.GetOfflineReportReplyToAddress(); List<MailAddress> toAddresses = _repository.GetOfflineReportRecipients(siteToBeReportedOffline.Healthboard, siteToBeReportedOffline.Supplier); // Set email address information offlineReport.From = fromAddress; offlineReport.ReplyTo = replyToAddress; foreach (MailAddress toAddress in toAddresses) offlineReport.To.Add(toAddress); offlineReport.Subject = setEmailSubject(siteToBeReportedOffline); offlineReport.Body = setEmailBody(siteToBeReportedOffline); return offlineReport; }
public void CreateOfflineReports_MultipleOfflineSitesToBeReported_ReturnsExpectedOfflineReports() { string orgId1 = "1111"; string orgName1 = "testName1"; string healthboard1 = "testHealthboard"; string supplier1 = "EMIS"; string supplierReference1 = "emisRef"; string orgId2 = "2222"; string orgName2 = "testName2"; string healthboard2 = "testHealthboard2"; string supplier2 = "INPS"; string supplierReference2 = "inpsRef"; DateTime lastMessageDate = DateTime.Now.AddDays(-7); SiteDetails siteToBeReportedOffline1 = new SiteDetails(orgId1, orgName1, healthboard1, supplier1, supplierReference1, lastMessageDate); SiteDetails siteToBeReportedOffline2 = new SiteDetails(orgId2, orgName2, healthboard2, supplier2, supplierReference2, lastMessageDate); List<SiteDetails> sitesToBeReportedOffline = new List<SiteDetails>(); sitesToBeReportedOffline.Add(siteToBeReportedOffline1); sitesToBeReportedOffline.Add(siteToBeReportedOffline2); MailAddress fromAddress = new MailAddress("*****@*****.**"); MailAddress replyToAddress = new MailAddress("*****@*****.**"); MailAddress supplierAddress = new MailAddress("*****@*****.**"); MailAddress healthboardAddress = new MailAddress("*****@*****.**"); List<MailAddress> receipients = new List<MailAddress>(); receipients.Add(supplierAddress); receipients.Add(healthboardAddress); // Setup repository to return expected email addresses repositoryMock.Setup(x => x.GetOfflineReportFromAddress()).Returns(fromAddress); repositoryMock.Setup(x => x.GetOfflineReportReplyToAddress()).Returns(replyToAddress); repositoryMock.Setup(x => x.GetOfflineReportRecipients(It.IsAny<string>(), It.IsAny<string>())).Returns(receipients); string expectedLastMessageDateString = lastMessageDate.ToString(); string expectedEmisEmailSubject = "Transmission Fault in ePharmacy CDB emisRef (OrgID 1111)"; string expectedEmisEmailBody = "Transmission Fault in ePharmacy\n\n" + "This site (testName1, CDB emisRef, OrgID 1111) is reported as being offline. The last AMS message was received on " + expectedLastMessageDateString + "\n Please arrange for this to be investigated and brought back online as soon as possible."; string expectedInpsEmailSubject = "eAMS Offline - INPS Reference inpsRef (OrgID 2222)"; string expectedInpsEmailBody = "eAMS Offline\n\n" + "This site (testName2, INPS Reference inpsRef, OrgID 2222) is reported as being offline. The last AMS message was received on " + expectedLastMessageDateString + "\n Please arrange for this to be investigated and brought back online as soon as possible."; SendOfflineNotifications sendOfflineNotifications = new SendOfflineNotifications(repository, smtpClient); Dictionary<string, MailMessage> result; result = sendOfflineNotifications.CreateOfflineReports(sitesToBeReportedOffline); Assert.AreEqual(2, result.Count); MailMessage offlineReport1 = result[orgId1]; Assert.AreEqual(fromAddress, offlineReport1.From); Assert.AreEqual(replyToAddress, offlineReport1.ReplyTo); Assert.AreEqual(receipients[0], offlineReport1.To[0]); Assert.AreEqual(receipients[1], offlineReport1.To[1]); Assert.AreEqual(expectedEmisEmailSubject, offlineReport1.Subject); Assert.AreEqual(expectedEmisEmailBody, offlineReport1.Body); MailMessage offlineReport2 = result[orgId2]; Assert.AreEqual(fromAddress, offlineReport2.From); Assert.AreEqual(replyToAddress, offlineReport2.ReplyTo); Assert.AreEqual(receipients[0], offlineReport2.To[0]); Assert.AreEqual(receipients[1], offlineReport2.To[1]); Assert.AreEqual(expectedInpsEmailSubject, offlineReport2.Subject); Assert.AreEqual(expectedInpsEmailBody, offlineReport2.Body); }
public void CreateOfflineReports_SingleInpsSiteToBeReported_ReturnsInpsReport() { string orgId = "1111"; string orgName = "testName"; string healthboard = "testHealthboard"; string supplier = "INPS"; string supplierReference = "testRef"; DateTime lastMessageDate = DateTime.Now.AddDays(-7); SiteDetails emisSiteToBeReportedOffline = new SiteDetails(orgId, orgName, healthboard, supplier, supplierReference, lastMessageDate); List<SiteDetails> sitesToBeReportedOffline = new List<SiteDetails>(); sitesToBeReportedOffline.Add(emisSiteToBeReportedOffline); MailAddress fromAddress = new MailAddress("*****@*****.**"); MailAddress replyToAddress = new MailAddress("*****@*****.**"); MailAddress emisAddress = new MailAddress("*****@*****.**"); MailAddress healthboardAddress = new MailAddress("*****@*****.**"); List<MailAddress> receipients = new List<MailAddress>(); receipients.Add(emisAddress); receipients.Add(healthboardAddress); // Setup repository to return expected email addresses repositoryMock.Setup(x => x.GetOfflineReportFromAddress()).Returns(fromAddress); repositoryMock.Setup(x => x.GetOfflineReportReplyToAddress()).Returns(replyToAddress); repositoryMock.Setup(x => x.GetOfflineReportRecipients(healthboard, supplier)).Returns(receipients); string expectedEmailSubject = "eAMS Offline - INPS Reference testRef (OrgID 1111)"; string expectedLastMessageDateString = lastMessageDate.ToString(); string expectedEmailBody = "eAMS Offline\n\n" + "This site (testName, INPS Reference testRef, OrgID 1111) is reported as being offline. The last AMS message was received on " + expectedLastMessageDateString + "\n Please arrange for this to be investigated and brought back online as soon as possible."; SendOfflineNotifications sendOfflineNotifications = new SendOfflineNotifications(repository, smtpClient); Dictionary<string, MailMessage> result; result = sendOfflineNotifications.CreateOfflineReports(sitesToBeReportedOffline); Assert.AreEqual(1, result.Count); MailMessage offlineReport = result[orgId]; Assert.AreEqual(fromAddress, offlineReport.From); Assert.AreEqual(replyToAddress, offlineReport.ReplyTo); Assert.AreEqual(receipients[0], offlineReport.To[0]); Assert.AreEqual(receipients[1], offlineReport.To[1]); Assert.AreEqual(expectedEmailSubject, offlineReport.Subject); Assert.AreEqual(expectedEmailBody, offlineReport.Body); }
private string setEmailSubjectForInpsSite(SiteDetails siteToBeReportedOffline) { string emailSubject; emailSubject = "eAMS Offline - INPS Reference " + siteToBeReportedOffline.SupplierReference + " (OrgID " + siteToBeReportedOffline.OrgId + ")"; return emailSubject; }
private string setEmailSubjectForEmisSite(SiteDetails siteToBeReportedOffline) { string emailSubject; emailSubject = "Transmission Fault in ePharmacy CDB " + siteToBeReportedOffline.SupplierReference + " (OrgID " + siteToBeReportedOffline.OrgId + ")"; return emailSubject; }