fix(#131): polish fiche AM — champs pro, places, vigilance et photo.
Fiche pro entièrement éditable, places déclarées en lecture seule avec alerte rouge, icône vigilance sur la liste AM, et cadrage photo aligné sur le wizard validation. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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.';
|
||||
}
|
||||
Reference in New Issue
Block a user