Files
flux/lib/models/company_model.dart
2026-04-06 10:55:56 +02:00

112 lines
3.1 KiB
Dart

import 'package:equatable/equatable.dart';
class CompanyModel extends Equatable {
final String id;
final DateTime createdAt;
final String userId;
final String ragioneSociale;
final String indirizzo;
final String cap;
final String citta;
final String provincia;
final String partitaIva;
final String codiceFiscale;
final String codiceUnivoco;
final bool isPaid;
final DateTime? paymentExpiration;
const CompanyModel({
required this.id,
required this.createdAt,
required this.userId,
required this.ragioneSociale,
required this.indirizzo,
required this.cap,
required this.citta,
required this.provincia,
required this.partitaIva,
required this.codiceFiscale,
required this.codiceUnivoco,
required this.isPaid,
this.paymentExpiration,
});
// --- FROM JSON (Dall'input di Supabase a Dart) ---
factory CompanyModel.fromJson(Map<String, dynamic> json) {
return CompanyModel(
id: json['id'],
createdAt: DateTime.parse(json['created_at']),
userId: json['user_id'],
ragioneSociale: json['ragione_sociale'],
indirizzo: json['indirizzo'],
cap: json['cap'],
citta: json['citta'],
provincia: json['provincia'],
partitaIva: json['partita_iva'],
codiceFiscale: json['codice_fiscale'],
codiceUnivoco: json['codice_univoco'],
isPaid: json['is_paid'] ?? false,
paymentExpiration: json['payment_expiration'] != null
? DateTime.parse(json['payment_expiration'])
: null,
);
}
// --- TO JSON (Da Dart a Supabase) ---
Map<String, dynamic> toJson() {
return {
'ragione_sociale': ragioneSociale,
'indirizzo': indirizzo,
'cap': cap,
'citta': citta,
'provincia': provincia,
'partita_iva': partitaIva,
'codice_fiscale': codiceFiscale,
'codice_univoco': codiceUnivoco,
'is_paid': isPaid,
'payment_expiration': paymentExpiration?.toIso8601String(),
// 'id', 'created_at' e 'user_id' di solito sono gestiti dal DB in fase di insert
};
}
// --- COPY WITH (Per aggiornamenti parziali) ---
CompanyModel copyWith({
String? ragioneSociale,
String? indirizzo,
String? cap,
String? citta,
String? provincia,
String? partitaIva,
String? codiceFiscale,
String? codiceUnivoco,
bool? isPaid,
DateTime? paymentExpiration,
}) {
return CompanyModel(
id: id,
createdAt: createdAt,
userId: userId,
ragioneSociale: ragioneSociale ?? this.ragioneSociale,
indirizzo: indirizzo ?? this.indirizzo,
cap: cap ?? this.cap,
citta: citta ?? this.citta,
provincia: provincia ?? this.provincia,
partitaIva: partitaIva ?? this.partitaIva,
codiceFiscale: codiceFiscale ?? this.codiceFiscale,
codiceUnivoco: codiceUnivoco ?? this.codiceUnivoco,
isPaid: isPaid ?? this.isPaid,
paymentExpiration: paymentExpiration ?? this.paymentExpiration,
);
}
@override
List<Object?> get props => [
id,
userId,
ragioneSociale,
partitaIva,
isPaid,
paymentExpiration,
];
}