pases 5 ticket updates
This commit is contained in:
@@ -30,16 +30,23 @@ final class TicketReferenceService
|
||||
|
||||
$this->lockReferenceSeries($prefix);
|
||||
|
||||
$lastReference = Ticket::query()
|
||||
/** @var list<string> $existingReferences */
|
||||
$existingReferences = Ticket::query()
|
||||
->withoutGlobalScopes()
|
||||
->withTrashed()
|
||||
->where('reference', 'like', $prefix.'%')
|
||||
->orderByDesc('reference')
|
||||
->value('reference');
|
||||
->pluck('reference')
|
||||
->filter(static fn (mixed $reference): bool => is_string($reference) && preg_match('/^'.preg_quote($prefix, '/').'\d+$/', $reference) === 1)
|
||||
->values()
|
||||
->all();
|
||||
|
||||
$next = $lastReference === null
|
||||
? 1
|
||||
: ((int) substr((string) $lastReference, -5)) + 1;
|
||||
$highestSuffix = 0;
|
||||
|
||||
return $prefix.str_pad((string) $next, 5, '0', STR_PAD_LEFT);
|
||||
foreach ($existingReferences as $existingReference) {
|
||||
$highestSuffix = max($highestSuffix, (int) substr($existingReference, strlen($prefix)));
|
||||
}
|
||||
|
||||
return $prefix.str_pad((string) ($highestSuffix + 1), 5, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user