app mobile allarmi prima
This commit is contained in:
111
lib/models/allarme.dart
Normal file
111
lib/models/allarme.dart
Normal file
@@ -0,0 +1,111 @@
|
||||
class Allarme {
|
||||
final int id;
|
||||
final int sitoId;
|
||||
final String tipo;
|
||||
final String severita;
|
||||
final String stato;
|
||||
final String titolo;
|
||||
final String? descrizione;
|
||||
final double? valoreRilevato;
|
||||
final double? valoreSoglia;
|
||||
final String? unitaMisura;
|
||||
final Map<String, dynamic>? datiSensori;
|
||||
final DateTime timestampRilevamento;
|
||||
final DateTime createdAt;
|
||||
|
||||
Allarme({
|
||||
required this.id,
|
||||
required this.sitoId,
|
||||
required this.tipo,
|
||||
required this.severita,
|
||||
required this.stato,
|
||||
required this.titolo,
|
||||
this.descrizione,
|
||||
this.valoreRilevato,
|
||||
this.valoreSoglia,
|
||||
this.unitaMisura,
|
||||
this.datiSensori,
|
||||
required this.timestampRilevamento,
|
||||
required this.createdAt,
|
||||
});
|
||||
|
||||
factory Allarme.fromJson(Map<String, dynamic> json) {
|
||||
return Allarme(
|
||||
id: json['id'] as int,
|
||||
sitoId: json['sito_id'] as int,
|
||||
tipo: json['tipo'] as String,
|
||||
severita: json['severita'] as String,
|
||||
stato: json['stato'] as String,
|
||||
titolo: json['titolo'] as String,
|
||||
descrizione: json['descrizione'] as String?,
|
||||
valoreRilevato: json['valore_rilevato'] != null
|
||||
? (json['valore_rilevato'] as num).toDouble()
|
||||
: null,
|
||||
valoreSoglia: json['valore_soglia'] != null
|
||||
? (json['valore_soglia'] as num).toDouble()
|
||||
: null,
|
||||
unitaMisura: json['unita_misura'] as String?,
|
||||
datiSensori: json['dati_sensori'] as Map<String, dynamic>?,
|
||||
timestampRilevamento: DateTime.parse(json['timestamp_rilevamento'] as String),
|
||||
createdAt: DateTime.parse(json['created_at'] as String),
|
||||
);
|
||||
}
|
||||
|
||||
bool get isCritical => severita == 'critical';
|
||||
bool get isWarning => severita == 'warning';
|
||||
bool get isRisolto => stato == 'risolto';
|
||||
|
||||
String get tipoReadable {
|
||||
final labels = {
|
||||
'movimento_terreno': 'Movimento Terreno',
|
||||
'deformazione': 'Deformazione',
|
||||
'altro': 'Altro',
|
||||
};
|
||||
return labels[tipo] ?? tipo;
|
||||
}
|
||||
|
||||
String get statoReadable {
|
||||
final labels = {
|
||||
'nuovo': 'Nuovo',
|
||||
'in_gestione': 'In Gestione',
|
||||
'risolto': 'Risolto',
|
||||
};
|
||||
return labels[stato] ?? stato;
|
||||
}
|
||||
|
||||
String get severitaReadable {
|
||||
final labels = {
|
||||
'critical': 'CRITICO',
|
||||
'warning': 'AVVISO',
|
||||
'info': 'INFO',
|
||||
};
|
||||
return labels[severita] ?? severita.toUpperCase();
|
||||
}
|
||||
}
|
||||
|
||||
class AllarmeListResponse {
|
||||
final int total;
|
||||
final List<Allarme> items;
|
||||
final int page;
|
||||
final int pageSize;
|
||||
|
||||
AllarmeListResponse({
|
||||
required this.total,
|
||||
required this.items,
|
||||
required this.page,
|
||||
required this.pageSize,
|
||||
});
|
||||
|
||||
factory AllarmeListResponse.fromJson(Map<String, dynamic> json) {
|
||||
return AllarmeListResponse(
|
||||
total: json['total'] as int,
|
||||
items: (json['items'] as List)
|
||||
.map((item) => Allarme.fromJson(item as Map<String, dynamic>))
|
||||
.toList(),
|
||||
page: json['page'] as int,
|
||||
pageSize: json['page_size'] as int,
|
||||
);
|
||||
}
|
||||
|
||||
bool get hasMore => items.length < total;
|
||||
}
|
||||
Reference in New Issue
Block a user