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); }
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"); } }
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"; } }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); } }
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, что равно отсутствию ошибок }
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"); }
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); }
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(); } }
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); }
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"); }
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"); }
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); } }
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"); }