<?php
// Proteger con autenticación
require_once __DIR__ . '/../shared/includes/auth.php';
requireAuth();

// Usar TrabajadorService para operaciones CRUD con auditoría
require_once __DIR__ . '/../shared/api/TrabajadorService.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // Sanitizar y capturar datos
        $id_trabajador = intval($_POST['id_trabajador'] ?? 0);
        $nombre = trim(htmlspecialchars($_POST['apellidos_nombres'] ?? ''));
        $dni = trim(htmlspecialchars($_POST['dni_ce'] ?? ''));
        $edad = intval($_POST['edad'] ?? 0);
        $sexo = trim(htmlspecialchars($_POST['sexo'] ?? ''));
        $empresa = trim(htmlspecialchars($_POST['empresa'] ?? ''));
        $area = trim(htmlspecialchars($_POST['area'] ?? ''));
        $puesto_trabajo = trim(htmlspecialchars($_POST['puesto_trabajo'] ?? ''));
        $antiguedad_empleo = intval($_POST['antiguedad_empleo'] ?? 0);
        $turno = trim(htmlspecialchars($_POST['turno'] ?? ''));
        $tipo_contrato = trim(htmlspecialchars($_POST['tipo_contrato'] ?? ''));
        $experiencia_puesto = intval($_POST['experiencia_puesto'] ?? 0);
        $horas_jornada = intval($_POST['horas_jornada'] ?? 0);

        // Validaciones
        if ($id_trabajador <= 0 || empty($nombre) || empty($dni) || empty($edad) || empty($sexo) || empty($empresa) ||
            empty($area) || empty($puesto_trabajo) || empty($turno) || empty($tipo_contrato)) {
            throw new Exception("❌ Todos los campos obligatorios deben ser llenados");
        }

        if (!preg_match('/^[0-9]{8,15}$/', $dni)) {
            throw new Exception("⚠ El DNI/CE debe tener entre 8 y 15 números");
        }

        if ($edad < 18 || $edad > 80) {
            throw new Exception("⚠ La edad debe estar entre 18 y 80 años");
        }

        // Usar TrabajadorService para actualizar con auditoría
        $service = new TrabajadorService();

        $data = [
            'nombre' => $nombre,
            'dni' => $dni,
            'edad' => $edad,
            'sexo' => $sexo,
            'empresa' => $empresa,
            'area' => $area,
            'puesto_trabajo' => $puesto_trabajo,
            'antiguedad_empleo' => $antiguedad_empleo,
            'turno' => $turno,
            'tipo_contrato' => $tipo_contrato,
            'experiencia_puesto' => $experiencia_puesto,
            'horas_jornada' => $horas_jornada
        ];

        $result = $service->updateTrabajador($id_trabajador, $data, 'admin', 'recursoshumanos');

        if (!$result) {
            throw new Exception("⚠ Error al actualizar el trabajador");
        }

        // ✅ Éxito - cambio actualizado con auditoría
        echo "<script>
                localStorage.setItem('toastMessage', '✅ Trabajador actualizado correctamente');
                localStorage.setItem('toastColor', 'green');
                window.location = 'index.php';
              </script>";

    } catch (Exception $e) {
        echo "<script>
                localStorage.setItem('toastMessage', '{$e->getMessage()}');
                localStorage.setItem('toastColor', 'red');
                window.location = 'index.php';
              </script>";
    }
}
?>
