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:
@@ -36,7 +36,13 @@ class TicketingGroup extends Model
|
||||
|
||||
public function nextTicketNumber(): string
|
||||
{
|
||||
$count = $this->tickets()->count() + 1;
|
||||
return $this->prefix . '-' . str_pad($count, 4, '0', STR_PAD_LEFT);
|
||||
$prefix = $this->prefix . '-';
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user