<?php
/**
 * ASISMA CRM - Sincronización del catálogo desde Control Empresas (CLI).
 * Trae familias → verticales, subfamilias → marcas, artículos → productos y
 * los precios por lista (general FRANQUICIADOS + la de cada franquiciado).
 * También se puede ejecutar desde la interfaz (Catálogo → Sincronizar).
 *
 * Uso: php cron\sincronizar_catalogo_ce.php
 * Programado cada 1 minuto en la tarea "ASISMA CRM Sincronizacion Catalogo"
 * del Programador de tareas de Windows.
 */
if (php_sapi_name() !== 'cli') die("Solo CLI\n");
define('CRON_MODE', true);

$rootDir = dirname(__DIR__);
require $rootDir . '/config/config.php'; // .env, constantes, Database
require $rootDir . '/app/helpers/SessionHelper.php';
require $rootDir . '/app/helpers/AuditHelper.php';
require $rootDir . '/app/helpers/CatalogoCeHelper.php';

// Candado anti-solape: si la corrida anterior sigue viva, esta se retira
$candado = fopen(__DIR__ . '/sincronizar_catalogo_ce.lock', 'c');
if (!$candado || !flock($candado, LOCK_EX | LOCK_NB)) {
    echo "Ya hay una sincronización en curso; se omite.\n";
    exit(0);
}

echo "[" . date('Y-m-d H:i:s') . "] Sincronizando catálogo desde Control Empresas...\n";
$resultado = CatalogoCeHelper::sincronizar();
$linea = '[' . date('Y-m-d H:i:s') . '] ' . ($resultado['success'] ? 'OK ' : 'ERR') . ' | ' . $resultado['detalle'] . PHP_EOL;
echo $linea;

// Bitácora acotada (se recorta al pasar de ~1 MB)
$log = $rootDir . '/logs/sincronizar_catalogo.log';
if (file_exists($log) && filesize($log) > 1048576) {
    file_put_contents($log, "[recortado " . date('Y-m-d H:i:s') . "]\n");
}
file_put_contents($log, $linea, FILE_APPEND);

flock($candado, LOCK_UN);
exit($resultado['success'] ? 0 : 1);
