Files
unionflow-mobile-apps/lib/features/members/data/models/membre_complete_model.g.dart
dahoud 37db88672b feat: BLoC tests complets + sécurité production + freerasp 7.5.1 migration
## Tests BLoC (Task P2.4 Mobile)
- 25 nouveaux fichiers *_bloc_test.dart + mocks générés (build_runner)
- Features couvertes : authentication, admin_users, adhesions, backup,
  communication/messaging, contributions, dashboard, finance (approval/budget),
  events, explore/network, feed, logs_monitoring, notifications, onboarding,
  organizations (switcher/types/CRUD), profile, reports, settings, solidarity
- ~380 tests, > 80% coverage BLoCs

## Sécurité Production (Task P2.2)
- lib/core/security/app_integrity_service.dart (freerasp 7.5.1)
- Migration API breaking changes freerasp 7.5.1 :
  - onRootDetected → onPrivilegedAccess
  - onDebuggerDetected → onDebug
  - onSignatureDetected → onAppIntegrity
  - onHookDetected → onHooks
  - onEmulatorDetected → onSimulator
  - onUntrustedInstallationSourceDetected → onUnofficialStore
  - onDeviceBindingDetected → onDeviceBinding
  - onObfuscationIssuesDetected → onObfuscationIssues
  - Talsec.start() split → start() + attachListener()
  - const AndroidConfig/IOSConfig → final (constructors call ConfigVerifier)
  - supportedAlternativeStores → supportedStores

## Pubspec
- bloc_test: ^9.1.7 → ^10.0.0 (compat flutter_bloc ^9.0.0)
- freerasp 7.5.1

## Config
- android/app/build.gradle : ajustements release
- lib/core/config/environment.dart : URLs API actualisées
- lib/main.dart + app_router : intégrations sécurité/BLoC

## Cleanup
- Suppression docs intermédiaires (TACHES_*.md, TASK_*_COMPLETION_REPORT.md,
  TESTS_UNITAIRES_PROGRESS.md)
- .g.dart régénérés (json_serializable)
- .mocks.dart régénérés (mockito)

## Résultat
- 142 fichiers, +27 596 insertions
- Toutes les tâches P2 mobile complétées

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 12:42:35 +00:00

