private ChangeState ComparePhone(string fieldValue, string newValue, ChangeType rowChange)
        {
            newValue = phoneFormatter.FormatString(newValue);
            var changeType = String.Equals(fieldValue, newValue, StringComparison.InvariantCultureIgnoreCase) ?
                             ChangeType.NotChanged : rowChange;

            if (newValue.Length != phoneFormatter.MaxStringLength)
            {
                changeType = ChangeType.ParseError;
            }
            return(changeType == ChangeType.ChangeValue ?
                   new ChangeState(changeType, fieldValue) : new ChangeState(changeType));
        }
예제 #2
0
        public void RussiaOnlyHyphenated_CursorOnEndTest()
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);
            int pos            = 1;

            phoneFormatter.FormatString("8", ref pos);
            Assert.That(pos, Is.EqualTo(4));

            pos = 5;
            phoneFormatter.FormatString("+7812", ref pos);
            Assert.That(pos, Is.EqualTo(6));

            pos = 7;
            phoneFormatter.FormatString("+7-8123", ref pos);
            Assert.That(pos, Is.EqualTo(8));
        }
예제 #3
0
        public void RussiaOnlyHyphenated_ConvertFromAnotherFormatsTest(string insertPhone)
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);
            var result         = phoneFormatter.FormatString(insertPhone);

            Assert.That(result, Is.EqualTo("+7-812-309-80-89"));
        }
예제 #4
0
        public void RussiaOnlyHyphenated_RemoveExtraDigitsTest()
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);
            var result         = phoneFormatter.FormatString("+700011122334455");

            Assert.That(result, Is.EqualTo("+7-000-111-22-33"));
        }
예제 #5
0
        public void RussiaOnlyShort_ConvertFromAnotherFormatsTest(string insertPhone)
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyShort);
            var result         = phoneFormatter.FormatString(insertPhone);

            Assert.That(result, Is.EqualTo("+78123098089"));
        }
예제 #6
0
        public void BracketWithWhitespaceLastTen_ConvertFromAnotherFormatsTest1(string insertPhone, string result)
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.BracketWithWhitespaceLastTen);
            var _result        = phoneFormatter.FormatString(insertPhone);

            Assert.That(_result, Is.EqualTo(result));
        }
예제 #7
0
        public void BracketWithWhitespaceLastTen_ConvertFromAnotherFormatsTest(string insertPhone)
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.BracketWithWhitespaceLastTen);
            var result         = phoneFormatter.FormatString(insertPhone);

            Assert.That(result, Is.EqualTo("(812) 309 - 80 - 89"));
        }
예제 #8
0
        public void RussiaOnlyHyphenated_CursorKeepLocation3Test()
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);
            //Курсор
            //df r881230|98089
            int pos = 10;

            phoneFormatter.FormatString("df r88123098089", ref pos);
            //+7-812-30|9-80-89
            Assert.That(pos, Is.EqualTo(9));
        }
