<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

class ResultadoEvaluacionController extends Controller
{
    public function predecir(Request $request)
    {
        $request->validate([
            'edad' => 'required|integer|min:10|max:25',
            'curso' => 'required|integer|min:1|max:6',
            'genero' => 'required|in:masculino,femenino',
            'lengua_materna' => 'required|in:castellano,aimara,quechua,otro',

            'frecuencia_lectura' => 'required|integer|min:0|max:7',
            'tiempo_lectura_semanal' => 'required|numeric|min:0|max:50',

            'puntaje_literal' => 'required|numeric|min:0|max:100',
            'puntaje_inferencial' => 'required|numeric|min:0|max:100',
            'puntaje_critica' => 'required|numeric|min:0|max:100',

            'tiempo_lectura_segundos' => 'required|integer|min:1',
            'tiempo_respuesta_segundos' => 'required|integer|min:1',
        ]);

        try {
            $pythonUrl = config('services.ia_comprension.url');

            $response = Http::timeout(20)->post($pythonUrl . '/predict', $request->all());

            if (!$response->successful()) {
                return response()->json([
                    'message' => 'Error al comunicarse con el servicio de inteligencia artificial.',
                    'error' => $response->json(),
                ], $response->status());
            }

            return response()->json([
                'success' => true,
                'prediccion' => $response->json(),
            ], 200);

        } catch (\Exception $e) {
            return response()->json([
                'message' => 'No se pudo conectar con el backend de Python.',
                'error' => $e->getMessage(),
            ], 500);
        }
    }

    public function predecirExplicado(Request $request)
    {
        try {
            $pythonUrl = config('services.ia_comprension.url');

            $response = Http::timeout(20)->post($pythonUrl . '/predict/explain', $request->all());

            return response()->json($response->json(), $response->status());

        } catch (\Exception $e) {
            return response()->json([
                'message' => 'Error al obtener predicción explicada.',
                'error' => $e->getMessage(),
            ], 500);
        }
    }

    public function metricasModelo()
    {
        try {
            $pythonUrl = config('services.ia_comprension.url');

            $response = Http::timeout(20)->get($pythonUrl . '/model/metrics');

            return response()->json($response->json(), $response->status());

        } catch (\Exception $e) {
            return response()->json([
                'message' => 'Error al obtener métricas del modelo.',
                'error' => $e->getMessage(),
            ], 500);
        }
    }
}
