protected override void Process() { var invoices = Session.Query <Invoice>() .Where(i => ((i.SendToEmail && i.Payer.InvoiceSettings.EmailInvoice) || (i.SendToMinimail && i.Payer.InvoiceSettings.SendToMinimail)) && i.Date <= DateTime.Today); foreach (var invoice in invoices) { _mailer.Clear(); if (invoice.SendToEmail && invoice.Payer.InvoiceSettings.EmailInvoice) { _mailer.InvoiceToEmail(invoice, false); } else if (invoice.SendToMinimail && invoice.Payer.InvoiceSettings.SendToMinimail) { _mailer.SendInvoiceToMinimail(invoice); invoice.SendToMinimail = false; } _mailer.Send(); Session.Save(invoice); } }
protected override void Process() { var timeToSendMail = ConfigurationManager.AppSettings["SendPremoderatedPomotionListAt"] .Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); var timeToSendMailHour = int.Parse(timeToSendMail[0]); var timeToSendMailMinutes = timeToSendMail.Length > 1 ? int.Parse(timeToSendMail[1]) : 0; var mailTime = SystemTime.Now().Date.AddHours(timeToSendMailHour).AddMinutes(timeToSendMailMinutes); if (SystemTime.Now() >= mailTime && SystemTime.Now() < mailTime.AddMinutes(30)) { using (new SessionScope(FlushAction.Never)) { var promotions = ActiveRecordLinq.AsQueryable <SupplierPromotion>() .Where(p => !p.Moderated && p.Enabled && p.Moderator == null).OrderBy(s => s.Begin).ToList(); if (promotions.Count > 0) { _mailer = (_mailer ?? new MonorailMailer()).PremoderatedPromotions(promotions); _mailer.Send(); } } } }
public void Enable_changed() { //просто сконструированный клиент больше не подходит //тк в методе есть хак var client = session.Load<Client>(((Service)item).Id); //(Client) item; //хибер конструирует прокси для item наследуя ее от Service тк он не знает кто это будет Client или Supplier //что бы обойти это и нужен хак, возможно есть какой то правильный способ что бы //хибер конструировал правельные прокми но я его не знаю //mailer.EnableChanged(client); var client = DataMother.TestClient(c => c.Name = "Тестовый клиент"); mailer.EnableChanged(client); mailer.Send(); Assert.That(message.Body, Is.StringContaining("Наименование: Тестовый клиент")); }