private void SendEmail(object obj)
        {
            lock (synclock)
            {
                var usersToSend = new Settings_statistic().GetAllItems().Tables[0].Rows;

                List <string> mails = new List <string>();

                foreach (DataRow row in usersToSend)
                {
                    if (!mails.Contains(row.ItemArray[2].ToString()))
                    {
                        mails.Add(row.ItemArray[2].ToString());
                    }
                }

                foreach (String mail in mails)
                {
                    List <int> UserIDs = new List <int>();
                    foreach (DataRow row in usersToSend)
                    {
                        if (row.ItemArray[2].ToString() == mail)
                        {
                            UserIDs.Add(Convert.ToInt32(row.ItemArray[1].ToString()));
                        }
                    }

                    SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
                    smtp.EnableSsl   = true;
                    smtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "2351001057001n");

                    // наш email с заголовком письма
                    MailAddress from = new MailAddress("*****@*****.**", "Статистика");
                    // кому отправляем
                    MailAddress to = new MailAddress(mail);
                    // создаем объект сообщения
                    MailMessage m = new MailMessage(from, to);
                    // тема письма
                    m.Subject = "Статистика по заявкам кабинетов";


                    Ticket_statistic statistic = new Ticket_statistic();
                    DataTable        tickets   = statistic.GetAllItems().Tables[0];

                    if (tickets.Rows.Count != 0)
                    {
                        string s    = "ChangeDate >= '" + DateTime.Now.AddDays(-7) + "'" + "AND UserID IN (" + string.Join(",", UserIDs) + ")";
                        var    rows = tickets.Select("ChangeDate >= '" + DateTime.Now.AddDays(-7) + "'" + "AND UserID IN (" + string.Join(",", UserIDs) + ")");
                        if (rows.Count() != 0)
                        {
                            MemoryStream xlsStream = new XLSWrite().GetXLSStreamStatistic(rows.CopyToDataTable());
                            m.Attachments.Add(new Attachment(xlsStream, "статистика для кабинетов.xlsx"));

                            smtp.Send(m);
                        }
                    }
                }
            }
        }
Example #2
0
        protected void btnDownload_Click(object sender, EventArgs e)
        {
            if (allStatsTable.Rows.Count != 0)
            {
                List <string> queries = new List <string>();

                DateTime dateFrom;
                DateTime dateTo;

                if (DateTime.TryParse(stbDeliveryDate1.Text, out dateFrom))
                {
                    queries.Add("ChangeDate >= '" + dateFrom + "'");
                }

                if (DateTime.TryParse(stbDeliveryDate2.Text, out dateTo))
                {
                    queries.Add("ChangeDate <= '" + dateTo + "'");
                }

                if (!string.IsNullOrEmpty(stbUID.Text))
                {
                    queries.Add("UserID IN(" + stbUID.Text + ")");
                }

                var rows = allStatsTable.Select(string.Join(" AND ", queries));
                if (rows.Count() != 0)
                {
                    MemoryStream xlsStream = new XLSWrite().GetXLSStreamStatistic(rows.CopyToDataTable());
                    xlsStream.CopyTo(Response.OutputStream);

                    Response.ContentType = "Application/OCTET-STREAM";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=статистика по заявкам.xlsx");
                    Response.End();
                }
            }
        }