<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

require_once(__DIR__ . '/../config.php');

 $raw = file_get_contents("php://input");
 $data = json_decode($raw, true);

if (!$data) {
    http_response_code(400);
    echo json_encode([
        "success" => false,
        "message" => "No se recibieron datos válidos (JSON inválido o vacío).",
        "raw"     => $raw
    ]);
    exit;
}

// Determinar la operación a realizar
 $operation = $data['operation'] ?? 'create'; // create, update, delete

// Campos comunes
 $TIPO_SOLICITUD = isset($data['TIPO_SOLICITUD']) ? trim($data['TIPO_SOLICITUD']) : '';
 $CANTIDAD_OBLIGACIONES = isset($data['CANTIDAD_OBLIGACIONES']) ? (int)$data['CANTIDAD_OBLIGACIONES'] : 0;
 $EMPRESAS_CON_REPORTE = isset($data['EMPRESAS_CON_REPORTE']) ? trim($data['EMPRESAS_CON_REPORTE']) : null;
 $SECTOR = isset($data['SECTOR']) ? trim($data['SECTOR']) : '';
 $REPORTADO_NEGATIVAMENTE = isset($data['REPORTADO_NEGATIVAMENTE']) ? trim($data['REPORTADO_NEGATIVAMENTE']) : '';
 $CARTERA_CASTIGADA = isset($data['CARTERA_CASTIGADA']) ? trim($data['CARTERA_CASTIGADA']) : '';
 $ID_CANDIDATO_EMPRESA = isset($data['ID_CANDIDATO_EMPRESA']) ? (int)$data['ID_CANDIDATO_EMPRESA'] : null;
 $ID_ESTUDIO = isset($data['ID_ESTUDIO']) && $data['ID_ESTUDIO'] !== '' ? (int)$data['ID_ESTUDIO'] : null;
 $OBSERVACIONES = isset($data['OBSERVACIONES']) ? trim($data['OBSERVACIONES']) : null;
 $USUARIO_CREA = isset($data['USUARIO_CREA']) ? (int)$data['USUARIO_CREA'] : 1;
 $ESTADO_REGISTRO = isset($data['ESTADO_REGISTRO']) ? (int)$data['ESTADO_REGISTRO'] : 1;

// Campos específicos para update y delete
 $ID_HISTORIAL_FINANCIERO = isset($data['ID_HISTORIAL_FINANCIERO']) ? (int)$data['ID_HISTORIAL_FINANCIERO'] : null;

 $debug_campos = [
    'operation' => $operation,
    'TIPO_SOLICITUD' => $TIPO_SOLICITUD,
    'SECTOR' => $SECTOR,
    'REPORTADO_NEGATIVAMENTE' => $REPORTADO_NEGATIVAMENTE,
    'CARTERA_CASTIGADA' => $CARTERA_CASTIGADA,
    'ID_CANDIDATO_EMPRESA' => $ID_CANDIDATO_EMPRESA,
    'ID_HISTORIAL_FINANCIERO' => $ID_HISTORIAL_FINANCIERO
];

// Validaciones comunes
if (empty($ID_CANDIDATO_EMPRESA)) {
    echo json_encode([
        "success" => false,
        "message" => "ID_CANDIDATO_EMPRESA es obligatorio.",
        "debug_data" => $data,
        "debug_campos" => $debug_campos
    ]);
    exit;
}

