class Statistiche { final int totaleAllarmi; final int totaleSiti; final int allarmiAperti; final int allarmiRecenti7gg; // Per severità final int allarmiCritical; final int allarmiWarning; final int allarmiInfo; // Per stato final int allarmiNuovo; final int allarmiInGestione; final int allarmiRisolto; // Siti per tipo final int sitiPonte; final int sitiGalleria; final int sitiDiga; final int sitiFrana; final int sitiVersante; final int sitiEdificio; Statistiche({ required this.totaleAllarmi, required this.totaleSiti, required this.allarmiAperti, required this.allarmiRecenti7gg, required this.allarmiCritical, required this.allarmiWarning, required this.allarmiInfo, required this.allarmiNuovo, required this.allarmiInGestione, required this.allarmiRisolto, required this.sitiPonte, required this.sitiGalleria, required this.sitiDiga, required this.sitiFrana, required this.sitiVersante, required this.sitiEdificio, }); factory Statistiche.fromJson(Map json) { return Statistiche( totaleAllarmi: json['totale_allarmi'] as int, totaleSiti: json['totale_siti'] as int, allarmiAperti: json['allarmi_aperti'] as int, allarmiRecenti7gg: json['allarmi_recenti_7gg'] as int, allarmiCritical: json['allarmi_critical'] as int, allarmiWarning: json['allarmi_warning'] as int, allarmiInfo: json['allarmi_info'] as int, allarmiNuovo: json['allarmi_nuovo'] as int, allarmiInGestione: json['allarmi_in_gestione'] as int, allarmiRisolto: json['allarmi_risolto'] as int, sitiPonte: json['siti_ponte'] as int, sitiGalleria: json['siti_galleria'] as int, sitiDiga: json['siti_diga'] as int, sitiFrana: json['siti_frana'] as int, sitiVersante: json['siti_versante'] as int, sitiEdificio: json['siti_edificio'] as int, ); } int get totaleSeverita => allarmiCritical + allarmiWarning + allarmiInfo; int get totaleStato => allarmiNuovo + allarmiInGestione + allarmiRisolto; double get percentualeCritici => totaleAllarmi > 0 ? (allarmiCritical / totaleAllarmi) * 100 : 0; double get percentualeAperti => totaleAllarmi > 0 ? (allarmiAperti / totaleAllarmi) * 100 : 0; } class AllarmePerGiorno { final DateTime data; final int count; AllarmePerGiorno({ required this.data, required this.count, }); factory AllarmePerGiorno.fromJson(Map json) { return AllarmePerGiorno( data: DateTime.parse(json['data'] as String), count: json['count'] as int, ); } } class AllarmiPerGiornoResponse { final List dati; AllarmiPerGiornoResponse({required this.dati}); factory AllarmiPerGiornoResponse.fromJson(Map json) { return AllarmiPerGiornoResponse( dati: (json['dati'] as List) .map((item) => AllarmePerGiorno.fromJson(item as Map)) .toList(), ); } }