bothify("########"); } /** * Return passport number * @return string * @example 12345678 */ public function passportNumber() { return $this->bothify("########"); } /** * National Personal Identity number (asmens kodas) * @link https://en.wikipedia.org/wiki/National_identification_number#Lithuania * @link https://lt.wikipedia.org/wiki/Asmens_kodas * @param string [male|female] * @param \DateTime $birthdate * @param string $randomNumber three integers * @return string on format XXXXXXXXXXX */ public function personalIdentityNumber($gender = 'male', \DateTime $birthdate = null, $randomNumber = '') { if (!$birthdate) { $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); } $genderNumber = ($gender == 'male') ? (int) 1 : (int) 0; $firstNumber = (int) floor($birthdate->format('Y') / 100) * 2 - 34 - $genderNumber; $datePart = $birthdate->format('ymd'); $randomDigits = (string) ( ! $randomNumber || strlen($randomNumber < 3)) ? static::numerify('###') : substr($randomNumber, 0, 3); $partOfPerosnalCode = $firstNumber . $datePart . $randomDigits; $sum = self::calculateSum($partOfPerosnalCode, 1); $liekana = $sum % 11; if ($liekana !== 10) { $lastNumber = $liekana; return $firstNumber . $datePart . $randomDigits . $lastNumber; } $sum = self::calculateSum($partOfPerosnalCode, 2); $liekana = (int) $sum % 11; $lastNumber = ($liekana !== 10) ? $liekana : 0; return $firstNumber . $datePart . $randomDigits . $lastNumber; } /** * Calculate the sum of personal code * @link https://en.wikipedia.org/wiki/National_identification_number#Lithuania * @link https://lt.wikipedia.org/wiki/Asmens_kodas * @param string $numbers * @param int $time [1|2] * @return int */ private static function calculateSum($numbers, $time = 1) { if ($time == 1) { $multipliers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 1 ); } else { $multipliers = array(3, 4, 5, 6, 7, 8, 9, 1, 2, 3 ); } $sum = 0; for ($i=1; $i <= 10; $i++) { $sum += $numbers[$i-1] * $multipliers[$i-1]; } return (int) $sum; } }