From 65f10e9ca6e8d5f3f8fcb36f3ebc35f32425f7fd Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 11 Jun 2026 22:36:36 +0200 Subject: [PATCH] fix(front): refus famille en un seul appel API (#110) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le back propage le refus et les mails aux co-parents ; évite la 2e requête en erreur. Co-authored-by: Cursor --- .../admin/validation_family_wizard.dart | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/frontend/lib/widgets/admin/validation_family_wizard.dart b/frontend/lib/widgets/admin/validation_family_wizard.dart index 36ed18e..96297bc 100644 --- a/frontend/lib/widgets/admin/validation_family_wizard.dart +++ b/frontend/lib/widgets/admin/validation_family_wizard.dart @@ -711,13 +711,11 @@ class _ValidationFamilyWizardState extends State { ); } - /// Refuse chaque parent encore `en_attente` (même commentaire, e-mail reprise par compte). Ticket #110. + /// Un seul appel : le back refuse tout le dossier famille (co-parents + mails). Ticket #110. Future _refuserEnvoyer(String comment) async { if (_submitting) return; - final pending = widget.dossier.parents - .where((p) => p.statut == 'en_attente' && p.id.trim().isNotEmpty) - .toList(); - if (pending.isEmpty) { + final parentId = _firstParentId?.trim(); + if (parentId == null || parentId.isEmpty || !_isEnAttente) { if (!mounted) return; ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -729,13 +727,13 @@ class _ValidationFamilyWizardState extends State { } setState(() => _submitting = true); try { - for (final p in pending) { - await UserService.refuseUser(p.id, comment: comment); - } + await UserService.refuseUser(parentId, comment: comment); if (!mounted) return; - final n = pending.length; - final msg = n > 1 - ? 'Refus enregistré pour $n comptes. Un e-mail de reprise a été envoyé à chacun.' + final nbEnAttente = widget.dossier.parents + .where((p) => p.statut == 'en_attente') + .length; + final msg = nbEnAttente > 1 + ? 'Refus enregistré. Un e-mail de reprise a été envoyé à chaque parent du dossier.' : 'Refus enregistré. Un e-mail avec le lien de reprise a été envoyé.'; ScaffoldMessenger.of(context).showSnackBar( SnackBar(