Exemplo n.º 1
0
        public void btnActivate_Click(Object sender, EventArgs e)
        {
            var id      = Page.Request.Params["id"];
            var regUser = new Users {
                ID = Convert.ToInt32(id)
            };
            var userInSession = (Users)Session["userinsession"];
            //var newPassword = OtherMethods.CreateUniqId(DateTime.Now.ToString("yyMdHms"));
            var user = new Users
            {
                ID            = Convert.ToInt32(id),
                Status        = 2,
                ActivatedDate = DateTime.Now,
                Password      = regUser.Password
            };

            user.Update(userInSession.ID, OtherMethods.GetIPAddress(), "ClientEdit");
            user.GetById();
            var emailNotification = new EmailNotifications {
                Name = "account_activated"
            };

            emailNotification.GetByName();
            EmailMethods.MailSendHTML(
                emailNotification.Title,
                string.Format(emailNotification.Body,
                              user.Login,
                              regUser.Password,
                              BackendHelper.TagToValue("official_name"),
                              BackendHelper.TagToValue("current_app_address"),
                              BackendHelper.TagToValue("not_official_name")),
                user.Email, true);
            Page.Response.Redirect(Request.RawUrl);
        }
Exemplo n.º 2
0
        public void SendNotification(List <Roles> responsibleRole, Feedback feedback)
        {
            var roleNameList = responsibleRole.Select(role => role.Name).ToList();

            if (roleNameList.Count == 0)
            {
                return;
            }
            var roleNameSqlString = roleNameList.Aggregate(String.Empty, (current, roleName) => current + ("\"" + roleName + "\","));
            var ds      = new DataManager();
            var usersDs = ds.QueryWithReturnDataSet(
                String.Format("SELECT `Email` FROM users WHERE Role in ({0}) AND Status = 2", roleNameSqlString.Remove(roleNameSqlString.Length - 1, 1))
                );
            var emailsString = usersDs.Tables[0].Rows.Cast <DataRow>().Aggregate(String.Empty, (current, row) => current + (row["Email"] + ","));
            var emailArray   = emailsString.Remove(emailsString.Length - 1, 1).Split(new[] { ',' });

            if (emailArray.ToList().Count == 0)
            {
                return;
            }
            var messageBody = String.Format("<table>" +
                                            "<tr><td colspan='2' style='padding-bottom: 15px; vertical-align: top'>Поступило новое обращение <a href='http://" + BackendHelper.TagToValue("current_app_address") + "/ManagerUI/FeedbackView.aspx?id=" + feedback.SecureID + "' target='_new'><i>{2}</i></a></td></tr>" +
                                            "<tr><td style='vertical-align: top'>Приоритет:</td><td><b>{0}</b></td></tr>" +
                                            "<tr><td style='vertical-align: top'>Тип:</td><td><b>{1}</b></td></tr>" +
                                            "<tr><td style='vertical-align: top'>Содержание:</td><td><b>{3}</b></td></tr>" +
                                            "<tr><td colspan='2' style='padding-top: 15px; vertical-align: top'>Перейдите по <a href='http://" + BackendHelper.TagToValue("current_app_address") + "/ManagerUI/FeedbackView.aspx?id=" + feedback.SecureID + "' target='_new'>этой</a> ссылке для ответа на обращение.</td></tr></table>",
                                            Feedback.Priorities.FirstOrDefault(u => u.Key == feedback.PriorityID).Value,
                                            Feedback.Types.FirstOrDefault(u => u.Key == feedback.TypeID).Value,
                                            feedback.Title,
                                            feedback.Body);

            EmailMethods.MailSendHTML("Новое обращение", messageBody, emailArray);
        }
Exemplo n.º 3
0
        public void btnBlock_Click(Object sender, EventArgs e)
        {
            var id            = Page.Request.Params["id"];
            var userInSession = (Users)Session["userinsession"];
            var user          = new Users
            {
                ID     = Convert.ToInt32(id),
                Status = 3
            };

            user.Update(userInSession.ID, OtherMethods.GetIPAddress(), "ClientEdit");
            user.GetById();
            var emailNotification = new EmailNotifications {
                Name = "account_blocked"
            };

            emailNotification.GetByName();
            EmailMethods.MailSendHTML(
                emailNotification.Title,
                string.Format(emailNotification.Body,
                              BackendHelper.TagToValue("current_app_address"),
                              BackendHelper.TagToValue("not_official_name"),
                              BackendHelper.TagToValue("main_phones")),
                user.Email,
                true);
            Page.Response.Redirect(Request.RawUrl);
        }
