2026-04-06 10:55:56 +02:00
|
|
|
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;
|
2026-04-06 11:58:15 +02:00
|
|
|
final String? companyLogo;
|
2026-04-06 10:55:56 +02:00
|
|
|
|
|
|
|
|
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,
|
2026-04-06 11:58:15 +02:00
|
|
|
this.companyLogo,
|
2026-04-06 10:55:56 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// --- 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,
|
2026-04-06 11:58:15 +02:00
|
|
|
companyLogo: json['company_logo'],
|
2026-04-06 10:55:56 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// --- 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(),
|
2026-04-06 11:58:15 +02:00
|
|
|
'company_logo': companyLogo,
|
2026-04-06 10:55:56 +02:00
|
|
|
// '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,
|
2026-04-06 11:58:15 +02:00
|
|
|
String? companyLogo,
|
2026-04-06 10:55:56 +02:00
|
|
|
}) {
|
|
|
|
|
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,
|
2026-04-06 11:58:15 +02:00
|
|
|
companyLogo: companyLogo ?? this.companyLogo,
|
2026-04-06 10:55:56 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
List<Object?> get props => [
|
|
|
|
|
id,
|
|
|
|
|
userId,
|
|
|
|
|
ragioneSociale,
|
|
|
|
|
partitaIva,
|
|
|
|
|
isPaid,
|
|
|
|
|
paymentExpiration,
|
2026-04-06 11:58:15 +02:00
|
|
|
companyLogo,
|
2026-04-06 10:55:56 +02:00
|
|
|
];
|
|
|
|
|
}
|