Files
terrain_monitor_app/lib/models/sito.dart
2025-10-20 19:17:45 +02:00

82 lines
2.2 KiB
Dart

class Sito {
final int id;
final int clienteId;
final String nome;
final String tipo;
final String? descrizione;
final double? latitudine;
final double? longitudine;
final double? altitudine;
final String? comune;
final String? provincia;
final String? regione;
final String? codiceIdentificativo;
final DateTime createdAt;
final DateTime? updatedAt;
Sito({
required this.id,
required this.clienteId,
required this.nome,
required this.tipo,
this.descrizione,
this.latitudine,
this.longitudine,
this.altitudine,
this.comune,
this.provincia,
this.regione,
this.codiceIdentificativo,
required this.createdAt,
this.updatedAt,
});
factory Sito.fromJson(Map<String, dynamic> json) {
return Sito(
id: json['id'] as int,
clienteId: json['cliente_id'] as int,
nome: json['nome'] as String,
tipo: json['tipo'] as String,
descrizione: json['descrizione'] as String?,
latitudine: json['latitudine'] != null
? (json['latitudine'] as num).toDouble()
: null,
longitudine: json['longitudine'] != null
? (json['longitudine'] as num).toDouble()
: null,
altitudine: json['altitudine'] != null
? (json['altitudine'] as num).toDouble()
: null,
comune: json['comune'] as String?,
provincia: json['provincia'] as String?,
regione: json['regione'] as String?,
codiceIdentificativo: json['codice_identificativo'] as String?,
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: json['updated_at'] != null
? DateTime.parse(json['updated_at'] as String)
: null,
);
}
String get tipoReadable {
final labels = {
'ponte': 'Ponte',
'galleria': 'Galleria',
'diga': 'Diga',
'frana': 'Frana',
'versante': 'Versante',
'edificio': 'Edificio',
};
return labels[tipo] ?? tipo;
}
String get localita {
final parts = <String>[];
if (comune != null) parts.add(comune!);
if (provincia != null) parts.add('($provincia)');
return parts.isNotEmpty ? parts.join(' ') : 'N/D';
}
bool get hasCoordinates => latitudine != null && longitudine != null;
}