Exemplo n.º 4
0
 public string WantPayment(string userid, string appkey)
 {
     if (appkey != Globals.Settings.AppServiceSecureKey)
     {
         return("invalid app key");
     }
     try
     {
         var          emails = BackendHelper.TagToValue("want_payment_address").Split(new[] { ',' });
         const string title  = "Поступил новый запрос на расчет";
         var          user   = new Users {
             ID = Convert.ToInt32(userid)
         };
         user.GetById();
         var body = String.Format("От клиента #{0} ({1} {2}, {3})", user.ID, user.Name, user.Family, user.Phone);
         EmailMethods.MailSend(title, body, emails); //отправка емейла кассирам
         var issuancelist = new IssuanceLists()
         {
             UserID = user.ID,
             IssuanceListsStatusID = 1,
             Comment = String.Format("Для клиента #{0} ({1} {2}, {3})", user.ID, user.Name, user.Family, user.Phone)
         };
         string result;
         if (DateTime.Now.Hour < 13)
         {
             issuancelist.IssuanceDate = DateTime.Now;
             result = "ok-now";
         }
         else
         {
             issuancelist.IssuanceDate = DateTime.Now.AddDays(1);
             result = "ok-tommorow";
         }
         issuancelist.Create();
         const string titleForUser = "******";
         var          titleForBody = "Для улучшения качества обслуживания по своевременному расчету по Вашим заявкам, " +
                                     "ввиду: погодных условий, несвоевременной явки клиентов и создания очередей, с 14.01 по 31.01.2016 года" +
                                     " внесены изменения в графике работы бухгалтерии: <br/>" +
                                     "• Заявки, оформленные до 13.00 – расчет на завтра;<br/>" +
                                     "• Заявки, оформленные после 13.00 – расчет на послезавтра;<br/>" +
                                     "В связи с этими изменениями ваша заявка на расчет будет обработана";
         if (result == "ok-tommorow")
         {
             titleForBody += " послезавтра, либо в ближайший рабочий день";
         }
         else
         {
             titleForBody += " завтра, либо в ближайший рабочий день";
         }
         EmailMethods.MailSendHTML(titleForUser, titleForBody, user.Email); //отправка емейла пользователю
         return(result);
     }
     catch (Exception)
     {
         return("invalid data");
     }
 }
Exemplo n.º 5
0
        public void bntCreate_Click(Object sender, EventArgs e)
        {
            var      userInSession = (Users)Session["userinsession"];
            var      id            = Page.Request.Params["id"];
            Feedback feedback;

            try
            {
                feedback = new Feedback {
                    ID = Convert.ToInt32(id)
                };
                feedback.GetById();
            }
            catch (Exception)
            {
                feedback = new Feedback {
                    SecureID = id
                };
                feedback.GetBySecureID();
            }

            if (feedback.ID == 0)
            {
                feedback = new Feedback {
                    SecureID = id
                };
                feedback.GetBySecureID();
            }

            var feedbackcomment = new FeedbackComments()
            {
                Comment    = BbCode.BBcodeToHtml(tbComment.Text),
                FeedbackID = feedback.ID,
                UserID     = userInSession.ID,
                IsViewed   = 0
            };

            feedbackcomment.Create();
            feedback.ChangeDate = DateTime.Now;
            feedback.Update();
            var userToMail = new Users {
                ID = Convert.ToInt32(feedback.UserID)
            };

            userToMail.GetById();
            var messageBody = String.Format("<table class='table'>" +
                                            "<tr><td colspan='2' style='padding-bottom: 15px; vertical-align: top'>Поступил новый комментарий к вашему обращению <a href='http://{2}/UserUI/FeedbackView.aspx?id={3}' target='_new'><i>{0}</i></a></td></tr>" +
                                            "<tr><td style='vertical-align: top'>Содержание комментария:</td><td>{1}</td></tr>" +
                                            "<tr><td colspan='2' style='padding-top: 15px; vertical-align: top'>Перейдите по <a href='http://{2}/UserUI/FeedbackView.aspx?id={3}' target='new'>этой</a> ссылке для ответа на комментарий.</td></tr></table>",
                                            feedback.Title,
                                            feedbackcomment.Comment,
                                            BackendHelper.TagToValue("current_app_address"),
                                            feedback.ID);

            EmailMethods.MailSendHTML("Новый комментарий к вашему обращению", messageBody, userToMail.Email);
            Page.Response.Redirect("~/ManagerUI/Menu/Souls/FeedbackView.aspx?id=" + id);
        }
Exemplo n.º 6
0
        public void bntSend_Click(Object sender, EventArgs e)
        {
            var emailList  = BackendHelper.TagToValue("anonymous_message_email_list");
            var emailArray = emailList.Split(new[] { ',' });
            var body       = String.Format("Новое анонимное сообщение от сотрудника<br/>" +
                                           "<i>Заголовок: </i>{1}<br/>" +
                                           "<i>Содержание: </i>{0}", tbBody.Text, tbSubject.Text);

            if (emailArray[0].Length != 0)
            {
                EmailMethods.MailSendHTML("Новое анонимное сообщение от сотрудника", body, emailArray);
                Session["flash:now"] = "<span style='color: white; font-size: bold'>Ваше анонимное сообщение успешно отправлено!</span>";
                Page.Response.Redirect("~/ManagerUI/Default.aspx");
            }
            else
            {
                Session["flash:now"] = "<span style='color: red; font-size: bold'>Отсутствуют адресаты. Обратитесь к вашему программисту.</span>";
                Page.Response.Redirect("~/ManagerUI/Default.aspx");
            }
        }
