public void AddClient(PhoneNumber phoneNumber, ITariff tariff)
 {
     _tariffsMap.Add(phoneNumber, tariff);
     _canChangeTariffMap.Add(phoneNumber, true);
     _callsMap.Add(phoneNumber, new List<CallInfo>());
     _debtMap.Add(phoneNumber, 0);
 }
        /// <summary>
        /// Posts the specified phone number.
        /// </summary>
        /// <param name="phoneNumber">The phone number.</param>
        /// <returns></returns>
        public override System.Net.Http.HttpResponseMessage Post( PhoneNumber phoneNumber )
        {
            var changes = new List<string>();
            string newPhoneNumber = phoneNumber.NumberFormattedWithCountryCode;
            History.EvaluateChange(
                changes,
                string.Format( "{0} Phone", DefinedValueCache.GetName( phoneNumber.NumberTypeValueId ) ),
                string.Empty,
                newPhoneNumber );

            var rockContext = (RockContext)Service.Context;

            System.Web.HttpContext.Current.Items.Add( "CurrentPerson", GetPerson() );

            int? modifiedByPersonAliasId = phoneNumber.ModifiedAuditValuesAlreadyUpdated ? phoneNumber.ModifiedByPersonAliasId : (int?)null;

            HistoryService.SaveChanges(
                rockContext,
                typeof( Person ),
                Rock.SystemGuid.Category.HISTORY_PERSON_DEMOGRAPHIC_CHANGES.AsGuid(),
                phoneNumber.PersonId,
                changes,
                true,
                modifiedByPersonAliasId );

            return base.Post( phoneNumber );
        }
Example #3
0
 public Person()
 {
     Adresse = new Address();
     Telefon = new PhoneNumber();
     Rights = new Rights();
     ID = Guid.NewGuid();
 }
        public void EqualsMethod()
        {
            var phoneNumber1 = new PhoneNumber("01234 567890");
            var phoneNumber2 = new PhoneNumber("01234 567890");

            Assert.True(phoneNumber1.Equals(phoneNumber2));
        }
Example #5
0
 ///<summary>Inserts one PhoneNumber into the database.  Returns the new priKey.</summary>
 internal static long Insert(PhoneNumber phoneNumber)
 {
     if(DataConnection.DBtype==DatabaseType.Oracle) {
         phoneNumber.PhoneNumberNum=DbHelper.GetNextOracleKey("phonenumber","PhoneNumberNum");
         int loopcount=0;
         while(loopcount<100){
             try {
                 return Insert(phoneNumber,true);
             }
             catch(Oracle.DataAccess.Client.OracleException ex){
                 if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){
                     phoneNumber.PhoneNumberNum++;
                     loopcount++;
                 }
                 else{
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else {
         return Insert(phoneNumber,false);
     }
 }
Example #6
0
 public void TestEquality()
 {
     var phone1 = new PhoneNumber("2055551212");
     Assert.AreEqual(phone1, phone1);
     var phone2 = new PhoneNumber("2055551212");
     Assert.AreEqual(phone1, phone2);
 }
        public MessageRequest(PhoneNumber sender, string message)
        {
            if (message == null) throw new ArgumentNullException(nameof(message));

            Sender = sender;
            Message = message;
        }
Example #8
0
 public virtual void Call(PhoneNumber target)
 {
     if (IsOnline)
     {
         OnOutgoingCall(this, new CallInfo(target, Number, TerminalState.OutGoingCall));
     }
 }
 public TestTerminal(PhoneNumber number)
     : base(number)
 {
     this.IncomingRequest += this.OnIncomingRequest;
     this.Online += (sender, args) => { Console.WriteLine("Terminal {0} turned to online mode", Number); };
     this.Offline += (sender, args) => { Console.WriteLine("Terminal {0} turned to offline mode", Number); };
 }
Example #10
0
 private void SetTerminalsStateTo(PhoneNumber source, PhoneNumber target, TerminalState state)
 {
     var sourceTerminal = GetTerminalByPhoneNumber(source) as TestTerminal;
     var targetTerminal = GetTerminalByPhoneNumber(target) as TestTerminal;
     if (sourceTerminal != null) sourceTerminal.State = state;
     if (targetTerminal != null) targetTerminal.State = state;
 }
        public void EqualsOperator()
        {
            var phoneNumber1 = new PhoneNumber("01234 567890");
            var phoneNumber2 = new PhoneNumber("01234 567890");

            Assert.True(phoneNumber1 == phoneNumber2);
        }
 public void Call(PhoneNumber target)
 {
     if (!IsOnline)
     {
         OnOutgoingCall(this, target);
         OnOnline(this, null);
     }
 }
Example #13
0
        public void Constructor_OnlyDigits_SetsNumber()
        {
            string number = "5555555555";

            var phoneNumber = new PhoneNumber(number);

            Assert.Equal(number, phoneNumber.Number);
        }
 public void USPhoneNumber()
 {
     var phoneNumber = new PhoneNumber("8015461234");
     Assert.Equal("801", phoneNumber.AreaCode);
     Assert.Equal("546", phoneNumber.Prefix);
     Assert.Equal("1234", phoneNumber.Postfix);
     Assert.Equal("(801) 546-1234", phoneNumber.Formatted);
 }
Example #15
0
 public Contract(string number, string phoneNumber, TariffPlan tariffPlan, string personalAccount, string dateOfConclusion)
 {
     Number = number;
     PhoneNumber = new PhoneNumber { Value = phoneNumber };
     TariffPlan = tariffPlan;
     DateOfConclusion = DateTime.Parse(dateOfConclusion);
     PersonalAccount = new PersonalAccount(personalAccount, DateOfConclusion + new TimeSpan(31, 0, 0));
 }
 private static EventAttendee CreateAttendee(string firstName, string lastName)
 {
     var name = new PersonName(firstName, lastName);
     var email = new EmailAddress("*****@*****.**");
     var phone = new PhoneNumber("2055551212");
     var address = new Address("123 Main St.", "Suite 1", "Los Angeles", 10, "90036");
     return new EventAttendee(name, address, email, phone, firstName, lastName);
 }
        public void NumericPhoneNumber()
        {
            const string phoneNumber = "0100100";

            sut = PhoneNumber.Create(phoneNumber);

            Assert.AreEqual(phoneNumber, sut.ToString());
        }
Example #18
0
 public Terminal(PhoneNumber number,string name,TariffPlans rate)
 {
     this.Number = number;
        this.UserName = name;
        this.CurrentTariff = rate;
        this.DateOfTariffChange = DateTime.Now;
        this.AllowChangeTariff = false;
 }
        public void NumericPhoneNumberWithWhiteSpaces()
        {
            const string phoneNumber = "02 588 4430";

            sut = PhoneNumber.Create(phoneNumber);

            Assert.AreEqual(phoneNumber, sut.ToString());
        }
Example #20
0
 public SpeakerDocument(Id id, Version version, SpeakerBio bio, PhoneNumber phoneNumber, EmailAddress emailAddress, Name name)
 {
     Bio = (string) bio;
     Email = (string) emailAddress;
     Id = (Guid) id;
     PhoneNumber = (string) phoneNumber;
     Name = (string) name;
     Version = (int)version;
 }
 public void Player_FindByPhoneNumber()
 {
     using (var repository = new TelephoneGameRepository())
     {
         PhoneNumber phone = new PhoneNumber() { Number = "15022967010" };
         Player p = GameService.FindPlayer(phone, repository);
         Assert.That(null != p, "Player not found");
     }
 }
 public void BrokenNumberToFix()
 {
     // a number I found in our data
     // TOOD: this is currently broken
     var number = new PhoneNumber("604 783 8072");
     Assert.AreEqual("", number.Country);
     Assert.AreEqual("604", number.Area);
     Assert.AreEqual("783 8072", number.Local);
 }
 public SpeakerDocument(Id id, Version version, SpeakerBio bio, PhoneNumber phoneNumber, EmailAddress emailAddress, SpeakerName name)
 {
     Bio = bio;
     Email = emailAddress;
     Id = id;
     PhoneNumber = phoneNumber;
     Name = name;
     Version = version;
 }
Example #24
0
        public Contract(Client client, TariffType tariffType, DateTime conclusionDate)
        {
            LastTariffUpdateDate = DateTime.Now;
            Client = client;
            PhoneNumber = new PhoneNumber(rnd.Next(1000000, 9999999).ToString());
            TariffPlan = new TariffPlan(tariffType);

            ConclusionDate = conclusionDate;
        }
Example #25
0
 /// <summary>
 /// Creates the attendee.
 /// </summary>
 /// <param name="attendeeDto">The attendee dto.</param>
 /// <returns></returns>
 public static EventAttendee CreateAttendee(AttendeeDto attendeeDto)
 {
     var name = new PersonName(attendeeDto.FirstName, attendeeDto.LastName);
     var address = new Address(attendeeDto.Address1, attendeeDto.Address2, attendeeDto.City, attendeeDto.StateId, attendeeDto.PostalCode);
     var phone = new PhoneNumber(attendeeDto.PrimaryPhone);
     var email = new EmailAddress(attendeeDto.EmailAddress);
     var attendee = new EventAttendee(name, address, email, phone, attendeeDto.FirstName, attendeeDto.LastName, attendeeDto.DynamicColumnsData, attendeeDto.ProfileId, attendeeDto.UserId, attendeeDto.DidAttend);
     return attendee;
 }
Example #26
0
		public Microsoft.Communications.Contacts.Contact GetCanonicalContact(Microsoft.LiveFX.Client.Contact c)
		{
			Microsoft.Communications.Contacts.Contact contact = new Microsoft.Communications.Contacts.Contact();
			//LiveItemCollection<Profile, ProfileResource> profiles = c.Profiles;

			contact.Names.Add(new Name(c.Resource.GivenName, c.Resource.MiddleName, c.Resource.FamilyName, NameCatenationOrder.FamilyGivenMiddle));

			foreach (ContactPhone cp in c.Resource.PhoneNumbers)
			{
				PhoneNumber pn = new PhoneNumber(cp.Value);
				if (cp.Type == ContactPhone.ContactPhoneType.Business ||
					cp.Type == ContactPhone.ContactPhoneType.Business2)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Voice, PropertyLabels.Business);
				else if (cp.Type == ContactPhone.ContactPhoneType.BusinessMobile)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Cellular, PropertyLabels.Business);
				else if (cp.Type == ContactPhone.ContactPhoneType.Mobile)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Cellular);
				else if (cp.Type == ContactPhone.ContactPhoneType.Personal)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Voice, PropertyLabels.Personal);
				else if (cp.Type == ContactPhone.ContactPhoneType.Personal2)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Voice, PropertyLabels.Personal);
				else if (cp.Type == ContactPhone.ContactPhoneType.Other)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Voice);
				else if (cp.Type == ContactPhone.ContactPhoneType.OtherFax)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Fax);
				else if (cp.Type == ContactPhone.ContactPhoneType.Fax)
					contact.PhoneNumbers.Add(pn, PhoneLabels.Fax);
				else 
					contact.PhoneNumbers.Add(pn);
			}

			if (c.Resource.WindowsLiveId != null && c.Resource.WindowsLiveId.Trim() != null)
				contact.EmailAddresses.Add(new EmailAddress(c.Resource.WindowsLiveId, "Windows Live ID"), PropertyLabels.Preferred);

			foreach (ContactEmail ce in c.Resource.Emails)
			{
				EmailAddress ea = new EmailAddress(ce.Value);
				if (ce.Type == ContactEmail.ContactEmailType.Personal)
					contact.EmailAddresses.Add(ea, PropertyLabels.Personal);
				else if (ce.Type == ContactEmail.ContactEmailType.Business)
					contact.EmailAddresses.Add(ea, PropertyLabels.Business);
				else if (ce.Type == ContactEmail.ContactEmailType.Other)
					contact.EmailAddresses.Add(ea);
				else
					contact.EmailAddresses.Add(ea);
			}

			DateTime lastChanged = c.Resource.LastUpdatedTime.DateTime.ToUniversalTime();
			contact.Dates.Add(lastChanged, "LastModificationTime");

			string absoluteUri = c.Resource.Id;
			Guid guid = new Guid(absoluteUri.PadLeft(32, '0'));
			contact.ContactIds.Add(guid, "Live");

			return contact;
		}
