<?php
/**
 * API: Apertura de Sesión de Caja
 * Sistema Sufarma
 */

header('Content-Type: application/json; charset=utf-8');
require_once '../../db_connection.php';
require_once '../../includes/functions/inventario_helpers.php';

try {
    $sucursal_id = obtenerSucursalActiva();

    // Leer datos del POST
    $input = json_decode(file_get_contents('php://input'), true);
    
    if (!$input || !isset($input['usuario_id']) || !isset($input['monto_apertura'])) {
        throw new Exception('Parámetros de apertura inválidos');
    }

    $usuario_id = (int)$input['usuario_id'];
    $monto_apertura = (float)$input['monto_apertura'];

    if ($monto_apertura < 0) {
        throw new Exception('El monto de apertura no puede ser negativo');
    }

    // Verificar si ya existe una sesión abierta
    $stmtCheck = $pdo->prepare("SELECT id FROM caja_sesiones WHERE sucursal_id = ? AND estado = 'abierta' LIMIT 1");
    $stmtCheck->execute([$sucursal_id]);
    if ($stmtCheck->fetch()) {
        throw new Exception('Ya existe una sesión de caja abierta para esta sucursal');
    }

    // Insertar la nueva sesión
    $stmt = $pdo->prepare("INSERT INTO caja_sesiones (
        sucursal_id, usuario_id, monto_apertura, estado, fecha_apertura
    ) VALUES (?, ?, ?, 'abierta', NOW())");
    $stmt->execute([
        $sucursal_id,
        $usuario_id,
        $monto_apertura
    ]);

    $sesion_id = $pdo->lastInsertId();

    // Obtener datos del usuario
    $stmtUser = $pdo->prepare("SELECT nombre FROM usuarios WHERE id = ?");
    $stmtUser->execute([$usuario_id]);
    $userRow = $stmtUser->fetch();
    $cajero_nombre = $userRow ? $userRow['nombre'] : 'Cajero';

    echo json_encode([
        'success' => true,
        'message' => 'Caja abierta con éxito',
        'sesion' => [
            'id' => (int)$sesion_id,
            'usuario_id' => $usuario_id,
            'cajero_nombre' => $cajero_nombre,
            'monto_apertura' => $monto_apertura,
            'fecha_apertura' => date('Y-m-d H:i:s')
        ]
    ], JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    echo json_encode([
        'success' => false,
        'error' => $e->getMessage()
    ]);
}
?>
