示例#1
0
        private static IEnumerable <SmsSendRecord> CreateSendRecords(Notification notification, string sendingNumber, IEntity mobilePhoneField, IEnumerable <IEntity> people)
        {
            using (Profiler.Measure("TwilioRouter.CreateSendRecords"))
            {
                var sendRecords = people.Select(p =>
                {
                    var sendRecord = Entity.Create <SmsSendRecord>();

                    sendRecord.SendToNotification = notification;
                    sendRecord.SsrFrom            = PhoneNumberHelper.CleanNumber(sendingNumber);
                    sendRecord.SrToPerson         = p?.Cast <Person>();

                    var toNumber = p.GetField <string>(mobilePhoneField);

                    if (toNumber != null)
                    {
                        sendRecord.SsrTo = PhoneNumberHelper.CleanNumber(toNumber);
                    }
                    else
                    {
                        sendRecord.SrErrorMessage = MissingPhoneNumberMessage;
                    }

                    return(sendRecord);
                });

                return(sendRecords);
            }
        }
示例#2
0
        public List <PhoneContact> GetRegisteredUsers(ContactsRequest contactsRequest)
        {
            /*if (contactsRequest.RequestorId.ToUpper() == "EBCEEBA3-A557-476D-BA21-61AFF9D73B15")
             * {
             * UserAccountRepository uac = new UserAccountRepository(this.Context);
             * uac.SaveFeedback(new UserFeedback() {Feedback = string.Join(",",contactsRequest.ContactList.ToArray()),UserEmailId="ajaycm90",CreatedOn=DateTime.UtcNow, FeedbackCategory="Debug",RequestorId=new Guid(contactsRequest.RequestorId )}
             * );
             * }*/
            List <PhoneContact> registeredContactList = new List <PhoneContact>();

            var    resCode = Context.GetUserCountryCode(new Guid(contactsRequest.RequestorId));
            string initiatorCountryCode = resCode.FirstOrDefault().ToString();

            contactsRequest.ContactListFormatted = contactsRequest.ContactList.Select(c =>
            {
                return(PhoneNumberHelper.FormatMobileNumberAndCountryCode(initiatorCountryCode, new PhoneContact()
                {
                    MobileNumber = c, MobileNumberStoredInRequestorPhone = c
                }, this.countryCodes));
            }).ToList();

            contactsRequest.ContactList.Clear();
            string req = Serializer.Serialize(contactsRequest);
            var    res = Context.GetRegisteredContacts(req).FirstOrDefault();

            if (!string.IsNullOrEmpty(res))
            {
                registeredContactList = Serializer.DeserializeFromXml <List <PhoneContact> >(res.ToString()).ToList();
                registeredContactList = registeredContactList.Where(x => x.UserId.ToString().ToLower() != contactsRequest.RequestorId.ToString().ToLower()).ToList();
            }

            return(registeredContactList);
        }
示例#3
0
        public void CreateSubscriberNumber_FromOriginalWithText()
        {
            string testNumber             = "07887 495880 - Liam";
            string actualSubscriberNumber = PhoneNumberHelper.CreateSubscriberNumber(testNumber);

            Assert.IsTrue(actualSubscriberNumber == _expectedSubscriberNumber);
        }
示例#4
0
        public void CreateSubscriberNumber_FromOriginalWithPlusSign()
        {
            string testNumber             = "+447887495880";
            string actualSubscriberNumber = PhoneNumberHelper.CreateSubscriberNumber(testNumber);

            Assert.IsTrue(actualSubscriberNumber == _expectedSubscriberNumber);
        }
示例#5
0
        public Task <ViewModel> Handle(Query request, CancellationToken cancellationToken)
        {
            var state = _formFlowInstance.State;

            var addressParts = new[]
            {
                state.AddressLine1,
                state.AddressLine2,
                state.Town,
                state.County,
                state.Postcode
            }.Where(part => !string.IsNullOrWhiteSpace(part)).ToArray();

            var vm = new ViewModel()
            {
                AddressParts = addressParts,
                Email        = state.Email,
                LocationName = state.Name,
                PhoneNumber  = !string.IsNullOrEmpty(state.PhoneNumber) ?
                               PhoneNumberHelper.FormatPhoneNumber(state.PhoneNumber) :
                               null,
                VenueId = request.VenueId,
                Website = state.Website,
                NewAddressIsOutsideOfEngland = state.NewAddressIsOutsideOfEngland
            };

            return(Task.FromResult(vm));
        }
