fix(ticketing): resolve 500 error on ticket creation

nextTicketNumber() was using count()+1 which collides when tickets
have been deleted. Now queries MAX number via SUBSTRING ordering so
the generated ticket number is always unique.
This commit is contained in:
Joel Wedemire
2026-04-09 09:30:50 -07:00
parent 54aff1ee1b
commit 5ac4a3e771

View File

@@ -36,7 +36,13 @@ class TicketingGroup extends Model
public function nextTicketNumber(): string public function nextTicketNumber(): string
{ {
$count = $this->tickets()->count() + 1; $prefix = $this->prefix . '-';
return $this->prefix . '-' . str_pad($count, 4, '0', STR_PAD_LEFT); $last = $this->tickets()
->where('number', 'like', $prefix . '%')
->orderByRaw('CAST(SUBSTRING(number, ?) AS UNSIGNED) DESC', [strlen($prefix) + 1])
->value('number');
$next = $last ? ((int) substr($last, strlen($prefix))) + 1 : 1;
return $prefix . str_pad($next, 4, '0', STR_PAD_LEFT);
} }
} }