public Error SendPurchaseOrderToSupplier(int purchaseOrderHeaderTempId, UserModel sender, string pdfFile) { var error = new Error(); if (string.IsNullOrEmpty(sender.EMail)) { error.SetError(EvolutionResources.errInvalidSenderEMailAddress, "", (string.IsNullOrEmpty(sender.EMail) ? "" : sender.EMail), sender.FullName); } else { var poht = db.FindPurchaseOrderHeaderTemp(purchaseOrderHeaderTempId); if (poht == null) { error.SetError(EvolutionResources.errRecordError, "", "PurchaseOrderHeaderTemp", purchaseOrderHeaderTempId.ToString()); } else { var purchaseOrderHeaderId = (poht.OriginalRowId == null ? 0 : poht.OriginalRowId.Value); var poh = db.FindPurchaseOrderHeader(poht.OriginalRowId.Value); if (poh == null) { error.SetError(EvolutionResources.errRecordError, "", "PurchaseOrderHeader", purchaseOrderHeaderId.ToString()); } else if (poh.Supplier == null) { error.SetError(EvolutionResources.errCantSendOrderPurchaseOrderHasNoSupplier); } else if (string.IsNullOrEmpty(poh.Supplier.Email)) { error.SetError(EvolutionResources.errCantSendOrderSupplierHasNoEMail, "", poh.Supplier.Name); } else { // Attach the PDF to a note against the Purchase Order NoteService.NoteService noteService = new NoteService.NoteService(db); error = noteService.AttachNoteToPurchaseOrder(poh, sender, "Purchase Order Sent to Supplier", "", pdfFile.ToStringList(), FileCopyType.Copy); if (!error.IsError) { poh.DatePOSentToSupplier = DateTimeOffset.Now; db.InsertOrUpdatePurchaseOrderHeader(poh); poht.DatePOSentToSupplier = poh.DatePOSentToSupplier; db.InsertOrUpdatePurchaseOrderHeaderTemp(poht); // EMail the purchase order to the supplier var message = new EMailMessage(sender, MessageTemplateType.PurchaseOrderNotificationSupplier); var company = CompanyService.FindCompanyModel(poh.CompanyId); message.AddProperty("PURCHASEORDERNO", poh.OrderNumber.Value); message.AddProperty("COMPANYNAME", company.FriendlyName); message.AddProperty("USERNAME", sender.FullName); message.AddProperty("EMAIL", sender.EMail); message.AddRecipient(poh.Supplier.Email); message.AddAttachment(pdfFile, FileCopyType.Move); EMailService.EMailService emailService = new Evolution.EMailService.EMailService(db, company); error = emailService.SendEMail(message); } } } } return(error); }
public void SendEMailTest() { // Get some test users and test company List <UserModel> users = new List <UserModel>(); for (int i = 0; i < 10; i++) { users.Add(GetTestUser()); } var testCompany = GetTestCompany(users[0]); EMailService.EMailService emailService = new EMailService.EMailService(db, testCompany); // Tests using email templates var sender = new UserModel { EMail = RandomEMail() }; var message = new EMailMessage(sender, MessageTemplateType.TestMessage); // Single user var recipient = new UserModel { EMail = RandomEMail() }; message.AddRecipient(users[0]); var result = emailService.SendEMail(message); Assert.IsTrue(!result.IsError, result.Message); var msgs = getMessages(sender); int actual = msgs.Count(), expected = 1; Assert.IsTrue(actual == expected, $"Error: {actual} records were found when {expected} were expected"); var emailTemplate = LookupService.FindMessageTemplateModel(testCompany.Id, MessageTemplateType.TestMessage); checkEMailContent(msgs, sender, emailTemplate.Subject); // Multiple users sender = new UserModel { EMail = RandomEMail() }; message = new EMailMessage(sender, MessageTemplateType.TestMessage); message.AddRecipients(users); result = emailService.SendEMail(message); Assert.IsTrue(!result.IsError, result.Message); msgs = getMessages(sender); actual = msgs.Count(); expected = 1; // One message is sent to all recipients/cc;s/bcc's Assert.IsTrue(actual == expected, $"Error: {actual} records were found when {expected} were expected"); emailTemplate = LookupService.FindMessageTemplateModel(testCompany.Id, MessageTemplateType.TestMessage); checkEMailContent(msgs, sender, emailTemplate.Subject); // Tests using straight text string subject = RandomString(), text = LorumIpsum(); // Single user sender = new UserModel { EMail = RandomEMail() }; message = new EMailMessage(sender, subject, text); message.AddRecipient(users[0]); var result2 = emailService.SendEMail(message); Assert.IsTrue(!result2.IsError, result.Message); msgs = getMessages(sender); actual = msgs.Count(); expected = 1; Assert.IsTrue(actual == expected, $"Error: {actual} records were found when {expected} were expected"); checkEMailContent(msgs, sender, subject); // Multiple users sender = new UserModel { EMail = RandomEMail() }; message = new EMailMessage(sender, subject, text); message.AddRecipients(users); result = emailService.SendEMail(message); Assert.IsTrue(!result.IsError, result.Message); msgs = getMessages(sender); actual = msgs.Count(); expected = 1; // One message is sent to all recipients/cc;s/bcc's Assert.IsTrue(actual == expected, $"Error: {actual} records were found when {expected} were expected"); checkEMailContent(msgs, sender, subject); }
void ScanLogsForErrors() { LogSeverity severity = (LogSeverity)GetTaskParameter("ReportErrorsAboveSeverity", (int)LogSeverity.Severe); DateTime lastRun = GetTaskParameter("LastRun", DateTime.Now); SetTaskParameter("LastRun", DateTime.Now); string systemErrors = "", taskErrors = ""; foreach (var logRecord in _db.FindLogsAfter(lastRun, severity)) { systemErrors += "<tr><td style=\"width:120px\">Date:</td><td style=\"width:auto\">" + logRecord.LogDate.ToString() + "</td></tr>\r\n"; systemErrors += "<tr><td style=\"vertical-align:top\">URL:</td><td>" + logRecord.Url + "</td></tr>\r\n"; systemErrors += "<tr><td style=\"vertical-align:top\">Error:</td><td>" + logRecord.Message + "</td></tr>\r\n"; systemErrors += "<tr><td style=\"vertical-align:top\">Stack Trace:</td><td>" + logRecord.StackTrace + "</td></tr>\r\n"; } foreach (var logRecord in _db.FindScheduledTaskLogsAfter(lastRun, severity)) { taskErrors += "<tr>"; taskErrors += "<td style=\"width:120px\">" + logRecord.LogDate.ToString() + "</td>"; taskErrors += "<td style=\"vertical-align:top\">" + logRecord.ScheduledTask.TaskName + "</td>"; taskErrors += "<td style=\"vertical-align:top\">" + logRecord.Message; if (!string.IsNullOrEmpty(logRecord.StackTrace)) { taskErrors += "<br/><br/>" + logRecord.StackTrace; } taskErrors += "</td>"; taskErrors += "</tr>\r\n"; } if (!string.IsNullOrEmpty(systemErrors) || !string.IsNullOrEmpty(taskErrors)) { if (string.IsNullOrEmpty(systemErrors)) { systemErrors = "<tr><td>None></td><td></td></tr>"; } if (string.IsNullOrEmpty(taskErrors)) { taskErrors = "<tr><td>None></td><td></td><td></td></tr>"; } string groupName = GetTaskParameter("SendErrorsToGroup", ""); UserGroup userGroup = _db.FindUserGroup(groupName); if (userGroup == null) { WriteTaskLog($"Error: User group '{groupName}' could not be found!"); } else { var sender = new UserModel { EMail = GetTaskParameter("SenderEMail", "*****@*****.**") }; var message = new EMailMessage(sender, MessageTemplateType.SystemError); message.AddProperty("SYSTEMERRORS", systemErrors); message.AddProperty("TASKERRORS", taskErrors); foreach (var user in _db.FindUserGroupUsers(userGroup)) { var userModel = Mapper.Map <User, UserModel>(user); message.AddRecipient(userModel); } EMailService.EMailService emailService = new EMailService.EMailService(_db); emailService.SendEMail(message); } } }