예제 #9
0
        public void RussiaOnlyHyphenated_CursorKeepLocation1Test()
        {
            var phoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);
            //Курсор
            //+78123098|089
            int pos = 9;

            phoneFormatter.FormatString("+78123098089", ref pos);
            //+7-812-309-8|0-89
            Assert.That(pos, Is.EqualTo(12));
        }
        private void OnSendSmsButtonPressed(object btn, EventArgs args)
        {
            if (_order.Id == 0)
            {
                _interactiveService.ShowMessage(ImportanceLevel.Error, "Перед отправкой SMS необходимо сохранить заказ",
                                                "Не удалось отправить SMS");
                return;
            }
            if (string.IsNullOrWhiteSpace(validatedPhoneEntry.Text))
            {
                _interactiveService.ShowMessage(ImportanceLevel.Error, "Вы забыли выбрать номер.", "Не удалось отправить SMS");
                return;
            }

            var alreadySentSms = _smsPaymentRepository.GetSmsPaymentsForOrder(
                InfoProvider.UoW,
                _order.Id,
                _excludeSmsPaymentStatuses
                );

            var paidSmsPayments    = alreadySentSms.Where(x => x.SmsPaymentStatus == SmsPaymentStatus.Paid).ToList();
            var waitingSmsPayments = alreadySentSms.Where(x =>
                                                          x.SmsPaymentStatus == SmsPaymentStatus.WaitingForPayment &&
                                                          DateTime.Now.Subtract(x.CreationDate).TotalMinutes < 60
                                                          ).ToList();

            if (paidSmsPayments.Any())
            {
                var paidStringBuilder = new StringBuilder();

                foreach (var payment in paidSmsPayments)
                {
                    paidStringBuilder.AppendLine($"\tКод платежа:     {payment.Id}");
                    paidStringBuilder.AppendLine($"\tТелефон:            +7 {_phoneFormatter.FormatString(payment.PhoneNumber)}");
                    paidStringBuilder.AppendLine($"\tДата создания:  {payment.CreationDate}");
                    paidStringBuilder.AppendLine($"\tДата оплаты:     {payment.PaidDate}");
                    paidStringBuilder.AppendLine($"\tНомер оплаты:  {payment.ExternalId}");
                    paidStringBuilder.AppendLine();
                }

                var sendPayment = _interactiveService.Question("Для заказа уже есть ранее оплаченные платежи по SMS:\n\n" +
                                                               $"{paidStringBuilder}" +
                                                               "Вы уверены что хотите отправить ещё одну SMS?");

                if (!sendPayment)
                {
                    return;
                }
            }
            else if (waitingSmsPayments.Any())
            {
                var waitingStringBuilder = new StringBuilder();

                foreach (var payment in waitingSmsPayments)
                {
                    waitingStringBuilder.AppendLine($"\tКод платежа:     {payment.Id}");
                    waitingStringBuilder.AppendLine($"\tТелефон:            +7 {_phoneFormatter.FormatString(payment.PhoneNumber)}");
                    waitingStringBuilder.AppendLine($"\tДата создания:  {payment.CreationDate}");
                    waitingStringBuilder.AppendLine();
                }

                var sendPayment = _interactiveService.Question("Для заказа найдены SMS, ожидающие оплату клиента:\n\n" +
                                                               $"{waitingStringBuilder}" +
                                                               "Вы уверены что хотите отправить ещё одну SMS?");

                if (!sendPayment)
                {
                    return;
                }
            }

            btnSendFastPaymentPayByQrUrlBySms.Sensitive = btnSendFastPaymentPayByCardUrlBySms.Sensitive = ySendSmsButton.Sensitive = false;
            GLib.Timeout.Add(10000, () =>
            {
                btnSendFastPaymentPayByQrUrlBySms.Sensitive   = true;
                btnSendFastPaymentPayByCardUrlBySms.Sensitive = _canSendSmsForPayFromSbpByCard;
                ySendSmsButton.Sensitive = _canSendSmsForPayFromYookassa;

                return(false);
            });

            var           smsSender = new SmsPaymentSender();
            PaymentResult result;

            try
            {
                result = smsSender.SendSmsPaymentToNumber(_order.Id, validatedPhoneEntry.Text);
            }
            catch (TimeoutException)
            {
                _interactiveService.ShowMessage(ImportanceLevel.Warning,
                                                "Превышено время ожидания ответа от сервиса оплаты по SMS.\nЕсли SMS не была отправлена, произведите повторную отправку");
                return;
            }
            switch (result.Status)
            {
            case PaymentResult.MessageStatus.Ok:
                _interactiveService.ShowMessage(ImportanceLevel.Info, "SMS отправлена успешно");
                break;

            case PaymentResult.MessageStatus.Error:
                _interactiveService.ShowMessage(ImportanceLevel.Error, result.ErrorDescription, "Не удалось отправить SMS");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #11
0
        void PhoneUpdate(XSSFWorkbook workbook, IList <WorkOrder> orders)
        {
            progressbar1.Adjustment.Value = 1;
            var sheet = workbook.CreateSheet("Телефоны");

            //Заголовок
            var headerStyle = workbook.CreateCellStyle();
            var headerFont  = workbook.CreateFont();

            headerFont.FontName           = "Calibri";
            headerFont.FontHeightInPoints = 11;
            headerFont.IsBold             = true;
            headerStyle.SetFont(headerFont);

            var newDataFormat = workbook.CreateDataFormat();
            var dateCellStyle = workbook.CreateCellStyle();

            dateCellStyle.DataFormat = newDataFormat.GetFormat("dd.MM.yyyy");

            //Ширина измеряется в количестве симвовлов * 256
            sheet.SetColumnWidth(0, 20 * 256);
            sheet.SetColumnWidth(1, 20 * 256);
            sheet.SetColumnWidth(2, 20 * 256);

            #region параметры экспорта

            string[] columnTiles = new string[] {
                "Старый",
                "Новый",
                "Действие",
            };

            #endregion

            var headerRow = sheet.CreateRow(0);
            for (var i = 0; i < columnTiles.Length; i++)
            {
                var cell = headerRow.CreateCell(i);
                cell.SetCellValue(columnTiles[i]);
                cell.CellStyle = headerStyle;
            }

            var PhoneFormatter = new PhoneFormatter(PhoneFormat.RussiaOnlyHyphenated);

            for (var row = 1; row <= orders.Count; row++)
            {
                progressbar1.Text = $"Телефон {row} из {orders.Count}";
                progressbar1.Adjustment.Value++;
                GtkHelper.WaitRedraw();

                var order      = orders[row - 1];
                var dataRow    = sheet.CreateRow(row);
                var cellOld    = dataRow.CreateCell(0);
                var cellNew    = dataRow.CreateCell(1);
                var cellAction = dataRow.CreateCell(2);
                cellOld.SetCellValue(order.Phone);
                var formated = order.Phone != null?PhoneFormatter.FormatString(order.Phone) : order.Phone;

                if (formated == order.Phone)
                {
                    cellAction.SetCellValue("Без изменений");
                }
                else if (formated.Length == 16)
                {
                    cellAction.SetCellValue("Отформатирован");
                    order.Phone = formated;
                    UoW.Save(order);
                }
                else
                {
                    cellAction.SetCellValue("Пропущен");
                }

                cellNew.SetCellValue(order.Phone);
                logger.Debug($"{row} - {order.Id}");
            }
            logger.Debug("Комит в базу");
            UoW.Commit();
        }