Exemplo n.º 7
0
        public void btnSendPrice_Click(Object sender, EventArgs e)
        {
            var id = Page.Request.Params["id"];

            //читаем старый файл
            if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/")))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/"));
            }
            var fileName = "Прайс " + BackendHelper.TagToValue("official_name") + " (" + OtherMethods.CreateUniqId(id + DateTime.Now.ToString("hh:mm:ssttzz")) + ").xls";
            var dataFile = HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/" + fileName);
            var dm       = new DataManager();

            //получаем данные отправителя прайса из сотрудников
            var userInSession   = (Users)Session["userinsession"];
            var emailSenderData = new Users()
            {
                ID = userInSession.ID
            };

            emailSenderData.GetById();

            var ds = new DataSet();
            var ifUserHaveAssignSection = dm.QueryWithReturnDataSet(String.Format("SELECT * FROM `userstocategory` WHERE `UserID` = {0}", id));

            if (ifUserHaveAssignSection.Tables[0].Rows.Count == 0)
            {
                ds = dm.QueryWithReturnDataSet(
                    "SELECT Name as 'Наименование', " +
                    "MarginCoefficient as 'Юр. лицо', " +
                    "MarginCoefficient as 'Физ. лицо', " +
                    "MarginCoefficient as 'Физ. лица в скид.' " +
                    "FROM `titles` ORDER BY `Name`");
            }
            else
            {
                ds = dm.QueryWithReturnDataSet(String.Format(
                                                   "SELECT C.Name as 'Наименование', " +
                                                   "C.MarginCoefficient as 'Юр. лицо', " +
                                                   "C.MarginCoefficient as 'Физ. лицо', " +
                                                   "C.MarginCoefficient as 'Физ. лица в скид.' " +
                                                   "FROM `titles` C WHERE C.`CategoryID` IN (SELECT `CategoryID` FROM `userstocategory` WHERE `UserID` = {0})  ORDER BY C.`Name`", id));
            }
            var goodList    = new List <GoodsFromAPI>();
            var goods       = new GoodsFromAPI();
            var tableToSend = "<table class='table' style='width: 100%; border-collapse: collapse;'><tr>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px; text-align: left;'>Наименование</th>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px;'>ЮЛ/ТТН</th>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px;'>ФЛ/Регион</th>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px;'>ФИЗ. Л. регион/область</th>" +
                              "</tr>";

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                goodList.Clear();
                goods.Description   = row[0].ToString();
                goods.Number        = 1;
                goods.IsAdditional  = 0;
                goods.WithoutAkciza = 0;
                goods.Coefficient   = 0;
                goodList.Add(goods);


                row[1]       = Calculator.Calculate(goodList, 187, Convert.ToInt32(id), null, "2"); //за обычный город берем Петриков
                row[2]       = Calculator.Calculate(goodList, 187, Convert.ToInt32(id), null, "1"); //за обычный город берем Петриков
                row[3]       = Calculator.Calculate(goodList, 16, Convert.ToInt32(id), null, "1");  //за скидочный город берем Гродно
                tableToSend += string.Format("<tr>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px; text-align: left;'>{0}</td>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px;'>{1}</td>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px;'>{2}</td>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px;'>{3}</td>" +
                                             "</tr>", row[0], MoneyMethods.MoneySeparator(row[1].ToString()), MoneyMethods.MoneySeparator(row[2].ToString()), MoneyMethods.MoneySeparator(row[3].ToString()));
            }
            tableToSend += "</table>";
            DataRow emptyRow = ds.Tables[0].NewRow();
            DataRow newRow   = ds.Tables[0].NewRow();

            newRow[0] = String.Format("Наш {5}: {1} {2}, тел.: {0}, email: {3}, skype: {4}", emailSenderData.PhoneWorkOne, emailSenderData.Name, emailSenderData.Family, emailSenderData.Email, emailSenderData.Skype, userInSession.RussRole.ToLower());
            ds.Tables[0].Rows.Add(emptyRow);
            ds.Tables[0].Rows.Add(newRow);
            ds.Tables[0].TableName = "Прайс " + BackendHelper.TagToValue("not_official_name");

            Workbook book = Workbook.Load(HttpContext.Current.Server.MapPath("~/" + BackendHelper.TagToValue("comprop_tpl_file_name")));

            AddDataTableToWorkBook(ds.Tables[0], ref book);
            var user = new Users()
            {
                ID = Convert.ToInt32(id)
            };

            user.GetById();
            book.Save(dataFile);
            var emailNotification = new EmailNotifications {
                Name = "comprop_message"
            };

            emailNotification.GetByName();
            EmailMethods.MailSendHTML(
                string.Format(emailNotification.Title, BackendHelper.TagToValue("not_official_name")),
                string.Format(emailNotification.Body,
                              emailSenderData.PhoneWorkOne,
                              emailSenderData.Name,
                              emailSenderData.Family,
                              emailSenderData.Email,
                              emailSenderData.Skype,
                              tableToSend,
                              userInSession.RussRole.ToLower(),
                              BackendHelper.TagToValue("official_name"),
                              BackendHelper.TagToValue("current_app_address"),
                              BackendHelper.TagToValue("not_official_name")),
                user.Email,
                dataFile,
                true);

            Session["flash:now"] = "<span style='color: green; font-size: bold'>Прайс отправлен!</span>";
            Page.Response.Redirect("~/ManagerUI/Menu/Souls/ClientEdit.aspx?id=" + id);
        }
