feat: bootstrap JOBcard CRM foundation
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user