示例#6
0
        public void should_display_UK_for_region_GB()
        {
            IList <KeyValuePair <string, string> > codeMap = PhoneNumberHelper.GetCountryCodeMap();
            string displayedRegionCode = codeMap.Single(c => c.Key == "GB").Value;

            Assert.Equal("UK (+44)", displayedRegionCode);
        }
示例#7
0
        protected override string?PlatformGetPhoneNumber()
        {
            var telephony = XEPlatform.AppContext.GetSystemService <TelephonyManager>(Context.TelephonyService);
            var value     = telephony.Line1Number;

            return(PhoneNumberHelper.GetChineseMainlandPhoneNumber11(value));
        }
示例#8
0
        public void GetPhoneNumberWhenNotValid_ShouldReturnEmptyString()
        {
            string phoneNumber = "0761234567";

            phoneNumber = PhoneNumberHelper.Validate(phoneNumber);

            Assert.Empty(phoneNumber);
        }
示例#9
0
        public void GetPhoneNumberWhenNull_ShouldReturnEmptyString()
        {
            string phoneNumber = null;

            phoneNumber = PhoneNumberHelper.Validate(phoneNumber);

            Assert.Empty(phoneNumber);
        }
示例#10
0
        public void GetPhoneNumberWhenWrongCountryCode_ShouldReturnEmptyString()
        {
            var phoneNumber = "+46 123 12 123";

            phoneNumber = PhoneNumberHelper.Validate(phoneNumber);

            Assert.Empty(phoneNumber);
        }
示例#11
0
        public string Format([FromBody] string phoneNumber)
        {
            if (!PhoneNumberHelper.IsUKExtension(phoneNumber))
            {
                return(phoneNumber);
            }

            return(PhoneNumberHelper.FormatNumber(PhoneNumberHelper.RemoveUKExtension(phoneNumber)));
        }
示例#12
0
        public void should_ignore_wildcard_characters_when_parsing(string nationalPhoneNumber, string expectation)
        {
            string serialized = PhoneNumberHelper.ToParsableString(
                new PhoneNumberImpl {
                CountryCode = "CN", Number = nationalPhoneNumber
            });

            Assert.Equal(expectation, serialized);
        }
示例#13
0
        public void GetPhoneNumberWhenCorrect_ShouldReturnPhoneNumber()
        {
            var phoneNumber = "12312123";
            var expected    = "12312123";

            phoneNumber = PhoneNumberHelper.Validate(phoneNumber);

            Assert.Equal(expected, phoneNumber);
        }
示例#14
0
        public void GetPhoneNumberWhenCountryCodeStartsWith00_ShouldReturnPhoneNumber()
        {
            var phoneNumber = "0047 123 12 123";
            var expected    = "12312123";

            phoneNumber = PhoneNumberHelper.Validate(phoneNumber);

            Assert.Equal(expected, phoneNumber);
        }
示例#15
0
        public void should_parse_malformed_number(
            string phoneNumber,
            string region,
            string nationalNumber)
        {
            var parsed = PhoneNumberHelper.ParsePhoneNumber <PhoneNumberImpl>(phoneNumber);

            Assert.Equal(region, parsed.CountryCode);
            Assert.Equal(nationalNumber, parsed.Number);
        }
示例#16
0
        public void should_throw_when_convert_invalid_phone_number(string countryCode, string number)
        {
            IPhoneNumber phoneNumber = new PhoneNumberImpl
            {
                CountryCode = countryCode,
                Number      = number
            };

            AssertHelper.Throws(
                () => PhoneNumberHelper.ToRegionE164PhoneNumber(phoneNumber));
        }
示例#17
0
        public void CreateSubscriberNumber_DoesntErrorWithEmptyPhoneNumber()
        {
            string testNumber            = "";
            string actualSubsciberNumber = null;

            try
            {
                actualSubsciberNumber = PhoneNumberHelper.CreateSubscriberNumber(testNumber);
            }
            catch (Exception ex) { Assert.Fail(ex.Message); }
            Assert.IsTrue(actualSubsciberNumber == string.Empty);
        }
