import 'package:equatable/equatable.dart'; class StoreModel extends Equatable { final String? id; final String nome; final String companyId; final bool isActive; final bool isPaid; final DateTime? paymentExpiration; final String indirizzo; final String cap; final String comune; final String provincia; const StoreModel({ this.id, required this.nome, required this.companyId, this.isActive = true, this.isPaid = false, this.paymentExpiration, required this.indirizzo, required this.cap, required this.comune, required this.provincia, }); // Fondamentale per Equatable: definisce quali proprietà determinano l'uguaglianza @override List get props => [ id, nome, companyId, isActive, isPaid, paymentExpiration, indirizzo, cap, comune, provincia, ]; // Il mitico copyWith per creare nuove istanze modificando solo ciò che serve StoreModel copyWith({ String? id, String? nome, String? companyId, bool? isActive, bool? isPaid, DateTime? paymentExpiration, String? indirizzo, String? cap, String? comune, String? provincia, }) { return StoreModel( id: id ?? this.id, nome: nome ?? this.nome, companyId: companyId ?? this.companyId, isActive: isActive ?? this.isActive, isPaid: isPaid ?? this.isPaid, paymentExpiration: paymentExpiration ?? this.paymentExpiration, indirizzo: indirizzo ?? this.indirizzo, cap: cap ?? this.cap, comune: comune ?? this.comune, provincia: provincia ?? this.provincia, ); } factory StoreModel.fromJson(Map json) { return StoreModel( id: json['id'], nome: json['nome'], companyId: json['company_id'], isActive: json['is_active'] ?? true, isPaid: json['is_paid'] ?? false, paymentExpiration: json['payment_expiration'] != null ? DateTime.parse(json['payment_expiration']) : null, indirizzo: json['indirizzo'], cap: json['cap'], comune: json['comune'], provincia: json['provincia'], ); } Map toJson() { return { if (id != null) 'id': id, 'nome': nome, 'company_id': companyId, 'is_active': isActive, 'is_paid': isPaid, if (paymentExpiration != null) 'payment_expiration': paymentExpiration!.toIso8601String(), 'indirizzo': indirizzo, 'cap': cap, 'comune': comune, 'provincia': provincia, }; } }