/**
  * Validate length of the raw number
  *
  * Delimiters and spaces are ignored.
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidStructureException If length is invalid
  */
 public function validate(AccountNumber $number)
 {
     $len = strlen(str_replace([' ', ',', '-'], '', $number->getRawNumber()));
     $len -= strlen($number->getClearingCheckDigit());
     if ($len > $this->maxLength) {
         throw new InvalidStructureException("Invalid raw length for {$number->getRawNumber()}, expected: " . $this->maxLength);
     }
 }
 /**
  * Validate clearing number check digit
  *
  * If no clearing check digit exists number is considered valid.
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidCheckDigitException If check digit is not valid
  */
 public function validate(AccountNumber $number)
 {
     if ($checkDigit = $number->getClearingCheckDigit()) {
         if (!$this->checksum->isValid($number->getClearingNumber() . $checkDigit)) {
             throw new InvalidCheckDigitException("Invalid clearing number check digit in {$number}");
         }
     }
 }
 /**
  * Validate clearing number
  *
  * Clearing must be in one of the specified ranges to be considered valid.
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidClearingNumberException If clearing number is not valid
  */
 public function validate(AccountNumber $number)
 {
     $clearing = intval($number->getClearingNumber());
     foreach ($this->clearingRanges as $clearingRange) {
         if ($clearing >= $clearingRange[0] && $clearing <= $clearingRange[1]) {
             return;
         }
     }
     throw new InvalidClearingNumberException("Invalid clearing number {$clearing} in {$number}");
 }
 /**
  * Validate that number is a swedish personal id
  *
  * @param  AccountNumber $number
  * @return null
  * @throws InvalidCheckDigitException    If checkdigit is not valid
  * @throws InvalidAccountNumberException If number is not a valid personal id
  */
 public function validate(AccountNumber $number)
 {
     try {
         new PersonalId($number->getSerialNumber() . $number->getCheckDigit());
     } catch (\byrokrat\id\Exception\InvalidCheckDigitException $e) {
         throw new InvalidCheckDigitException("Invalid check digit {$number->getCheckDigit()} in {$number}", 0, $e);
     } catch (\byrokrat\id\Exception\RuntimeException $e) {
         throw new InvalidAccountNumberException("Account number {$number} is not a valid personal id number", 0, $e);
     }
 }
 protected function processNumber(AccountNumber $number)
 {
     return substr($number->getClearingNumber(), 1) . $number->getSerialNumber() . $number->getCheckDigit();
 }
 protected function processNumber(AccountNumber $number)
 {
     return $number->getSerialNumber() . $number->getCheckDigit();
 }