Exemplo n.º 8
0
        public void bntEdit_Click(Object sender, EventArgs e)
        {
            var id      = Page.Request.Params["id"];
            var profile = new UsersProfiles {
                ID = Convert.ToInt32(id), UserID = UserID
            };

            if (!String.IsNullOrEmpty(id))
            {
                profile.GetById();
                profile.ContactPersonFIO = tbContactPersonFIO.Text;
                profile.StatusID         = 0;
                if (profile.TypeID == 1)
                {
                    profile.PassportData   = tbPassportData.Text;
                    profile.PassportNumber = tbPassportNumber.Text;
                    profile.FirstName      = tbFirstName.Text;
                    profile.LastName       = tbLastName.Text;
                    profile.ThirdName      = tbThirdName.Text;
                    profile.Address        = tbAddress.Text;
                    try
                    {
                        profile.PassportDate = Convert.ToDateTime(tbPassportDate.Text);
                    }
                    catch (Exception)
                    {
                        Page.Response.Redirect("~/usernotification/9");
                    }
                    profile.PassportSeria = tbPassportSeria.Text;
                    if (!String.IsNullOrEmpty(tbContactPhoneNumbers2Fiz.Text))
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbersFiz.Text + ";" +
                                                      tbContactPhoneNumbers2Fiz.Text;
                    }
                    else
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbersFiz.Text;
                    }
                }
                else
                {
                    profile.CompanyName         = tbCompanuName.Text;
                    profile.CompanyAddress      = tbCompanyAddress.Text;
                    profile.BankName            = tbBankName.Text;
                    profile.BankAddress         = tbBankAddress.Text;
                    profile.BankCode            = tbBankCode.Text;
                    profile.RasShet             = tbRS.Text;
                    profile.UNP                 = tbUNP.Text;
                    profile.DirectorPhoneNumber = tbDirectorPhoneNumber.Text;
                    profile.FirstName           = tbFirstName2.Text;
                    profile.LastName            = tbLastName2.Text;
                    profile.ThirdName           = tbThirdName2.Text;
                    profile.PostAddress         = tbPostAddress.Text;
                    if (!String.IsNullOrEmpty(tbContactPhoneNumbers2.Text))
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text + ";" + tbContactPhoneNumbers2.Text;
                    }
                    else
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text;
                    }
                }
                profile.Update();
            }
            else
            {
                profile.TypeID           = Convert.ToInt32(ddlProfileType.SelectedValue);
                profile.ContactPersonFIO = tbContactPersonFIO.Text;
                if (profile.TypeID == 1)
                {
                    profile.PassportData   = tbPassportData.Text;
                    profile.PassportNumber = tbPassportNumber.Text;
                    profile.FirstName      = tbFirstName.Text;
                    profile.LastName       = tbLastName.Text;
                    profile.ThirdName      = tbThirdName.Text;
                    profile.Address        = tbAddress.Text;
                    try
                    {
                        profile.PassportDate = Convert.ToDateTime(tbPassportDate.Text);
                    }
                    catch (Exception)
                    {
                        Page.Response.Redirect("~/usernotification/9");
                    }
                    profile.PassportSeria = tbPassportSeria.Text;
                    if (!String.IsNullOrEmpty(tbContactPhoneNumbers2Fiz.Text))
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbersFiz.Text + ";" +
                                                      tbContactPhoneNumbers2Fiz.Text;
                    }
                    else
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbersFiz.Text;
                    }
                }
                else
                {
                    profile.CompanyName         = tbCompanuName.Text;
                    profile.CompanyAddress      = tbCompanyAddress.Text;
                    profile.BankName            = tbBankName.Text;
                    profile.BankAddress         = tbBankAddress.Text;
                    profile.BankCode            = tbBankCode.Text;
                    profile.RasShet             = tbRS.Text;
                    profile.UNP                 = tbUNP.Text;
                    profile.DirectorPhoneNumber = tbDirectorPhoneNumber.Text;
                    profile.FirstName           = tbFirstName2.Text;
                    profile.LastName            = tbLastName2.Text;
                    profile.ThirdName           = tbThirdName2.Text;
                    profile.PostAddress         = tbPostAddress.Text;
                    if (!String.IsNullOrEmpty(tbContactPhoneNumbers2.Text))
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text + ";" + tbContactPhoneNumbers2.Text;
                    }
                    else
                    {
                        profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text;
                    }
                }
                profile.Create();

                var currentAppAddress = BackendHelper.TagToValue("current_app_address");
                var sendEmailWhenProfileCreateArray = BackendHelper.TagToValue("send_email_when_profile_create");
                var recipientEmailsList             = sendEmailWhenProfileCreateArray.Split(new[] { ',' });
                EmailMethods.MailSendHTML(
                    String.Format("Новый профиль от пользователя #{0}", UserID),
                    String.Format(
                        "Пользователь <b>{0}</b> создал новый профиль. Для его просмотра и редактирования перейдите на <a href=\"http://{1}/ManagerUI/ProfilesView.aspx?uid={2}&stateSave=1\">страницу просмотра профилей</a>",
                        UsersHelper.UserIDToFullName(UserID.ToString()),
                        currentAppAddress,
                        UserID),
                    recipientEmailsList);
            }

            Page.Response.Redirect("~/UserUI/ProfilesView.aspx");
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
        public void btnSendComProp_Click(Object sender, EventArgs e)
        {
            //читаем старый файл
            if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/")))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/"));
            }
            var fileName = "Прайс " + BackendHelper.TagToValue("not_official_name") + " (" + OtherMethods.CreateUniqId(tbEmail.Text + DateTime.Now.ToString("hh:mm:ssttzz")) + ").xls";
            var dataFile = HttpContext.Current.Server.MapPath("~/Temp/SendedPrices/" + fileName);
            var dm       = new DataManager();

            //получаем данные отправителя прайса из сотрудников
            var userInSession   = (Users)Session["userinsession"];
            var emailSenderData = new Users()
            {
                ID = userInSession.ID
            };

            emailSenderData.GetById();

            var categoryIds         = string.Empty;
            var haveCheckedCategory = false;

            foreach (var items in lvAllCategory.Items)
            {
                var hfCategoryId = (HiddenField)items.FindControl("hfCategoryId");
                var cbCategory   = (CheckBox)items.FindControl("cbCategory");
                if (cbCategory.Checked)
                {
                    categoryIds        += string.Format("{0},", hfCategoryId.Value);
                    haveCheckedCategory = true;
                }
            }

            DataSet ds;

            if (!haveCheckedCategory)
            {
                ds = dm.QueryWithReturnDataSet(
                    "SELECT Name as 'Наименование', " +
                    "MarginCoefficient as 'Юр. лицо', " +
                    "MarginCoefficient as 'Физ. лицо', " +
                    "MarginCoefficient as 'Физ. лица в скид.' " +
                    "FROM `titles` ORDER BY `Name`");
            }
            else
            {
                categoryIds = categoryIds.Remove(categoryIds.Length - 1, 1);
                ds          = dm.QueryWithReturnDataSet(String.Format(
                                                            "SELECT C.Name as 'Наименование', " +
                                                            "C.MarginCoefficient as 'Юр. лицо', " +
                                                            "C.MarginCoefficient as 'Физ. лицо', " +
                                                            "C.MarginCoefficient as 'Физ. лица в скид.' " +
                                                            "FROM `titles` C WHERE C.`CategoryID` IN ({0})  ORDER BY C.`Name`", categoryIds));
            }
            var goodList    = new List <GoodsFromAPI>();
            var goods       = new GoodsFromAPI();
            var tableToSend = "<table class='table' style='width: 100%; border-collapse: collapse;'><tr>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px; text-align: left;'>Наименование</th>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px;'>По РБ</th>" +
                              "<th style='border: 1px solid #666666; padding: 3px 6px;'>По Минску</th>" +
                              "</tr>";

            List <ModelSortingCosts> table_list = new List <ModelSortingCosts>();
            DataTable sortedDS = new DataTable();

            sortedDS.Columns.Add(string.Format("Наименование", 0), typeof(string));
            sortedDS.Columns.Add(string.Format("Дверь/Дверь", 1), typeof(string));
            sortedDS.Columns.Add(string.Format("Склад/Дверь", 2), typeof(string));
            sortedDS.Columns.Add(string.Format("По Минску", 3), typeof(string));

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                ModelSortingCosts row_list = new ModelSortingCosts();

                goodList.Clear();
                goods.Description   = row[0].ToString();
                goods.Number        = 1;
                goods.IsAdditional  = 0;
                goods.WithoutAkciza = 0;
                goods.Coefficient   = 0;
                goodList.Add(goods);

                row_list.name      = row[0].ToString();
                row_list.costDD    = Calculator.Calculate(goodList, 187, 1, 239, "1", null, null, true);
                row_list.costSD    = Calculator.Calculate(goodList, 187, 1, 239, "1");
                row_list.costMinsk = Calculator.Calculate(goodList, 11, 1, 239, "1");

                table_list.Add(row_list);
            }
            table_list = table_list.OrderBy(x => x.costSD).ToList();
            foreach (ModelSortingCosts model in table_list)
            {
                DataRow dsRow = sortedDS.NewRow();
                dsRow[0] = model.name;
                dsRow[1] = model.costDD;
                dsRow[2] = model.costSD;
                dsRow[3] = model.costMinsk;
                sortedDS.Rows.Add(dsRow);
            }

            foreach (ModelSortingCosts row in table_list)
            {
                tableToSend += string.Format("<tr>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px; text-align: left;'>{0}</td>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px;'>{1}</td>" +
                                             "<td style='border: 1px solid #666666; padding: 3px 6px;'>{2}</td>" +
                                             "</tr>", row.name, MoneyMethods.MoneySeparator(row.costDD.ToString()), MoneyMethods.MoneySeparator(row.costSD.ToString()), MoneyMethods.MoneySeparator(row.costMinsk.ToString()));
            }
            tableToSend += "</table>";
            DataRow emptyRow = sortedDS.NewRow();
            DataRow newRow   = sortedDS.NewRow();

            newRow[0] = String.Format("тел.: {0}, email: {3}, skype: {4}", emailSenderData.PhoneWorkOne, emailSenderData.Name, emailSenderData.Family, emailSenderData.Email, emailSenderData.Skype, userInSession.RussRole.ToLower());
            sortedDS.Rows.Add(emptyRow);
            sortedDS.Rows.Add(newRow);
            sortedDS.TableName = "Прайс" + BackendHelper.TagToValue("not_official_name");

            Workbook book = Workbook.Load(HttpContext.Current.Server.MapPath("~/OtherFiles/" + BackendHelper.TagToValue("comprop_tpl_file_name")));

            AddDataTableToWorkBook(sortedDS, ref book);
            book.Save(dataFile);
            var emailNotification = new EmailNotifications {
                Name = "comprop_guest_message"
            };

            emailNotification.GetByName();
            EmailMethods.MailSendHTML(tbSubject.Text, string.Format(emailNotification.Body,
                                                                    emailSenderData.PhoneWorkOne,
                                                                    emailSenderData.Name,
                                                                    emailSenderData.Family,
                                                                    emailSenderData.Email,
                                                                    emailSenderData.Skype,
                                                                    tableToSend,
                                                                    userInSession.RussRole.ToLower(),
                                                                    BackendHelper.TagToValue("official_name"),
                                                                    BackendHelper.TagToValue("current_app_address"),
                                                                    BackendHelper.TagToValue("not_official_name")),
                                      tbEmail.Text,
                                      dataFile,
                                      false);

            Session["flash:now"] = "<span style='color: white;'>Комерческое предложение успешно отправлено на e-mail <b>" + tbEmail.Text + "</b>!</span>";
            Page.Response.Redirect("~/ManagerUI/Menu/Documents/SendComProp.aspx");
        }
