Example #1
0
        static void Main(string[] args)
        {
            Program p = new Program();

            if (Directory.Exists("temp"))
            {
                Directory.Delete("temp", true);
            }

            Console.WriteLine("start processing: " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
            Utilits.Log("send processing: " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));

            dateFilter = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
            MailAddress from = new MailAddress("*****@*****.**", "Александр Краснов");

            // передача данных главам
            p.SendToMain(args[0], from);

            // передача данных ответственным за районы
            p.SendToDivision(args[0], from);

            // передача ответственным за округ
            p.SendToSubDivision(args[0], from);

            // передача ответственным за УИК
            p.SendToUik(args[0], from);

            Utilits.Log("send finished " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
            Utilits.SendReportMail(from);
            Console.WriteLine("send finished " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
        }
Example #2
0
        /// <summary>
        /// передача данных ответственным за районы
        /// </summary>
        /// <param name="dbName">имя бд для подключения</param>
        /// <param name="from"></param>
        void SendToDivision(string dbName, MailAddress from)
        {
            UserInDivisionExtension[] users = getDivisionUsers(dbName);

            foreach (UserInDivisionExtension user in users)
            {
                if (!string.IsNullOrEmpty(user.c_email))
                {
                    List <PentahoUrlBuilder> reports = new List <PentahoUrlBuilder>();
                    reports.Add(new PentahoUrlBuilder("work_uik", "Ежедневный отчет по УИК в разрезе агитаторов - выход агитаторов на участок работы", "f_main_division=" + (user.f_division == 10 ? user.f_division : 0) + "&f_division=" + user.f_division + "&n_gos_subdivision=-1&n_uik=-1"));

                    if (user.f_division != 10)
                    {
                        reports.Add(new PentahoUrlBuilder("count_day_div", "Ежедневный районный отчет по результатам ОДД Агитаторов", "f_division=" + user.f_division + "&d_date_now=" + dateFilter));
                        reports.Add(new PentahoUrlBuilder("count_period_div", "Сводный районный отчет по результатам ОДД Агитаторов", "f_division=" + user.f_division));
                    }
                    else
                    {
                        // это новочебоксарск
                        reports.Add(new PentahoUrlBuilder("count_day_nov", "Ежедневный городской (НВЧ) отчет по результатам ОДД Агитаторов", "d_date_now=" + dateFilter));
                        reports.Add(new PentahoUrlBuilder("count_period_nov", "Сводный городской (НВЧ) отчет по результатам ОДД Агитаторов"));
                    }

                    string[] emails = user.c_email.Trim().Replace(",", ";").Replace(" ", ";").Split(';');

                    Utilits.SendToMails(from, user.c_login, emails, reports, "районный", user.f_division.ToString());
                }
            }
        }
Example #3
0
        public static void SendToMails(MailAddress from, string login, string[] emails, List <PentahoUrlBuilder> reports, string title, string number)
        {
            string userDateString = DateTime.Now.ToString("dd.MM.yyyy");

            if (emails.Length > 0)
            {
                try
                {
                    MailAddress to   = new MailAddress(emails[0]);
                    MailMessage mail = new MailMessage(from, to);

                    foreach (PentahoUrlBuilder urlBuilder in reports)
                    {
                        mail.Attachments.Add(new Attachment(Utilits.GetStreamFromUrl(urlBuilder.Url), urlBuilder.Description + urlBuilder.Extension));
                    }

                    mail.Subject = "Ежедневный отчет по результатам ОДД Агитаторов (" + title + ")";
                    mail.Body    = FOOTER_TXT + "<p>Во вложении " + mail.Attachments.Count + " отчет (ов) за " + userDateString + ":</p><ul>";
                    foreach (PentahoUrlBuilder urlBuilder in reports)
                    {
                        mail.Body += "<li>" + urlBuilder.Description + "</li>";
                    }
                    mail.Body += "</ul><br />";

                    // письмо представляет код html
                    mail.IsBodyHtml = true;

                    if (emails.Length > 1)
                    {
                        for (int i = 1; i < emails.Length; i++)
                        {
                            MailAddress copy = new MailAddress(emails[i]);
                            mail.CC.Add(copy);
                        }
                    }

                    SendMail(mail);
                    string msg = "[" + title + " (" + number + ")] " + string.Join(";", emails) + "<" + login + ">: sended " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");
                    Log(msg);
                    Console.WriteLine(msg);
                }
                catch (Exception e)
                {
                    Log("[ERR: " + title + " (" + number + ")] " + string.Join(";", emails) + "<" + login + ">: sended " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + " - " + e.ToString());
                    Console.WriteLine("[ERR] " + e.ToString());
                }
            }
        }
Example #4
0
        /// <summary>
        /// передача данных ответственным за округ
        /// </summary>
        /// <param name="dbName">имя бд для подключения</param>
        /// <param name="from"></param>
        void SendToSubDivision(string dbName, MailAddress from)
        {
            UserInDivisionExtension[] users = getSubDivisionUsers(dbName);

            foreach (UserInDivisionExtension user in users)
            {
                if (!string.IsNullOrEmpty(user.c_email))
                {
                    List <PentahoUrlBuilder> reports = new List <PentahoUrlBuilder>();
                    reports.Add(new PentahoUrlBuilder("work_uik", "Ежедневный отчет по УИК в разрезе агитаторов - выход агитаторов на участок работы", "f_main_division=-1&f_division=" + user.f_division + "&n_gos_subdivision=" + user.n_gos_subdivision + "&n_uik=-1"));

                    reports.Add(new PentahoUrlBuilder("count_day_sub", "Ежедневный окружной отчет по результатам ОДД Агитаторов", "f_division=" + user.f_division + "&n_gos_subdivision=" + user.n_gos_subdivision + "&d_date_now=" + dateFilter));
                    reports.Add(new PentahoUrlBuilder("count_period_sub", "Сводный окружной отчет по результатам ОДД Агитаторов", "f_division=" + user.f_division + "&n_gos_subdivision=" + user.n_gos_subdivision));

                    string[] emails = user.c_email.Trim().Replace(",", ";").Replace(" ", ";").Split(';');

                    Utilits.SendToMails(from, user.c_login, emails, reports, "окружной", user.f_division.ToString() + "-" + user.n_gos_subdivision.ToString());
                }
            }
        }
Example #5
0
        /// <summary>
        /// передача данных главам
        /// </summary>
        /// <param name="dbName">имя бд для подключения</param>
        /// <param name="from"></param>
        void SendToMain(string dbName, MailAddress from)
        {
            // передача данных главам
            List <PentahoUrlBuilder> reports = new List <PentahoUrlBuilder>();

            reports.Add(new PentahoUrlBuilder("work_uik", "Ежедневный отчет по УИК в разрезе агитаторов - выход агитаторов на участок работы", "f_main_division=-1&f_division=-1&n_gos_subdivision=-1&n_uik=-1"));
            reports.Add(new PentahoUrlBuilder("count_day_cheb", "Ежедневный городской (ЧЕБ) отчет по результатам ОДД Агитаторов", "d_date_now=" + dateFilter));
            reports.Add(new PentahoUrlBuilder("count_period_cheb", "Сводный городской (ЧЕБ) отчет по результатам ОДД Агитаторов"));
            reports.Add(new PentahoUrlBuilder("count_day_nov", "Ежедневный городской (НВЧ) отчет по результатам ОДД Агитаторов", "d_date_now=" + dateFilter));
            reports.Add(new PentahoUrlBuilder("count_period_nov", "Сводный городской (НВЧ) отчет по результатам ОДД Агитаторов"));
            User[] users = getMainUsers(dbName);

            foreach (User user in users)
            {
                if (!string.IsNullOrEmpty(user.c_email))
                {
                    string[] emails = user.c_email.Trim().Replace(",", ";").Replace(" ", ";").Split(';');

                    Utilits.SendToMails(from, user.c_login, emails, reports, "городской", "0");
                }
            }
        }