Example #1
0
        public async Task <ActionResult <UserDTO> > Post([FromBody] UserRegisterModel userRegisterModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Not all of the needed information is supplied."));
            }

            userRegisterModel.Password = PasswordMethods.GeneratePassword(true, true, true, true, 16);

            var savedUser = await UnitOfWork.UsersRepository.CreateUser(userRegisterModel.Username, userRegisterModel.Password,
                                                                        userRegisterModel.FirstName, userRegisterModel.LastName);

            if (savedUser == null)
            {
                return(BadRequest("Error saving user to DB"));
            }

            var sendEmailResult = EmailMethods.SendEmail(userRegisterModel.Username, userRegisterModel.FirstName,
                                                         userRegisterModel.LastName, userRegisterModel.Password);

            if (!sendEmailResult)
            {
                BadRequest("Email is not sent!");
            }

            await UnitOfWork.SaveChangesAsync();

            var userMapResult = Mapper.Map <User, UserDTO>(savedUser);

            return(Created(string.Empty, userMapResult));
        }
        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);
        }
Example #3
0
        protected void btnSave_OnClick(Object sender, EventArgs e)
        {
            var param = Context.Items["sacredlink"].ToString();

            if (string.IsNullOrEmpty(param))
            {
                Response.Redirect("~/usernotification/6");
            }
            var base64Email = param.Remove(0, 32);

            byte[] byteEmail = Convert.FromBase64String(base64Email);
            var    email     = System.Text.Encoding.UTF8.GetString(byteEmail);
            var    password  = param.Substring(0, 32);
            var    user      = new Users {
                Email = email
            };

            user.GetByEmail();
            if (user.Password != password || string.IsNullOrEmpty(user.ID.ToString()))
            {
                Response.Redirect("~/usernotification/6");
            }
            else
            {
                user.Password = OtherMethods.HashPassword(tbNewPassword.Text);
                user.Update();
                EmailMethods.MailSend("Ваш новый пароль", "Ваш новый пароль: " + tbNewPassword.Text, user.Email);
                Response.Redirect("~/usernotification/7");
            }
        }
Example #4
0
        protected void btnChange_OnClick(Object sender, EventArgs e)
        {
            var userInSession = (Users)Session["userinsession"];
            var user          = new Users {
                ID = Convert.ToInt32(tbUID.Text)
            };

            user.GetById();

            if (userInSession.Role != Users.Roles.SuperAdmin.ToString() && (user.Role == Users.Roles.Admin.ToString() || user.Role == Users.Roles.SuperAdmin.ToString()) && user.ID != userInSession.ID)
            {
                lblError.Text     = "Изменять пароль других администраторов может только администратор+!";
                errorDiv.CssClass = "loginError";
                return;
            }


            if (!string.IsNullOrEmpty(user.Password))
            {
                user.Password = OtherMethods.HashPassword(tbNewPassword.Text);
                user.Update(userInSession.ID, OtherMethods.GetIPAddress(), "ChangePasswords");
                lblError.Text     = "Обновлен пароль пользователя: " + user.Name + " " + user.Family + " (" + user.Email + ")";
                errorDiv.CssClass = "loginNotError";
                if (user.Email.Contains("@"))
                {
                    EmailMethods.MailSend("Ваш новый пароль", "Ваш новый пароль: " + tbNewPassword.Text, user.Email);
                }
            }
            else
            {
                lblError.Text     = "Пользователь не найден!";
                errorDiv.CssClass = "loginError";
            }
        }
Example #5
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);
        }
Example #6
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);
        }
Example #7
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");
     }
 }
        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);
        }
Example #9
0
        public static void OrderPendingApproval(Order order, UrlHelper url)
        {
            EmailMethods emailMethods = new EmailMethods(FROM_ADDRESS, Loc.Dic.OrdersSystem, FROM_PASSWORD);

            string        emailSubject = String.Format("{0} {1} {2} {3} {4} {5}", Loc.Dic.Order, order.OrderNumber, Loc.Dic.OrderFrom, order.User.FirstName, order.User.LastName, Loc.Dic.PendingYourApproval);
            StringBuilder emailBody    = new StringBuilder();

            emailBody.AppendLine(emailSubject);
            emailBody.AppendLine();
            emailBody.AppendLine(String.Format("{0}: {1}", Loc.Dic.ModifyOrderStatusAt, url.Action("ModifyStatus", "Orders", new { id = order.Id }, "http")));

            SendNotification(url, order.User1.Email, order.User1.FirstName, emailSubject, emailBody, order.User1.NotificationEmail, order.User1.NotificationCode);
        }
Example #10
0
        public static void OrderStatusChanged(Order order, OpenIdUser updater, UrlHelper url)
        {
            EmailMethods emailMethods = new EmailMethods(FROM_ADDRESS, Loc.Dic.OrdersSystem, FROM_PASSWORD);

            string        emailSubject = String.Format("{0} {1} {2} {3} {4}", Loc.Dic.Order, order.OrderNumber, Translation.Status((StatusType)order.StatusId), Loc.Dic.By, updater.FullName);
            StringBuilder emailBody    = new StringBuilder();

            emailBody.AppendLine(emailSubject);
            emailBody.AppendLine();
            emailBody.AppendLine(String.Format("{0}: {1}", Loc.Dic.SeeDetailsAt, url.Action("Details", "Orders", new { id = order.Id }, "http")));

            SendNotification(url, order.User.Email, order.User.FirstName, emailSubject, emailBody, order.User.NotificationEmail, order.User.NotificationCode);
        }
Example #11
0
        public static void OrdersExported(OpenIdUser exporter, UrlHelper url, int itemsExported, byte[] exportedFile)
        {
            EmailMethods emailMethods = new EmailMethods(FROM_ADDRESS, Loc.Dic.OrdersSystem, FROM_PASSWORD);

            string        emailSubject = String.Format("{0} {1}", itemsExported, Loc.Dic.Email_OrdersWereExported);
            StringBuilder emailBody    = new StringBuilder();

            emailBody.AppendLine(emailSubject);
            emailBody.AppendLine();
            emailBody.AppendLine(Loc.Dic.Email_CopyOfExportedFileIsAttached);

            SendNotification(url, exporter.Email, exporter.FirstName, emailSubject, emailBody, exporter.NotificationEmail, exporter.NotificationCode, exportedFile, EXPORT_ORDERS_FILE_NAME);
        }
Example #12
0
        private static void SendNotification(UrlHelper url, string email, string fullName, string subject, StringBuilder body, string secondaryMail, string notificationCode, byte[] attachmentFile = null, string attachmentName = null)
        {
            EmailMethods emailMethods = new EmailMethods(FROM_ADDRESS, Loc.Dic.OrdersSystem, FROM_PASSWORD);

            emailMethods.sendGoogleEmail(email, fullName, subject, body.ToString(), attachmentFile, attachmentName);
            if (secondaryMail != null)
            {
                body.AppendLine();
                body.AppendLine();
                body.AppendLine(String.Format("{0}:\n{1}", Loc.Dic.RemoveNotificationsMessage, url.Action("RemoveNotifications", "Users", new { id = notificationCode }, "http")));

                emailMethods.sendGoogleEmail(secondaryMail, fullName, subject, body.ToString(), attachmentFile, attachmentName);
            }
        }