Exemplo n.º 11
0
        public static string StatusChangeFilter(ref Tickets ticket, string cDriverIdString, string cStatusIdString, string cStatusDescription, string cAdmissionDateString, string nStatusDescription, string nStatusIdString, string nDeliveryDateString, Roles currentRole)
        {
            #region Обработка входящих параметров
            int?     cStatusId;
            int?     nStatusId;
            int?     cDriverId;
            DateTime nDeliveryDate = Convert.ToDateTime("01.01.0001 0:00:00");
            try
            {
                cStatusId = Convert.ToInt32(cStatusIdString);
                nStatusId = Convert.ToInt32(nStatusIdString);
                cDriverId = Convert.ToInt32(cDriverIdString);
            }
            catch (Exception)
            {
                return("Неверный формат входных данных!");
            }

            try
            {
                if (nStatusId == 4 || nStatusId == 11)
                {
                    nDeliveryDate = Convert.ToDateTime(nDeliveryDateString);
                }
            }
            catch (Exception)
            {
                return("Неверный формат входных данных (d)!");
            }
            #endregion

            #region  Проверки на доступность обновления заявки
            //если заявка изменяется из текущего статуса "Завершено" в любой другой новый, то проверяем права пользователя на изменение заявок в текущем статусе "Завершено"
            if (cStatusId == 6 && nStatusId != 6 && currentRole.ActionCompletedStatus == 1)
            {
                return(String.Format("У вас нет прав на изменение статуса заявки в статусе \"{0}\"!", TicketStatusesResources.Completed));
            }

            #region Проверка на права выставления конкретного статуса
            if (cStatusId != 1 && nStatusId == 1 && currentRole.StatusNotProcessed != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.NotProcessed));
            }

            if (cStatusId != 2 && nStatusId == 2 && currentRole.StatusInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.InStock));
            }

            if (cStatusId != 3 && nStatusId == 3 && currentRole.StatusOnTheWay != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.OnTheWay));
            }

            if (cStatusId != 4 && nStatusId == 4 && currentRole.StatusTransferInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Transfer_InStock));
            }

            if (cStatusId != 5 && nStatusId == 5 && currentRole.StatusProcessed != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Processed));
            }

            if (cStatusId != 6 && nStatusId == 6 && currentRole.StatusCompleted != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Completed));
            }

            if (cStatusId != 7 && nStatusId == 7 && currentRole.StatusRefusingInCourier != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Refusing_InCourier));
            }

            if (cStatusId != 8 && nStatusId == 8 && currentRole.StatusReturnInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Return_InStock));
            }

            if (cStatusId != 9 && nStatusId == 9 && currentRole.StatusCancelInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Cancel_InStock));
            }

            if (cStatusId != 10 && nStatusId == 10 && currentRole.StatusCancel != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Cancel));
            }

            if (cStatusId != 11 && nStatusId == 11 && currentRole.StatusTransferInCourier != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Transfer_InCourier));
            }

            if (cStatusId != 12 && nStatusId == 12 && currentRole.StatusDelivered != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Delivered));
            }

            if (cStatusId != 13 && nStatusId == 13 && currentRole.StatusExchangeInCourier != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Exchange_InCourier));
            }

            if (cStatusId != 14 && nStatusId == 14 && currentRole.StatusDeliveryFromClientInCourier != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.DeliveryFromClient_InCourier));
            }

            if (cStatusId != 15 && nStatusId == 15 && currentRole.StatusExchangeInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Exchange_InStock));
            }

            if (cStatusId != 16 && nStatusId == 16 && currentRole.StatusDeliveryFromClientInStock != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.DeliveryFromClient_InStock));
            }

            if (cStatusId != 17 && nStatusId == 17 && currentRole.StatusRefusalOnTheWay != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Refusal_OnTheWay));
            }

            if (cStatusId != 18 && nStatusId == 18 && currentRole.StatusRefusalByAddress != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Refusal_ByAddress));
            }

            if (cStatusId != 19 && nStatusId == 19 && currentRole.StatusUpload != 1)
            {
                return(String.Format("У вас нет прав выставлять статус \"{0}\"",
                                     TicketStatusesResources.Upload));
            }
            #endregion

            //если заявка изменяется из текущего статуса "Обработана" в новый статус, отличный от "Завершено", то проверяем не запрещено ли это пользователю правами
            if (cStatusId == 5 && nStatusId != 5 && nStatusId != 6 && currentRole.ActionDisallowDeliveredToCompletedStatus == 1)
            {
                return(String.Format("У вас нет прав  изменять статусы заявок в статусе \"{1}\" на статусы отличные от статуса \"{0}\"!",
                                     TicketStatusesResources.Completed,
                                     TicketStatusesResources.Processed));
            }

            //если заявка изменяется из текущего статуса "Не обработана" в новый статусы "на складе" и "перенос на складе"
            if (cStatusId == 1 && nStatusId != 1 && (nStatusId == 2 || nStatusId == 4))
            {
                return(String.Format("Нельзя изменять статусы заявок в статусе \"{0}\" на статусы \"{1}\" и \"{2}\"! Для перевода заявок на склад используйте печать чеков.",
                                     TicketStatusesResources.NotProcessed,
                                     TicketStatusesResources.InStock,
                                     TicketStatusesResources.Transfer_InStock));
            }

            /*при изменении заявки без водителя на новый статус, отличный от ("Не обработан", "На складе", "Перенос (на складе)", "Отмена", "Отмена (на складе)",
             * "Завершено", "Обмен (на складе)", "Доставка от клиента (на складе)") возвращаем ошибку*/
            if (cDriverId == 0 && nStatusId != 1 && nStatusId != 2 && nStatusId != 3 && nStatusId != 4 && nStatusId != 6 && nStatusId != 9 && nStatusId != 10 && nStatusId != 15 && nStatusId != 16)
            {
                return("Не все статусы обновлены! У некоторых заявок отсутствует водитель!");
            }

            /*если водитель не назначен, то проверяем права на изменение заявки без водителя в новый статус "Завершено"*/
            if (cDriverId == 0 && nStatusId == 6 && cStatusId != 6 && currentRole.ActionAllowChangeInCompletedWithoutDriver != 1)
            {
                return(String.Format("У вас нет прав изменять статусы заявок без водителя в статус \"{0}\"", TicketStatusesResources.Completed));
            }
            #endregion

            #region Присвоение нового и старого статуса заявке (если все проверки пройдены)
            //если текущий статус не равен новому - записываем изменения статуса
            if (cStatusId != nStatusId)
            {
                ticket.StatusIDOld = cStatusId;
                ticket.StatusID    = nStatusId;
            }
            //note: при изменении статуса у новой заявки старый в логи не пишется, так как заявка создается уже со старым статусом "Не обработана"
            #endregion

            #region  Обновление связанных данных
            //если новая расшифровка статуса не пустая, то записываем её (работает только для заявок в определенных ниже статусах)
            if (!String.IsNullOrEmpty(nStatusDescription) && (nStatusId == 4 || nStatusId == 7 || nStatusId == 8 || nStatusId == 9 || nStatusId == 10 || nStatusId == 11))
            {
                ticket.StatusDescription = nStatusDescription;
            }

            /*если новая расшифровка всё еще пустая - записываем старую если она есть
             *(нужно, так как при пакетном назначении заявкам расшифровки статуса не возможно получить старый статус каждой заявки в текстбокс)*/
            if (String.IsNullOrEmpty(nStatusDescription))
            {
                ticket.StatusDescription = cStatusDescription;
            }

            //если текущая дата приема на склад отсутствует и текущие статусы заявок "На складе" или "Перенос (на складе)", то записываем в дата приема текущее время
            if ((String.IsNullOrEmpty(cAdmissionDateString) || cAdmissionDateString == "01.01.0001 0:00:00") &&
                (nStatusId == 2 || nStatusId == 4))
            {
                ticket.AdmissionDate = DateTime.Now;
            }

            //если новый статус "Перенос (на складе)" или "Перенос (у курьера)", то записываем новую дату переноса
            if (nStatusId == 4 || nStatusId == 11)
            {
                ticket.DeliveryDate = nDeliveryDate;
            }

            //если текущий статус изменен на новый "Завершено", то записываем дату завершения (дата перевода заявки в статус "Завершено")
            if (nStatusId == 6 && cStatusId != 6)
            {
                ticket.CompletedDate = DateTime.Now;
            }

            //если текущий статус изменен на новый "Обработано", то записываем дату обработки (дату перевода заявки в новый статус "Обработано")
            // и шлем письма, указанные в бекенде, если заявки перешли в "Обработанно" для определнного клиента (АГС)
            if (nStatusId == 5 && cStatusId != 5)
            {
                ticket.ProcessedDate = DateTime.Now;
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                if (tempTicket.UserID == 794)
                {
                    var emailIist = BackendHelper.TagToValue("ags_event_email_list").Split(new[] { ',' });
                    EmailMethods.MailSendHTML("АГС - новая заявка в статусе 'Обработано'", String.Format("АГС, заявка перешла в статус 'Обработано'<br/>" +
                                                                                                         "ID заявки: <b>{0}</b>", tempTicket.SecureID), emailIist);
                }
            }

            //если текущий статус изменен на новый "Перенос (на складе)", то шлем письмо на заданые емейлы и обнуляем водителя
            if (nStatusId == 4 && cStatusId != 4)
            {
                var email      = BackendHelper.TagToValue("transfer_in_stock_event_email");
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                EmailMethods.MailSendHTML("Новый перевод заявки в статус 'Перенос (на складе)'", String.Format("Новый перевод заявки в статус 'Перенос (на складе)'<br/>" +
                                                                                                               "ID заявки: <b>{0}</b>", tempTicket.SecureID), email);
                ticket.DriverID = 0;
            }

            //если текущий статус "Не обработано" изменен на новый "На складе" или "Перенос (на складе)", и текущее время между 21.00 и 24.00, то шлем письмо на заданые емейлы
            var cHour = DateTime.Now.Hour;
            if ((nStatusId == 2 || nStatusId == 4) && cStatusId == 1 && cHour >= 21 && cHour <= 24)
            {
                var email      = BackendHelper.TagToValue("late_entries_event_email");
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                EmailMethods.MailSendHTML("Поздний принос груза на склад", String.Format("Еще один груз принесли после 21.00<br/>" +
                                                                                         "ID заявки: <b>{0}</b><br/>" +
                                                                                         "ID пользователя: <b>{1}</b><br/>", tempTicket.SecureID, tempTicket.UserID), email);
            }

            //если текущий статус меняется на новый "В пути" или на "Отказ (у курьера)" - меняем привезенное бабло на 0 (для кассы)
            if (nStatusId == 3 || nStatusId == 7)
            {
                ticket.ReceivedEUR = 0;
                ticket.ReceivedBLR = 0;
                ticket.ReceivedUSD = 0;
                ticket.ReceivedRUR = 0;
            }

            //если заявка переходит из статусов "На складе" или "Не обработано" в статусы "Отмена" или "Отмена на складе"
            if ((cStatusId == 2 || cStatusId == 1) && (nStatusId == 9 || nStatusId == 10))
            {
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                string[] emailList         = new string[2];
                var      managerEmail      = UsersHelper.GetUserAttachedManager(Convert.ToInt32(tempTicket.UserID)).Email;
                var      salesManagerEmail = UsersHelper.GetUserAttachedSalesManager(Convert.ToInt32(tempTicket.UserID)).Email;
                if (!String.IsNullOrEmpty(managerEmail))
                {
                    emailList[0] = managerEmail;
                }
                if (!String.IsNullOrEmpty(salesManagerEmail))
                {
                    emailList[1] = managerEmail;
                }
                EmailMethods.MailSendHTML("Отмена заявки", String.Format("Заявка перешла в статус '{0}'<br/><br/>" +
                                                                         "Заявка: <b>{1}</b> (ID: {2})<br/>" +
                                                                         "Отправитель: <b>{3}</b> (UID: {4})<br/>" +
                                                                         "Профиль: <b>{5}</b> тел.:{6}<br/>" +
                                                                         "Город доставки: <b>{7}</b> (CID: {8})<br/>" +
                                                                         "Получатель: <b>{9}</b> (тел: {10})<br/><br/>" +
                                                                         "Причина отмены: <b>{11}</b><br/>",
                                                                         OtherMethods.TicketStatusToText(tempTicket.StatusID.ToString()),
                                                                         tempTicket.SecureID,
                                                                         GoodsHelper.GoodsToString(tempTicket.FullSecureID),
                                                                         UsersHelper.UserIDToFullName(tempTicket.UserID.ToString()),
                                                                         tempTicket.UserID,
                                                                         UsersProfilesHelper.UserProfileIDToFullFamilyOrCompanyname(tempTicket.UserProfileID.ToString()),
                                                                         UsersProfilesHelper.UserProfileToPhone(tempTicket.UserProfileID.ToString()),
                                                                         CityHelper.CityIDToCityNameWithotCustom(tempTicket.CityID.ToString()),
                                                                         tempTicket.CityID,
                                                                         tempTicket.RecipientFirstName + " " + tempTicket.RecipientLastName + " " + tempTicket.RecipientThirdName,
                                                                         tempTicket.RecipientPhone + ";" + tempTicket.RecipientPhoneTwo,
                                                                         tempTicket.StatusDescription
                                                                         ), emailList);
            }

            //если заявка переходит из статуса "В пути" в статусы отличные от "Завершено", "Доставлено", "Обработано", "В пути"
            if (cStatusId == 3 && nStatusId != 6 && nStatusId != 12 && nStatusId != 5 && nStatusId != 3)
            {
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                string[] emailList         = new string[2];
                var      managerEmail      = UsersHelper.GetUserAttachedManager(Convert.ToInt32(tempTicket.UserID)).Email;
                var      salesManagerEmail = UsersHelper.GetUserAttachedSalesManager(Convert.ToInt32(tempTicket.UserID)).Email;
                if (!String.IsNullOrEmpty(managerEmail))
                {
                    emailList[0] = managerEmail;
                }
                if (!String.IsNullOrEmpty(salesManagerEmail))
                {
                    emailList[1] = managerEmail;
                }
                EmailMethods.MailSendHTML("Изменен статус заявки в пути", String.Format("Заявка в пути перешла в статус '{0}'<br/><br/>" +
                                                                                        "Заявка: <b>{1}</b> (ID: {2})<br/>" +
                                                                                        "Отправитель: <b>{3}</b> (UID: {4})<br/>" +
                                                                                        "Профиль: <b>{5}</b> тел.:{6}<br/>" +
                                                                                        "Город доставки: <b>{7}</b> (CID: {8})<br/>" +
                                                                                        "Получатель: <b>{9}</b> (тел: {10})<br/><br/>" +
                                                                                        "Курьер: <b>{11}</b><br/>",
                                                                                        OtherMethods.TicketStatusToText(tempTicket.StatusID.ToString()),
                                                                                        tempTicket.SecureID,
                                                                                        GoodsHelper.GoodsToString(tempTicket.FullSecureID),
                                                                                        UsersHelper.UserIDToFullName(tempTicket.UserID.ToString()),
                                                                                        tempTicket.UserID,
                                                                                        UsersProfilesHelper.UserProfileIDToFullFamilyOrCompanyname(tempTicket.UserProfileID.ToString()),
                                                                                        UsersProfilesHelper.UserProfileToPhone(tempTicket.UserProfileID.ToString()),
                                                                                        CityHelper.CityIDToCityNameWithotCustom(tempTicket.CityID.ToString()),
                                                                                        tempTicket.CityID,
                                                                                        tempTicket.RecipientFirstName + " " + tempTicket.RecipientLastName + " " + tempTicket.RecipientThirdName,
                                                                                        tempTicket.RecipientPhone + ";" + tempTicket.RecipientPhoneTwo,
                                                                                        DriversHelper.DriverIdToName(tempTicket.DriverID.ToString())
                                                                                        ), emailList);
            }

            //если текущий статус изменен на новый "Отказ (в пути)", то величину "За услугу (GruzobozCost)" делим попалам
            if (nStatusId == 17 && cStatusId != 17)
            {
                var tempTicket = new Tickets {
                    ID = ticket.ID
                };
                tempTicket.GetById();
                if (tempTicket.GruzobozCost != null)
                {
                    ticket.GruzobozCost = MoneyMethods.MoneyRounder100(Convert.ToDecimal(tempTicket.GruzobozCost / 2));
                }
            }

            //фиксирование в заявке даты возврата, если заявка перешла из старого статуса в новый статус 8, 15, 16, 9
            if ((nStatusId == 8 && cStatusId != 8) || (nStatusId == 9 && cStatusId != 9) || (nStatusId == 15 && cStatusId != 15) || (nStatusId == 16 && cStatusId != 16))
            {
                ticket.ReturnDate = DateTime.Now;
            }
            #endregion

            return(null); //возвращаем null, что равно отсутствию ошибок
        }