public static RenderedContent DataContent(long total, RenderedContent data) { string stotal = Devmasters.Lang.Plural.Get(total, "jeden záznam", "{0} záznamy", "{0} záznamů"); return(new RenderedContent() { ContentHtml = string.Format(headerTemplateHtml, data.ContentTitle, stotal, FixTable(data).ContentHtml), ContentText = string.Format(headerTemplateText, data.ContentTitle, stotal, new string('=', data.ContentText.Length + 3), data.ContentText) }); }
public static RenderedContent FixTable(RenderedContent cont) { cont.ContentHtml = cont.ContentHtml.Replace("<table ", "<table cellpadding='3' style='font-family: Cabin, sans-serif;' "); return(cont); }
public static bool SendEmail(string toEmail, string subject, RenderedContent content, string fromEmail = "*****@*****.**") { return(HlidacStatu.Util.SMTPTools.SendEmail(subject, content.ContentHtml, content.ContentText, toEmail, fromEmail, false)); }
internal static SendStatus SendWatchdogsInOneEmail(IEnumerable <WatchDog> watchdogs, AspNetUser aspnetUser, bool force = false, string[] specificContacts = null, DateTime?fromSpecificDate = null, DateTime?toSpecificDate = null, string openingText = null ) { bool saveWatchdogStatus = force == false && fromSpecificDate.HasValue == false && toSpecificDate.HasValue == false; WatchDog[] userWatchdogs = watchdogs.ToArray(); AspNetUser user = aspnetUser; if (user == null) { foreach (var wdtmp in userWatchdogs) { if (wdtmp != null && wdtmp.StatusId != 0) { wdtmp.StatusId = 0; wdtmp.Save(); } } return(SendStatus.Disabled); } if (user.EmailConfirmed == false) { bool repeated = false; foreach (var wdtmp in userWatchdogs) { if (wdtmp != null && wdtmp.StatusId > 0) { wdtmp.DisableWDBySystem(DisabledBySystemReasons.NoConfirmedEmail, repeated); repeated = true; } } return(SendStatus.Disabled); } //user.EmailConfirmed == false string emailContact = user.Email; //process wds List <RenderedContent> parts = new List <RenderedContent>(); foreach (var wd1 in userWatchdogs) { if ((force || Tools.ReadyToRun(wd1.Period, wd1.LastSearched, DateTime.Now)) == false) { continue; } //specific Watchdog List <IWatchdogProcessor> wdProcessorsForWD1 = wd1.GetWatchDogProcessors(); DateTime?fromDate = fromSpecificDate; DateTime?toDate = toSpecificDate; if (fromDate.HasValue == false && wd1.LatestRec.HasValue) { fromDate = new DateTime(wd1.LatestRec.Value.Ticks, DateTimeKind.Utc); } if (fromDate.HasValue == false) //because of first search (=> no .LastSearched) { fromDate = DateTime.Now.Date.AddMonths(-1); //from previous month } if (toDate.HasValue == false) { toDate = Tools.RoundWatchdogTime(wd1.Period, DateTime.Now); } List <RenderedContent> wdParts = new List <RenderedContent>(); foreach (var wdp in wdProcessorsForWD1) { try { var results = wdp.GetResults(fromDate, toDate, 30); if (results.Total > 0) { RenderedContent rres = wdp.RenderResults(results, 5); wdParts.Add(Template.DataContent(results.Total, rres)); wdParts.Add(Template.Margin(50)); } } catch (Exception ex) { Util.Consts.Logger.Error("SingleEmailPerUserProcessor GetResults/RenderResults error", ex); } } if (wdParts.Count() > 0) { //add watchdog header parts.Add(Template.TopHeader(wd1.Name, Util.RenderData.GetIntervalString(fromDate.Value, toDate.Value))); parts.AddRange(wdParts); } if (saveWatchdogStatus) { wd1.LatestRec = toDate.Value; wd1.LastSearched = toDate.Value; wd1.Save(); } } //foreach wds if (parts.Count > 0) { //send it if (!string.IsNullOrEmpty(openingText)) { parts.Insert(0, Template.Paragraph(openingText)); } if (DateTime.Now < new DateTime(2020, 4, 2)) { parts.Insert(0, Template.Margin()); parts.Insert(0, Template.Paragraph( "<b style='color:red'>NOVINKA!</b> " + "Pokud máte na Hlídači státu nastaveno více hlídačů nových informací, nebudeme Vám je už posílat v jednotlivých mailech. " + "Místo toho obdržíte jeden souhrnný, ve kterém najdete vše najednou! " + "Pokud vám vyhovuje každý hlídač v samostatném mailu, snadno to změníte přes odkaz v patičce." , "NOVINKA! " + "Pokud máte na Hlídači státu nastaveno více hlídačů nových informací, nebudeme Vám je už posílat v jednotlivých mailech. " + "Místo toho obdržíte jeden souhrnný, ve kterém najdete vše najednou! " + "Pokud vám vyhovuje každý hlídač v samostatném mailu, snadno to změníte přes odkaz v patičce." )); } else { parts.Insert(0, Template.Margin()); parts.Insert(0, Template.Paragraph( "Seznam nalezených nových informací, které vás zajímají, pěkně pohromadě v jednom souhrnném mailu." , "Seznam nalezených nových informací, které vás zajímají, pěkně pohromadě v jednom souhrnném mailu." )); } parts.Insert(0, Template.Margin()); var content = RenderedContent.Merge(parts); content.ContentHtml = Template.EmailBodyTemplateHtml .Replace("#BODY#", content.ContentHtml) .Replace("#FOOTERMSG#", Template.DefaultEmailFooterHtml) ; content.ContentText = null; //Template.EmailBodyTemplateText //.Replace("#BODY#", content.ContentText) //.Replace("#FOOTERMSG#", Template.DefaultEmailFooterText); bool sent = false; if (specificContacts != null && specificContacts.Length > 0) { foreach (var email in specificContacts) { Email.SendEmail(email, $"({DateTime.Now.ToShortDateString()}) Nové informace nalezené na Hlídači státu", content, fromEmail: "*****@*****.**"); return(SendStatus.Sent); } } else { sent = Email.SendEmail(emailContact, $"({DateTime.Now.ToShortDateString()}) Nové informace nalezené na Hlídači státu", content, fromEmail: "*****@*****.**"); } if (sent) { if (saveWatchdogStatus) { DateTime dt = DateTime.Now; foreach (var wd in userWatchdogs) { wd.LastSent = dt; wd.Save(); } } return(SendStatus.Sent); } else { return(SendStatus.SendingError); } } else { return(SendStatus.NoDataToSend); } }