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
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user