// 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

// Sopralluogo — NUOVA gestione ws_spring_cmp (distinto dal vecchio RFI in models/sopralluoghi.model.ts).
export interface SopralluogoCmp {
	sl_id: number;
	sl_ws_id?: number | null; // cantiere (solo origin 'general')
	sl_cmp_id?: number | null;
	sl_tpi_id?: number | null; // tipologia intervento
	sl_stato?: number | null; // 0=Aperto, 5=Convalidato, 7=Contabilizzato, 6=Fatturato, 8=Annullato
	sl_protocollo?: string;
	sl_descrizione?: string;
	sl_note?: string;
	sl_descrizione_oggetto?: string;
	sl_costo?: number | null;
	sl_costo_effettivo?: number | null;
	sl_data_apertura_sopralluogo?: string | Date | null;
	sl_data_convalida?: string | null;
	sl_data_contabilita?: string | null;
	sl_data_fattura?: string | null;
	sl_lavagna?: string | null;
	sl_lavagna_thumbnails?: string | null;
	sl_folder_id?: number | null;
	origin?: string; // 'general' (nostri) | 'em' | 'lo' (vecchio RFI, sola lettura)
	// derivati (lista)
	tpi_descrizione?: string;
	ws_name?: string;
	totalrows?: number;
}

export interface SopralluogoTipo {
	tpi_id: number;
	tpi_descrizione: string;
	tpi_tipologia?: string;
	tpi_categoria?: number;
}

// Stati flusso
export const SOPR_STATO = {
	APERTO: 0,
	CONVALIDATO: 5,
	CONTABILIZZATO: 7,
	FATTURATO: 6,
	ANNULLATO: 8,
};

export function sopralluogoStatoLabel(stato: number | null | undefined): string {
	switch (stato) {
		case SOPR_STATO.CONVALIDATO:
			return 'Convalidato';
		case SOPR_STATO.CONTABILIZZATO:
			return 'Contabilizzato';
		case SOPR_STATO.FATTURATO:
			return 'Fatturato';
		case SOPR_STATO.ANNULLATO:
			return 'Annullato';
		default:
			return 'Aperto';
	}
}

export function sopralluogoStatoColor(stato: number | null | undefined): string {
	switch (stato) {
		case SOPR_STATO.CONVALIDATO:
			return 'primary';
		case SOPR_STATO.CONTABILIZZATO:
			return 'tertiary';
		case SOPR_STATO.FATTURATO:
			return 'success';
		case SOPR_STATO.ANNULLATO:
			return 'danger';
		default:
			return 'warning';
	}
}

// em/lo = vecchio RFI: sola lettura nella nuova gestione
export function isSopralluogoRfi(origin?: string): boolean {
	return origin === 'em' || origin === 'lo';
}
