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")); }
/// <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()); } } }
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()); } } }
/// <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()); } } }
/// <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"); } } }