Exemplo n.º 1
0
            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)
                });
            }
Exemplo n.º 2
0
 public static RenderedContent FixTable(RenderedContent cont)
 {
     cont.ContentHtml = cont.ContentHtml.Replace("<table ", "<table cellpadding='3' style='font-family: Cabin, sans-serif;' ");
     return(cont);
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
        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);
            }
        }