|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
use Helip\NISS\Helpers\NISSGeneratorHelper; |
|
4
|
|
|
use Helip\NISS\NISS; |
|
5
|
|
|
|
|
6
|
|
|
// Show all errors |
|
7
|
|
|
ini_set('display_errors', 1); |
|
8
|
|
|
ini_set('display_startup_errors', 1); |
|
9
|
|
|
error_reporting(E_ALL); |
|
10
|
|
|
|
|
11
|
|
|
require_once __DIR__ . '/../vendor/autoload.php'; |
|
12
|
|
|
|
|
13
|
|
|
main(); |
|
14
|
|
|
|
|
15
|
|
|
function main(): void |
|
16
|
|
|
{ |
|
17
|
|
|
// Generates a random NISS numbers |
|
18
|
|
|
for ($i = 0; $i < 10; $i++) { |
|
19
|
|
|
// Generates random infos |
|
20
|
|
|
$birthDate = randomBirthdate(); |
|
21
|
|
|
$order_number = random_int(1, 999); |
|
22
|
|
|
$gender = ($order_number % 2 === 0 ? NISS::GENDER_FEMALE : NISS::GENDER_MALE); |
|
23
|
|
|
$type = randomType(); |
|
24
|
|
|
|
|
25
|
|
|
// Generates a NISS number |
|
26
|
|
|
$generatedNiss = NISSGeneratorHelper::generate($birthDate, $gender, null, $type); |
|
27
|
|
|
|
|
28
|
|
|
// Adds random chars to the NISS number to simulate random formatting |
|
29
|
|
|
$generatedNiss = insertRandomChars($generatedNiss, random_int(0, 10)); |
|
30
|
|
|
|
|
31
|
|
|
// Instantiates a Niss object |
|
32
|
|
|
$niss = new NISS($generatedNiss); |
|
33
|
|
|
|
|
34
|
|
|
echo '================================================' . PHP_EOL; |
|
35
|
|
|
echo 'Gen. Birthdate: ' . $birthDate->format('Y-m-d') . PHP_EOL; |
|
36
|
|
|
echo 'Gen. NISS: ' . $generatedNiss . PHP_EOL; |
|
37
|
|
|
echo '------------------------------------------------' . PHP_EOL; |
|
38
|
|
|
echo 'Formatted NISS: ' . $niss->getFormattedNiss() . PHP_EOL; |
|
39
|
|
|
echo 'Birthdate (Y-m-d): ' . ($niss->getBirthdate() ? $niss->getBirthdate()->format('Y-m-d') : 'Unknown') . PHP_EOL; |
|
40
|
|
|
echo 'Gender: ' . $niss->getGender() . PHP_EOL; |
|
41
|
|
|
echo 'Type of NISS: ' . $niss->getType() . PHP_EOL; |
|
42
|
|
|
echo 'Order number: ' . $niss->getOrderNumber() . PHP_EOL; |
|
43
|
|
|
echo 'Control number: ' . $niss->getControlNumber() . PHP_EOL; |
|
44
|
|
|
echo '================================================' . PHP_EOL . PHP_EOL; |
|
45
|
|
|
} |
|
46
|
|
|
} |
|
47
|
|
|
|
|
48
|
|
|
function randomBirthdate($age_min = 8, $age_max = 99): DateTime |
|
49
|
|
|
{ |
|
50
|
|
|
$current_year = date('Y'); |
|
51
|
|
|
|
|
52
|
|
|
$max = strtotime($current_year - $age_max . '-01-01'); |
|
53
|
|
|
$min = strtotime($current_year - $age_min . '-12-31'); |
|
54
|
|
|
|
|
55
|
|
|
$val = rand($min, $max); |
|
56
|
|
|
|
|
57
|
|
|
return new DateTime(date('Y-m-d', $val)); |
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
|
|
function randomType(): string |
|
61
|
|
|
{ |
|
62
|
|
|
$type = [NISS::TYPE_REGULAR, NISS::TYPE_BIS, NISS::TYPE_UNOFFICIAL, NISS::TYPE_TER, NISS::TYPE_DOB_UNKNOWN]; |
|
63
|
|
|
return $type[array_rand($type)]; |
|
64
|
|
|
} |
|
65
|
|
|
|
|
66
|
|
|
// Adds random chars to a string |
|
67
|
|
|
function insertRandomChars(string $str, int $numChars): string |
|
68
|
|
|
{ |
|
69
|
|
|
$chars = ['.', '-', ' ', '_', ':', ',', ';', '/', '@']; |
|
70
|
|
|
$n_chars = count($chars); |
|
71
|
|
|
$len = strlen($str); |
|
72
|
|
|
|
|
73
|
|
|
for ($i = 0; $i < $numChars; $i++) { |
|
74
|
|
|
$pos = mt_rand(0, $len); |
|
75
|
|
|
$char = $chars[mt_rand(0, $n_chars - 1)]; |
|
76
|
|
|
$str = substr_replace($str, $char, $pos, 0); |
|
77
|
|
|
} |
|
78
|
|
|
|
|
79
|
|
|
return $str; |
|
80
|
|
|
} |
|
81
|
|
|
|