143 lines
5.7 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'membre_complete_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
MembreCompletModel _$MembreCompletModelFromJson(Map<String, dynamic> json) =>
MembreCompletModel(
id: json['id'] as String?,
nom: json['nom'] as String,
prenom: json['prenom'] as String,
email: json['email'] as String,
telephone: json['telephone'] as String?,
telephoneWave: json['telephoneWave'] as String?,
dateNaissance: json['dateNaissance'] == null
? null
: DateTime.parse(json['dateNaissance'] as String),
genre: $enumDecodeNullable(_$GenreEnumMap, json['genre']),
adresse: json['adresse'] as String?,
ville: json['ville'] as String?,
codePostal: json['codePostal'] as String?,
region: json['region'] as String?,
pays: json['pays'] as String?,
profession: json['profession'] as String?,
nationalite: json['nationalite'] as String?,
photo: json['photo'] as String?,
statut:
$enumDecodeNullable(_$StatutMembreEnumMap, json['statutCompte']) ??
StatutMembre.actif,
role: json['role'] as String?,
organisationId: json['organisationId'] as String?,
organisationNom: json['organisationNom'] as String?,
dateAdhesion: json['dateAdhesion'] == null
? null
: DateTime.parse(json['dateAdhesion'] as String),
dateFinAdhesion: json['dateFinAdhesion'] == null
? null
: DateTime.parse(json['dateFinAdhesion'] as String),
membreBureau: json['membreBureau'] as bool? ?? false,
responsable: json['responsable'] as bool? ?? false,
fonctionBureau: json['fonctionBureau'] as String?,
numeroMembre: json['numeroMembre'] as String?,
cotisationAJour: json['cotisationAJour'] as bool? ?? false,
nombreEvenementsParticipes:
(json['nombreEvenementsParticipes'] as num?)?.toInt() ?? 0,
derniereActivite: json['derniereActivite'] == null
? null
: DateTime.parse(json['derniereActivite'] as String),
statutMatrimonial: json['statutMatrimonial'] as String?,
typeIdentite: json['typeIdentite'] as String?,
numeroIdentite: json['numeroIdentite'] as String?,
notes: json['notes'] as String?,
dateCreation: json['dateCreation'] == null
? null
: DateTime.parse(json['dateCreation'] as String),
dateModification: json['dateModification'] == null
? null
: DateTime.parse(json['dateModification'] as String),
actif: json['actif'] as bool? ?? true,
niveauVigilanceKyc: $enumDecodeNullable(
_$NiveauVigilanceKycEnumMap,
json['niveauVigilanceKyc'],
),
statutKyc: $enumDecodeNullable(_$StatutKycEnumMap, json['statutKyc']),
dateVerificationIdentite: json['dateVerificationIdentite'] == null
? null
: DateTime.parse(json['dateVerificationIdentite'] as String),
motDePasseTemporaire: json['motDePasseTemporaire'] as String?,
);
Map<String, dynamic> _$MembreCompletModelToJson(MembreCompletModel instance) =>
<String, dynamic>{
'id': instance.id,
'nom': instance.nom,
'prenom': instance.prenom,
'email': instance.email,
'telephone': instance.telephone,
'telephoneWave': instance.telephoneWave,
'dateNaissance': instance.dateNaissance?.toIso8601String(),
'genre': _$GenreEnumMap[instance.genre],
'adresse': instance.adresse,
'ville': instance.ville,
'codePostal': instance.codePostal,
'region': instance.region,
'pays': instance.pays,
'profession': instance.profession,
'nationalite': instance.nationalite,
'photo': instance.photo,
'statutCompte': _$StatutMembreEnumMap[instance.statut]!,
'role': instance.role,
'organisationId': instance.organisationId,
'organisationNom': instance.organisationNom,
'dateAdhesion': instance.dateAdhesion?.toIso8601String(),
'dateFinAdhesion': instance.dateFinAdhesion?.toIso8601String(),
'membreBureau': instance.membreBureau,
'responsable': instance.responsable,
'fonctionBureau': instance.fonctionBureau,
'numeroMembre': instance.numeroMembre,
'cotisationAJour': instance.cotisationAJour,
'nombreEvenementsParticipes': instance.nombreEvenementsParticipes,
'derniereActivite': instance.derniereActivite?.toIso8601String(),
'statutMatrimonial': instance.statutMatrimonial,
'typeIdentite': instance.typeIdentite,
'numeroIdentite': instance.numeroIdentite,
'notes': instance.notes,
'dateCreation': instance.dateCreation?.toIso8601String(),
'dateModification': instance.dateModification?.toIso8601String(),
'actif': instance.actif,
'niveauVigilanceKyc':
_$NiveauVigilanceKycEnumMap[instance.niveauVigilanceKyc],
'statutKyc': _$StatutKycEnumMap[instance.statutKyc],
'dateVerificationIdentite': instance.dateVerificationIdentite
?.toIso8601String(),
'motDePasseTemporaire': instance.motDePasseTemporaire,
};
const _$GenreEnumMap = {
Genre.homme: 'HOMME',
Genre.femme: 'FEMME',
Genre.autre: 'AUTRE',
};
const _$StatutMembreEnumMap = {
StatutMembre.actif: 'ACTIF',
StatutMembre.inactif: 'INACTIF',
StatutMembre.suspendu: 'SUSPENDU',
StatutMembre.enAttente: 'EN_ATTENTE_VALIDATION',
};
const _$NiveauVigilanceKycEnumMap = {
NiveauVigilanceKyc.simplifie: 'SIMPLIFIE',
NiveauVigilanceKyc.renforce: 'RENFORCE',
};
const _$StatutKycEnumMap = {
StatutKyc.nonVerifie: 'NON_VERIFIE',
StatutKyc.enCours: 'EN_COURS',
StatutKyc.verifie: 'VERIFIE',
StatutKyc.refuse: 'REFUSE',
};