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

/**
 * Schema condiviso degli environment dell'app (pattern del portale datasmart).
 *
 * `AppEnvironment` definisce la "shape" tipata; `sharedEnvironment` i default
 * comuni a tutti i profili (path microservizi, chiavi pubbliche, ddt di default).
 * Ogni file environment.<profilo>.ts estende `sharedEnvironment` via spread:
 * aggiungere un campo qui obbliga il compiler a verificarlo ovunque.
 *
 * I path dei servizi sono RELATIVI (senza slash iniziale) e vengono concatenati
 * a `base_url` (che termina con `/`), esattamente come faceva il vecchio config.json.
 */
export interface AppEnvironment {
	/** Flag Angular standard. */
	production: boolean;
	/** Etichetta profilo per debug (es. 'dev', 'edil', 'mytown-test'). */
	profile: string;

	/** URL base backend, con slash finale (es. 'https://api.gedocs.it/'). */
	base_url: string;
	/** URL da cui vengono serviti asset/immagini. */
	imageBaseURL: string;

	// --- Path microservizi (relativi a base_url) ----------------------------
	service_url_login: string;
	service_url_portal_manager: string;
	service_url_companies: string;
	service_url_documentary: string;
	service_url_helpdesk_rfi: string;
	service_url_booking: string;
	service_url_workflow: string;
	service_url_onlineshop: string;
	service_url_payment: string;
	service_url_biz_appointments: string;
	service_url_bakeka: string;

	// --- Sottocartelle file caricati (relative a imageBaseURL) ---------------
	/** Foto prodotto onlineshop. */
	onlineshop_image_path: string;
	/** Foto eventi/bacheca modulo turismo. */
	bakeka_image_path: string;
	/** Foto luoghi (places) modulo turismo. */
	places_image_path: string;
	/** Audio luoghi (places) modulo turismo. */
	places_audio_path: string;

	url_privacy: string;
	url_condizioni_commerciali: string;

	// --- Provider esterni (chiavi pubbliche per SPA) ------------------------
	apiGoogleMapsKey: string;
	paypal_clientId: string;
	nexi_script: string;

	/** Tipologia documento (numerazione DDT). */
	ddt_config: { fg_id: number; ft_id: number };
}

/**
 * Default condivisi. I path dei servizi sono uguali in ogni ambiente:
 * cambia solo il `base_url` davanti. Le chiavi provider qui sono i valori
 * "di collaudo" comuni; i profili prod (es. edil) le sovrascrivono.
 */
export const sharedEnvironment = {
	service_url_login: 'portal_service_ws_spring_login/api/',
	service_url_portal_manager: 'ws_spring_portal_manager/api/',
	service_url_companies: 'ws_spring_cmp/api/',
	service_url_documentary: 'ws_spring_documentary/api/',
	service_url_helpdesk_rfi: '', // endpoint del modulo helpdesk enterprise: lasciare vuoto
	service_url_booking: 'ws_spring_booking/api/',
	service_url_workflow: 'ws_spring_workflow/api/',
	service_url_onlineshop: 'app.ecommerce/api/',
	service_url_payment: 'ws_spring_payment/api/',
	service_url_biz_appointments: 'ws_spring_biz_appointments/api/',
	service_url_bakeka: 'ws_spring_bakeka/api/',

	// Sottocartelle file caricati. onlineshop resta relativa a imageBaseURL (/assets);
	// le sottocartelle turismo sono invece relative alla base persistente /bacheca/turismo
	// (vedi ConfigService): bakeka -> /bakeka, places -> /places, audio -> /places/audio.
	onlineshop_image_path: '/temp/onlineshop',
	bakeka_image_path: '/bakeka',
	places_image_path: '/places',
	places_audio_path: '/places/audio',

	url_privacy: '',
	url_condizioni_commerciali: '',

	apiGoogleMapsKey: '',
	paypal_clientId: '',
	nexi_script: '',

	ddt_config: { fg_id: 1, ft_id: 1 },
} satisfies Partial<AppEnvironment>;
