public override void RunOnce() { Trace.WriteLine("Mailer started.", "EML"); Program.LogSafe("BtRetryService: Mailer started.", EventLogEntryType.Information); List <Task> emailTasks = new List <Task>(); try { if (!Force) { Thread.CurrentThread.WaitUntil(StartAt); } TransferDbEntities transferDb = new TransferDbEntities(); var emails = from em in transferDb.EmailLists where em.el_active == true select em; if (emails.Count() == 0) { Trace.WriteLine("No email addresses found", "EML"); Program.LogSafe("BtRetryService: No email addresses found.", EventLogEntryType.Warning); return; } var generator = new RazorTemplateGenerator(); //em.el_body_template -> " //<table> // <tr><th>iso</th><th>date</th><th>description</th><th>created by</th></tr> //@foreach (var i in Model.Results) // {<tr> // <td>@i.vt_v_country_iso_id</td><td>@i.vt_last_modification_date</td><td>@i.vt_status_description</td><td>@i.vt_created_by</td> // </tr>} //</table>" foreach (var em in emails) { generator.RegisterTemplate <Data>("__" + em.el_id, em.el_body_template); } generator.CompileTemplates(); var date = Force ? ForceDate : DateTime.Now.Yesterday(); foreach (var em in emails) { if (!em.IsValid()) { Trace.WriteLine("Invalid emailList entry: ".concat(em.ToString()), "EML"); Program.LogSafe("BtRetryService: Invalid emailList entry: ".concat(em.ToString()), EventLogEntryType.Warning); continue; } int iso = em.el_iso_id; int em_id = em.el_id; TransferDBDataAccess.RetailersTable = Hashtable.Synchronized(PTFDbDataAccess.GetAllRetailers(iso)); Data data = new Data(); data.Db = transferDb; foreach (var filter in em.el_filter.Split(';')) { var voucherTransfers = from vt in transferDb.VoucherTransfers where vt.vt_v_country_iso_id == iso && //select yesterday's transfers only vt.vt_last_modification_date >= date select vt; CString str = "vt_status_description != null && (" + filter + ")"; var voucherTransfers2 = voucherTransfers.Where(str); data.Results.AddRange(voucherTransfers2); } if (!data.IsEmpty) { //em.el_list - > [email protected],[email protected],[email protected] //em.el_subject -> Error in voucher import var emd = new EmailData { AddrList = (EmailMe ? Strings.ROSENRUSEV : em.el_list), Subject = em.el_subject }; string str = generator.GenerateOutput(data, "__" + em.el_id); emd.Body = str.Replace("SHOW_BEGIN", "<a href='http://192.168.53.117/VoucherTransferXmls/XmlDataHandler.ashx?id=").Replace("SHOW_END", "'>Show</a>"); Trace.WriteLine("emailing:".concat(em.el_list), "EML"); var task = Task.Factory.StartNew <bool>((o) => { var ed = (EmailData)o; Program.LogSafe("Email : ".concat(ed.AddrList.FirstOf(35), "..."), EventLogEntryType.Information); EmailSender.SendSafe(ed.AddrList, "", ed.Subject, ed.Body, true); return(true); }, emd); emailTasks.Add(task); } thread.Yield(); } } catch (Exception ex) { Trace.WriteLine(ex, "EML"); Program.LogSafe(ex.ToString(), EventLogEntryType.Error); } finally { Task.WaitAll(emailTasks.ToArray()); Trace.WriteLine("Mailer stopped.", "EML"); Program.LogSafe("Mailer stopped.", EventLogEntryType.Information); } }
public CString(CString str) { m_Builder = new StringBuilder(str.m_Builder.ToString()); }