'use strict';
const fs=require('fs'); const path=require('path'); const ROOT=path.join(__dirname,'..','..');
function safeJson(file,fallback){try{return JSON.parse(fs.readFileSync(file,'utf8'));}catch(_){return fallback;}}
function clientesDir(){return path.resolve(ROOT,process.env.CLIENTES_CONFIG_DIR||'./config/clientes');}
function getClientId(){return process.env.ARKHON_CLIENT_ID||'cliente-demo';}
function getSucursalId(){return process.env.SUCURSAL_ID||'principal';}
function loadClientConfig(clientId=getClientId()){const file=path.join(clientesDir(),clientId+'.json'); const cfg=safeJson(file,null); if(cfg) return cfg; return {client_id:clientId,nombre:process.env.SUCURSAL_NOMBRE||'Cliente sin configurar',version_asignada:require(path.join(ROOT,'package.json')).version,channel:process.env.ARKHON_CHANNEL||'stable',sucursales:[{id:getSucursalId(),nombre:process.env.SUCURSAL_NOMBRE||'Sucursal Principal',dbName:process.env.DB_NAME,activa:true}]};}
function getActiveSucursal(clientId=getClientId(),sucursalId=getSucursalId()){const client=loadClientConfig(clientId); const sucursal=(client.sucursales||[]).find(s=>String(s.id)===String(sucursalId))||(client.sucursales||[])[0]||null; return {client,sucursal};}
function listClientes(){const dir=clientesDir(); if(!fs.existsSync(dir)) return []; return fs.readdirSync(dir).filter(f=>f.endsWith('.json')&&!f.endsWith('.local.json')).map(f=>safeJson(path.join(dir,f),null)).filter(Boolean).map(c=>({client_id:c.client_id,nombre:c.nombre,version_asignada:c.version_asignada,channel:c.channel,sucursales:(c.sucursales||[]).length}));}
module.exports={getClientId,getSucursalId,loadClientConfig,getActiveSucursal,listClientes};
