<?php
namespace App\Controllers;

use App\Models\UsuarioModel;

class Admin extends BaseController
{
    private function verificarAdmin()
    {
        if (!session()->get('logueado') || session()->get('usuario_tipo') != 3) {
            return redirect()->to(base_url('/'));
        }
        return null;
    }

    public function usuarios()
    {
        $redireccion = $this->verificarAdmin();
        if ($redireccion) return $redireccion;

        $db = \Config\Database::connect();

        $usuarios = $db->query("
            SELECT u.id, u.nombre, u.email, u.fecha_registro,
                   t.nombre AS tipo,
                   p.profesion, p.direccion,
                   c.archivo AS cv_archivo,
                   c.nombre_original AS cv_nombre
            FROM usuarios u
            LEFT JOIN usuario_tipo ut ON ut.usuarios_id = u.id
            LEFT JOIN tipos_usuario t ON t.id = ut.tipos_usuario_id
            LEFT JOIN postulantes p ON p.usuarios_id = u.id
            LEFT JOIN cvs c ON c.postulantes_id = p.id AND c.activo = 1
            ORDER BY u.fecha_registro DESC
        ")->getResultArray();

        return view('admin/usuarios', ['usuarios' => $usuarios]);
    }


    public function verUsuario($id){
    $redireccion = $this->verificarAdmin();
    if ($redireccion) return $redireccion;

    $db = \Config\Database::connect();
    $id = (int)$id;

    $usuario = $db->query("
        SELECT u.id, u.nombre, u.email, u.fecha_registro,
               t.nombre AS tipo,
               p.telefono, p.direccion, p.profesion,
               p.experiencia, p.resumen, p.fecha_nacimiento,
               na.nombre AS nivel_academico,
               c.archivo AS cv_archivo,
               c.nombre_original AS cv_nombre,
               e.nombre_empresa, e.descripcion AS empresa_descripcion,
               e.ubicacion, e.sitio_web, e.verificada
        FROM usuarios u
        LEFT JOIN usuario_tipo ut ON ut.usuarios_id = u.id
        LEFT JOIN tipos_usuario t ON t.id = ut.tipos_usuario_id
        LEFT JOIN postulantes p ON p.usuarios_id = u.id
        LEFT JOIN niveles_academicos na ON na.id = p.niveles_academicos_id
        LEFT JOIN cvs c ON c.postulantes_id = p.id AND c.activo = 1
        LEFT JOIN empresas e ON e.usuarios_id = u.id
        WHERE u.id = $id
    ")->getRowArray();

     // Traer habilidades del postulante
    $habilidades = [];
    if (!empty($usuario) && $usuario['tipo'] == 'candidato') {
        $habilidades = $db->query("
            SELECT h.nombre
            FROM postulantes_habilidades ph
            JOIN habilidades h 
            ON h.id = ph.habilidades_id
            WHERE ph.postulantes_id = $id
        ")->getResultArray();
    }


    return view('admin/ver_usuario', [
        'usuario' => $usuario,
        'habilidades' => $habilidades,
        ]);
    }

    public function eliminarUsuario($id)
    {
        $this->verificarAdmin();
        $usuarioModel = new UsuarioModel();
        $usuarioModel->delete($id);
        return redirect()->to(base_url('admin/usuarios'))->with('mensaje', 'Usuario eliminado correctamente.');
    }
}