Files
KanbanGit/app/Actions/ProjectTicketMetadata/DeleteProjectTicketPriority.php
Twyco 8b25421e7c
linter / quality (pull_request) Successful in 1m18s
tests / ci (8.4) (pull_request) Successful in 1m28s
Add application API and OpenAPI docs
2026-04-20 13:22:56 +02:00

41 lines
1.1 KiB
PHP

<?php
namespace App\Actions\ProjectTicketMetadata;
use App\Models\Project;
use App\Models\TicketPriority;
use Illuminate\Support\Facades\DB;
class DeleteProjectTicketPriority
{
use ReordersProjectMetadata;
/**
* @return array{deleted: bool, deleted_name: string, message: string}
*/
public function handle(Project $project, TicketPriority $ticketPriority): array
{
if ($project->ticketPriorities()->count() === 1) {
return [
'deleted' => false,
'deleted_name' => $ticketPriority->name,
'message' => 'The last ticket priority cannot be deleted.',
];
}
$deletedName = $ticketPriority->name;
DB::transaction(function () use ($project, $ticketPriority): void {
$ticketPriority->delete();
$this->persistOrderedModels($project->ticketPriorities()->get()->values());
});
return [
'deleted' => true,
'deleted_name' => $deletedName,
'message' => "{$deletedName} priority was removed.",
];
}
}