Préremplit parents, enfants, motivation et fiche AM depuis reprise-dossier et envoie le body PATCH complet (co-parent, enfants par id, champs pro AM). Co-authored-by: Cursor <cursoragent@cursor.com>
79 lines
2.5 KiB
Dart
79 lines
2.5 KiB
Dart
import 'package:p_tits_pas/models/am_registration_data.dart';
|
|
import 'package:p_tits_pas/models/reprise_dossier.dart';
|
|
import 'package:p_tits_pas/models/user_registration_data.dart';
|
|
import 'package:p_tits_pas/services/api/api_config.dart';
|
|
import 'package:p_tits_pas/utils/reprise_mapper.dart';
|
|
|
|
/// Contexte reprise après refus (token e-mail ou identify). Ticket #112.
|
|
class RepriseSession {
|
|
RepriseSession._();
|
|
|
|
static String? _token;
|
|
static String? _role;
|
|
static String? _photoUrl;
|
|
static String? _photoUrlForApi;
|
|
|
|
static bool get isActive =>
|
|
_token != null && _token!.trim().isNotEmpty;
|
|
|
|
static String? get token => _token;
|
|
|
|
static bool get isParent => _role == 'parent';
|
|
|
|
static bool get isAm => _role == 'assistante_maternelle';
|
|
|
|
/// URL absolue pour l'affichage.
|
|
static String? get photoUrl => _photoUrl;
|
|
|
|
/// Chemin relatif API (`/uploads/…`) pour PATCH sans re-upload.
|
|
static String? get photoUrlForApi => _photoUrlForApi;
|
|
|
|
static void start({
|
|
required String token,
|
|
required RepriseDossier dossier,
|
|
}) {
|
|
_token = token.trim();
|
|
_role = dossier.role;
|
|
final raw = dossier.photoUrl?.trim();
|
|
_photoUrlForApi = raw != null && raw.isNotEmpty ? raw : null;
|
|
_photoUrl = _photoUrlForApi != null
|
|
? ApiConfig.absoluteMediaUrl(_photoUrlForApi)
|
|
: null;
|
|
}
|
|
|
|
static void clear() {
|
|
_token = null;
|
|
_role = null;
|
|
_photoUrl = null;
|
|
_photoUrlForApi = null;
|
|
}
|
|
|
|
static void applyToParent(UserRegistrationData data, RepriseDossier dossier) {
|
|
RepriseMapper.applyParentDossier(data, dossier);
|
|
}
|
|
|
|
static void applyToAm(AmRegistrationData data, RepriseDossier dossier) {
|
|
final displayPhoto = _photoUrl;
|
|
data.resetForReprise(
|
|
firstName: dossier.prenom ?? '',
|
|
lastName: dossier.nom ?? '',
|
|
phone: dossier.telephone ?? '',
|
|
email: dossier.email,
|
|
streetAddress: dossier.adresse ?? '',
|
|
postalCode: dossier.codePostal ?? '',
|
|
city: dossier.ville ?? '',
|
|
existingPhotoUrl: displayPhoto,
|
|
consentementPhoto: dossier.consentementPhoto ?? false,
|
|
dateOfBirth: RepriseMapper.parseIsoDate(dossier.dateNaissance),
|
|
birthCity: dossier.lieuNaissanceVille ?? '',
|
|
birthCountry: dossier.lieuNaissancePays ?? '',
|
|
nir: dossier.nir ?? '',
|
|
agrementNumber: dossier.numeroAgrement ?? '',
|
|
agreementDate: RepriseMapper.parseIsoDate(dossier.dateAgrement),
|
|
capacity: dossier.nbMaxEnfants,
|
|
placesAvailable: dossier.placeDisponible,
|
|
presentationText: dossier.biographie ?? '',
|
|
);
|
|
}
|
|
}
|