/// Formule d'abonnement retournée par /api/souscriptions/formules class FormuleModel { final String code; // BASIC | STANDARD | PREMIUM final String libelle; final String? description; final String plage; // PETITE | MOYENNE | GRANDE | TRES_GRANDE final String plageLibelle; final int minMembres; final int maxMembres; // -1 = illimité final double prixMensuel; final double prixAnnuel; final int ordreAffichage; const FormuleModel({ required this.code, required this.libelle, this.description, required this.plage, required this.plageLibelle, required this.minMembres, required this.maxMembres, required this.prixMensuel, required this.prixAnnuel, required this.ordreAffichage, }); factory FormuleModel.fromJson(Map json) { return FormuleModel( code: json['code'] as String, libelle: json['libelle'] as String, description: json['description'] as String?, plage: json['plage'] as String, plageLibelle: (json['plageLibelle'] as String?) ?? '', minMembres: (json['minMembres'] as num?)?.toInt() ?? 0, maxMembres: (json['maxMembres'] as num?)?.toInt() ?? -1, prixMensuel: (json['prixMensuel'] as num?)?.toDouble() ?? 0, prixAnnuel: (json['prixAnnuel'] as num?)?.toDouble() ?? 0, ordreAffichage: (json['ordreAffichage'] as num?)?.toInt() ?? 0, ); } String get maxMembresLabel => maxMembres == -1 ? '∞' : '$maxMembres'; }