Add redundancy checks when creating task numbers

This commit is contained in:
David Bomba 2022-09-13 19:32:53 +10:00
parent 3d32cc7ac8
commit 20f398d49b
2 changed files with 32 additions and 2 deletions

View File

@ -68,7 +68,6 @@ class InvoiceRepository extends BaseRepository
return $invoice;
}
// $invoice->service()->markDeleted()->handleCancellation()->save();
$invoice = $invoice->service()->markDeleted()->save();
parent::delete($invoice);

View File

@ -14,6 +14,7 @@ namespace App\Repositories;
use App\Factory\TaskFactory;
use App\Models\Task;
use App\Utils\Traits\GeneratesCounter;
use Illuminate\Database\QueryException;
/**
* TaskRepository.
@ -45,7 +46,7 @@ class TaskRepository extends BaseRepository
$this->setDefaultStatus($task);
}
$task->number = empty($task->number) || ! array_key_exists('number', $data) ? $this->getNextTaskNumber($task) : $data['number'];
$task->number = empty($task->number) || ! array_key_exists('number', $data) ? $this->trySaving($task) : $data['number'];
if (isset($data['description'])) {
$task->description = trim($data['description']);
@ -244,4 +245,34 @@ class TaskRepository extends BaseRepository
return $task;
}
private function trySaving(Task $task)
{
$x=1;
do{
try{
$task->number = $this->getNextTaskNumber($task);
$task->saveQuietly();
$this->completed = false;
}
catch(QueryException $e){
$x++;
if($x>50)
$this->completed = false;
}
}
while($this->completed);
return $task->number;
}
}