示例#18
0
        public void should_get_number_if_is_legacy(string countryCode, string number)
        {
            IPhoneNumber phoneNumber = new PhoneNumberImpl
            {
                CountryCode = countryCode,
                Number      = number
            };

            ValidationResult errorResult;

            Assert.Equal(number, PhoneNumberHelper.TryConvertToE164PhoneNumber(phoneNumber, out errorResult));
        }
示例#19
0
        public void should_get_empty_if_is_empty()
        {
            IPhoneNumber phoneNumber = new PhoneNumberImpl
            {
                CountryCode = "",
                Number      = ""
            };

            ValidationResult errorResult;

            Assert.Empty(PhoneNumberHelper.TryConvertToE164PhoneNumber(phoneNumber, out errorResult));
        }
示例#20
0
        public SMSConfig GetSMSConfigForRecipient(string recipient)
        {
            var recipientCountryCode = new PhoneNumberHelper().GetCountryCode(recipient);
            var defaultSmsConfig     = _smsConfigs.FirstOrDefault(sms => sms.IsDefault);
            var smsConfig            = _smsConfigs.FirstOrDefault(sms => sms.CountryCode == recipientCountryCode);

            if (smsConfig == null)
            {
                return(defaultSmsConfig);
            }
            return(smsConfig);
        }
示例#21
0
        public void should_get_e164_phone_nubmer_with_country_code()
        {
            IPhoneNumber phoneNumber = new PhoneNumberImpl
            {
                CountryCode = "CN",
                Number      = "13801231234"
            };

            ValidationResult errorResult;
            string           number = PhoneNumberHelper.TryConvertToE164PhoneNumber(phoneNumber, out errorResult);

            Assert.Equal("+8613801231234", number);
        }
示例#22
0
        public void should_get_success_when_phone_number_is_empty()
        {
            IPhoneNumber phoneNumber = new PhoneNumberImpl
            {
                CountryCode = "",
                Number      = ""
            };

            PhoneNumberHelper.ToRegionE164PhoneNumber(phoneNumber);

            Assert.DoesNotThrow(() => PhoneNumberHelper.ToRegionE164PhoneNumber(phoneNumber));
            Assert.Equal(string.Empty, PhoneNumberHelper.ToRegionE164PhoneNumber(phoneNumber));
        }
示例#23
0
        public MethodResult InviteContact(ContactsRequest contactRequest)
        {
            this.countryCodes = GetCountryCodes();
            String contactNumber        = contactRequest.ContactNumberForInvite;
            var    resCode              = Context.GetUserCountryCode(new Guid(contactRequest.RequestorId));
            string initiatorCountryCode = resCode.FirstOrDefault().ToString();

            EventParticipant ep = PhoneNumberHelper.FormatMobileNumberAndCountryCode(initiatorCountryCode, new EventParticipant()
            {
                MobileNumber = contactNumber, MobileNumberStoredInRequestorPhone = contactNumber
            }, this.countryCodes);


            return(SMSHelper.sendSMSGeneric(ep.CountryCode, ep.MobileNumber, 0, "", contactRequest.RequestorName, ""));
        }
 public bool IsPhoneLocked(string phoneNumber)
 {
     try
     {
         return(_contactService.IsPhoneLocked(PhoneNumberHelper.GetNumberWithCountryCode(phoneNumber)));
     }
     catch (ArgumentException ex)
     {
         throw new BookingDomainValidationException(ErrorCodesConst.INVALID_PHONE_NUMBER, Messages_RU.INVALID_PHONE_NUMBER, ex);
     }
     catch (ApplicationException ex)
     {
         throw new ApplicationException("IsPhoneLocked exception in Contact Service", ex);
     }
 }
 private string GetPhoneNumberFromBillingAddress(IOrderAddress billingAddress)
 {
     return(!string.IsNullOrEmpty(billingAddress.DaytimePhoneNumber)
         ? PhoneNumberHelper.Validate(billingAddress.DaytimePhoneNumber)
         : PhoneNumberHelper.Validate(billingAddress.EveningPhoneNumber));
 }
