import 'package:equatable/equatable.dart'; class ProviderModel extends Equatable { final String? id; final String nome; final bool telefoniaFissa; final bool telefoniaMobile; final bool energia; final bool assicurazioni; final bool intrattenimento; final bool altro; final bool isActive; final String companyId; const ProviderModel({ this.id, required this.nome, required this.telefoniaFissa, required this.telefoniaMobile, required this.energia, required this.assicurazioni, required this.intrattenimento, required this.altro, required this.isActive, required this.companyId, }); factory ProviderModel.fromMap(Map map) { return ProviderModel( id: map['id'], nome: map['nome'], telefoniaFissa: map['telefonia_fissa'] ?? false, telefoniaMobile: map['telefonia_mobile'] ?? false, energia: map['energia'] ?? false, assicurazioni: map['assicurazioni'] ?? false, intrattenimento: map['intrattenimento'] ?? false, altro: map['altro'] ?? false, isActive: map['is_active'] ?? true, companyId: map['company_id'], ); } Map toMap() { final map = { 'nome': nome, 'telefonia_fissa': telefoniaFissa, 'telefonia_mobile': telefoniaMobile, 'energia': energia, 'assicurazioni': assicurazioni, 'intrattenimento': intrattenimento, 'altro': altro, 'is_active': isActive, 'company_id': companyId, }; // AGGIUNGIAMO L'ID SOLO SE NON È NULLO // Senza questo, l'upsert non sa dove andare a parare if (id != null) { map['id'] = id!; } return map; } @override List get props => [ id, nome, telefoniaFissa, telefoniaMobile, energia, assicurazioni, intrattenimento, altro, isActive, companyId, ]; ProviderModel copyWith({ String? id, String? nome, bool? telefoniaFissa, bool? telefoniaMobile, bool? energia, bool? assicurazioni, bool? intrattenimento, bool? altro, bool? isActive, String? companyId, }) { return ProviderModel( id: id ?? this.id, nome: nome ?? this.nome, telefoniaFissa: telefoniaFissa ?? this.telefoniaFissa, telefoniaMobile: telefoniaMobile ?? this.telefoniaMobile, energia: energia ?? this.energia, assicurazioni: assicurazioni ?? this.assicurazioni, intrattenimento: intrattenimento ?? this.intrattenimento, altro: altro ?? this.altro, isActive: isActive ?? this.isActive, companyId: companyId ?? this.companyId, ); } }