Remplace « En garde » par Gardé/Gardée selon le genre, comme Scolarisé/Scolarisée. Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.4 KiB
Dart
52 lines
1.4 KiB
Dart
/// Statuts enfant alignés sur `statut_enfant_type` (BDD / back #131).
|
||
const enfantStatusValues = [
|
||
'a_naitre',
|
||
'sans_garde',
|
||
'garde',
|
||
'scolarise',
|
||
];
|
||
|
||
/// Normalise une valeur API (legacy `actif` → `sans_garde`).
|
||
String normalizeEnfantStatus(String? raw) {
|
||
final s = (raw ?? '').trim().toLowerCase();
|
||
if (s.isEmpty) return 'sans_garde';
|
||
if (s == 'actif') return 'sans_garde';
|
||
return s;
|
||
}
|
||
|
||
String _accordeAuGenre(String masculin, String feminin, String? gender) {
|
||
final g = (gender ?? '').trim().toUpperCase();
|
||
if (g == 'F') return feminin;
|
||
return masculin;
|
||
}
|
||
|
||
/// Libellé affiché pour un statut enfant.
|
||
String enfantStatusLabel(String? status, {String? gender}) {
|
||
switch (normalizeEnfantStatus(status)) {
|
||
case 'a_naitre':
|
||
return 'À naître';
|
||
case 'sans_garde':
|
||
return 'Sans garde';
|
||
case 'garde':
|
||
return _accordeAuGenre('Gardé', 'Gardée', gender);
|
||
case 'scolarise':
|
||
return _accordeAuGenre('Scolarisé', 'Scolarisée', gender);
|
||
default:
|
||
return status?.trim().isNotEmpty == true ? status!.trim() : '–';
|
||
}
|
||
}
|
||
|
||
/// Libellé court pour colonnes validation (null = pas de bandeau).
|
||
String? enfantColumnStatusLabel({String? status, String? gender}) {
|
||
final s = normalizeEnfantStatus(status);
|
||
switch (s) {
|
||
case 'a_naitre':
|
||
case 'sans_garde':
|
||
case 'garde':
|
||
case 'scolarise':
|
||
return enfantStatusLabel(s, gender: gender);
|
||
default:
|
||
return null;
|
||
}
|
||
}
|