Example #13
0
        public void bntEdit_Click(Object sender, EventArgs e)
        {
            var userSession = (Users)Session["userinsession"];
            var user        = new Users
            {
                ID = userSession.ID
            };

            user.GetById();

            lblError.Text = String.Empty;
            var loginCorrectly = UsersHelper.UserLoginChecker(tbLogin.Text.Trim());
            var emailCorrectly = UsersHelper.UserEmailChecker(tbEmail.Text.Trim());

            var registrationPosible = true;

            if (!emailCorrectly && user.Email != tbEmail.Text)
            {
                lblError.Text      += "Пользователь с таким e-mail'ом уже есть в нашей базе!<br/>";
                registrationPosible = false;
            }

            if (!loginCorrectly && user.Login != tbLogin.Text)
            {
                lblError.Text      += "Пользователь с таким логином уже есть в нашей базе!<br/>";
                registrationPosible = false;
            }

            //окончательная проверка
            if (!registrationPosible)
            {
                return;
            }

            user.Login      = tbLogin.Text.Trim();
            user.Email      = tbEmail.Text.Trim();
            user.Phone      = tbContactPhoneNumbers.Text;
            user.ChangeDate = DateTime.Now;
            user.Update();

            var          body = "Вы изменили личные данные. Ваш логин: " + user.Login + ", ваш е-mail: " + user.Email + ", ваш телефон: " + user.Phone;
            const string subj = "Изменение личных данных";

            EmailMethods.MailSend(subj, body, user.Email);
            Page.Response.Redirect("~/UserUI/Default.aspx");
        }
        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");
            }
        }
        private static void ValidateAndSend(MessageParams msgParams, bool useAsync)
        {
            // Validate the email objects
            var validator = new MessageParamsValidator();

            validator.Validate(msgParams);

            // Send the email
            MailMessage mailMessage = EmailMethods.CreateMailMessage(msgParams);

            if (useAsync)
            {
                //Async is non-blocking but can be blocked from sending (probably as it mimics spam) -- use for notifications
                EmailMethods.SendEmailAsync(mailMessage);
            }
            else
            {
                //Sync is blocking but more reliable -- use for batch
                EmailMethods.SendEmail(mailMessage);
            }
        }
Example #16
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, что равно отсутствию ошибок
        }
Example #17
0
        public void bntCreate_Click(Object sender, EventArgs e)
        {
            var id            = Page.Request.Params["id"];
            var userInSession = (Users)Session["userinsession"];

            if (id == null)
            {
                lblError.Text = String.Empty;
                var loginCorrectly = UsersHelper.UserLoginChecker(tbLogin.Text.Trim());
                var emailCorrectly = UsersHelper.UserEmailChecker(tbEmail.Text.Trim());

                var registrationPosible = true;
                if (!emailCorrectly)
                {
                    lblError.Text      += "Пользователь с таким e-mail'ом уже есть в нашей базе!<br/>";
                    registrationPosible = false;
                }

                if (!loginCorrectly)
                {
                    lblError.Text      += "Пользователь с таким логином уже есть в нашей базе!<br/>";
                    registrationPosible = false;
                }

                //окончательная проверка
                if (!registrationPosible)
                {
                    return;
                }

                var manager = new Users
                {
                    Name       = tbName.Text,
                    Family     = tbFamily.Text,
                    Email      = tbEmail.Text,
                    Login      = tbLogin.Text,
                    Password   = OtherMethods.HashPassword(tbPassword.Text),
                    Status     = Convert.ToInt32(ddlStatus.SelectedValue),
                    Role       = ddlRole.SelectedValue,
                    CreateDate = DateTime.Now,

                    Address      = tbAddress.Text,
                    Phone        = tbPhone.Text,
                    PhoneHome    = tbPhoneHome.Text,
                    PhoneWorkOne = tbPhoneWorkOne.Text,
                    PhoneWorkTwo = tbPhoneWorkTwo.Text,
                    BirthDay     = Convert.ToDateTime(tbBirthDay.Text),
                    DateOfIssue  = Convert.ToDateTime(tbDateOfIssue.Text),

                    PassportSeria       = tbPassportSeria.Text,
                    PassportNumber      = tbPassportNumber.Text,
                    PersonalNumber      = tbPersonalNumber.Text,
                    ROVD                = tbROVD.Text,
                    Validity            = Convert.ToDateTime(tbValidity.Text),
                    RegistrationAddress = tbRegistrationAddress.Text,
                };
                manager.Create();

                var          body = "Вы зарегистрированы на сайте " + BackendHelper.TagToValue("current_app_address") + " в качестве " + manager.Role + ". Ваш логин: " + manager.Login + ", ваш е-mail: " + manager.Email;
                const string subj = "Регистрация нового работника";
                EmailMethods.MailSend(subj, body, manager.Email);
            }
            else
            {
                var manager = new Users {
                    ID = Convert.ToInt32(id)
                };
                manager.GetById();
                var oldRole = manager.Role;
                lblError.Text = String.Empty;
                var loginCorrectly = UsersHelper.UserLoginChecker(tbLogin.Text.Trim());
                var emailCorrectly = UsersHelper.UserEmailChecker(tbEmail.Text.Trim());

                var registrationPosible = true;
                if (!emailCorrectly && manager.Email != tbEmail.Text)
                {
                    lblError.Text      += "Пользователь с таким e-mail'ом уже есть в нашей базе!<br/>";
                    registrationPosible = false;
                }

                if (!loginCorrectly && manager.Login != tbLogin.Text)
                {
                    lblError.Text      += "Пользователь с таким логином уже есть в нашей базе!<br/>";
                    registrationPosible = false;
                }

                //окончательная проверка
                if (!registrationPosible)
                {
                    return;
                }

                manager.Name                  = tbName.Text.Trim();
                manager.Family                = tbFamily.Text.Trim();
                manager.Email                 = tbEmail.Text.Trim();
                manager.Login                 = tbLogin.Text.Trim();
                manager.Status                = Convert.ToInt32(ddlStatus.SelectedValue);
                manager.Role                  = ddlRole.SelectedValue;
                manager.ChangeDate            = DateTime.Now;
                manager.AccessOnlyByWhiteList = cbAccessOnlyByWhiteList.Checked ? 1 : 0;

                manager.Address      = tbAddress.Text;
                manager.Phone        = tbPhone.Text;
                manager.PhoneHome    = tbPhoneHome.Text;
                manager.PhoneWorkOne = tbPhoneWorkOne.Text;
                manager.PhoneWorkTwo = tbPhoneWorkTwo.Text;
                manager.BirthDay     = Convert.ToDateTime(tbBirthDay.Text);
                manager.DateOfIssue  = Convert.ToDateTime(tbDateOfIssue.Text);
                manager.Skype        = tbSkype.Text.Trim();

                manager.PassportSeria       = tbPassportSeria.Text;
                manager.PassportNumber      = tbPassportNumber.Text;
                manager.PersonalNumber      = tbPersonalNumber.Text;
                manager.ROVD                = tbROVD.Text;
                manager.Validity            = Convert.ToDateTime(tbValidity.Text);
                manager.RegistrationAddress = tbRegistrationAddress.Text;
                //если суперадмин - выставляем ему роль суперадмина и статус активировано
                if (oldRole == Users.Roles.SuperAdmin.ToString())
                {
                    divRole.Visible   = false;
                    divStatus.Visible = false;
                    manager.Role      = oldRole;
                }

                manager.Update(userInSession.ID, OtherMethods.GetIPAddress(), "ManagerEdit");

                var          body = "Ваш профиль на " + BackendHelper.TagToValue("current_app_address") + " был изменен. Ваша роль: " + manager.Role + ", ваш логин: " + manager.Login + ", ваш е-mail: " + manager.Email + ", ваше имя: " + manager.Name + ", ваша фамилия: " + manager.Family + ", ваш статус: " + ddlRole.SelectedValue;
                const string subj = "Изменение профиля работника";
                EmailMethods.MailSend(subj, body, manager.Email);
            }
            Page.Response.Redirect("~/ManagerUI/Menu/Souls/ManagersView.aspx");
        }
