import 'dart:io'; // Pour File
import '../models/card_assets.dart'; // Import de l'enum CardColorVertical

class ParentData {
  String firstName;
  String lastName;
  String address; // Rue et numéro
  String postalCode; // Ajout
  String city; // Ajout
  String phone;
  String email;
  String password; // Peut-être pas nécessaire pour le récap, mais pour la création initiale si
  File? profilePicture; // Chemin ou objet File

  ParentData({
    this.firstName = '',
    this.lastName = '',
    this.address = '', // Rue
    this.postalCode = '', // Ajout
    this.city = '', // Ajout
    this.phone = '',
    this.email = '',
    this.password = '',
    this.profilePicture,
  });
}

class ChildData {
  String firstName;
  String lastName;
  String dob; // Date de naissance ou prévisionnelle
  bool photoConsent;
  bool multipleBirth;
  bool isUnbornChild;
  File? imageFile;
  CardColorVertical cardColor; // Nouveau champ pour la couleur de la carte

  ChildData({
    this.firstName = '',
    this.lastName = '',
    this.dob = '',
    this.photoConsent = false,
    this.multipleBirth = false,
    this.isUnbornChild = false,
    this.imageFile,
    required this.cardColor, // Rendre requis dans le constructeur
  });
}

class UserRegistrationData {
  ParentData parent1;
  ParentData? parent2; // Optionnel
  List<ChildData> children;
  String motivationText;
  bool cguAccepted;

  UserRegistrationData({
    ParentData? parent1Data,
    this.parent2,
    List<ChildData>? childrenData,
    this.motivationText = '',
    this.cguAccepted = false,
  })  : parent1 = parent1Data ?? ParentData(),
        children = childrenData ?? [];

  // Méthode pour ajouter/mettre à jour le parent 1
  void updateParent1(ParentData data) {
    parent1 = data;
  }

  // Méthode pour ajouter/mettre à jour le parent 2
  void updateParent2(ParentData? data) {
    parent2 = data;
  }

  // Méthode pour ajouter un enfant
  void addChild(ChildData child) {
    children.add(child);
  }
  
  // Méthode pour mettre à jour un enfant (si nécessaire plus tard)
  void updateChild(int index, ChildData child) {
    if (index >= 0 && index < children.length) {
      children[index] = child;
    }
  }

  // Mettre à jour la motivation
  void updateMotivation(String text) {
    motivationText = text;
  }

  // Accepter les CGU
  void acceptCGU() {
    cguAccepted = true;
  }
} 