protected void Page_Load(object sender, EventArgs e) { var idListString = Request.QueryString["id"]; if (!String.IsNullOrEmpty(idListString)) { List <string> idList = idListString.Split('-').ToList(); var sqlString = String.Empty; var userIP = OtherMethods.GetIPAddress(); var userInSession = (Users)Session["userinsession"]; var userInSessionID = userInSession.ID.ToString(); var pageName = "PrintCheck"; var transferListString = String.Empty; var ticketToSendSmsListString = String.Empty; foreach (var id in idList) { sqlString = sqlString + "ID = " + id + " OR "; var currentTicket = new Tickets { ID = Convert.ToInt32(id) }; currentTicket.GetById(); if (currentTicket.StatusID == 1) { #region Обновление статусов и переносы заявок var updateTicket = new Tickets { ID = Convert.ToInt32(id) }; var dateDelivery = Convert.ToDateTime(Convert.ToDateTime(currentTicket.DeliveryDate).ToString("dd-MM-yyyy")); var dateNow = Convert.ToDateTime(DateTime.Now.ToString("dd-MM-yyyy")); //если день доставки просрочен - выставляем перенос. //Если день доставки вручную выставлен менеджеров через редактирование заявки //и этот день не просрочен и не поддается графику доставки - перенос не сработает if (dateDelivery < dateNow) { var allCity = Application["CityList"] as List <City>; if (allCity == null) { lblError.Text = "Непредвиденная ошибка! (города)"; return; } var city = allCity.FirstOrDefault(u => u.ID == currentTicket.CityID); var allDistricts = Application["Districts"] as List <Districts>; if (allDistricts == null) { lblError.Text = "Непредвиденная ошибка! (районы)"; return; } if (city == null) { lblError.Text = "Непредвиденная ошибка! (город)"; return; } var district = allDistricts.FirstOrDefault(u => u.ID == city.DistrictID); var avaliableDays = new List <DayOfWeek>(); if (district == null) { lblError.Text = "Непредвиденная ошибка! (район)"; return; } if (district.Monday == 1) { avaliableDays.Add(DayOfWeek.Monday); } if (district.Tuesday == 1) { avaliableDays.Add(DayOfWeek.Tuesday); } if (district.Wednesday == 1) { avaliableDays.Add(DayOfWeek.Wednesday); } if (district.Thursday == 1) { avaliableDays.Add(DayOfWeek.Thursday); } if (district.Friday == 1) { avaliableDays.Add(DayOfWeek.Friday); } if (district.Saturday == 1) { avaliableDays.Add(DayOfWeek.Saturday); } if (district.Sunday == 1) { avaliableDays.Add(DayOfWeek.Sunday); } //день для переноса по умолчанию на сутки доальше чем сегодня. срабатывает, если для района не установлен день доставки var dayOfTransfer = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("dd-MM-yyyy")); for (int i = 1; i <= 7; i++) { var potencialDayOfTransfer = Convert.ToDateTime(DateTime.Now.AddDays(i).ToString("dd-MM-yyyy")); if (avaliableDays.Contains(potencialDayOfTransfer.DayOfWeek)) { dayOfTransfer = potencialDayOfTransfer; break; } } updateTicket.StatusID = 4; updateTicket.AdmissionDate = DateTime.Now; updateTicket.DeliveryDate = dayOfTransfer; transferListString += currentTicket.SecureID + ", "; //добавляем запись в flash:now ticketToSendSmsListString += currentTicket.ID + ";"; //добавляем запись для отправки СМС var user = new Users { ID = Convert.ToInt32(currentTicket.UserID) }; user.GetById(); #region Отправка емейла о том, что заявка переведена в статус перенос (на складе) и зануление водителя var email = BackendHelper.TagToValue("transfer_in_stock_event_email"); EmailMethods.MailSendHTML("Новый перевод заявки в статус 'Перенос (на складе)' (приемка)", String.Format("Новый перевод заявки в статус 'Перенос (на складе)' (во время приемки)<br/>" + "ID заявки: <b>{0}</b>", currentTicket.SecureID), email); updateTicket.DriverID = 0; #endregion #region Отправка емейлов отправителям if (!String.IsNullOrEmpty(user.Email)) { var address = currentTicket.RecipientStreet; if (currentTicket.RecipientKorpus != String.Empty && currentTicket.RecipientKorpus != " ") { address += "/" + currentTicket.RecipientKorpus; } if (currentTicket.RecipientKvartira != String.Empty && currentTicket.RecipientKvartira != " ") { address += " кв." + currentTicket.RecipientKvartira; } const string emailTitle = "Перенос заявки"; var emailBody = BackendHelper.TagToValue("email-on-print-checks-text"); emailBody = emailBody .Replace("{full-name}", OtherMethods.GoodsStringFromTicketID(currentTicket.ID.ToString())) .Replace("{address}", city.Name + " " + address) .Replace("{id}", currentTicket.SecureID) .Replace("{recipient-phones}", currentTicket.RecipientPhone + "; " + currentTicket.RecipientPhoneTwo); EmailMethods.MailSendHTML(emailTitle, emailBody, user.Email); } #endregion } else { ticketToSendSmsListString += currentTicket.ID + ";";//добавляем запись для отправки СМС updateTicket.StatusID = 2; updateTicket.AdmissionDate = DateTime.Now; } updateTicket.Update(Convert.ToInt32(userInSessionID), userIP, pageName); #endregion } } var fullSqlString = "SELECT * FROM `tickets` WHERE " + sqlString.Remove(sqlString.Length - 3); var dm = new DataManager(); var dataset = dm.QueryWithReturnDataSet(fullSqlString); lvAllPrint.DataSource = dataset; lvAllPrint.DataBind(); #region Данные для flash:now с перенесенными заявками if (transferListString.Length > 2) { Session["flash:now"] = "<span style='color: red;'>Перенесенные заявки: " + transferListString.Remove(transferListString.Length - 2, 2) + "</span>"; } #endregion #region Отправляем СМС if (ticketToSendSmsListString.Length > 2 && BackendHelper.TagToValue("sms-on-print-checks-enable") == "true") { SmsSender.SendSmsBulkIfTicketOnStock(ticketToSendSmsListString.Remove(ticketToSendSmsListString.Length - 1, 1)); } #endregion } if (String.IsNullOrEmpty(idListString) || lvAllPrint.Items.Count == 0) { Page.Visible = false; Response.Write(Resources.PrintResources.PrintCheckEmptyText); } }