status === 'draft') { return true; } // Si elle est validée ou plus loin dans le cycle, seul le chef de service peut la modifier return $user->isChefService(); } /** * Determine whether the user can delete the model. */ public function delete(User $user, Order $order): bool { // Seul le chef de service peut supprimer une commande return $user->isChefService(); } /** * Détermine si l'utilisateur peut effectuer une transition spécifique. */ public function transition(User $user, Order $order, string $newStatus): bool { if ($newStatus === 'validated') { // Seul le chef de service peut valider un brouillon return $user->isChefService(); } if ($newStatus === 'closed') { // Seul le chef de service peut clôturer / archiver le dossier return $user->isChefService(); } // Pour les autres transitions (validated -> ordered et ordered -> delivered), // tout agent connecté peut l'effectuer (réception de colis, transmission au fournisseur) return true; } }