Example #1
0
        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);
        }
Example #3
0
        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);
                }
            }
        }