import 'package:equatable/equatable.dart'; import 'package:flux/features/services/models/energy_service_model.dart'; import 'package:flux/features/services/models/entertainment_service_model.dart'; import 'package:flux/features/services/models/fin_service_model.dart'; class ServiceModel extends Equatable { final String? id; final DateTime? createdAt; final String storeId; final String? employeeId; final String? customerId; final String number; final bool isBozza; final String note; final bool resultOk; // Telefonia final int al; final int mnp; final int nip; final int unica; final int telepass; // Moduli (Liste) final List energyServices; final List finServices; final List entertainmentServices; const ServiceModel({ this.id, this.createdAt, required this.storeId, this.employeeId, this.customerId, required this.number, this.isBozza = true, this.note = '', this.resultOk = true, this.al = 0, this.mnp = 0, this.nip = 0, this.unica = 0, this.telepass = 0, this.energyServices = const [], this.finServices = const [], this.entertainmentServices = const [], }); ServiceModel copyWith({ String? id, DateTime? createdAt, String? storeId, String? employeeId, String? customerId, String? number, bool? isBozza, String? note, bool? resultOk, int? al, int? mnp, int? nip, int? unica, int? telepass, List? energyServices, List? finServices, List? entertainmentServices, }) { return ServiceModel( id: id ?? this.id, createdAt: createdAt ?? this.createdAt, storeId: storeId ?? this.storeId, employeeId: employeeId ?? this.employeeId, customerId: customerId ?? this.customerId, number: number ?? this.number, isBozza: isBozza ?? this.isBozza, note: note ?? this.note, resultOk: resultOk ?? this.resultOk, al: al ?? this.al, mnp: mnp ?? this.mnp, nip: nip ?? this.nip, unica: unica ?? this.unica, telepass: telepass ?? this.telepass, energyServices: energyServices ?? this.energyServices, finServices: finServices ?? this.finServices, entertainmentServices: entertainmentServices ?? this.entertainmentServices, ); } @override List get props => [ id, createdAt, storeId, employeeId, customerId, number, isBozza, note, resultOk, al, mnp, nip, unica, telepass, energyServices, finServices, entertainmentServices, ]; factory ServiceModel.fromMap(Map map) { return ServiceModel( id: map['id'], createdAt: DateTime.parse(map['created_at']), storeId: map['store_id'], employeeId: map['employee_id'], customerId: map['customer_id'], number: map['number'] ?? '', isBozza: map['bozza'] ?? true, note: map['note'] ?? '', resultOk: map['result_ok'] ?? true, al: map['al'] ?? 0, mnp: map['mnp'] ?? 0, nip: map['nip'] ?? 0, unica: map['unica'] ?? 0, telepass: map['telepass'] ?? 0, // Mappaggio delle liste collegate (se incluse nella query) energyServices: (map['energy_service'] as List?) ?.map((x) => EnergyServiceModel.fromMap(x)) .toList() ?? const [], finServices: (map['fin_service'] as List?) ?.map((x) => FinServiceModel.fromMap(x)) .toList() ?? const [], entertainmentServices: (map['entertainment_service'] as List?) ?.map((x) => EntertainmentServiceModel.fromMap(x)) .toList() ?? const [], ); } }