<?php
/**
 * ARCHIVO: api.php (BOTICA GUZMAN)
 * DESCRIPCIÓN: Enrutador central con soporte para Backup y Reseteo.
 */

// 1. CONFIGURACIÓN DE SEGURIDAD Y ENTORNO
error_reporting(E_ALL); 
ini_set('display_errors', 1);
session_start();

// Ajuste de zona horaria para Dashboard y Reportes
date_default_timezone_set('America/Lima'); 

// 2. CONEXIÓN A LA BASE DE DATOS
require_once 'db.php';

// 3. CABECERA DE RESPUESTA JSON
header('Content-Type: application/json');

function json_response($data) {
    echo json_encode($data);
    exit;
}

function json_error($msg, $code = 400) {
    http_response_code($code);
    echo json_encode(['success' => false, 'error' => $msg]);
    exit;
}

// 4. VERIFICACIÓN DE SESIÓN
if (!isset($_SESSION['user_id'])) {
    json_error("Sesión expirada. Por favor, inicie sesión nuevamente.", 401);
}

$uid = $_SESSION['user_id'];
$task = $_GET['task'] ?? '';

try {
    // BLOQUE 1: INVENTARIO, PRODUCTOS Y LOTES
    $inventory_tasks = [
        'save_producto', 'search_products', 'get_lotes_producto', 
        'save_lote_manual', 'delete_lote', 'get_labs', 
        'save_lab', 'delete_lab', 'delete_product', 
        'get_proveedores', 'save_compra'
    ];

    if (in_array($task, $inventory_tasks)) {
        require 'api_logic/inventario.php';
    }

    // BLOQUE 2: VENTAS, DASHBOARD Y VENCIMIENTOS
    $sales_tasks = [
        'sync_sale', 'void_sale', 'check_interactions', 'filtered_report', 
        'dashboard_kpis', 'sales_7days', 'expense_stats', 'get_kardex', 
        'get_popular_products', 'save_cliente_pos', 'get_utility_report', 
        'get_notifications', 'full_vencimientos' 
    ];

    if (in_array($task, $sales_tasks)) {
        require 'api_logic/ventas.php';
    }

    // BLOQUE 3: CAJA Y EGRESOS
    $cash_tasks = [
        'check_caja_status', 'open_caja', 'close_caja', 
        'get_caja_details', 'save_egreso', 'get_egresos'
    ];

    if (in_array($task, $cash_tasks)) {
        require 'api_logic/caja.php';
    }

    // BLOQUE 4: ADMINISTRACIÓN Y CONFIGURACIÓN (Actualizado)
    $admin_tasks = [
        'get_users', 'toggle_user', 'save_permisos', 
        'get_permisos', 'admin_reset_pass', 'change_password',
        'backup_db',      // <--- Soporte para descargas de seguridad
        'reset_database'  // <--- Soporte para limpieza de sistema
    ];

    if (in_array($task, $admin_tasks)) {
        require 'api_logic/admin.php';
    }

    // BLOQUE 5: UTILIDADES ESPECIALES
    if ($task == 'generate_barcode') {
        $code = substr(time() . mt_rand(100, 999), 0, 12);
        json_response(['success' => true, 'code' => $code]);
    }

    json_error("La acción solicitada ('$task') no está registrada en el sistema.");

} catch (Exception $e) {
    json_error("Error de servidor: " . $e->getMessage(), 500);
}
?>