// Questo file fa parte di MyTown.
// MyTown è software libero: puoi ridistribuirlo e/o modificarlo secondo
// i termini della GNU Affero General Public License come pubblicata dalla
// Free Software Foundation, versione 3.
// Distribuito senza ALCUNA GARANZIA; vedi la GNU AGPL v3 per i dettagli.
// Copyright (C) Kondor Consulting & Services S.r.l.
// SPDX-License-Identifier: AGPL-3.0-or-later

// Modelli del modulo Fotovoltaico (impianti + cruscotto energetico).
// Riportati dal portale Angular (fotovoltaico/_models) per riusare gli stessi
// endpoint backend (pv-plant/*, pv-monitor/dashboard) sul servizio "companies".

export interface ImpiantoFv {
	pv_id: number;
	pv_cmp_id: number | null; // azienda (cmp_companies)
	pv_ws_id: number | null; // cantiere (ws_worksite)
	pv_denominazione: string;
	pv_pod: string; // codice POD
	pv_potenza_kwp: number | null; // potenza nominale kWp
	pv_indirizzo: string;
	pv_data_installazione: string | Date | null;
	pv_num_moduli: number | null;
	pv_num_inverter: number | null;
	pv_note: string;
	// derivati / lista
	ws_name?: string;
	totalrows?: number;
}

// --- Cruscotto energetico (payload pv-monitor/dashboard) ---
export interface PvDashboardKpi {
	today_kwh: number;
	month_kwh: number;
	year_kwh: number;
	total_kwh: number;
	now_w: number;
	expected_month_kwh: number;
	inverters_total: number;
	inverters_online: number;
}

export interface PvDayCurvePoint {
	ts: string;
	w: number;
}

export interface PvMonthDailyPoint {
	day: string;
	kwh: number;
}

export interface PvYearMonthlyPoint {
	month: number;
	kwh: number;
	expected: number;
}

export interface PvInverterStatus {
	inv_id: number;
	inv_name: string;
	inv_attivo: boolean;
	inv_last_seen: string | null;
	inv_last_status: string | null;
	online: boolean;
}

export interface PvDashboard {
	day: string;
	kpi: PvDashboardKpi;
	dayCurve: PvDayCurvePoint[];
	monthDaily: PvMonthDailyPoint[];
	yearMonthly: PvYearMonthlyPoint[];
	inverters: PvInverterStatus[];
}
