<?php

namespace App\Controllers\Academico;

use App\Controllers\BaseController;
use App\Controllers\GenericController;
use App\Libraries\CIAuth;
use App\Models\Persona;
use App\Models\UsuarioModel;
use App\Models\AlumnoModel;
use App\Models\Permiso;
use App\Models\PeriodoAcademico;
use App\Models\AlumnoPlanEstudio;
use App\Models\Departamento;
use App\Models\Perfil;
use App\Models\PlanEstudio;
use App\Models\ProgramaEstudio;


class InformacionController extends GenericController
{
    public function index(): string
    {
        $request = \Config\Services::request();
        $personas = new Persona();
        $alumno = new AlumnoModel();
        $departamentos = new Departamento();
        $perfiles = new Perfil();
        $periodoAcademico = new PeriodoAcademico();

        $alumno = $alumno->find($request->getVar('alum_id'));

        $programaEstudioModel = new ProgramaEstudio();
        $lsPersonas = $personas->where('pers_estado', true)->findAll();
        $data = array(
            'tituloModulo' => 'INFORMACION DE ESTUDIANTES',
            'lsPersonas' => $lsPersonas
        );

        return view('academico/view_informacion', $data);
    }
    public function buscarAlumno()
    {
        // Obtener el término de búsqueda del request
        $term = $this->request->getVar('term');

        // Instanciar el modelo Alumno
        $alumnosModel = new AlumnoModel();

        // Obtener los resultados filtrados
        $filteredResults = $alumnosModel->getAlumnosWithPersonas($term);

        // Devolver los resultados en formato JSON
        return $this->response->setJSON($filteredResults);
    }
    public function buscarPersona()
    {
        // Obtener el término de búsqueda del request
        $term = $this->request->getVar('term');

        // Instanciar el modelo Alumno
        $personaModel = new Persona();

        // Obtener los resultados filtrados
        $filteredResults = $personaModel->getPersonas($term);

        // Devolver los resultados en formato JSON
        return $this->response->setJSON($filteredResults);
    }
    public function verAlumno($id)
    {
        $alum_id = $id;
        $alumnosModel = new AlumnoModel();
        $personaModel = new Persona();
        $alumoPlanModel = new AlumnoPlanEstudio();
        $planModel = new PlanEstudio();
        $programaModel = new ProgramaEstudio();
        $PeriodoAcademicoModel = new PeriodoAcademico();
        $alumno = $alumnosModel->where('alum_id', $alum_id)->first();
        $pers_id = $alumno->pers_id;
        $persona = $personaModel->find($pers_id);

        //$alumnoPlan = $alumoPlanModel->find($alum_id);
        $alumnoPlan = $alumoPlanModel->where('alum_id',$alum_id)->first();

        $plaest_id = $alumnoPlan->plaest_id;
        $plan = $planModel->find($plaest_id);

        $peraca_id = $alumnoPlan->peraca_id;
        $periodo = $PeriodoAcademicoModel->find($peraca_id);

        $proest_id = $plan->proest_id;
        $programa = $programaModel->find($proest_id);

        $data = array(
            'tituloModulo' => 'VER DATOS DE ALUMNO',
            'alumno' => $alumno,
            'persona' => $persona,
            'plan' => $plan,
            'programa' => $programa,
            'periodo' => $periodo,
        );

        return view('academico/view_ver_alumno', $data);
    }
    public function foto()
    {
        // Obtener la instancia del request
        $request = service('request');
        // Verificar si el archivo fue subido
        if ($file = $this->request->getFile('pers_foto')) {
            if ($file->isValid() && !$file->hasMoved()) {
                // Generar un nombre único para el archivo y moverlo
                $newName = $file->getRandomName();
                $file->move(ROOTPATH . 'public/images', $newName);

                // Obtener el ID de la persona
                $pers_id = $this->request->getPost('pers_id');

                // Guardar la ruta del archivo en la base de datos
                $personaModel = new Persona();
                if ($request->getVar("pers_id") !== null && $request->getVar("pers_id") !== '') {
                    $success = $personaModel->where('pers_id', $request->getVar('pers_id'))
                        ->set([
                            'pers_foto' => $newName,
                        ])->update();
                    if ($success) {
                        return $this->response->setJSON(['status' => 1, 'message' => 'La foto fue actualizada correctamente']);
                        //return json_encode(['status' => 1, 'message' => 'La foto fue actualizada correctamente']);
                    } else {
                        // Manejar el caso donde no se encuentra la persona
                        return $this->response->setJSON(['status' => 'error', 'message' => 'No se encontró el registro de persona'], 404);
                    }
                }
            }

            // En caso de error
            return $this->response->setJSON(['status' => 'error', 'message' => 'Hubo un problema al subir la foto'], 500);
        }
    }
}