Example #27
0
        public Contact(string name, PhoneNumber phoneNumber, EmailAddress emailAddress)
        {
            Guard.ArgumentNotNullOrEmpty(() => name, name);
            Guard.ArgumentNotNull(() => phoneNumber, phoneNumber);
            Guard.ArgumentNotNull(() => emailAddress, emailAddress);

            Name = name;
            Telephone = phoneNumber;
            Email = emailAddress;
        }
Example #28
0
 private void btAddPhoneNumber_Click(object sender, EventArgs e)
 {
     if (tbEditNumber.Text == "")
     {
         return;
     }
     PhoneNumber newNumber = new PhoneNumber(tbEditNumber.Text, lbLabels.SelectedItem.ToString());
     lbNumbers.Items.Add(newNumber.ToString());
     tbEditNumber.Text = "";
 }
 public CallInformation(GeoInformation geoInformation, DateTime callStartTime, PhoneNumber sourcePhoneNumber, PhoneNumber destinationPhoneNumber)
 {
     Check.AgainstNull(geoInformation, "Call information should include geographical information.");
     Check.AgainstNull(sourcePhoneNumber, "Call information should include a source phone number.");
     Check.AgainstNull(destinationPhoneNumber, "Call information should include a destination phone number.");
     Check.That(()=>!sourcePhoneNumber.Equals(destinationPhoneNumber), "Calling yourself is not allowed.");
     GeoInformation = geoInformation;
     CallStartTime = callStartTime;
     SourcePhoneNumber = sourcePhoneNumber;
     DestinationPhoneNumber = destinationPhoneNumber;
 }
		///<summary>Converts a DataTable to a list of objects.</summary>
		public static List<PhoneNumber> TableToList(DataTable table){
			List<PhoneNumber> retVal=new List<PhoneNumber>();
			PhoneNumber phoneNumber;
			for(int i=0;i<table.Rows.Count;i++) {
				phoneNumber=new PhoneNumber();
				phoneNumber.PhoneNumberNum= PIn.Long  (table.Rows[i]["PhoneNumberNum"].ToString());
				phoneNumber.PatNum        = PIn.Long  (table.Rows[i]["PatNum"].ToString());
				phoneNumber.PhoneNumberVal= PIn.String(table.Rows[i]["PhoneNumberVal"].ToString());
				retVal.Add(phoneNumber);
			}
			return retVal;
		}
        /// <summary>
        /// Handles the Click event of the lbSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void lbSave_Click(object sender, EventArgs e)
        {
            var rockContext = new RockContext();

            rockContext.WrapTransaction(() =>
            {
                var personService = new PersonService(rockContext);
                var changes       = new List <string>();
                Person business   = null;

                if (int.Parse(hfBusinessId.Value) != 0)
                {
                    business = personService.Get(int.Parse(hfBusinessId.Value));
                }

                if (business == null)
                {
                    business = new Person();
                    personService.Add(business);
                    tbBusinessName.Text = tbBusinessName.Text.FixCase();
                }

                // Business Name
                History.EvaluateChange(changes, "Last Name", business.LastName, tbBusinessName.Text);
                business.LastName = tbBusinessName.Text;

                // Phone Number
                var businessPhoneTypeId = new DefinedValueService(rockContext).GetByGuid(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_WORK)).Id;

                string oldPhoneNumber = string.Empty;
                string newPhoneNumber = string.Empty;

                var phoneNumber = business.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId == businessPhoneTypeId);
                if (phoneNumber != null)
                {
                    oldPhoneNumber = phoneNumber.NumberFormattedWithCountryCode;
                }

                if (!string.IsNullOrWhiteSpace(PhoneNumber.CleanNumber(pnbPhone.Number)))
                {
                    if (phoneNumber == null)
                    {
                        phoneNumber = new PhoneNumber {
                            NumberTypeValueId = businessPhoneTypeId
                        };
                        business.PhoneNumbers.Add(phoneNumber);
                    }
                    phoneNumber.CountryCode        = PhoneNumber.CleanNumber(pnbPhone.CountryCode);
                    phoneNumber.Number             = PhoneNumber.CleanNumber(pnbPhone.Number);
                    phoneNumber.IsMessagingEnabled = cbSms.Checked;
                    phoneNumber.IsUnlisted         = cbUnlisted.Checked;

                    newPhoneNumber = phoneNumber.NumberFormattedWithCountryCode;
                }
                else
                {
                    if (phoneNumber != null)
                    {
                        business.PhoneNumbers.Remove(phoneNumber);
                        new PhoneNumberService(rockContext).Delete(phoneNumber);
                    }
                }

                History.EvaluateChange(
                    changes,
                    string.Format("{0} Phone", DefinedValueCache.GetName(businessPhoneTypeId)),
                    oldPhoneNumber,
                    newPhoneNumber);

                // Record Type - this is always "business". it will never change.
                business.RecordTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_BUSINESS.AsGuid()).Id;

                // Record Status
                int?newRecordStatusId = ddlRecordStatus.SelectedValueAsInt();
                History.EvaluateChange(changes, "Record Status", DefinedValueCache.GetName(business.RecordStatusValueId), DefinedValueCache.GetName(newRecordStatusId));
                business.RecordStatusValueId = newRecordStatusId;

                // Record Status Reason
                int?newRecordStatusReasonId = null;
                if (business.RecordStatusValueId.HasValue && business.RecordStatusValueId.Value == DefinedValueCache.Read(new Guid(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_INACTIVE)).Id)
                {
                    newRecordStatusReasonId = ddlReason.SelectedValueAsInt();
                }

                History.EvaluateChange(changes, "Record Status Reason", DefinedValueCache.GetName(business.RecordStatusReasonValueId), DefinedValueCache.GetName(newRecordStatusReasonId));
                business.RecordStatusReasonValueId = newRecordStatusReasonId;

                // Email
                business.IsEmailActive = true;
                History.EvaluateChange(changes, "Email", business.Email, tbEmail.Text);
                business.Email = tbEmail.Text.Trim();

                var newEmailPreference = rblEmailPreference.SelectedValue.ConvertToEnum <EmailPreference>();
                History.EvaluateChange(changes, "EmailPreference", business.EmailPreference, newEmailPreference);
                business.EmailPreference = newEmailPreference;

                if (business.IsValid)
                {
                    if (rockContext.SaveChanges() > 0)
                    {
                        if (changes.Any())
                        {
                            HistoryService.SaveChanges(
                                rockContext,
                                typeof(Person),
                                Rock.SystemGuid.Category.HISTORY_PERSON_DEMOGRAPHIC_CHANGES.AsGuid(),
                                business.Id,
                                changes);
                        }
                    }
                }

                // Add/Update Family Group
                var familyGroupType = GroupTypeCache.GetFamilyGroupType();
                int adultRoleId     = familyGroupType.Roles
                                      .Where(r => r.Guid.Equals(Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT.AsGuid()))
                                      .Select(r => r.Id)
                                      .FirstOrDefault();
                var adultFamilyMember = UpdateGroupMember(business.Id, familyGroupType, business.LastName + " Business", ddlCampus.SelectedValueAsInt(), adultRoleId, rockContext);
                business.GivingGroup  = adultFamilyMember.Group;

                // Add/Update Known Relationship Group Type
                var knownRelationshipGroupType   = GroupTypeCache.Read(Rock.SystemGuid.GroupType.GROUPTYPE_KNOWN_RELATIONSHIPS.AsGuid());
                int knownRelationshipOwnerRoleId = knownRelationshipGroupType.Roles
                                                   .Where(r => r.Guid.Equals(Rock.SystemGuid.GroupRole.GROUPROLE_KNOWN_RELATIONSHIPS_OWNER.AsGuid()))
                                                   .Select(r => r.Id)
                                                   .FirstOrDefault();
                var knownRelationshipOwner = UpdateGroupMember(business.Id, knownRelationshipGroupType, "Known Relationship", null, knownRelationshipOwnerRoleId, rockContext);

                // Add/Update Implied Relationship Group Type
                var impliedRelationshipGroupType   = GroupTypeCache.Read(Rock.SystemGuid.GroupType.GROUPTYPE_IMPLIED_RELATIONSHIPS.AsGuid());
                int impliedRelationshipOwnerRoleId = impliedRelationshipGroupType.Roles
                                                     .Where(r => r.Guid.Equals(Rock.SystemGuid.GroupRole.GROUPROLE_IMPLIED_RELATIONSHIPS_OWNER.AsGuid()))
                                                     .Select(r => r.Id)
                                                     .FirstOrDefault();
                var impliedRelationshipOwner = UpdateGroupMember(business.Id, impliedRelationshipGroupType, "Implied Relationship", null, impliedRelationshipOwnerRoleId, rockContext);

                rockContext.SaveChanges();

                // Location
                int workLocationTypeId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_WORK).Id;

                var groupLocationService = new GroupLocationService(rockContext);
                var workLocation         = groupLocationService.Queryable("Location")
                                           .Where(gl =>
                                                  gl.GroupId == adultFamilyMember.Group.Id &&
                                                  gl.GroupLocationTypeValueId == workLocationTypeId)
                                           .FirstOrDefault();

                if (string.IsNullOrWhiteSpace(acAddress.Street1))
                {
                    if (workLocation != null)
                    {
                        groupLocationService.Delete(workLocation);
                        History.EvaluateChange(changes, "Address", workLocation.Location.ToString(), string.Empty);
                    }
                }
                else
                {
                    var oldValue = string.Empty;

                    var newLocation = new LocationService(rockContext).Get(
                        acAddress.Street1, acAddress.Street2, acAddress.City, acAddress.State, acAddress.PostalCode, acAddress.Country);

                    if (workLocation != null)
                    {
                        oldValue = workLocation.Location.ToString();
                    }
                    else
                    {
                        workLocation = new GroupLocation();
                        groupLocationService.Add(workLocation);
                        workLocation.GroupId = adultFamilyMember.Group.Id;
                        workLocation.GroupLocationTypeValueId = workLocationTypeId;
                    }
                    workLocation.Location          = newLocation;
                    workLocation.IsMailingLocation = true;

                    History.EvaluateChange(changes, "Address", oldValue, newLocation.ToString());
                }

                rockContext.SaveChanges();

                hfBusinessId.Value = business.Id.ToString();
            });

            var queryParams = new Dictionary <string, string>();

            queryParams.Add("businessId", hfBusinessId.Value);
            NavigateToCurrentPage(queryParams);
        }