示例#26
0
 public void FirstValidPhoneNumberIsValid()
 {
     Assert.AreEqual(true, PhoneNumberHelper.IsValidPhoneNumber(ValidPhoneNumber));
 }
示例#27
0
 public void SecondValidBankAccountNumberIsValid()
 {
     Assert.AreEqual(true, PhoneNumberHelper.IsValidPhoneNumber(SecondValidPhoneNumber));
 }
示例#28
0
        private Event ParseUserList(Event evnt, ref List <EventParticipant> UnregisteredUserList, ref List <EventParticipant> additionalRegisteredUsers, ref List <EventParticipant> RegisteredTempUserList)
        {
            //List<EventParticipant> additionalRegisteredUsers;
            additionalRegisteredUsers = new List <EventParticipant>();

            ContactsRequest cr = new ContactsRequest();

            cr.RequestorId = evnt.RequestorId.ToString();
            var resCode = Context.GetUserCountryCode(evnt.RequestorId);

            string initiatorCountryCode = resCode.FirstOrDefault().ToString();


            List <EventParticipant> UserList = evnt.UserList;

            //send only registered users to db while creating event. remaining users will need
            evnt.UserList = UserList.Where(x => !string.IsNullOrEmpty(x.UserId)).ToList();

            //Get Unregistered User list or Event Participant where user id is not present
            UnregisteredUserList = UserList.Where(x => string.IsNullOrEmpty(x.UserId) && !string.IsNullOrEmpty(x.MobileNumber)).ToList();
            //Properly Format the Country code and Mobile number
            UnregisteredUserList = UnregisteredUserList.Select(c =>
            {
                return(PhoneNumberHelper.FormatMobileNumberAndCountryCode(initiatorCountryCode, c, this.countryCodes));
            }).ToList();

            if (UnregisteredUserList.Count > 0)
            {
                //Find registered users from the mobile numbers for users whose userid is not provided
                cr.ContactList          = UnregisteredUserList.Select(x => x.MobileNumber).ToList <string>();
                cr.ContactListFormatted = cr.ContactList.Select(c =>
                {
                    return(PhoneNumberHelper.FormatMobileNumberAndCountryCode(initiatorCountryCode, new PhoneContact()
                    {
                        MobileNumber = c, MobileNumberStoredInRequestorPhone = c
                    }, this.countryCodes));
                }).ToList();

                //Amongst the UserList if there are users (without userid) but the mobilenumber+country code is already regstered
                //Such users will be identified as Additional Registered users
                //These users id are however not present in Initiator phone
                var res = Context.GetRegisteredContacts(Serializer.Serialize(cr));
                //var abc = res.FirstOrDefault();
                if (res != null)
                {
                    var sRes = res.FirstOrDefault().ToString();
                    List <PhoneContact> pcl = Serializer.DeserializeFromXml <List <PhoneContact> >(sRes).ToList();

                    if (pcl.Count > 0)
                    {
                        additionalRegisteredUsers = pcl.Select(item => new EventParticipant()
                        {
                            CountryCode  = item.CountryCode,
                            MobileNumber = item.MobileNumber,
                            UserId       = item.UserId,
                            MobileNumberStoredInRequestorPhone = item.MobileNumberStoredInRequestorPhone
                        }).ToList();

                        //Format Country code and mobile number
                        additionalRegisteredUsers = additionalRegisteredUsers.Select(c =>
                        {
                            return(PhoneNumberHelper.FormatMobileNumberAndCountryCode(initiatorCountryCode, c, this.countryCodes));
                        }).ToList();

                        //Remove the additional registered users from Unregistered list
                        //Use an extra varible since ref variables are not allowed in lamda
                        List <EventParticipant> additionalRegisteredUsers1 = additionalRegisteredUsers;
                        UnregisteredUserList = UnregisteredUserList.Where(p => !additionalRegisteredUsers1.Any(x => x.MobileNumber == p.MobileNumber && x.CountryCode == p.CountryCode)).ToList();
                    }
                }

                //Update the UserList with additional registered users found from mobile numbers
                evnt.UserList.AddRange(additionalRegisteredUsers);

                //additionalRegisteredUsers1 = additionalRegisteredUsers;
                if (UnregisteredUserList.Count > 0)
                {
                    RegisteredTempUserList = RegisterTempUsers(UnregisteredUserList);
                    evnt.UserList.AddRange(RegisteredTempUserList);
                }
            }

            return(evnt);
        }
        public OrderDTO PushOrder(PushOrderCommandDTO pushOrderCommandDTO)
        {
            if (pushOrderCommandDTO == null)
            {
                throw new ArgumentNullException(nameof(pushOrderCommandDTO));
            }

            OrderDTO createdOrder;

            var pushOrderCommand = new PushOrderCommand(PhoneNumberHelper.GetNumberWithCountryCode(pushOrderCommandDTO.PhoneNumber),
                                                        DateTimeHelper.GetAsApplicationTime(pushOrderCommandDTO.TargetStartTime, _configService.GetClientTimeShiftMinutes()),
                                                        DateTimeHelper.GetAsApplicationTime(pushOrderCommandDTO.TargetEndTime, _configService.GetClientTimeShiftMinutes()),
                                                        pushOrderCommandDTO.MenuItemsNames);

            try
            {
                createdOrder = _orderService.PushOrder(pushOrderCommand);
            }
            catch (PhoneIsLockedException ex)
            {
                throw new BookingDomainValidationException(ErrorCodesConst.PHONE_NUMBER_LOCKED, Messages_RU.PHONE_NUMBER_LOCKED, ex);
            }
            catch (IncorrectPhoneNumberException ex)
            {
                throw new BookingDomainValidationException(ErrorCodesConst.INVALID_PHONE_NUMBER, Messages_RU.INVALID_PHONE_NUMBER, ex);
            }
            catch (MaximumValueExceededException ex)
            {
                throw new BookingDomainValidationException(ErrorCodesConst.ORDER_MAXIMUM_PRICE_EXCEEDED, Messages_RU.ORDER_MAXIMUM_PRICE_EXCEEDED, ex);
            }
            catch (TimeMapTrayFullException ex)
            {
                throw new BookingDomainValidationException(ErrorCodesConst.TARGET_TIME_MAP_TRAY_IS_FULL, Messages_RU.TARGET_TIME_MAP_TRAY_IS_FULL, ex);
            }
            catch (ApplicationException ex)
            {
                throw new ApplicationException("Order not been created.", ex);
            }

            try
            {
                _messageService.Send(createdOrder.CustomerPhoneNumber, _config.SmsSettings.Sender,
                                     String.Format(_config.SmsSettings.TextTemplate, createdOrder.CustomerSecretCode));
            }
            catch (LowBalanceException)
            {
                _orderService.InvalidateOrder(createdOrder.OrderID);
                FatalErrorNotifier.NotifyOnError(Messages_RU.SMS_LOW_BALANCE);
                throw new ApplicationException("Error while sending sms. Low balance. The order was canceled.");
            }
            catch (ClientConfigurationException ex)
            {
                _orderService.InvalidateOrder(createdOrder.OrderID);
                FatalErrorNotifier.NotifyOnError(string.Format(Messages_RU.SMS_INVALID_CONFIGURATION_PARAMETER, ex.InvalidConfigurationParameterName));
                throw new ApplicationException(string.Format("Error while sending sms. Invalid client configuration parameter: {0}. The order was canceled.", ex.InvalidConfigurationParameterName));
            }
            catch (IncorrectDestinationNumberException)
            {
                _orderService.InvalidateOrder(createdOrder.OrderID);
                throw new ApplicationException("Error while sending sms. Incorrect destination phone number. The order was canceled.");
            }
            catch (OtherServiceException)
            {
                _orderService.InvalidateOrder(createdOrder.OrderID);
                throw new ApplicationException("Error while sending sms. Other exception. The order was canceled.");
            }
            catch (ApplicationException ex)
            {
                _orderService.InvalidateOrder(createdOrder.OrderID);
                throw new ApplicationException("Error while sending sms. The order was canceled.", ex);
            }

            createdOrder.CustomerSecretCode = null;             //Because a secret
            return(createdOrder);
        }
 public void CleanNumber(string dirty, string expected)
 {
     Assert.That(PhoneNumberHelper.CleanNumber(countryCode, dirty), Is.EqualTo(expected));
 }