feat: bootstrap JOBcard CRM foundation

This commit is contained in:
Marco0300
2026-09-01 18:54:47 +02:00
commit 480494c5ed
31 changed files with 1300 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace App\Domain\Jobcard;
final class JobcardReference
{
public static function generate(int $sequence, ?int $year = null): string
{
if ($sequence < 1) {
throw new \InvalidArgumentException('Sequence must be positive.');
}
$year ??= (int) date('Y');
if ($year < 2000 || $year > 9999) {
throw new \InvalidArgumentException('Year must be four digits.');
}
return sprintf('JC-%04d-%06d', $year, $sequence);
}
public static function isValid(string $reference): bool
{
return preg_match('/^JC-\d{4}-\d{6}$/', $reference) === 1;
}
}