Squash merge develop → master. - Fiche parent éditable (co-parent, PATCH fiche, GET /parents) - Fiche AM 3 onglets (PATCH fiche, rattacher/détacher enfants) - Table enfants_assistantes_maternelles + enum garde/sans_garde - Migration SQL + BDD.sql canonique - Correctifs recette : @Get() parents, DTO fiche AM, fix NIR Co-authored-by: Cursor <cursoragent@cursor.com>
46 lines
1.5 KiB
Dart
46 lines
1.5 KiB
Dart
import 'package:p_tits_pas/models/assistante_maternelle_model.dart';
|
||
|
||
/// Places disponibles attendues : capacité max − enfants rattachés.
|
||
int? amExpectedPlacesAvailable({
|
||
required int? maxChildren,
|
||
required int childrenCount,
|
||
}) {
|
||
if (maxChildren == null) return null;
|
||
return (maxChildren - childrenCount).clamp(0, maxChildren);
|
||
}
|
||
|
||
/// True si la valeur déclarée par l'AM ne correspond pas au calcul métier.
|
||
bool amHasPlacesInconsistency({
|
||
required int? maxChildren,
|
||
required int? placesAvailable,
|
||
required int childrenCount,
|
||
}) {
|
||
final expected = amExpectedPlacesAvailable(
|
||
maxChildren: maxChildren,
|
||
childrenCount: childrenCount,
|
||
);
|
||
if (expected == null) return false;
|
||
if (placesAvailable == null) return childrenCount > (maxChildren ?? 0);
|
||
return placesAvailable != expected;
|
||
}
|
||
|
||
String? amPlacesVigilanceMessage(AssistanteMaternelleModel am) {
|
||
if (!amHasPlacesInconsistency(
|
||
maxChildren: am.maxChildren,
|
||
placesAvailable: am.placesAvailable,
|
||
childrenCount: am.children.length,
|
||
)) {
|
||
return null;
|
||
}
|
||
final stored = am.placesAvailable;
|
||
final expected = amExpectedPlacesAvailable(
|
||
maxChildren: am.maxChildren,
|
||
childrenCount: am.children.length,
|
||
);
|
||
final storedLabel = stored?.toString() ?? 'non renseigné';
|
||
final expectedLabel = expected?.toString() ?? '–';
|
||
return 'Point de vigilance : l\'AM déclare $storedLabel place(s) disponible(s), '
|
||
'alors que capacité ${am.maxChildren ?? '–'} − '
|
||
'${am.children.length} enfant(s) rattaché(s) = $expectedLabel.';
|
||
}
|