switch ($operation) {
    case 'create':
        // Validaciones para create
        if ($TIPO_SOLICITUD === '') {
            echo json_encode([
                "success" => false,
                "message" => "TIPO_SOLICITUD es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($SECTOR === '') {
            echo json_encode([
                "success" => false,
                "message" => "SECTOR es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($REPORTADO_NEGATIVAMENTE === '') {
            echo json_encode([
                "success" => false,
                "message" => "REPORTADO_NEGATIVAMENTE es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($CARTERA_CASTIGADA === '') {
            echo json_encode([
                "success" => false,
                "message" => "CARTERA_CASTIGADA es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        // INSERT para create
        $sql = "INSERT INTO HISTORIAL_FINANCIERO (
                ID_ESTUDIO,
                ID_CANDIDATO_EMPRESA,
                TIPO_SOLICITUD,
                CANTIDAD_OBLIGACIONES,
                EMPRESAS_CON_REPORTE,
                SECTOR,
                REPORTADO_NEGATIVAMENTE,
                CARTERA_CASTIGADA,
                OBSERVACIONES,
                USUARIO_CREA,
                ESTADO_REGISTRO
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $mysqli->prepare($sql);

        if ($stmt === false) {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al preparar la consulta: " . $mysqli->error
            ]);
            exit;
        }

        $stmt->bind_param(
            "iisisssssii",
            $ID_ESTUDIO,
            $ID_CANDIDATO_EMPRESA,
            $TIPO_SOLICITUD,
            $CANTIDAD_OBLIGACIONES,
            $EMPRESAS_CON_REPORTE,
            $SECTOR,
            $REPORTADO_NEGATIVAMENTE,
            $CARTERA_CASTIGADA,
            $OBSERVACIONES,
            $USUARIO_CREA,
            $ESTADO_REGISTRO
        );

        if ($stmt->execute()) {
            echo json_encode([
                "success" => true,
                "message" => "Historial financiero creado correctamente.",
                "id_historial" => $stmt->insert_id,
                "debug_received" => $data
            ]);
        } else {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al ejecutar la consulta: " . $stmt->error
            ]);
        }

        $stmt->close();
        break;

    case 'update':
        // Validaciones para update
        if (!$ID_HISTORIAL_FINANCIERO) {
            echo json_encode([
                "success" => false,
                "message" => "ID_HISTORIAL_FINANCIERO es obligatorio para actualizar.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($TIPO_SOLICITUD === '') {
            echo json_encode([
                "success" => false,
                "message" => "TIPO_SOLICITUD es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($SECTOR === '') {
            echo json_encode([
                "success" => false,
                "message" => "SECTOR es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($REPORTADO_NEGATIVAMENTE === '') {
            echo json_encode([
                "success" => false,
                "message" => "REPORTADO_NEGATIVAMENTE es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        if ($CARTERA_CASTIGADA === '') {
            echo json_encode([
                "success" => false,
                "message" => "CARTERA_CASTIGADA es obligatorio.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        // UPDATE para update
        $sql = "UPDATE HISTORIAL_FINANCIERO SET 
                TIPO_SOLICITUD = ?,
                CANTIDAD_OBLIGACIONES = ?,
                EMPRESAS_CON_REPORTE = ?,
                SECTOR = ?,
                REPORTADO_NEGATIVAMENTE = ?,
                CARTERA_CASTIGADA = ?,
                OBSERVACIONES = ?,
                USUARIO_CREA = ?
                WHERE ID_HISTORIAL_FINANCIERO = ?";

        $stmt = $mysqli->prepare($sql);

        if ($stmt === false) {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al preparar la consulta: " . $mysqli->error
            ]);
            exit;
        }

        $stmt->bind_param(
            "sisssssii",
            $TIPO_SOLICITUD,
            $CANTIDAD_OBLIGACIONES,
            $EMPRESAS_CON_REPORTE,
            $SECTOR,
            $REPORTADO_NEGATIVAMENTE,
            $CARTERA_CASTIGADA,
            $OBSERVACIONES,
            $USUARIO_CREA,
            $ID_HISTORIAL_FINANCIERO
        );

        if ($stmt->execute()) {
            echo json_encode([
                "success" => true,
                "message" => "Historial financiero actualizado correctamente.",
                "id_historial" => $ID_HISTORIAL_FINANCIERO,
                "debug_received" => $data
            ]);
        } else {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al ejecutar la consulta: " . $stmt->error
            ]);
        }

        $stmt->close();
        break;

    case 'delete':
        // Validaciones para delete
        if (!$ID_HISTORIAL_FINANCIERO) {
            echo json_encode([
                "success" => false,
                "message" => "ID_HISTORIAL_FINANCIERO es obligatorio para eliminar.",
                "debug_data" => $data,
                "debug_campos" => $debug_campos
            ]);
            exit;
        }

        // Soft delete (marcar como inactivo)
        $sql = "UPDATE HISTORIAL_FINANCIERO SET ESTADO_REGISTRO = 0 WHERE ID_HISTORIAL_FINANCIERO = ?";
        $stmt = $mysqli->prepare($sql);

        if ($stmt === false) {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al preparar la consulta: " . $mysqli->error
            ]);
            exit;
        }

        $stmt->bind_param("i", $ID_HISTORIAL_FINANCIERO);

        if ($stmt->execute()) {
            echo json_encode([
                "success" => true,
                "message" => "Historial financiero eliminado correctamente.",
                "id_historial" => $ID_HISTORIAL_FINANCIERO
            ]);
        } else {
            http_response_code(500);
            echo json_encode([
                "success" => false,
                "message" => "Error al ejecutar la consulta: " . $stmt->error
            ]);
        }

        $stmt->close();
        break;

    default:
        http_response_code(400);
        echo json_encode([
            "success" => false,
            "message" => "Operación no válida. Use 'create', 'update' o 'delete'."
        ]);
        break;
}

 $mysqli->close();