<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Verificar autenticación básica
if (!isset($_SESSION['usu_id'])) {
    header("Location: ../login.php");
    exit();
}

// Requerir la clase de conexión del sistema
require_once "../modelo/Db.php";

$action = $_GET['action'] ?? '';

if ($action === 'guardar' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $bd = new clsbdd();

    // 1. Sanitización de datos obligatorios y cadenas básicas
    $com_id                 = !empty($_POST['com_id']) ? intval($_POST['com_id']) : null;
    $com_nombre             = addslashes(strtoupper(trim($_POST['com_nombre'])));
    $com_fecha              = addslashes($_POST['com_fecha']);
    $com_costo_inscripcion  = floatval($_POST['com_costo_inscripcion'] ?? 0);
    $com_estado             = addslashes($_POST['com_estado'] ?? 'PLANIFICADA');

    // 2. Datos opcionales y extendidos
    $com_lugar              = !empty($_POST['com_lugar']) ? addslashes(strtoupper(trim($_POST['com_lugar']))) : null;
    $com_organizador        = !empty($_POST['com_organizador']) ? addslashes(strtoupper(trim($_POST['com_organizador']))) : null;
    $com_puesto_logrado     = !empty($_POST['com_puesto_logrado']) ? addslashes(strtoupper(trim($_POST['com_puesto_logrado']))) : null;
    $com_puntaje            = !empty($_POST['com_puntaje']) ? floatval($_POST['com_puntaje']) : null;
    $com_observaciones_jueces = !empty($_POST['com_observaciones_jueces']) ? addslashes(trim($_POST['com_observaciones_jueces'])) : null;

    // Preparar valores para inyección SQL
    $lugar_val       = $com_lugar !== null ? "'$com_lugar'" : "NULL";
    $organizador_val = $com_organizador !== null ? "'$com_organizador'" : "NULL";
    $puesto_val      = $com_puesto_logrado !== null ? "'$com_puesto_logrado'" : "NULL";
    $puntaje_val     = $com_puntaje !== null ? $com_puntaje : "NULL";
    $obs_val         = $com_observaciones_jueces !== null ? "'$com_observaciones_jueces'" : "NULL";

    // Validación mínima obligatoria
    if (!empty($com_nombre) && !empty($com_fecha)) {
        
        if ($com_id === null) {
            // ==========================================
            // REGISTRO NUEVO (INSERT)
            // ==========================================
            $sql = "INSERT INTO bas_competencias (
                        com_nombre, com_fecha, com_lugar, com_organizador, 
                        com_costo_inscripcion, com_estado, com_puesto_logrado, 
                        com_puntaje, com_observaciones_jueces
                    ) VALUES (
                        '$com_nombre', '$com_fecha', $lugar_val, $organizador_val, 
                        $com_costo_inscripcion, '$com_estado', $puesto_val, 
                        $puntaje_val, $obs_val
                    )";
        } else {
            // ==========================================
            // EDICIÓN DE EXPEDIENTE (UPDATE)
            // ==========================================
            $sql = "UPDATE bas_competencias SET 
                        com_nombre = '$com_nombre',
                        com_fecha = '$com_fecha',
                        com_lugar = $lugar_val,
                        com_organizador = $organizador_val,
                        com_costo_inscripcion = $com_costo_inscripcion,
                        com_estado = '$com_estado',
                        com_puesto_logrado = $puesto_val,
                        com_puntaje = $puntaje_val,
                        com_observaciones_jueces = $obs_val
                    WHERE com_id = $com_id";
        }

        // Ejecutar sentencia
        $resultado = $bd->ejecutar($sql);

        if ($resultado) {
            header("Location: ../index.php?page=competencias/listar&status=success");
        } else {
            header("Location: ../index.php?page=competencias/listar&status=error&error=db_fail");
        }
        exit();
    } else {
        header("Location: ../index.php?page=competencias/listar&status=error&error=campos_vacios");
        exit();
    }
} else {
    header("Location: ../index.php?page=competencias/listar");
    exit();
}