<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Alumno; // Importamos el modelo Alumno
use App\Models\Ugel;    // Importamos el modelo Ugel, que sabemos son los títulos
use Illuminate\Support\Facades\Validator;

class AlumnoDniConsultaController extends Controller
{
    /**
     * Muestra el formulario de consulta de DNI.
     */
    public function showForm()
    {
        return view('consulta.dni_consulta');
    }

    /**
     * Procesa la petición AJAX para buscar el DNI y devuelve la información.
     */
    public function buscarDni(Request $request)
    {
        // 1. Validar la entrada (DNI y reCAPTCHA)
        $validator = Validator::make($request->all(), [
            'dni' => ['required', 'string', 'digits:8'], // Asume que el DNI tiene 8 dígitos
            'g-recaptcha-response' => ['required', 'captcha'], // ¡RECAPTCHA v2 validación!
        ], [
            'dni.required' => 'El DNI es obligatorio.',
            'dni.digits' => 'El DNI debe tener 8 dígitos.',
            'g-recaptcha-response.required' => 'Por favor, completa el CAPTCHA.', // Mensaje si el CAPTCHA no se envía
            'g-recaptcha-response.captcha' => 'CAPTCHA inválido. Inténtalo de nuevo.', // Mensaje si el CAPTCHA falla la verificación
        ]);

        if ($validator->fails()) {
            return response()->json([
                'success' => false,
                'message' => 'Error de validación',
                'errors' => $validator->errors(),
            ], 422); // Código de error de validación (Unprocessable Content)
        }

        $dni = $request->input('dni');

        // 2. Buscar el alumno por DNI
        $alumno = Alumno::where('dni', $dni)->first();

        if (!$alumno) {
            return response()->json([
                'success' => false,
                'message' => 'Alumno no encontrado. Verifique el DNI e intente de nuevo.',
            ], 404); // No encontrado
        }

        // 3. Obtener los títulos (registros Ugel) de este alumno
        // Y cargar la relación 'cepro' para cada título para obtener el nombre del CEPRO
        $titulosUgel = Ugel::where('cod_datosa', $alumno->id_datosa)
                           ->with('cepro') // Carga el CEPRO asociado a cada título
                           ->get();

        // 4. Preparar los datos de los títulos para la respuesta JSON
        $titulosFormateados = $titulosUgel->map(function ($titulo) {
            return [
                'libro' => $titulo->libro,
                'pagina' => $titulo->pagina,
                'rd' => $titulo->rd,
                'fecha' => $titulo->fecha ? $titulo->fecha->format('d/m/Y') : 'N/A', // Formatear fecha
                'espec' => $titulo->espec,
                'mod' => $titulo->mod,
                'cepro_nombre' => $titulo->cepro->nom_cepro ?? 'N/A', // Nombre del CEPRO (si la relación existe)
            ];
        });

        // 5. Devolver la información del alumno y sus títulos (Ugel)
        return response()->json([
            'success' => true,
            'alumno' => [
                'nom_c' => $alumno->nom_c,
                'ape_c' => $alumno->ape_c,
                'dni' => $alumno->dni,
                // Puedes añadir más campos del alumno si los necesitas en la vista
            ],
            'titulos' => $titulosFormateados, // Ahora 'titulos' contiene los datos de Ugel
        ]);
    }
}