feat(#147): modale de sélection d'AM depuis la fiche enfant.
Réutilise AdminSelectListModal avec filtre Libre, cartes saturées en rouge, avertissement + lien fiche AM, et recalcul des places à chaque rattachement. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:p_tits_pas/models/pending_family.dart';
|
||||
import 'package:p_tits_pas/models/dossier_unifie.dart';
|
||||
import 'package:p_tits_pas/services/api/api_config.dart';
|
||||
import 'package:p_tits_pas/services/api/tokenService.dart';
|
||||
import 'package:p_tits_pas/utils/am_vigilance.dart';
|
||||
|
||||
class DocumentActifInfo {
|
||||
final String id;
|
||||
@@ -688,7 +689,24 @@ class UserService {
|
||||
if (response.statusCode != 200 && response.statusCode != 201) {
|
||||
throw Exception(_extractErrorMessage(response.body, 'Erreur rattachement enfant'));
|
||||
}
|
||||
return _amModelFromBody(response.body);
|
||||
final am = _amModelFromBody(response.body);
|
||||
// Recalcule toujours places_available (capacité − enfants) après attachement.
|
||||
return syncAmPlacesAvailable(am);
|
||||
}
|
||||
|
||||
/// Aligne `places_available` sur capacité − enfants rattachés.
|
||||
static Future<AssistanteMaternelleModel> syncAmPlacesAvailable(
|
||||
AssistanteMaternelleModel am,
|
||||
) async {
|
||||
final expected = amExpectedPlacesAvailable(
|
||||
maxChildren: am.maxChildren,
|
||||
childrenCount: am.children.length,
|
||||
);
|
||||
if (expected == null || am.placesAvailable == expected) return am;
|
||||
return updateAmFiche(
|
||||
amUserId: am.user.id,
|
||||
body: {'places_available': expected},
|
||||
);
|
||||
}
|
||||
|
||||
static Future<AssistanteMaternelleModel> detachEnfantFromAm({
|
||||
|
||||
Reference in New Issue
Block a user