Example #32
0
        private void GetControlData()
        {
            GroupMembers = new List <GroupMember>();

            int?childMaritalStatusId = null;
            var childMaritalStatus   = DefinedValueCache.Read(GetAttributeValue("ChildMaritalStatus").AsGuid());

            if (childMaritalStatus != null)
            {
                childMaritalStatusId = childMaritalStatus.Id;
            }
            int?adultMaritalStatusId = ddlMaritalStatus.SelectedValueAsInt();

            int recordTypePersonId   = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id;
            int recordStatusActiveId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE.AsGuid()).Id;

            foreach (NewGroupMembersRow row in nfmMembers.GroupMemberRows)
            {
                var groupMember = new GroupMember();
                groupMember.GroupMemberStatus          = GroupMemberStatus.Active;
                groupMember.Person                     = new Person();
                groupMember.Person.Guid                = row.PersonGuid.Value;
                groupMember.Person.RecordTypeValueId   = recordTypePersonId;
                groupMember.Person.RecordStatusValueId = recordStatusActiveId;

                if (row.RoleId.HasValue)
                {
                    groupMember.GroupRoleId = row.RoleId.Value;

                    if (_isFamilyGroupType)
                    {
                        if (groupMember.GroupRoleId == _childRoleId)
                        {
                            groupMember.Person.MaritalStatusValueId = childMaritalStatusId;
                        }
                        else
                        {
                            groupMember.Person.MaritalStatusValueId = adultMaritalStatusId;
                        }
                    }
                    else
                    {
                        groupMember.Person.MaritalStatusValueId = null;
                    }
                }

                groupMember.Person.TitleValueId = row.TitleValueId;
                groupMember.Person.FirstName    = row.FirstName;
                if (this.GetAttributeValue("ShowNickName").AsBoolean() && !string.IsNullOrEmpty(row.NickName))
                {
                    groupMember.Person.NickName = row.NickName;
                }
                else
                {
                    groupMember.Person.NickName = groupMember.Person.FirstName;
                }

                groupMember.Person.LastName      = row.LastName;
                groupMember.Person.SuffixValueId = row.SuffixValueId;
                groupMember.Person.Gender        = row.Gender;

                var birthday = row.BirthDate;
                if (birthday.HasValue)
                {
                    // If setting a future birthdate, subtract a century until birthdate is not greater than today.
                    var today = RockDateTime.Today;
                    while (birthday.Value.CompareTo(today) > 0)
                    {
                        birthday = birthday.Value.AddYears(-100);
                    }
                    groupMember.Person.BirthMonth = birthday.Value.Month;
                    groupMember.Person.BirthDay   = birthday.Value.Day;
                    if (birthday.Value.Year != DateTime.MinValue.Year)
                    {
                        groupMember.Person.BirthYear = birthday.Value.Year;
                    }
                    else
                    {
                        groupMember.Person.BirthYear = null;
                    }
                }
                else
                {
                    groupMember.Person.SetBirthDate(null);
                }

                groupMember.Person.ConnectionStatusValueId = row.ConnectionStatusValueId;

                if (_isFamilyGroupType)
                {
                    groupMember.Person.GradeOffset = row.GradeOffset;
                }

                var contactInfoRow = nfciContactInfo.ContactInfoRows.FirstOrDefault(c => c.PersonGuid == row.PersonGuid);
                if (contactInfoRow != null)
                {
                    string homeNumber = PhoneNumber.CleanNumber(contactInfoRow.HomePhoneNumber);
                    if (_homePhone != null && !string.IsNullOrWhiteSpace(homeNumber))
                    {
                        var homePhoneNumber = new PhoneNumber();
                        homePhoneNumber.NumberTypeValueId = _homePhone.Id;
                        homePhoneNumber.Number            = homeNumber;
                        homePhoneNumber.CountryCode       = PhoneNumber.CleanNumber(contactInfoRow.HomePhoneCountryCode);
                        homePhoneNumber.NumberFormatted   = PhoneNumber.FormattedNumber(homePhoneNumber.CountryCode, homeNumber);
                        groupMember.Person.PhoneNumbers.Add(homePhoneNumber);
                    }

                    string cellNumber = PhoneNumber.CleanNumber(contactInfoRow.CellPhoneNumber);
                    if (_cellPhone != null && !string.IsNullOrWhiteSpace(cellNumber))
                    {
                        var cellPhoneNumber = new PhoneNumber();
                        cellPhoneNumber.NumberTypeValueId  = _cellPhone.Id;
                        cellPhoneNumber.Number             = cellNumber;
                        cellPhoneNumber.CountryCode        = PhoneNumber.CleanNumber(contactInfoRow.CellPhoneCountryCode);
                        cellPhoneNumber.NumberFormatted    = PhoneNumber.FormattedNumber(cellPhoneNumber.CountryCode, cellNumber);
                        cellPhoneNumber.IsMessagingEnabled = contactInfoRow.IsMessagingEnabled;
                        groupMember.Person.PhoneNumbers.Add(cellPhoneNumber);
                    }

                    groupMember.Person.Email = contactInfoRow.Email;
                }
                groupMember.Person.IsEmailActive   = true;
                groupMember.Person.EmailPreference = EmailPreference.EmailAllowed;

                groupMember.Person.LoadAttributes();

                foreach (var attributeControl in attributeControls)
                {
                    var attributeRow = attributeControl.AttributesRows.FirstOrDefault(r => r.PersonGuid == row.PersonGuid);
                    if (attributeRow != null)
                    {
                        attributeRow.GetEditValues(groupMember.Person);
                    }
                }

                GroupMembers.Add(groupMember);
            }
        }
