// Importa le classi annidate import 'role.dart'; import 'owner.dart'; class User { final int? id; final String? username; final String? password; final Role? role; final bool? active; final List? owners; // Costruttore con parametri nominati e 'required' User({ this.id, this.username, this.password, this.role, this.active, this.owners, }); // --- /// Converte l'oggetto User in una mappa per la serializzazione JSON. Map toJson() { try{ return { 'id': id, 'username': username, 'password': password, 'role': role?.toJson(), // Chiama il metodo toJson() della classe Role 'active': active, 'owners': owners?.map((owner) => owner.toJson()).toList(), // Converte la lista in una lista di mappe JSON }; } catch (e) { print('Errore durante la serializzazione dell\'oggetto User: $e'); return {}; } } /// Crea un oggetto User da una mappa (es. da una risposta JSON). factory User.fromJson(Map json) { final Map userJson = json['user'] as Map; try{ return User( id: userJson['id'] as int, username: userJson['username'] as String?, password: userJson['password'] as String?, role: Role.fromJson(userJson['role'] as Map), // Crea un oggetto Role dalla mappa annidata active: json['active'] as bool?, owners: (userJson['owners'] as List) .map((i) => Owner.fromJson(i as Map)) .toList(), // Mappa ogni elemento JSON in un oggetto Owner ); } catch (e) { print('Errore durante la deserializzazione dell\'oggetto User: $e'); return User(); // Restituisce un oggetto User vuoto in caso di errore } } }