public async Task IsValidAsync()

in src/PowerShell/Validations/AddressValidator.cs [43:93]


        public async Task<bool> IsValidAsync(Address resource, CancellationToken cancellationToken = default)
        {
            CountryValidationRules validationRules;

            resource.AssertNotNull(nameof(resource));

            validationRules = await partner.CountryValidationRules.ByCountry(resource.Country).GetAsync(cancellationToken).ConfigureAwait(false);

            if (validationRules.IsCityRequired && string.IsNullOrEmpty(resource.City))
            {
                throw new ValidationException(Resources.CityRequiredError);
            }

            if (validationRules.IsPostalCodeRequired && string.IsNullOrEmpty(resource.PostalCode))
            {
                throw new ValidationException(Resources.PostalCoderequiredError);
            }

            if (validationRules.IsStateRequired)
            {
                if (string.IsNullOrEmpty(resource.State))
                {
                    throw new ValidationException(Resources.StateRequiredError);
                }
                else
                {
                    if (!validationRules.SupportedStatesList.Contains(resource.State))
                    {
                        throw new ValidationException(
                            string.Format(
                                CultureInfo.CurrentCulture,
                                Resources.InvalidStateError,
                                resource.State,
                                string.Join(",", validationRules.SupportedStatesList)));
                    }
                }
            }

            if (!string.IsNullOrEmpty(validationRules.PhoneNumberRegex)
                && !string.IsNullOrEmpty(resource.PhoneNumber) &&
                !Regex.Match(resource.PhoneNumber, validationRules.PhoneNumberRegex).Success)
            {
                throw new ValidationException(
                    string.Format(
                        CultureInfo.CurrentCulture,
                        Resources.InvalidPhoneFormatError,
                        resource.PhoneNumber));
            }

            return await partner.Validations.IsAddressValidAsync(resource, cancellationToken).ConfigureAwait(false);
        }