Example #33
0
    public void Invalid_if_exchange_code_starts_with_0()
    {
        var phrase = "(223) 056-7890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #34
0
    public void Cleans_numbers_with_dots()
    {
        var phrase = "223.456.7890";

        Assert.Equal("2234567890", PhoneNumber.Clean(phrase));
    }
Example #35
0
    public void Invalid_when_9_digits()
    {
        var phrase = "123456789";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #36
0
    public void Invalid_with_punctuations()
    {
        var phrase = "123-@:!-7890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #37
0
 public void InitPhone()
 {
     _phoneNumber = new PhoneNumber();
 }
        public async Task TestUpdate_OtherPhoneNumbersPrimary()
        {
            using (ShimsContext.Create())
            {
                System.Data.Entity.Fakes.ShimDbContext.AllInstances.SetOf1 <Person>((c) =>
                {
                    return(context.People);
                });
                var    yesterday     = DateTimeOffset.Now.AddDays(-1.0);
                var    user          = new User(5);
                var    phoneNumberId = 10;
                Person person        = new Person
                {
                    PersonId = 10,
                };
                Person otherPerson = new Person
                {
                    PersonId = 20
                };
                PhoneNumberType type = new PhoneNumberType
                {
                    PhoneNumberTypeId   = PhoneNumberType.Home.Id,
                    PhoneNumberTypeName = PhoneNumberType.Home.Value
                };
                PhoneNumber phoneNumber   = null;
                PhoneNumber primaryPhone1 = null;
                PhoneNumber primaryPhone2 = null;
                PhoneNumber otherPersonPrimaryPhoneNumber = null;
                var         number       = "12345";
                var         ext          = "123";
                var         isPrimary    = true;
                var         updatedPhone = new UpdatedPhoneNumber(user, phoneNumberId, number, ext, type.PhoneNumberTypeId, isPrimary);

                Action beforeTester = () =>
                {
                    Assert.IsTrue(primaryPhone1.IsPrimary.Value);
                    Assert.IsTrue(primaryPhone2.IsPrimary.Value);
                };

                Action afterTester = () =>
                {
                    Assert.IsTrue(phoneNumber.IsPrimary.Value);
                    Assert.IsFalse(primaryPhone1.IsPrimary.Value);
                    Assert.IsFalse(primaryPhone2.IsPrimary.Value);
                    Assert.IsTrue(otherPersonPrimaryPhoneNumber.IsPrimary.Value);
                };

                context.SetupActions.Add(() =>
                {
                    otherPersonPrimaryPhoneNumber = new PhoneNumber
                    {
                        PhoneNumberId = 100,
                        IsPrimary     = true,
                        Person        = otherPerson,
                        PersonId      = otherPerson.PersonId
                    };
                    primaryPhone1 = new PhoneNumber
                    {
                        PhoneNumberId = 20,
                        IsPrimary     = true,
                        Person        = person,
                        PersonId      = person.PersonId
                    };
                    primaryPhone2 = new PhoneNumber
                    {
                        PhoneNumberId = 30,
                        IsPrimary     = true,
                        Person        = person,
                        PersonId      = person.PersonId
                    };
                    phoneNumber = new PhoneNumber
                    {
                        PhoneNumberId = phoneNumberId,
                        Person        = person,
                        PersonId      = person.PersonId
                    };
                    context.PhoneNumbers.Add(phoneNumber);
                    context.PhoneNumbers.Add(primaryPhone1);
                    context.PhoneNumbers.Add(primaryPhone2);
                    context.PhoneNumbers.Add(otherPersonPrimaryPhoneNumber);
                    context.PhoneNumberTypes.Add(type);
                });
                context.Revert();
                beforeTester();
                service.Update(updatedPhone);
                afterTester();

                context.Revert();
                beforeTester();
                await service.UpdateAsync(updatedPhone);

                afterTester();
            }
        }
        public async Task TestUpdate_Contact_CheckProperties()
        {
            using (ShimsContext.Create())
            {
                System.Data.Entity.Fakes.ShimDbContext.AllInstances.SetOf1 <Person>((c) =>
                {
                    return(context.People);
                });
                var     creatorId     = 1;
                var     yesterday     = DateTimeOffset.Now.AddDays(-1.0);
                var     user          = new User(5);
                var     phoneNumberId = 10;
                Contact contact       = new Contact
                {
                    ContactId = 10,
                };
                PhoneNumberType type = new PhoneNumberType
                {
                    PhoneNumberTypeId   = PhoneNumberType.Home.Id,
                    PhoneNumberTypeName = PhoneNumberType.Home.Value
                };
                PhoneNumber phoneNumber = null;

                var number       = "12345";
                var ext          = "123";
                var isPrimary    = true;
                var updatedPhone = new UpdatedPhoneNumber(user, phoneNumberId, number, ext, type.PhoneNumberTypeId, isPrimary);

                Action afterTester = () =>
                {
                    Assert.AreEqual(1, context.PhoneNumbers.Count());
                    var firstNumber = context.PhoneNumbers.First();
                    Assert.AreEqual(number, firstNumber.Number);
                    Assert.AreEqual(ext, firstNumber.Extension);
                    Assert.AreEqual(isPrimary, firstNumber.IsPrimary);
                    Assert.AreEqual(type.PhoneNumberTypeId, firstNumber.PhoneNumberTypeId);
                    Assert.AreEqual(phoneNumberId, firstNumber.PhoneNumberId);

                    Assert.AreEqual(creatorId, firstNumber.History.CreatedBy);
                    Assert.AreEqual(user.Id, firstNumber.History.RevisedBy);
                    Assert.AreEqual(yesterday, firstNumber.History.CreatedOn);
                    DateTimeOffset.Now.Should().BeCloseTo(firstNumber.History.RevisedOn, 20000);
                };

                context.SetupActions.Add(() =>
                {
                    phoneNumber = new PhoneNumber
                    {
                        PhoneNumberId = phoneNumberId,
                        Contact       = contact,
                        ContactId     = contact.ContactId
                    };
                    phoneNumber.History.CreatedBy = creatorId;
                    phoneNumber.History.RevisedBy = creatorId;
                    phoneNumber.History.CreatedOn = yesterday;
                    phoneNumber.History.RevisedOn = yesterday;
                    context.PhoneNumbers.Add(phoneNumber);
                    context.PhoneNumberTypes.Add(type);
                });
                context.Revert();
                service.Update(updatedPhone);
                afterTester();

                context.Revert();
                await service.UpdateAsync(updatedPhone);

                afterTester();
            }
        }
        public async Task TestCreate_OtherPhoneNumbersPrimary()
        {
            using (ShimsContext.Create())
            {
                System.Data.Entity.Fakes.ShimDbContext.AllInstances.SetOf1 <Person>((c) =>
                {
                    return(context.People);
                });
                var    userId          = 1;
                var    personId        = 10;
                Person person          = null;
                var    phoneNumberType = new PhoneNumberType
                {
                    PhoneNumberTypeId   = PhoneNumberType.Home.Id,
                    PhoneNumberTypeName = PhoneNumberType.Home.Value
                };
                PhoneNumber primaryPhone1 = null;
                PhoneNumber primaryPhone2 = null;
                var         user          = new User(userId);
                var         newPhone      = new NewPersonPhoneNumber(user, phoneNumberType.PhoneNumberTypeId, "1234", "123", personId, true);
                Action      beforeTester  = () =>
                {
                    Assert.AreEqual(2, context.PhoneNumbers.Count());
                    Assert.IsTrue(primaryPhone1.IsPrimary.Value);
                    Assert.IsTrue(primaryPhone2.IsPrimary.Value);
                };
                Action afterTester = () =>
                {
                    Assert.AreEqual(1, context.People.Count());
                    Assert.AreEqual(2, context.PhoneNumbers.Count());
                    //the phone number is added to the person, not the context
                    Assert.IsTrue(person.PhoneNumbers.First().IsPrimary.Value);
                    Assert.IsFalse(primaryPhone1.IsPrimary.Value);
                    Assert.IsFalse(primaryPhone2.IsPrimary.Value);
                };
                context.SetupActions.Add(() =>
                {
                    person = new Person
                    {
                        PersonId = personId
                    };
                    primaryPhone1 = new PhoneNumber
                    {
                        PhoneNumberId = 10,
                        IsPrimary     = true,
                        Person        = person,
                        PersonId      = person.PersonId
                    };
                    primaryPhone2 = new PhoneNumber
                    {
                        PhoneNumberId = 20,
                        IsPrimary     = true,
                        Person        = person,
                        PersonId      = person.PersonId
                    };
                    context.People.Add(person);
                    context.PhoneNumbers.Add(primaryPhone1);
                    context.PhoneNumbers.Add(primaryPhone2);
                    context.PhoneNumberTypes.Add(phoneNumberType);
                });
                context.Revert();
                beforeTester();
                service.Create(newPhone);
                afterTester();

                context.Revert();
                beforeTester();
                await service.CreateAsync(newPhone);

                afterTester();
            }
        }
 /// <summary>
 /// Handles the Click event of the lbLinkConversation control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
 protected void lbLinkConversation_Click(object sender, EventArgs e)
 {
     mdLinkToPerson.Title = string.Format("Link Phone Number {0} to Person ", PhoneNumber.FormattedNumber(PhoneNumber.DefaultCountryCode(), hfSelectedMessageKey.Value, false));
     ppPerson.SetValue(null);
     newPersonEditor.SetFromPerson(null);
     mdLinkToPerson.Show();
 }
        /// <summary>
        /// Loads the phone numbers.
        /// </summary>
        /// <returns></returns>
        private bool LoadPhoneNumbers()
        {
            // First load up all of the available numbers
            var smsNumbers = DefinedTypeCache.Get(Rock.SystemGuid.DefinedType.COMMUNICATION_SMS_FROM.AsGuid()).DefinedValues.Where(a => a.IsAuthorized(Rock.Security.Authorization.VIEW, CurrentPerson));

            var selectedNumberGuids = GetAttributeValue(AttributeKey.AllowedSMSNumbers).SplitDelimitedValues(true).AsGuidList();

            if (selectedNumberGuids.Any())
            {
                smsNumbers = smsNumbers.Where(v => selectedNumberGuids.Contains(v.Guid)).ToList();
            }

            // filter personal numbers (any that have a response recipient) if the hide personal option is enabled
            if (GetAttributeValue(AttributeKey.HidePersonalSmsNumbers).AsBoolean())
            {
                smsNumbers = smsNumbers.Where(v => v.GetAttributeValue("ResponseRecipient").IsNullOrWhiteSpace()).ToList();
            }

            // Show only numbers 'tied to the current' individual...unless they have 'Admin rights'.
            if (GetAttributeValue(AttributeKey.ShowOnlyPersonalSmsNumber).AsBoolean() && !IsUserAuthorized(Authorization.ADMINISTRATE))
            {
                smsNumbers = smsNumbers.Where(v => CurrentPerson.Aliases.Any(a => a.Guid == v.GetAttributeValue("ResponseRecipient").AsGuid())).ToList();
            }

            if (smsNumbers.Any())
            {
                var smsDetails = smsNumbers.Select(v => new
                {
                    v.Id,
                    Description = string.IsNullOrWhiteSpace(v.Description)
                    ? PhoneNumber.FormattedNumber(string.Empty, v.Value.Replace("+", string.Empty))
                    : v.Description.LeftWithEllipsis(25),
                });

                ddlSmsNumbers.DataSource     = smsDetails;
                ddlSmsNumbers.Visible        = smsNumbers.Count() > 1;
                ddlSmsNumbers.DataValueField = "Id";
                ddlSmsNumbers.DataTextField  = "Description";
                ddlSmsNumbers.DataBind();

                string keyPrefix = string.Format("sms-conversations-{0}-", this.BlockId);

                string smsNumberUserPref = this.GetUserPreference(keyPrefix + "smsNumber") ?? string.Empty;

                if (smsNumberUserPref.IsNotNullOrWhiteSpace())
                {
                    // Don't try to set the selected value unless you are sure it's in the list of items.
                    if (ddlSmsNumbers.Items.FindByValue(smsNumberUserPref) != null)
                    {
                        ddlSmsNumbers.SelectedValue = smsNumberUserPref;
                    }
                }

                hlSmsNumber.Visible = smsNumbers.Count() == 1;
                hlSmsNumber.Text    = smsDetails.Select(v => v.Description).FirstOrDefault();
                hfSmsNumber.SetValue(smsNumbers.Count() > 1 ? ddlSmsNumbers.SelectedValue.AsInteger() : smsDetails.Select(v => v.Id).FirstOrDefault());

                tglShowRead.Checked = this.GetUserPreference(keyPrefix + "showRead").AsBooleanOrNull() ?? true;
            }
            else
            {
                return(false);
            }

            return(true);
        }
Example #43
0
    public void Valid_when_11_digits_and_starting_with_1_even_with_punctuation()
    {
        var phrase = "+1 (223) 456-7890";

        Assert.Equal("2234567890", PhoneNumber.Clean(phrase));
    }
Example #44
0
    public void Invalid_when_11_digits_does_not_start_with_a_1()
    {
        var phrase = "22234567890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #45
0
    public void Invalid_if_area_code_starts_with_1()
    {
        var phrase = "(123) 456-7890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
 public bool CanVerifyPhoneNumber()
 {
     return(SmsVerificationEnabled && !PhoneNumber.IsNullOrEmpty() && !PhoneNumber.Trim().IsNullOrEmpty());
 }
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);

            pnlMessage.Controls.Clear();
            pnlMessage.Visible = false;

            PagePanels[0] = phUserInfo;
            PagePanels[1] = phDuplicates;
            PagePanels[2] = phSendLoginInfo;
            PagePanels[3] = phSentLoginInfo;
            PagePanels[4] = phConfirmation;
            PagePanels[5] = phSuccess;

            if (!Page.IsPostBack)
            {
                DisplayUserInfo(Direction.Forward);

                // show/hide address and phone panels
                pnlAddress.Visible      = GetAttributeValue("ShowAddress").AsBoolean();
                pnlPhoneNumbers.Visible = GetAttributeValue("ShowPhoneNumbers").AsBoolean();
                acAddress.Required      = GetAttributeValue("AddressRequired").AsBoolean();

                // set birthday picker required if minimum age > 0
                if (GetAttributeValue("MinimumAge").AsInteger() > 0)
                {
                    bdaypBirthDay.Required = true;
                }

                var phoneNumbers = new List <PhoneNumber>();

                // add phone number types
                if (pnlPhoneNumbers.Visible)
                {
                    var phoneNumberTypeDefinedType = DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.PERSON_PHONE_TYPE));

                    if (!string.IsNullOrWhiteSpace(GetAttributeValue("PhoneTypes")))
                    {
                        var selectedPhoneTypeGuids = GetAttributeValue("PhoneTypes").Split(',').Select(Guid.Parse).ToList();
                        var selectedPhoneTypes     = phoneNumberTypeDefinedType.DefinedValues
                                                     .Where(v => selectedPhoneTypeGuids.Contains(v.Guid))
                                                     .ToList();

                        foreach (var phoneNumberType in selectedPhoneTypes)
                        {
                            var numberType = new DefinedValue();
                            numberType.Id    = phoneNumberType.Id;
                            numberType.Value = phoneNumberType.Value;
                            numberType.Guid  = phoneNumberType.Guid;

                            var phoneNumber = new PhoneNumber {
                                NumberTypeValueId = numberType.Id, NumberTypeValue = numberType
                            };

                            phoneNumbers.Add(phoneNumber);
                        }

                        if (!string.IsNullOrWhiteSpace(GetAttributeValue("PhoneTypesRequired")))
                        {
                            _RequiredPhoneNumberGuids = GetAttributeValue("PhoneTypesRequired").Split(',').Select(Guid.Parse).ToList();
                        }

                        rPhoneNumbers.DataSource = phoneNumbers;
                        rPhoneNumbers.DataBind();
                    }
                }
            }
        }
        /// <summary>
        /// Creates the person.
        /// </summary>
        /// <returns></returns>
        private Person CreatePerson()
        {
            var rockContext = new RockContext();

            DefinedValueCache dvcConnectionStatus = DefinedValueCache.Read(GetAttributeValue("ConnectionStatus").AsGuid());
            DefinedValueCache dvcRecordStatus     = DefinedValueCache.Read(GetAttributeValue("RecordStatus").AsGuid());

            Person person = new Person();

            person.FirstName         = tbFirstName.Text;
            person.LastName          = tbLastName.Text;
            person.Email             = tbEmail.Text;
            person.IsEmailActive     = true;
            person.EmailPreference   = EmailPreference.EmailAllowed;
            person.RecordTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id;
            if (dvcConnectionStatus != null)
            {
                person.ConnectionStatusValueId = dvcConnectionStatus.Id;
            }

            if (dvcRecordStatus != null)
            {
                person.RecordStatusValueId = dvcRecordStatus.Id;
            }

            switch (ddlGender.SelectedValue)
            {
            case "M":
                person.Gender = Gender.Male;
                break;

            case "F":
                person.Gender = Gender.Female;
                break;

            default:
                person.Gender = Gender.Unknown;
                break;
            }

            var birthday = bdaypBirthDay.SelectedDate;

            if (birthday.HasValue)
            {
                person.BirthMonth = birthday.Value.Month;
                person.BirthDay   = birthday.Value.Day;
                if (birthday.Value.Year != DateTime.MinValue.Year)
                {
                    person.BirthYear = birthday.Value.Year;
                }
            }

            bool smsSelected = false;

            foreach (RepeaterItem item in rPhoneNumbers.Items)
            {
                HiddenField    hfPhoneType = item.FindControl("hfPhoneType") as HiddenField;
                PhoneNumberBox pnbPhone    = item.FindControl("pnbPhone") as PhoneNumberBox;
                CheckBox       cbUnlisted  = item.FindControl("cbUnlisted") as CheckBox;
                CheckBox       cbSms       = item.FindControl("cbSms") as CheckBox;

                if (!string.IsNullOrWhiteSpace(PhoneNumber.CleanNumber(pnbPhone.Number)))
                {
                    int phoneNumberTypeId;
                    if (int.TryParse(hfPhoneType.Value, out phoneNumberTypeId))
                    {
                        var phoneNumber = new PhoneNumber {
                            NumberTypeValueId = phoneNumberTypeId
                        };
                        person.PhoneNumbers.Add(phoneNumber);
                        phoneNumber.CountryCode = PhoneNumber.CleanNumber(pnbPhone.CountryCode);
                        phoneNumber.Number      = PhoneNumber.CleanNumber(pnbPhone.Number);

                        // Only allow one number to have SMS selected
                        if (smsSelected)
                        {
                            phoneNumber.IsMessagingEnabled = false;
                        }
                        else
                        {
                            phoneNumber.IsMessagingEnabled = cbSms.Checked;
                            smsSelected = cbSms.Checked;
                        }

                        phoneNumber.IsUnlisted = cbUnlisted.Checked;
                    }
                }
            }

            PersonService.SaveNewPerson(person, rockContext, null, false);

            // save address
            if (pnlAddress.Visible)
            {
                if (acAddress.IsValid && !string.IsNullOrWhiteSpace(acAddress.Street1) && !string.IsNullOrWhiteSpace(acAddress.City) && !string.IsNullOrWhiteSpace(acAddress.PostalCode))
                {
                    Guid locationTypeGuid = GetAttributeValue("LocationType").AsGuid();
                    if (locationTypeGuid != Guid.Empty)
                    {
                        Guid                 familyGroupTypeGuid  = Rock.SystemGuid.GroupType.GROUPTYPE_FAMILY.AsGuid();
                        GroupService         groupService         = new GroupService(rockContext);
                        GroupLocationService groupLocationService = new GroupLocationService(rockContext);
                        var family = groupService.Queryable().Where(g => g.GroupType.Guid == familyGroupTypeGuid && g.Members.Any(m => m.PersonId == person.Id)).FirstOrDefault();

                        var groupLocation = new GroupLocation();
                        groupLocation.GroupId = family.Id;
                        groupLocationService.Add(groupLocation);

                        var location = new LocationService(rockContext).Get(acAddress.Street1, acAddress.Street2, acAddress.City, acAddress.State, acAddress.PostalCode, acAddress.Country);
                        groupLocation.Location = location;

                        groupLocation.GroupLocationTypeValueId = DefinedValueCache.Read(locationTypeGuid).Id;
                        groupLocation.IsMailingLocation        = true;
                        groupLocation.IsMappedLocation         = true;

                        rockContext.SaveChanges();
                    }
                }
            }

            return(person);
        }
Example #49
0
    public void Cleans_numbers_with_multiple_spaces()
    {
        var phrase = "223 456   7890   ";

        Assert.Equal("2234567890", PhoneNumber.Clean(phrase));
    }
        private void LoadMessage(Dictionary <string, IConversation> conversationHashTable, TextMessage message, ILoadingProgressCallback progressCallback)
        {
            CheckForCancel(progressCallback);

            string      conversationKey;
            PhoneNumber messagePhoneNumber  = new PhoneNumber(message.Address, message.Country);
            string      phoneNumberStripped = PhoneNumber.Strip(messagePhoneNumber);

            if (message.ChatId != null)
            {
                conversationKey = message.ChatId;
            }
            else
            {
                conversationKey = phoneNumberStripped;
            }

            if (string.IsNullOrEmpty(conversationKey))
            {
                return;
            }

            Contact unknownContact = new Contact(Contact.UnknownContactId, null, null, null, messagePhoneNumber);

            message.Contact = GetContactByPhoneNumber(messagePhoneNumber);
            if (message.Contact == null)
            {
                message.Contact = unknownContact;
            }
            else
            {
                //
                // Update the contact's phone number to include country information.
                //

                foreach (PhoneNumber contactPhoneNumber in message.Contact.PhoneNumbers)
                {
                    if (PhoneNumber.NumbersAreEquivalent(contactPhoneNumber, messagePhoneNumber))
                    {
                        contactPhoneNumber.Country = message.Country;
                        break;
                    }
                }
            }

            IConversation conversation;

            if (conversationHashTable.ContainsKey(conversationKey))
            {
                conversation = conversationHashTable[conversationKey];

                // If The contact is not part of the conversation, add them here. This can happen with "orphaned" chat
                // messages.
                if (!message.Contact.Equals(unknownContact) && !conversation.AssociatedContacts.Contains(message.Contact))
                {
                    conversation.AssociatedContacts.Add(message.Contact);
                }
            }
            else if (message.ChatId != null)
            {
                // It's possible to have "orphaned" chat messages, where they appear in the message database with a chat ID
                // but the chat ID was not in the chat room database. Handle those here.
                List <IContact> chatContacts = new List <IContact>();
                if (!message.Contact.Equals(unknownContact))
                {
                    chatContacts.Add(message.Contact);
                }
                conversation = new ChatConversation(chatContacts);
                conversationHashTable.Add(message.ChatId, conversation);
            }
            else
            {
                conversation = new SingleNumberConversation(unknownContact);
                conversationHashTable.Add(conversationKey, conversation);
            }

            _messageLookupTable.Add(message.MessageId, message);

            conversation.AddMessage(message);

            IncrementWorkProgress(progressCallback);
        }
Example #51
0
    public void Invalid_if_exchange_code_starts_with_1_on_valid_11_digit_number()
    {
        var phrase = "1 (223) 156-7890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #52
0
    public void Invalid_with_letters()
    {
        var phrase = "123-abc-7890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }
Example #53
0
    public void Cleans_the_number()
    {
        var phrase = "(223) 456-7890";

        Assert.Equal("2234567890", PhoneNumber.Clean(phrase));
    }
Example #54
0
        // Do NOT do this in practices, have a separate create for phone numbers.
        // The only reason I did this is we scaffolded the phone number table and I didn't want to cause conflicts.
        public int CreatePerson(string firstName, string lastName, string phone)
        {
            firstName = firstName != null?firstName.Trim() : null;

            lastName = lastName != null?lastName.Trim() : null;

            phone = phone != null?phone.Trim() : null;

            int createdID;

            PersonValidationException exception = new PersonValidationException();

            // Be a little more specific than "== null" because that doesn't account for whitespace.
            if (string.IsNullOrWhiteSpace(firstName))
            {
                exception.SubExceptions.Add(new ArgumentNullException(nameof(firstName), "First name was not provided."));
            }
            else
            {
                if (firstName.Any(x => char.IsDigit(x)))
                {
                    exception.SubExceptions.Add(new ArgumentException(nameof(firstName), "First name cannot contain numbers."));
                }
                if (firstName.Length > 50)
                {
                    exception.SubExceptions.Add(new ArgumentOutOfRangeException(nameof(firstName), "First name cannot be more than 50 characters long."));
                }
            }

            if (string.IsNullOrWhiteSpace(lastName))
            {
                exception.SubExceptions.Add(new ArgumentNullException(nameof(lastName), "Last name was not provided."));
            }
            else
            {
                if (lastName.Any(x => char.IsDigit(x)))
                {
                    exception.SubExceptions.Add(new ArgumentException(nameof(lastName), "Last name cannot contain numbers."));
                }
                if (lastName.Length > 50)
                {
                    exception.SubExceptions.Add(new ArgumentOutOfRangeException(nameof(lastName), "Last name cannot be more than 50 characters long."));
                }
            }

            if (string.IsNullOrWhiteSpace(phone))
            {
                exception.SubExceptions.Add(new ArgumentNullException(nameof(phone), "Phone number was not provided."));
            }
            else
            {
                // Check for phone number formatting (feel free to use RegEx or any other method).
                // Has to be in the else branch to avoid null reference exceptions.
                int      temp;
                string[] phoneParts = phone.Split('-');
                if (!(
                        phoneParts[0].Length == 3 &&
                        int.TryParse(phoneParts[0], out temp) &&
                        phoneParts[1].Length == 3 &&
                        int.TryParse(phoneParts[1], out temp) &&
                        phoneParts[2].Length == 4 &&
                        int.TryParse(phoneParts[2], out temp)
                        ))
                {
                    exception.SubExceptions.Add(new ArgumentException(nameof(phone), "Phone number was not in a valid format."));
                }
            }

            // If any exceptions have been generated by any validation, throw them as one bundled exception.
            if (exception.SubExceptions.Count > 0)
            {
                throw exception;
            }

            // If we're at this point, we have no exceptions, as nothing got thrown.
            // At this point, ID is 0.
            Person newPerson = new Person()
            {
                FirstName = firstName,
                LastName  = lastName
            };
            PhoneNumber newPhoneNumber = new PhoneNumber()
            {
                Number = phone,
                Person = newPerson
            };

            // Add the new model instances to the database.
            using (PersonContext context = new PersonContext())
            {
                // By adding our object to the context, we're queueing it to receive an AUTO_INCREMENT ID once saved.
                context.People.Add(newPerson);
                context.PhoneNumbers.Add(newPhoneNumber);
                // When we save it, the object and all references thereto are updated with the new ID.
                context.SaveChanges();
                // Which makes it very simple to then get the new ID to return.
                createdID = newPerson.ID;
            }
            return(createdID);
        }
Example #55
0
        private void CreateControls(bool setSelection)
        {
            // Load all the attribute controls
            attributeControls.Clear();
            pnlAttributes.Controls.Clear();
            phDuplicates.Controls.Clear();

            var rockContext      = new RockContext();
            var attributeService = new AttributeService(rockContext);
            var locationService  = new LocationService(rockContext);

            foreach (string categoryGuid in GetAttributeValue("AttributeCategories").SplitDelimitedValues(false))
            {
                Guid guid = Guid.Empty;
                if (Guid.TryParse(categoryGuid, out guid))
                {
                    var category = CategoryCache.Read(guid);
                    if (category != null)
                    {
                        var attributeControl = new NewGroupAttributes();
                        attributeControl.ClearRows();
                        pnlAttributes.Controls.Add(attributeControl);
                        attributeControls.Add(attributeControl);
                        attributeControl.ID         = "groupAttributes_" + category.Id.ToString();
                        attributeControl.CategoryId = category.Id;

                        foreach (var attribute in attributeService.GetByCategoryId(category.Id))
                        {
                            if (attribute.IsAuthorized(Authorization.EDIT, CurrentPerson))
                            {
                                attributeControl.AttributeList.Add(AttributeCache.Read(attribute));
                            }
                        }
                    }
                }
            }

            nfmMembers.ClearRows();
            nfciContactInfo.ClearRows();

            var groupMemberService = new GroupMemberService(rockContext);
            int defaultRoleId      = _groupType.DefaultGroupRoleId ?? _groupType.Roles.Select(r => r.Id).FirstOrDefault();

            var location = new Location();

            acAddress.GetValues(location);

            foreach (var groupMember in GroupMembers)
            {
                string groupMemberGuidString = groupMember.Person.Guid.ToString().Replace("-", "_");

                var groupMemberRow = new NewGroupMembersRow();
                groupMemberRow.GroupTypeId = _groupType.Id;
                nfmMembers.Controls.Add(groupMemberRow);
                groupMemberRow.ID              = string.Format("row_{0}", groupMemberGuidString);
                groupMemberRow.RoleUpdated    += groupMemberRow_RoleUpdated;
                groupMemberRow.DeleteClick    += groupMemberRow_DeleteClick;
                groupMemberRow.PersonGuid      = groupMember.Person.Guid;
                groupMemberRow.RequireGender   = nfmMembers.RequireGender;
                groupMemberRow.RequireGrade    = nfmMembers.RequireGrade;
                groupMemberRow.RoleId          = groupMember.GroupRoleId;
                groupMemberRow.ShowGradeColumn = _isFamilyGroupType;
                groupMemberRow.ShowGradePicker = groupMember.GroupRoleId == _childRoleId;
                groupMemberRow.ShowNickName    = this.GetAttributeValue("ShowNickName").AsBoolean();
                groupMemberRow.ValidationGroup = BlockValidationGroup;

                var contactInfoRow = new NewGroupContactInfoRow();
                nfciContactInfo.Controls.Add(contactInfoRow);
                contactInfoRow.ID                 = string.Format("ci_row_{0}", groupMemberGuidString);
                contactInfoRow.PersonGuid         = groupMember.Person.Guid;
                contactInfoRow.IsMessagingEnabled = _SMSEnabled;
                contactInfoRow.PersonName         = groupMember.Person.FullName;

                if (_homePhone != null)
                {
                    var homePhoneNumber = groupMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _homePhone.Id).FirstOrDefault();
                    if (homePhoneNumber != null)
                    {
                        contactInfoRow.HomePhoneNumber      = PhoneNumber.FormattedNumber(homePhoneNumber.CountryCode, homePhoneNumber.Number);
                        contactInfoRow.HomePhoneCountryCode = homePhoneNumber.CountryCode;
                    }
                    else
                    {
                        contactInfoRow.HomePhoneNumber      = string.Empty;
                        contactInfoRow.HomePhoneCountryCode = string.Empty;
                    }
                }

                if (_cellPhone != null)
                {
                    var cellPhoneNumber = groupMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _cellPhone.Id).FirstOrDefault();
                    if (cellPhoneNumber != null)
                    {
                        contactInfoRow.CellPhoneNumber      = PhoneNumber.FormattedNumber(cellPhoneNumber.CountryCode, cellPhoneNumber.Number);
                        contactInfoRow.CellPhoneCountryCode = cellPhoneNumber.CountryCode;
                    }
                    else
                    {
                        contactInfoRow.CellPhoneNumber      = string.Empty;
                        contactInfoRow.CellPhoneCountryCode = string.Empty;
                    }
                }

                contactInfoRow.Email = groupMember.Person.Email;

                if (setSelection)
                {
                    if (groupMember.Person != null)
                    {
                        groupMemberRow.TitleValueId            = groupMember.Person.TitleValueId;
                        groupMemberRow.FirstName               = groupMember.Person.FirstName;
                        groupMemberRow.NickName                = groupMember.Person.NickName;
                        groupMemberRow.LastName                = groupMember.Person.LastName;
                        groupMemberRow.SuffixValueId           = groupMember.Person.SuffixValueId;
                        groupMemberRow.Gender                  = groupMember.Person.Gender;
                        groupMemberRow.BirthDate               = groupMember.Person.BirthDate;
                        groupMemberRow.ConnectionStatusValueId = groupMember.Person.ConnectionStatusValueId;
                        groupMemberRow.GradeOffset             = groupMember.Person.GradeOffset;
                    }
                }

                foreach (var attributeControl in attributeControls)
                {
                    var attributeRow = new NewGroupAttributesRow();
                    attributeControl.Controls.Add(attributeRow);
                    attributeRow.ID            = string.Format("{0}_{1}", attributeControl.ID, groupMemberGuidString);
                    attributeRow.AttributeList = attributeControl.AttributeList;
                    attributeRow.PersonGuid    = groupMember.Person.Guid;
                    attributeRow.PersonName    = groupMember.Person.FullName;

                    if (setSelection)
                    {
                        attributeRow.SetEditValues(groupMember.Person);
                    }
                }

                if (Duplicates.ContainsKey(groupMember.Person.Guid))
                {
                    var dupRow = new HtmlGenericControl("div");
                    dupRow.AddCssClass("row");
                    dupRow.ID = string.Format("dupRow_{0}", groupMemberGuidString);
                    phDuplicates.Controls.Add(dupRow);

                    var newPersonCol = new HtmlGenericControl("div");
                    newPersonCol.AddCssClass("col-md-6");
                    newPersonCol.ID = string.Format("newPersonCol_{0}", groupMemberGuidString);
                    dupRow.Controls.Add(newPersonCol);

                    newPersonCol.Controls.Add(PersonHtmlPanel(
                                                  groupMemberGuidString,
                                                  groupMember.Person,
                                                  groupMember.GroupRole,
                                                  location,
                                                  rockContext));

                    LinkButton lbRemoveMember = new LinkButton();
                    lbRemoveMember.ID = string.Format("lbRemoveMember_{0}", groupMemberGuidString);
                    lbRemoveMember.AddCssClass("btn btn-danger btn-xs");
                    lbRemoveMember.Text   = "Remove";
                    lbRemoveMember.Click += lbRemoveMember_Click;
                    newPersonCol.Controls.Add(lbRemoveMember);

                    var dupPersonCol = new HtmlGenericControl("div");
                    dupPersonCol.AddCssClass("col-md-6");
                    dupPersonCol.ID = string.Format("dupPersonCol_{0}", groupMemberGuidString);
                    dupRow.Controls.Add(dupPersonCol);

                    var duplicateHeader = new HtmlGenericControl("h4");
                    duplicateHeader.InnerText = "Possible Duplicate Records";
                    dupPersonCol.Controls.Add(duplicateHeader);

                    foreach (var duplicate in Duplicates[groupMember.Person.Guid])
                    {
                        GroupTypeRole groupTypeRole = null;
                        Location      duplocation   = null;

                        var dupGroupMember = groupMemberService.Queryable()
                                             .Where(a => a.PersonId == duplicate.Id)
                                             .Where(a => a.Group.GroupTypeId == _groupType.Id)
                                             .Select(s => new
                        {
                            s.GroupRole,
                            GroupLocation = s.Group.GroupLocations.Where(a => a.GroupLocationTypeValue.Guid.Equals(_locationType.Guid)).Select(a => a.Location).FirstOrDefault()
                        })
                                             .FirstOrDefault();
                        if (dupGroupMember != null)
                        {
                            groupTypeRole = dupGroupMember.GroupRole;
                            duplocation   = dupGroupMember.GroupLocation;
                        }

                        dupPersonCol.Controls.Add(PersonHtmlPanel(
                                                      groupMemberGuidString,
                                                      duplicate,
                                                      groupTypeRole,
                                                      duplocation,
                                                      rockContext));
                    }
                }
            }

            ShowPage();
        }
Example #56
0
    public void Valid_when_11_digits_and_starting_with_1()
    {
        var phrase = "12234567890";

        Assert.Equal("2234567890", PhoneNumber.Clean(phrase));
    }
Example #57
0
        static void Main(string[] args)
        {
            int    choose, chooseRegistration, chooseAutohrization;
            bool   isRegistrationMenu = true, isAutohorizationOk = true;
            string nameUser, firstNameUser, emailUser, numberUser, passwordUser, checkName, checkPassword;
            bool   isNameOk = true, isFirstNameOk = true, isEmailOk = false, isNumberOk = true, isPasswordOk = true;
            bool   isCheckingPasswordOk = false, isCheckingNameOk = false;
            User   user = new User();

            //цикл с меню
            //3 кейса
            //1 кейс выводит менюшку где надо выйти назад (все в цикле)
            //2 кейс выведет менюшку с циклом так же где нужно выйти
            while (true)
            {
                Console.SetCursorPosition(0, 0);
                Console.WriteLine("1 - Регистрация");
                Console.WriteLine("2 - Войти");
                Console.WriteLine("3 - Выход");
                int.TryParse(Console.ReadLine(), out choose);
                switch (choose)
                {
                case 1:
                    isRegistrationMenu = true;
                    while (isRegistrationMenu)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(0, 0);
                        Console.WriteLine("1 - Имя");
                        Console.WriteLine("2 - Фамилия");
                        Console.WriteLine("3 - Email");
                        Console.WriteLine("4 - Номер телефона");
                        Console.WriteLine("5 - Пароль");
                        Console.WriteLine("6 - Назад");
                        int.TryParse(Console.ReadLine(), out chooseRegistration);
                        switch (chooseRegistration)
                        {
                        case 1:
                            isNameOk = true;
                            Console.WriteLine("Введите ваше имя ");
                            nameUser = Console.ReadLine();
                            for (int i = 0; i < nameUser.Length; i++)
                            {
                                if (nameUser[i] >= '0' && nameUser[i] <= '9')
                                {
                                    isNameOk = false;
                                    break;
                                }
                            }
                            if (isNameOk)
                            {
                                user.SetName(nameUser);
                                Console.WriteLine("Ваше имя зарегистрированно");
                            }
                            else
                            {
                                Console.WriteLine("Вы ввели неверное имя,попробуйте еще раз");
                            }
                            Console.ReadLine();
                            Console.Clear();

                            break;

                        case 2:
                            isFirstNameOk = true;
                            Console.WriteLine("Введите вашу фамилию ");
                            firstNameUser = Console.ReadLine();
                            for (int i = 0; i < firstNameUser.Length; i++)
                            {
                                if (firstNameUser[i] >= '0' && firstNameUser[i] <= '9')
                                {
                                    isFirstNameOk = false;
                                    break;
                                }
                            }
                            if (isFirstNameOk)
                            {
                                user.SetFirstNAme(firstNameUser);
                                Console.WriteLine("Ваша фамилия зарегистрированно");
                            }
                            else
                            {
                                Console.WriteLine("Вы ввели неверную фамилию,попробуйте еще раз");
                            }
                            Console.ReadLine();
                            Console.Clear();
                            break;

                        case 3:
                            isEmailOk = false;
                            Console.WriteLine("Введите ваш Эмайл ");
                            emailUser = Console.ReadLine();
                            for (int i = 0; i < emailUser.Length; i++)
                            {
                                if (emailUser[i] == '@')
                                {
                                    isEmailOk = true;
                                    break;
                                }
                            }
                            if (isEmailOk)
                            {
                                user.SetEmail(emailUser);
                                Console.WriteLine("Ваш Email зарегистрирован");
                            }
                            else
                            {
                                Console.WriteLine("Вы ввели неверный Email,попробуйте еще раз");
                            }
                            Console.ReadLine();
                            Console.Clear();
                            break;

                        case 4:
                            Console.WriteLine("Введите ваш Телефон ");
                            numberUser = Console.ReadLine();
                            for (int i = 0; i < numberUser.Length; i++)
                            {
                                if (numberUser[i] >= '0' && numberUser[i] <= '9')
                                {
                                    isNumberOk = true;
                                }
                                else
                                {
                                    isNumberOk = false;
                                    break;
                                }
                            }
                            if (isNumberOk)
                            {
                                user.SetNumber(numberUser);
                                Console.WriteLine("Ваш Телефон зарегистрирован");
                            }
                            else
                            {
                                Console.WriteLine("Вы ввели неверный Телефон,попробуйте еще раз");
                            }
                            Console.ReadLine();
                            Console.Clear();
                            break;

                        case 5:
                            isPasswordOk = true;
                            Console.WriteLine("Введите ваш пароль ");
                            passwordUser = Console.ReadLine();
                            if (passwordUser.Length == 0)
                            {
                                isPasswordOk = false;
                            }
                            for (int i = 0; i < passwordUser.Length; i++)
                            {
                                if (passwordUser[i] == ' ')
                                {
                                    isPasswordOk = false;
                                    break;
                                }
                            }
                            if (isPasswordOk)
                            {
                                user.SetPassword(passwordUser);
                                Console.WriteLine("Ваш пароль зарегистрирован");
                            }
                            else
                            {
                                Console.WriteLine("Вы ввели неправильный пароль");
                            }
                            Console.ReadLine();
                            Console.Clear();
                            break;

                        case 6:
                            isRegistrationMenu = false;

                            break;
                        }
                    }
                    Console.Clear();
                    break;

                case 2:
                    if (isEmailOk && isFirstNameOk && isNameOk && isNumberOk && isPasswordOk)
                    {
                        isAutohorizationOk = true;
                        while (isAutohorizationOk)
                        {
                            Console.Clear();
                            Console.SetCursorPosition(0, 0);
                            Console.WriteLine("1 - Авторизация");
                            Console.WriteLine("2 - Вспомнить пароль");
                            Console.WriteLine("3 - Назад");
                            int.TryParse(Console.ReadLine(), out chooseAutohrization);
                            switch (chooseAutohrization)
                            {
                            case 1:
                                Console.WriteLine("Введите Email или номер телефона");
                                checkName = Console.ReadLine();
                                if ((checkName == user.GetName()) || (checkName == user.GetNumber()))
                                {
                                    isCheckingNameOk = true;
                                }
                                Console.WriteLine("Введите пароль");
                                checkPassword = Console.ReadLine();
                                if (checkPassword == user.GetPassword())
                                {
                                    isCheckingPasswordOk = true;
                                }
                                if (isCheckingNameOk && isCheckingPasswordOk)
                                {
                                    Console.WriteLine("Вы вошли");
                                }
                                else
                                {
                                    Console.WriteLine("Вы ввели неправильный логин или пароль");
                                }
                                Console.ReadLine();
                                Console.Clear();
                                break;


                            case 2:
                                Console.WriteLine("Введите ваш Email");
                                checkName = Console.ReadLine();

                                const string accountSid = "ACa3a0aa93822680c0df0f954abfaa5010";
                                const string authToken  = "660eefc858c608383d38fac4633279d3";
                                TwilioClient.Init(accountSid, authToken);
                                var mediaUrl = new List <System.Uri>()
                                {
                                    new Uri("https://climacons.herokuapp.com/clear.png")
                                };
                                var to      = new PhoneNumber("+77779561787");
                                var message = MessageResource.Create(
                                    to,
                                    from: new PhoneNumber("+18317049551"),
                                    body: user.GetPassword(),
                                    mediaUrl: mediaUrl);
                                Console.WriteLine(message.Sid);
                                break;


                            case 3:
                                isAutohorizationOk = false;
                                break;
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Вы не прошли регистрацию до конца");
                    }
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 3:
                    Environment.Exit(0);
                    break;
                }
            }
        }
Example #58
0
        public void UpdateUser(Chat chat, User user, bool secret)
        {
            Subtitle.Text     = LastSeenConverter.GetLabel(user, true);
            SubtitleInfo.Text = Subtitle.Text;

            Verified.Visibility = user.IsVerified ? Visibility.Visible : Visibility.Collapsed;

            UserPhone.Badge      = PhoneNumber.Format(user.PhoneNumber);
            UserPhone.Visibility = string.IsNullOrEmpty(user.PhoneNumber) ? Visibility.Collapsed : Visibility.Visible;

            Username.Badge      = $"{user.Username}";
            Username.Visibility = string.IsNullOrEmpty(user.Username) ? Visibility.Collapsed : Visibility.Visible;

            DescriptionTitle.Text = user.Type is UserTypeBot ? Strings.Resources.DescriptionPlaceholder : Strings.Resources.UserBio;

            if (user.Id == ViewModel.CacheService.Options.MyId)
            {
                NotificationsPanel.Visibility = Visibility.Collapsed;
            }
            else
            {
                NotificationsPanel.Visibility = Visibility.Visible;
            }

            if (secret)
            {
                UserStartSecret.Visibility = Visibility.Collapsed;
            }
            else
            {
                if (user.Type is UserTypeBot ||
                    user.Id == ViewModel.CacheService.Options.MyId ||
                    LastSeenConverter.IsServiceUser(user) ||
                    LastSeenConverter.IsSupportUser(user))
                {
                    MiscPanel.Visibility       = Visibility.Collapsed;
                    UserStartSecret.Visibility = Visibility.Collapsed;
                }
                else
                {
                    MiscPanel.Visibility       = Visibility.Visible;
                    UserStartSecret.Visibility = Visibility.Visible;
                }

                SecretLifetime.Visibility = Visibility.Collapsed;
                SecretHashKey.Visibility  = Visibility.Collapsed;
            }

            // Unused:
            Location.Visibility = Visibility.Collapsed;

            GroupLeave.Visibility  = Visibility.Collapsed;
            GroupInvite.Visibility = Visibility.Collapsed;

            ChannelMembersPanel.Visibility = Visibility.Collapsed;
            MembersPanel.Visibility        = Visibility.Collapsed;
            //Admins.Visibility = Visibility.Collapsed;
            //Banned.Visibility = Visibility.Collapsed;
            //Restricted.Visibility = Visibility.Collapsed;
            //Members.Visibility = Visibility.Collapsed;
        }
Example #59
0
        public ActionResult Outbound([FromBody] OutboundRequest outboundRequest)
        {
            var modelErrors = new List <string>();
            OutboundResponse outboundResponse = new OutboundResponse();
            CacheHandler     cacheHandler     = new CacheHandler();

            var request = Request;
            var headers = request.Headers;

            headers.TryGetValue("Authorization", out authorizationToken);
            string token    = authorizationToken.FirstOrDefault().Substring("Basic ".Length).Trim();
            string userName = token.Split(':')[0];
            string authId   = token.Split(':')[1];

            try
            {
                if (!ModelState.IsValid)
                {
                    foreach (var modelState in ModelState.Values)
                    {
                        foreach (var modelError in modelState.Errors)
                        {
                            modelErrors.Add(modelError.ErrorMessage);
                        }
                    }

                    outboundResponse.Message = "";
                    outboundResponse.Error   = string.Join(",", modelErrors);
                }
                else
                {
                    long        accountId   = _context.Account.Where(x => x.Username == userName && x.AuthId == authId).FirstOrDefault().Id;
                    PhoneNumber phoneNumber = _context.PhoneNumber.Where(x => x.Number == outboundRequest.From && x.AccountId == accountId).FirstOrDefault();
                    if (phoneNumber != null)
                    {
                        if (!cacheHandler.IsKeyPresentInInboundCache(outboundRequest.From, outboundRequest.To))
                        {
                            if (cacheHandler.GetOutboundSMSCountCache(outboundRequest.From) < 50)
                            {
                                cacheHandler.SetOutboundSMSCountCache(outboundRequest.From);
                                outboundResponse.Message = "outbound sms ok";
                                outboundResponse.Error   = "";
                            }
                            else
                            {
                                outboundResponse.Message = "";
                                outboundResponse.Error   = "limit reached for from <" + outboundRequest.From + "> ";
                            }
                        }
                        else
                        {
                            outboundResponse.Message = "";
                            outboundResponse.Error   = "sms from <" + outboundRequest.From + "> to <" + outboundRequest.To + "> blocked by STOP request";
                        }
                    }
                    else
                    {
                        outboundResponse.Message = "";
                        outboundResponse.Error   = "from parameter not found";
                    }
                }
            }
            catch
            {
                outboundResponse.Message = "";
                outboundResponse.Error   = "unknown failure";
            }

            return(CreatedAtAction("Outbound", outboundResponse));
        }
Example #60
0
    public void Invalid_when_more_than_11_digits()
    {
        var phrase = "321234567890";

        Assert.Throws <ArgumentException>(() => PhoneNumber.Clean(phrase));
    }