65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# Suppression groupée de contrats - Page Staff/Contrats
|
|
|
|
## Résumé des modifications
|
|
|
|
Cette fonctionnalité permet au staff de supprimer plusieurs contrats en une seule opération depuis la page `/staff/contrats`.
|
|
|
|
## Fichiers modifiés
|
|
|
|
### 1. `components/staff/ContractsGrid.tsx`
|
|
|
|
#### Ajouts :
|
|
- **État du modal** : `showDeleteModal` pour contrôler l'affichage du modal de confirmation
|
|
- **Bouton dans le menu actions groupées** : Ajout d'une option "Supprimer les contrats" en rouge dans le menu déroulant
|
|
- **Modal de confirmation** : `DeleteConfirmModal` - nouveau composant inline qui :
|
|
- Affiche un avertissement en rouge sur l'irréversibilité de l'action
|
|
- Liste les contrats qui seront supprimés
|
|
- Demande à l'utilisateur de taper "supprimer" pour confirmer
|
|
- Appelle l'API `/api/staff/contracts/bulk-delete`
|
|
- Gère les erreurs et affiche des notifications toast
|
|
|
|
### 2. `app/api/staff/contracts/bulk-delete/route.ts` (nouveau fichier)
|
|
|
|
Endpoint API POST qui :
|
|
- Vérifie l'authentification et les permissions staff
|
|
- Valide les IDs de contrats reçus
|
|
- Supprime les contrats de la table `cddu_contracts`
|
|
- Retourne la liste des IDs supprimés
|
|
- Gère les erreurs avec des messages appropriés
|
|
|
|
## Fonctionnement
|
|
|
|
1. L'utilisateur sélectionne un ou plusieurs contrats via les checkboxes
|
|
2. Clique sur "Action groupée" → "Supprimer les contrats"
|
|
3. Un modal s'ouvre avec :
|
|
- Un avertissement en rouge
|
|
- La liste des contrats à supprimer
|
|
- Un champ de confirmation où il faut taper "supprimer"
|
|
4. Une fois confirmé, les contrats sont supprimés de la base de données
|
|
5. La liste est automatiquement mise à jour et un toast de succès s'affiche
|
|
6. La sélection est réinitialisée
|
|
|
|
## Sécurité
|
|
|
|
- ✅ Vérification de l'authentification
|
|
- ✅ Vérification du statut staff
|
|
- ✅ Confirmation explicite requise (taper "supprimer")
|
|
- ✅ Avertissement visuel sur l'irréversibilité
|
|
- ✅ Séparation visuelle dans le menu (ligne de séparation + couleur rouge)
|
|
|
|
## UX/UI
|
|
|
|
- Bouton en rouge pour signaler le danger
|
|
- Modal avec fond rouge pour les avertissements
|
|
- Champ de confirmation obligatoire
|
|
- Toast de succès avec le nombre de contrats supprimés
|
|
- Mise à jour immédiate de la liste sans rechargement
|
|
|
|
## Tests recommandés
|
|
|
|
1. Tester avec 1 contrat
|
|
2. Tester avec plusieurs contrats
|
|
3. Tester l'annulation
|
|
4. Tester sans taper "supprimer" correctement
|
|
5. Vérifier les permissions (utilisateur non-staff)
|
|
6. Vérifier que les contrats sont bien supprimés de la BDD
|