<?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") {
    // Capturar y sanitizar datos
    $nombre = trim(htmlspecialchars($_POST['nombre'] ?? ''));
    $dni = trim(htmlspecialchars($_POST['dni'] ?? ''));
    $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 (empty($nombre) || empty($dni) || empty($edad) || empty($sexo) || empty($empresa) || empty($area) ||
        empty($puesto_trabajo) || empty($turno) || empty($tipo_contrato)) {
        header("Location: index.php?msg=error&desc=Todos los campos obligatorios deben ser llenados");
        exit();
    }

    if (!preg_match('/^[0-9]{8,15}$/', $dni)) {
        header("Location: index.php?msg=error&desc=DNI/CE debe tener entre 8 y 15 números");
        exit();
    }

    if ($edad < 18 || $edad > 70) {
        header("Location: index.php?msg=error&desc=La edad debe estar entre 18 y 70 años");
        exit();
    }

    try {
        // Usar TrabajadorService para crear trabajador 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
        ];

        $id = $service->createTrabajador($data, 'admin', 'recursoshumanos');

        if ($id) {
            header("Location: index.php?msg=success&desc=Trabajador agregado correctamente (ID: $id)");
        } else {
            header("Location: index.php?msg=error&desc=Error al agregar trabajador");
        }

    } catch (Exception $e) {
        header("Location: index.php?msg=error&desc=" . urlencode($e->getMessage()));
    }
    exit();
}
?>