Example #18
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);
        }
Example #19
0
        protected void ImportXLS_Click(object sender, EventArgs e)
        {
            DataSet result = new DataSet();
            string  message;

            if (FileUploader.HasFile)
            {
                result = ReadXLSMethods.ReadXLS(FileUploader.PostedFile.InputStream);
                if (result.Tables.Count == 0)
                {
                    labelStatus.Text = "Неверный тип файла";
                    return;
                }

                var    id            = Page.Request.Params["id"];
                var    userInSession = (Users)Session["userinsession"];
                string userDiscount;
                int    userID;

                int rowsCount        = 0;
                int rowsSuccessCount = 0;

                var user = new Users
                {
                    ID       = UserID,
                    Login    = userInSession.Login,
                    Email    = userInSession.Email,
                    Name     = userInSession.Name,
                    Family   = userInSession.Family,
                    Role     = userInSession.Role,
                    RussRole = UsersHelper.RoleToRuss(userInSession.Role),
                    IsCourse = userInSession.IsCourse
                };
                userID = user.ID;

                if (user.Role != Users.Roles.User.ToString())
                {
                    userDiscount = "0";
                    userID       = 1;
                }
                else
                {
                    userDiscount = user.Discount.ToString();
                }

                int i = 0;
                result.Tables[0].Columns.Add(new DataColumn());
                result.Tables[0].Columns.Add(new DataColumn());
                foreach (DataColumn column in result.Tables[0].Columns)
                {
                    column.ColumnName = i++.ToString();
                }

                if (result.Tables[0].Columns.Count < 22)
                {
                    labelStatus.Text = "Недостаточное количество колонок в таблице";
                    return;
                }

                if (result.Tables[0].Rows.Count == 0)
                {
                    labelStatus.Text = "Пустая таблица";
                    return;
                }

                rowsCount = result.Tables[0].Rows.Count;

                foreach (DataRow row in result.Tables[0].Rows)
                {
                    bool          norm        = true;
                    List <string> errors      = new List <string>();
                    Tickets       ticket      = new Tickets();
                    int?          profileType = null;

                    /// проверка профиля
                    foreach (DataRow rowProfile in selectProfilesDataSet.Rows)
                    {
                        string selectProfileName = String.IsNullOrEmpty(rowProfile["CompanyName"].ToString())
                            ? String.Format("{0} {1}", rowProfile["FirstName"], rowProfile["LastName"])
                            : rowProfile["CompanyName"].ToString();
                        if (selectProfileName == row.ItemArray[0].ToString())
                        {
                            ticket.UserProfileID = Convert.ToInt32(rowProfile["ID"].ToString());
                            ticket.UserID        =
                                UsersHelper.GetUserIdByUserProfileId(Convert.ToInt32(ticket.UserProfileID));

                            profileType = Convert.ToInt32(rowProfile["TypeID"].ToString());
                            if (profileType == 2)
                            {
                                ticket.PrintNaklInMap = 1;
                                ticket.PrintNakl      = 0;
                            }
                            else
                            {
                                ticket.PrintNaklInMap = 0;
                                ticket.PrintNakl      = 1;
                            }

                            break;
                        }
                    }
                    if (ticket.UserProfileID == null)
                    {
                        norm = false;
                        errors.Add("неверный профиль");
                    }
                    /// проверка ID города
                    ///
                    int cityId;
                    if (Int32.TryParse(row.ItemArray[1].ToString(), out cityId) != false)
                    {
                        if (CityHelper.CityIDToCityName(row.ItemArray[1].ToString()) != null)
                        {
                            ticket.CityID = Convert.ToInt32(row.ItemArray[1].ToString());
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверный ID города");
                        }
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный ID города");
                    }
                    ///
                    /// Проверка типа улицы
                    if (RecipientStreetPrefixes.Contains(row.ItemArray[2].ToString()))
                    {
                        ticket.RecipientStreetPrefix = row.ItemArray[2].ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный префикс улицы");
                    }

                    ///
                    /// Проверка района
                    if (row.ItemArray[3].ToString() != string.Empty)
                    {
                        ticket.RecipientStreet = row.ItemArray[3].ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("не введена улица");
                    }
                    ///
                    ///
                    int houseNumber;
                    if (Int32.TryParse(row.ItemArray[4].ToString(), out houseNumber) == true)
                    {
                        ticket.RecipientStreetNumber = houseNumber.ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный номер дома");
                    }
                    /// Заполнение корпуса и квартиры
                    if (row.ItemArray[5].ToString() != string.Empty)
                    {
                        ticket.RecipientKorpus = row.ItemArray[5].ToString();
                    }
                    if (row.ItemArray[6].ToString() != string.Empty)
                    {
                        ticket.RecipientKvartira = row.ItemArray[6].ToString();
                    }
                    ///
                    /// Проверка фамилии, имени и отчества
                    if (row.ItemArray[7].ToString().Length < 2 || row.ItemArray[8].ToString().Length < 2 || row.ItemArray[9].ToString().Length < 2)
                    {
                        norm = false;
                        errors.Add("неверные ФИО");
                    }
                    else
                    {
                        ticket.RecipientFirstName = row.ItemArray[7].ToString();
                        ticket.RecipientLastName  = row.ItemArray[8].ToString();
                        ticket.RecipientThirdName = row.ItemArray[9].ToString();
                    }
                    ///
                    /// Проверка номеров телефона
                    string input1 = row.ItemArray[10].ToString();
                    string input2 = row.ItemArray[11].ToString();

                    int numMatches1 = 0;
                    foreach (Match m in Regex.Matches(input1, patternPhone))
                    {
                        numMatches1++;
                    }
                    int numMatches2 = 0;
                    foreach (Match m in Regex.Matches(input2, patternPhone))
                    {
                        numMatches2++;
                    }

                    if (row.ItemArray[10].ToString() == string.Empty || numMatches1 != 1)
                    {
                        norm = false;
                        errors.Add("неверный 1 номер телефона");
                    }
                    else
                    {
                        ticket.RecipientPhone = row.ItemArray[10].ToString();
                    }

                    if (row.ItemArray[11].ToString() != string.Empty && numMatches2 != 1)
                    {
                        norm = false;
                        errors.Add("неверный 2 номер телефона");
                    }
                    else
                    {
                        if (row.ItemArray[11].ToString() != string.Empty)
                        {
                            ticket.RecipientPhoneTwo = row.ItemArray[11].ToString();
                        }
                    }
                    ///
                    /// Проверка стоимости доставки для получателя
                    string patternCost = @"^\d+,\d{2}$";

                    if (row.ItemArray[12].ToString() != string.Empty)
                    {
                        //if (Regex.Matches(row.ItemArray[12].ToString(), patternCost).Count == 1)
                        try
                        {
                            ticket.DeliveryCost = Convert.ToDecimal(row.ItemArray[12].ToString());
                        }
                        catch
                        {
                            norm = false;
                            errors.Add("неверная стоимость для получателя");
                        }
                    }
                    else
                    {
                        ticket.DeliveryCost = 0;
                    }
                    ///
                    /// Проверка товаров
                    List <Goods>  goods    = new List <Goods>();
                    List <string> goodsStr = row.ItemArray[13].ToString().Split(';').ToList();
                    if (goodsStr.Count == 0)
                    {
                        norm = false;
                        errors.Add("не введены товары");
                    }
                    foreach (string goodStr in goodsStr)
                    {
                        List <string> goodParams = goodStr.Split('|').ToList();
                        if (goodParams.Count != 4)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары");
                            goods = new List <Goods>();
                            break;
                        }
                        string goodDesc  = goodParams[0];
                        string goodModel = goodParams[1];
                        string goodCost  = goodParams[2];
                        string goodCount = goodParams[3];
                        ///
                        var titleForCheck = new Titles();
                        titleForCheck.Name = goodDesc.Trim();
                        titleForCheck.GetByName();
                        if (titleForCheck.ID == 0)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары");
                            goods = new List <Goods>();
                            break;
                        }

                        int count;
                        if (Int32.TryParse(goodCount, out count) == false)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары");
                            goods = new List <Goods>();
                            break;
                        }

                        if (Regex.Matches(goodCost, patternCost).Count != 1)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары");
                            goods = new List <Goods>();
                            break;
                        }

                        Goods good = new Goods()
                        {
                            Description = OtherMethods.BeInUseReplace(goodDesc).Trim(),
                            Model       = goodModel.Trim(),
                            Number      = Convert.ToInt32(goodCount),
                            Cost        = Convert.ToDecimal(goodCost)
                        };
                        goods.Add(good);
                    }
                    ///
                    /// Получение стоимости за товары
                    ticket.AssessedCost = 0;
                    foreach (Goods good in goods)
                    {
                        ticket.AssessedCost += good.Number * good.Cost;
                    }
                    ///
                    /// Проверка количества грузовых мест
                    int boxesNumber;
                    if (row.ItemArray[14].ToString() != string.Empty)
                    {
                        if (Int32.TryParse(row.ItemArray[14].ToString(), out boxesNumber) != false)
                        {
                            ticket.BoxesNumber = boxesNumber;
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверно введено количество коробок");
                        }
                    }
                    else
                    {
                        ticket.BoxesNumber = 1;
                    }
                    ///
                    /// Проверка даты отправки
                    //if (Regex.Matches(row.ItemArray[15].ToString(), patternDate).Count == 1)
                    //{
                    DateTime date1;
                    try
                    {
                        date1 = Convert.ToDateTime(Convert.ToDateTime(row.ItemArray[15].ToString()).ToString("dd-MM-yyyy"));

                        DateTime date2 = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("dd-MM-yyyy"));

                        if (ticket.CityID != null)
                        {
                            var allCity  = Application["CityList"] as List <City>;
                            var city     = allCity.First(u => u.ID == Convert.ToInt32(ticket.CityID));
                            var district = new Districts {
                                ID = Convert.ToInt32(city.DistrictID)
                            };
                            district.GetById();
                            var selectDayOfWeek = Convert.ToDateTime(Convert.ToDateTime(row.ItemArray[15].ToString()).ToString("dd-MM-yyyy")).DayOfWeek;
                            if ((selectDayOfWeek == DayOfWeek.Monday && district.Monday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Tuesday && district.Tuesday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Wednesday && district.Wednesday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Thursday && district.Thursday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Friday && district.Friday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Saturday && district.Saturday != 1) ||
                                (selectDayOfWeek == DayOfWeek.Sunday && district.Sunday != 1))
                            {
                                norm = false;
                                errors.Add("отправка возможна только в дни отправки");
                            }

                            if (date1 < date2 && ticket.CityID != 11)
                            {
                                norm = false;
                                errors.Add("отправка в города отличные от Минска возможна только на следующий день после создания заявки!");
                            }

                            if (date1 < Convert.ToDateTime(DateTime.Now.ToString("dd-MM-yyyy")) && ticket.CityID == 11)
                            {
                                norm = false;
                                errors.Add("доставка по Минску возможна только с текущего дня и далее!");
                            }

                            ticket.DeliveryDate = date1;
                        }
                    }
                    catch (Exception)
                    {
                        norm = false;
                        errors.Add("неверная дата");
                    }
                    //}
                    //else
                    //{
                    //norm = false;
                    //errors.Add("неверный формат даты отправки");
                    //}
                    ///
                    /// Комментарии
                    if (row.ItemArray[16].ToString() != string.Empty)
                    {
                        ticket.Note = row.ItemArray[16].ToString();
                    }
                    ///
                    /// Проверка данных документов
                    if (profileType == 2 || profileType == 3)
                    {
                        if (Regex.Matches(row.ItemArray[17].ToString(), patternTTNSeria).Count == 1)
                        {
                            ticket.TtnSeria = row.ItemArray[17].ToString();
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверно введена ТТН серия");
                        }

                        if (Regex.Matches(row.ItemArray[18].ToString(), patternTTNNumber).Count == 1)
                        {
                            ticket.TtnNumber = row.ItemArray[18].ToString();
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверно введен ТТН номер");
                        }
                    }
                    else
                    {
                        ticket.TtnNumber = string.Empty;
                        ticket.TtnSeria  = string.Empty;
                    }

                    ticket.OtherDocuments = row.ItemArray[19].ToString();
                    ///
                    /// Проверка серии и номера паспорта
                    if (Regex.Matches(row.ItemArray[20].ToString(), patternTTNSeria).Count == 1)
                    {
                        ticket.PassportSeria = row.ItemArray[20].ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введена серия паспорта");
                    }

                    if (Regex.Matches(row.ItemArray[21].ToString(), patternTTNNumber).Count == 1)
                    {
                        ticket.PassportNumber = row.ItemArray[21].ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введен номер паспорта");
                    }
                    ///
                    /// Подсчет стоимости за услугу
                    List <GoodsFromAPI> goodsAPI = new List <GoodsFromAPI>();
                    foreach (Goods good in goods)
                    {
                        GoodsFromAPI goodAPI = new GoodsFromAPI()
                        {
                            Description = good.Description,
                            Number      = good.Number
                        };
                        goodsAPI.Add(goodAPI);
                    }

                    if (goodsAPI.Count > 0)
                    {
                        var gruzobozCost = Calculator.Calculate(goodsAPI, Convert.ToInt32(ticket.CityID), userID, Convert.ToInt32(ticket.UserProfileID), profileType.ToString(), ticket.AssessedCost.ToString(), Convert.ToInt32(userDiscount));
                        //если стоимость за услугу не конвертируется в decimal - значит записываем 0
                        try
                        {
                            ticket.GruzobozCost = Decimal.Parse(gruzobozCost);
                        }
                        catch (Exception)
                        {
                            ticket.GruzobozCost = 0;
                        }
                        ///
                        /// Расчет веса
                        ticket.Weight = GoodsHelper.GoodsWeight(goodsAPI);
                    }

                    ///
                    /// Заполнение полей склада
                    if (warehouses.Rows.Count == 0)
                    {
                        norm = false;
                        errors.Add("ошибка склада");
                    }
                    DataRow rowWareHouses = warehouses.Rows[0];

                    ticket.SenderApartmentNumber = rowWareHouses["ApartmentNumber"].ToString();
                    ticket.SenderCityID          = Convert.ToInt32(rowWareHouses["CityID"].ToString());
                    ticket.SenderHousing         = rowWareHouses["Housing"].ToString();
                    ticket.SenderStreetName      = rowWareHouses["StreetName"].ToString();
                    ticket.SenderStreetNumber    = rowWareHouses["StreetNumber"].ToString();
                    ticket.SenderStreetPrefix    = rowWareHouses["StreetPrefix"].ToString();
                    ///
                    /// СОЗДАНИЕ ЗАЯВКИ
                    ///

                    string error = string.Empty;
                    foreach (string errorMsg in errors)
                    {
                        error += errorMsg;
                        error += ", ";
                    }
                    rowsError.Add(error);

                    string color;
                    if (errors.Count != 0)
                    {
                        color = "redRow";
                    }
                    else
                    {
                        color = "greenRow";
                    }
                    rowsColor.Add(color);

                    if (norm == true)
                    {
                        if (id == null)
                        {
                            rowsSuccessCount++;

                            //записываем хеши для заявки
                            if (user.Role != Users.Roles.User.ToString())
                            {
                                ticket.SecureID     = OtherMethods.CreateUniqId("1" + DateTime.Now.ToString("yyMdHms"));
                                ticket.FullSecureID = OtherMethods.CreateFullUniqId("1" + DateTime.Now.ToString("yyMdHms"));
                            }
                            else
                            {
                                ticket.SecureID     = OtherMethods.CreateUniqId(user.ID + DateTime.Now.ToString("yyMdHms"));
                                ticket.FullSecureID = OtherMethods.CreateFullUniqId(user.ID + DateTime.Now.ToString("yyMdHms"));
                            }

                            for (int j = 0; j < goods.Count; j++) //сохраняем заявки
                            {
                                goods[j].TicketFullSecureID = ticket.FullSecureID;
                                goods[j].Create();
                            }
                            ticket.Create();
                            #region Отправка емейла логистам

                            var logistRb      = BackendHelper.TagToValue("logist_rb_email");
                            var logistMinsk   = BackendHelper.TagToValue("logist_minsk_email");
                            var isMinskRegion = BackendHelper.TagToValue("logist_minsk_region");
                            var senderCity    = new City {
                                ID = Convert.ToInt32(ticket.SenderCityID)
                            };
                            senderCity.GetById();

                            if (isMinskRegion != "true")
                            {
                                if (!string.IsNullOrEmpty(logistRb) && senderCity.DistrictID != 10)
                                {
                                    try
                                    {
                                        EmailMethods.MailSend("Создана новая заявка с забором в РБ",
                                                              String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistRb, true);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(logistMinsk) && !(ticket.SenderCityID == 11 && ticket.SenderStreetName.ToLower() == BackendHelper.TagToValue("loading_point_street").ToLower() &&
                                                                                ticket.SenderStreetNumber == BackendHelper.TagToValue("loading_point_street_number")))
                                    {
                                        try
                                        {
                                            EmailMethods.MailSend("Создана новая заявка с забором в Минске и районе",
                                                                  String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistMinsk, true);
                                        }
                                        catch (Exception)
                                        {
                                            // ignored
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(logistRb) && senderCity.RegionID != 1)
                                {
                                    try
                                    {
                                        EmailMethods.MailSend("Создана новая заявка с забором в РБ",
                                                              String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistRb, true);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(logistMinsk) && !(ticket.SenderCityID == 11 && ticket.SenderStreetName.ToLower() == BackendHelper.TagToValue("loading_point_street") &&
                                                                                ticket.SenderStreetNumber == BackendHelper.TagToValue("loading_point_street_number")))
                                    {
                                        try
                                        {
                                            EmailMethods.MailSend("Создана новая заявка с забором в Минске и области",
                                                                  String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistMinsk, true);
                                        }
                                        catch (Exception)
                                        {
                                            // ignored
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                    }
                }

                for (int j = 0; j < result.Tables[0].Rows.Count; j++)
                {
                    result.Tables[0].Rows[j][22] = rowsError[j];
                    result.Tables[0].Rows[j][23] = rowsColor[j];
                }

                labelStatus.Text = "Успешно импортировано " + rowsSuccessCount.ToString() +
                                   " из " + rowsCount.ToString() + " заявок";
                ListXML.DataSource = result.Tables[0];
                ListXML.DataBind();
            }
        }
Example #20
0
        public List <TicketsCreateResult> CreateTickets(List <TicketToCreate> tickets, int id)
        {
            List <TicketsCreateResult> result = new List <TicketsCreateResult>();

            selectProfilesDataSet = dm.QueryWithReturnDataSet(string.Format("SELECT * FROM `usersprofiles` WHERE `UserID` = {0} AND `StatusID` = 1", id)).Tables[0];
            ////////////////

            string userDiscount;
            int    userID;

            int rowsCount        = 0;
            int rowsSuccessCount = 0;

            var user = new Users
            {
                ID = id
            };

            user.GetById();

            userID = user.ID;

            if (user.Role != Users.Roles.User.ToString())
            {
                userDiscount = "0";
                userID       = 1;
            }
            else
            {
                userDiscount = user.Discount.ToString();
            }

            int num = 0;

            foreach (TicketToCreate row in tickets)
            {
                bool          norm        = true;
                List <string> errors      = new List <string>();
                Tickets       ticket      = new Tickets();
                int?          profileType = null;

                TicketsCreateResult resultTicket = new TicketsCreateResult();
                resultTicket.number = num.ToString();
                num++;

                /// проверка профиля
                foreach (DataRow rowProfile in selectProfilesDataSet.Rows)
                {
                    string selectProfileName = String.IsNullOrEmpty(rowProfile["CompanyName"].ToString())
                        ? String.Format("{0} {1}", rowProfile["FirstName"], rowProfile["LastName"])
                        : rowProfile["CompanyName"].ToString();
                    if (selectProfileName == row.ProfileName)
                    {
                        ticket.UserProfileID = Convert.ToInt32(rowProfile["ID"].ToString());
                        ticket.UserID        =
                            UsersHelper.GetUserIdByUserProfileId(Convert.ToInt32(ticket.UserProfileID));

                        profileType = Convert.ToInt32(rowProfile["TypeID"].ToString());
                        if (profileType == 2)
                        {
                            ticket.PrintNaklInMap = 1;
                            ticket.PrintNakl      = 0;
                        }
                        else
                        {
                            ticket.PrintNaklInMap = 0;
                            ticket.PrintNakl      = 1;
                        }

                        break;
                    }
                }
                if (ticket.UserProfileID == null)
                {
                    norm = false;
                    errors.Add("неверный профиль");
                }
                /// проверка ID города
                ///
                int cityId;
                if (Int32.TryParse(row.CityID, out cityId) != false)
                {
                    if (CityHelper.CityIDToCityName(row.CityID.ToString()) != null)
                    {
                        ticket.CityID = Convert.ToInt32(row.CityID.ToString());
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный ID города");
                    }
                }
                else
                {
                    norm = false;
                    errors.Add("неверный ID города");
                }
                ///
                /// Проверка типа улицы
                if (row.StreetPrefix == null || RecipientStreetPrefixes.Contains(row.StreetPrefix))
                {
                    ticket.RecipientStreetPrefix = row.StreetPrefix;
                }
                else
                {
                    norm = false;
                    errors.Add("неверный префикс улицы");
                }

                ///
                /// Проверка района
                if (row.StreetName != string.Empty)
                {
                    ticket.RecipientStreet = row.StreetName;
                }
                else
                {
                    norm = false;
                    errors.Add("не введена улица");
                }
                ///
                ///
                int houseNumber;
                if (Int32.TryParse(row.HouseNumber, out houseNumber))
                {
                    ticket.RecipientStreetNumber = houseNumber.ToString();
                }
                else
                {
                    norm = false;
                    errors.Add("неверный номер дома");
                }
                /// Заполнение корпуса и квартиры
                if (row.Korpus != string.Empty)
                {
                    ticket.RecipientKorpus = row.Korpus;
                }
                if (row.Kvartira != string.Empty)
                {
                    ticket.RecipientKvartira = row.Kvartira;
                }
                ///
                /// Проверка фамилии, имени и отчества
                if (row.FirstName == null || row.SecondName == null || row.ThirdName == null ||
                    row.FirstName.Length < 2 || row.SecondName.Length < 2 || row.ThirdName.Length < 2)
                {
                    norm = false;
                    errors.Add("неверные ФИО");
                }
                else
                {
                    ticket.RecipientFirstName = row.FirstName;
                    ticket.RecipientLastName  = row.SecondName;
                    ticket.RecipientThirdName = row.ThirdName;
                }
                ///
                /// Проверка номеров телефона
                string input1 = row.FirstTelefonNumber;
                string input2 = row.SecondTelefonNumber;

                int numMatches1 = 0;
                if (input1 != null)
                {
                    foreach (Match m in Regex.Matches(input1, patternPhone))
                    {
                        numMatches1++;
                    }
                }
                int numMatches2 = 0;
                if (input2 != null)
                {
                    foreach (Match m in Regex.Matches(input2, patternPhone))
                    {
                        numMatches2++;
                    }
                }

                if (row.FirstTelefonNumber == string.Empty || numMatches1 != 1)
                {
                    norm = false;
                    errors.Add("неверный 1 номер телефона");
                }
                else
                {
                    ticket.RecipientPhone = row.FirstTelefonNumber;
                }

                if (row.SecondTelefonNumber != string.Empty && numMatches2 != 1)
                {
                    norm = false;
                    errors.Add("неверный 2 номер телефона");
                }
                else
                {
                    if (row.SecondTelefonNumber != string.Empty)
                    {
                        ticket.RecipientPhoneTwo = row.SecondTelefonNumber;
                    }
                }
                ///
                /// Проверка стоимости доставки для получателя
                string patternCost = @"^\d+,\d{2}$";

                if (row.RecieverCost != string.Empty)
                {
                    //if (Regex.Matches(row.ItemArray[12].ToString(), patternCost).Count == 1)
                    try
                    {
                        ticket.DeliveryCost = Convert.ToDecimal(row.RecieverCost);
                    }
                    catch
                    {
                        norm = false;
                        errors.Add("неверная стоимость для получателя");
                    }
                }
                else
                {
                    ticket.DeliveryCost = 0;
                }
                ///
                /// Проверка товаров
                List <Goods> goods = new List <Goods>();
                if (row.Goods == null || row.Goods.Count == 0)
                {
                    norm = false;
                    errors.Add("не введены товары");
                }
                else
                {
                    foreach (TicketGood good in row.Goods)
                    {
                        if (string.IsNullOrEmpty(good.GoodName) || string.IsNullOrEmpty(good.GoodModel) || string.IsNullOrEmpty(good.GoodCount) || string.IsNullOrEmpty(good.GoodCost))
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары");
                            goods = new List <Goods>();
                            break;
                        }
                        string goodDesc  = good.GoodName;
                        string goodModel = good.GoodModel;
                        string goodCost  = good.GoodCost;
                        string goodCount = good.GoodCount;
                        ///
                        var titleForCheck = new Titles();
                        titleForCheck.Name = goodDesc.Trim();
                        titleForCheck.GetByName();
                        if (titleForCheck.ID == 0)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары: товар не найден");
                            goods = new List <Goods>();
                            break;
                        }

                        int count;
                        if (Int32.TryParse(goodCount, out count) == false)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары: не верное количество");
                            goods = new List <Goods>();
                            break;
                        }

                        if (Regex.Matches(goodCost, patternCost).Count != 1)
                        {
                            norm = false;
                            errors.Add("неверно заполнены товары: не верная цена");
                            goods = new List <Goods>();
                            break;
                        }

                        Goods goodCreate = new Goods()
                        {
                            Description = OtherMethods.BeInUseReplace(goodDesc).Trim(),
                            Model       = goodModel.Trim(),
                            Number      = Convert.ToInt32(goodCount),
                            Cost        = Convert.ToDecimal(goodCost)
                        };
                        goods.Add(goodCreate);
                    }
                    ///
                    /// Получение стоимости за товары
                    ticket.AssessedCost = 0;
                    foreach (Goods good in goods)
                    {
                        ticket.AssessedCost += good.Number * good.Cost;
                    }
                    ///
                    /// Проверка количества грузовых мест
                    int boxesNumber;
                    if (row.BoxCount != string.Empty)
                    {
                        if (Int32.TryParse(row.BoxCount, out boxesNumber) != false)
                        {
                            ticket.BoxesNumber = boxesNumber;
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверно введено количество коробок");
                        }
                    }
                    else
                    {
                        ticket.BoxesNumber = 1;
                    }
                }
                ///
                /// Проверка даты отправки
                //if (Regex.Matches(row.ItemArray[15].ToString(), patternDate).Count == 1)
                //{
                DateTime date1;
                try
                {
                    date1 = Convert.ToDateTime(Convert.ToDateTime(row.SendDate).ToString("dd-MM-yyyy"));

                    DateTime date2 = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("dd-MM-yyyy"));

                    if (ticket.CityID != null)
                    {
                        var city = new City()
                        {
                            ID = Convert.ToInt32(row.CityID)
                        };
                        city.GetById();

                        //var city = allCity.First(u => u.ID == Convert.ToInt32(ticket.CityID));
                        var district = new Districts {
                            ID = Convert.ToInt32(city.DistrictID)
                        };
                        district.GetById();
                        var selectDayOfWeek = Convert.ToDateTime(Convert.ToDateTime(row.SendDate).ToString("dd-MM-yyyy")).DayOfWeek;
                        if ((selectDayOfWeek == DayOfWeek.Monday && district.Monday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Tuesday && district.Tuesday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Wednesday && district.Wednesday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Thursday && district.Thursday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Friday && district.Friday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Saturday && district.Saturday != 1) ||
                            (selectDayOfWeek == DayOfWeek.Sunday && district.Sunday != 1))
                        {
                            norm = false;
                            errors.Add("отправка возможна только в дни отправки");
                        }

                        if (date1 < date2 && ticket.CityID != 11)
                        {
                            norm = false;
                            errors.Add("отправка в города отличные от Минска возможна только на следующий день после создания заявки!");
                        }

                        if (date1 < Convert.ToDateTime(DateTime.Now.ToString("dd-MM-yyyy")) && ticket.CityID == 11)
                        {
                            norm = false;
                            errors.Add("доставка по Минску возможна только с текущего дня и далее!");
                        }

                        ticket.DeliveryDate = date1;
                    }
                }
                catch (Exception)
                {
                    norm = false;
                    errors.Add("неверная дата");
                }
                //}
                //else
                //{
                //norm = false;
                //errors.Add("неверный формат даты отправки");
                //}
                ///
                /// Комментарии
                if (row.Comments != string.Empty)
                {
                    ticket.Note = row.Comments;
                }
                ///
                /// Проверка данных документов
                if (profileType == 2 || profileType == 3)
                {
                    if (Regex.Matches(row.TTNSeria, patternTTNSeria).Count == 1)
                    {
                        ticket.TtnSeria = row.TTNSeria;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введена ТТН серия");
                    }

                    if (Regex.Matches(row.TTNNmber, patternTTNNumber).Count == 1)
                    {
                        ticket.TtnNumber = row.TTNNmber;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введен ТТН номер");
                    }
                }
                else
                {
                    ticket.TtnNumber = string.Empty;
                    ticket.TtnSeria  = string.Empty;
                }

                ticket.OtherDocuments = row.OtherDocuments;
                ///
                /// Проверка серии и номера паспорта
                if (!string.IsNullOrEmpty(ticket.PassportNumber) || !string.IsNullOrEmpty(ticket.PassportSeria))
                {
                    if (Regex.Matches(row.PassportSeria, patternTTNSeria).Count == 1)
                    {
                        ticket.PassportSeria = row.PassportSeria;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введена серия паспорта");
                    }

                    if (Regex.Matches(row.PassportNumber, patternTTNNumber).Count == 1)
                    {
                        ticket.PassportNumber = row.PassportNumber;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверно введен номер паспорта");
                    }
                }
                ///
                /// Подсчет стоимости за услугу
                List <GoodsFromAPI> goodsAPI = new List <GoodsFromAPI>();
                foreach (Goods good in goods)
                {
                    GoodsFromAPI goodAPI = new GoodsFromAPI()
                    {
                        Description = good.Description,
                        Number      = good.Number
                    };
                    goodsAPI.Add(goodAPI);
                }

                if (goodsAPI.Count > 0)
                {
                    var gruzobozCost = Calculator.Calculate(goodsAPI, Convert.ToInt32(ticket.CityID), userID, Convert.ToInt32(ticket.UserProfileID), profileType.ToString(), ticket.AssessedCost.ToString(), Convert.ToInt32(userDiscount));
                    //если стоимость за услугу не конвертируется в decimal - значит записываем 0
                    try
                    {
                        ticket.GruzobozCost = Decimal.Parse(gruzobozCost);
                    }
                    catch (Exception)
                    {
                        ticket.GruzobozCost = 0;
                    }
                    ///
                    /// Расчет веса
                    ticket.Weight = GoodsHelper.GoodsWeight(goodsAPI);
                }

                ///
                /// Заполнение полей склада
                if (warehouses.Rows.Count == 0)
                {
                    norm = false;
                    errors.Add("ошибка склада");
                }
                DataRow rowWareHouses = warehouses.Rows[0];

                if (ticket.SenderCityID != null || !string.IsNullOrEmpty(ticket.SenderHousing) || !string.IsNullOrEmpty(ticket.SenderStreetName) ||
                    !string.IsNullOrEmpty(ticket.SenderStreetNumber) || !string.IsNullOrEmpty(ticket.SenderStreetPrefix) || !string.IsNullOrEmpty(ticket.SenderApartmentNumber))
                {
                    ticket.SenderApartmentNumber = rowWareHouses["ApartmentNumber"].ToString();
                    ticket.SenderCityID          = Convert.ToInt32(rowWareHouses["CityID"].ToString());
                    ticket.SenderHousing         = rowWareHouses["Housing"].ToString();
                    ticket.SenderStreetName      = rowWareHouses["StreetName"].ToString();
                    ticket.SenderStreetNumber    = rowWareHouses["StreetNumber"].ToString();
                    ticket.SenderStreetPrefix    = rowWareHouses["StreetPrefix"].ToString();
                }
                else
                {
                    if (Int32.TryParse(row.SenderCityID, out cityId) != false)
                    {
                        if (CityHelper.CityIDToCityName(row.SenderCityID.ToString()) != null)
                        {
                            ticket.SenderCityID = Convert.ToInt32(row.SenderCityID.ToString());
                        }
                        else
                        {
                            norm = false;
                            errors.Add("неверный ID города отправки");
                        }
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный ID города");
                    }
                    ///
                    /// Проверка типа улицы
                    if (RecipientStreetPrefixes.Contains(row.SenderStreetPrefix))
                    {
                        ticket.SenderStreetPrefix = row.SenderStreetPrefix;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный префикс улицы отправки");
                    }

                    ///
                    /// Проверка района
                    if (row.SenderStreetName != string.Empty)
                    {
                        ticket.SenderStreetName = row.SenderStreetName;
                    }
                    else
                    {
                        norm = false;
                        errors.Add("не введена улица отправки");
                    }
                    ///
                    ///
                    if (Int32.TryParse(row.SenderHouseNumber, out houseNumber))
                    {
                        ticket.SenderStreetNumber = houseNumber.ToString();
                    }
                    else
                    {
                        norm = false;
                        errors.Add("неверный номер дома отправки");
                    }
                    /// Заполнение корпуса и квартиры
                    if (row.SenderKorpus != string.Empty)
                    {
                        ticket.SenderHousing = row.SenderKorpus;
                    }
                    if (row.Kvartira != string.Empty)
                    {
                        ticket.SenderApartmentNumber = row.SenderKvartira;
                    }
                }


                ///
                /// СОЗДАНИЕ ЗАЯВКИ
                ///

                string error = string.Empty;
                foreach (string errorMsg in errors)
                {
                    error += errorMsg;
                    error += ", ";
                }
                rowsError.Add(error);

                if (norm == true)
                {
                    try
                    {
                        rowsSuccessCount++;

                        //записываем хеши для заявки
                        if (user.Role != Users.Roles.User.ToString())
                        {
                            ticket.SecureID     = OtherMethods.CreateUniqId("1" + DateTime.Now.ToString("yyMdHms") + tickets.IndexOf(row));
                            ticket.FullSecureID = OtherMethods.CreateFullUniqId("1" + DateTime.Now.ToString("yyMdHms") + tickets.IndexOf(row));
                        }
                        else
                        {
                            ticket.SecureID     = OtherMethods.CreateUniqId(user.ID + DateTime.Now.ToString("yyMdHms") + tickets.IndexOf(row));
                            ticket.FullSecureID = OtherMethods.CreateFullUniqId(user.ID + DateTime.Now.ToString("yyMdHms") + tickets.IndexOf(row));
                        }

                        resultTicket.ID = ticket.SecureID;


                        for (int j = 0; j < goods.Count; j++) //сохраняем заявки
                        {
                            goods[j].TicketFullSecureID = ticket.FullSecureID;
                            goods[j].Create();
                        }
                        ticket.Create();
                        #region Отправка емейла логистам

                        var logistRb      = BackendHelper.TagToValue("logist_rb_email");
                        var logistMinsk   = BackendHelper.TagToValue("logist_minsk_email");
                        var isMinskRegion = BackendHelper.TagToValue("logist_minsk_region");
                        var senderCity    = new City {
                            ID = Convert.ToInt32(ticket.SenderCityID)
                        };
                        senderCity.GetById();

                        if (isMinskRegion != "true")
                        {
                            if (!string.IsNullOrEmpty(logistRb) && senderCity.DistrictID != 10)
                            {
                                try
                                {
                                    EmailMethods.MailSend("Создана новая заявка с забором в РБ",
                                                          String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistRb, true);
                                }
                                catch (Exception)
                                {
                                    // ignored
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(logistMinsk) && !(ticket.SenderCityID == 11 && ticket.SenderStreetName.ToLower() == BackendHelper.TagToValue("loading_point_street").ToLower() &&
                                                                            ticket.SenderStreetNumber == BackendHelper.TagToValue("loading_point_street_number")))
                                {
                                    try
                                    {
                                        EmailMethods.MailSend("Создана новая заявка с забором в Минске и районе",
                                                              String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistMinsk, true);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(logistRb) && senderCity.RegionID != 1)
                            {
                                try
                                {
                                    EmailMethods.MailSend("Создана новая заявка с забором в РБ",
                                                          String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistRb, true);
                                }
                                catch (Exception)
                                {
                                    // ignored
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(logistMinsk) && !(ticket.SenderCityID == 11 && ticket.SenderStreetName.ToLower() == BackendHelper.TagToValue("loading_point_street") &&
                                                                            ticket.SenderStreetNumber == BackendHelper.TagToValue("loading_point_street_number")))
                                {
                                    try
                                    {
                                        EmailMethods.MailSend("Создана новая заявка с забором в Минске и области",
                                                              String.Format("Заявка #{0}, {1}", ticket.SecureID, senderCity.Name), logistMinsk, true);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored
                                    }
                                }
                            }
                        }
                        #endregion

                        resultTicket.desc = "Заявка создана";
                    }
                    catch (Exception ex)
                    {
                        resultTicket.desc = "Заявка не создана";
                    }
                }
                else
                {
                    resultTicket.desc = error;
                }

                result.Add(resultTicket);
            }


            ////////////////

            return(result);
        }
Example #21
0
        public void bntCreate_Click(object sender, EventArgs e)
        {
            var dm                  = new DataManager();
            var userRegPosible      = UsersHelper.UserLoginEmailRegisteredChecker(tbEmail.Text);
            var emailCorrectly      = EmailMethods.EmailChecker(tbEmail.Text);
            var registrationPosible = true;

            if (!userRegPosible)
            {
                lblError.Text       = "Пользователь с таким логином либо e-mail'ом уже есть в нашей базе!<br/>";
                registrationPosible = false;
            }

            if (!emailCorrectly)
            {
                lblError.Text       = "Введен недопустимый е-mail!<br/>";
                registrationPosible = false;
            }

            if (!registrationPosible)
            {
                return;
            }

            #region Создание клиента

            var userInSession = (Users)Session["userinsession"];
            var user          = new Users
            {
                Name        = tbName.Text,
                Family      = tbFamily.Text,
                Email       = tbEmail.Text,
                Login       = tbEmail.Text,
                Password    = "******",
                Role        = Users.Roles.User.ToString(),
                Phone       = tbPhone.Text,
                CreateDate  = DateTime.Now,
                ContactDate =
                    string.IsNullOrEmpty(tbContactDate.Text)
                        ? Convert.ToDateTime("01.01.0001 0:00:00")
                        : Convert.ToDateTime(tbContactDate.Text),
                StatusStady    = Convert.ToInt32(ddlStatusStady.SelectedValue),
                Status         = 1, /* not activated */
                SalesManagerID = Convert.ToInt32(ddlSalesManager.SelectedValue),
                Note           = WebUtility.HtmlEncode(string.Format(
                                                           "<div class='comment-history-body'>{1}</div>" +
                                                           "<div>" +
                                                           "<span class='comment-history-name'>{0}</span>" +
                                                           "<span class='comment-history-date'>{2}</span>" +
                                                           "</div>",
                                                           UsersHelper.UserIDToFullName(userInSession.ID.ToString()),
                                                           tbComment.Text,
                                                           DateTime.Now.ToString("dd.MM в HH:mm")))
            };
            user.Create();
            #endregion

            var userId = Convert.ToInt32(dm.QueryWithReturnDataSet("SELECT `ID` FROM `users` ORDER BY `ID` DESC LIMIT 1").Tables[0].Rows[0][0]);

            #region Создание профиля
            var profile = new UsersProfiles
            {
                UserID              = userId,
                StatusID            = 0,
                TypeID              = Convert.ToInt32(ddlProfileType.SelectedValue),
                CreateDate          = DateTime.Now,
                IsDefault           = 1,
                CompanyName         = string.Format("{0} «{1}»", ddlCompanyType.SelectedItem, tbCompanyName.Text),
                DirectorPhoneNumber = tbDirectorPhone.Text,
                FirstName           = tbDirectorFamily.Text,
                LastName            = tbDirectorName.Text,
                ThirdName           = tbDirectorPatronymic.Text,
                ContactPersonFIO    = tbContactPersonFIO.Text,
            };
            if (!string.IsNullOrEmpty(tbContactPhoneNumbers2.Text))
            {
                profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text + ";" +
                                              tbContactPhoneNumbers2.Text;
            }
            else
            {
                profile.ContactPhoneNumbers = tbContactPhoneNumbers.Text;
            }
            profile.Create();
            #endregion

            #region Добавление клиенту категорий
            foreach (var items in lvAllCategory.Items)
            {
                var hfCategoryId = (HiddenField)items.FindControl("hfCategoryId");
                var cbCategory   = (CheckBox)items.FindControl("cbCategory");
                if (cbCategory.Checked)
                {
                    dm.QueryWithoutReturnData(null, string.Format("INSERT IGNORE INTO `userstocategory` (`UserID`, `CategoryID`) VALUES ('{0}', '{1}');", userId, hfCategoryId.Value));
                }
            }
            #endregion

            Page.Response.Redirect("~/ManagerUI/Menu/Souls/ClientsView.aspx");
        }
Example #22
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");
        }
Example #23
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);
            }
        }
Example #24
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");
        }