/** * 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(); }