<?php
session_start(); //Se abre las variables de sesion
class ViewData extends Controller {

    private $_viewDataModel;
	public function __construct() {
		$this->_viewDataModel = $this->model('ViewDataModel');
	}

	public function index() {
        // Obtener filtros desde GET
        $acuerdos = $this->_viewDataModel->getAcuerdos();
        $archivos = $this->_viewDataModel->getArchivos();
        $estadosAcademicos = $this->_viewDataModel->getEstadosAcademicos();
        $estudiantes = $this->_viewDataModel->getEstudiantes();
		$programas = $this->_viewDataModel->getProgramas();
		$cursos = $this->_viewDataModel->getCursos();
		$periodos = $this->_viewDataModel->getPeriodos();
        $this->view('ViewData/index', [
            'archivos' => $archivos,
            'acuerdos' => $acuerdos,
            'estadosAcademicos' => $estadosAcademicos,
            'estudiantes' => $estudiantes,
            'programas' => $programas,
			'cursos' => $cursos,
			'periodos' => $periodos
        ]);
    }

    public function filter() {
        if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    
            // Parámetros de paginación
            $pagina = isset($_GET['pagina']) && is_numeric($_GET['pagina']) && $_GET['pagina'] > 0 ? (int)$_GET['pagina'] : 1;
            $porPagina = 10; // Cambia si quieres más o menos registros por página
            // Llamar al modelo con filtros y paginación
            echo "<script>console.log('Filtros: " . json_encode($_GET) . "');</script>";
            $resultado = $this->_viewDataModel->consultaDinamica($_GET, $pagina, $porPagina);
    
            
            $listado = $resultado['datos'];
            $totalRegistros = $resultado['total'];
            $totalPaginas = ceil($totalRegistros / $porPagina);
    
            $promedioPorPeriodo = $this->_viewDataModel->getPromedioPorPeriodo($_GET);
    
            // Filtros aplicados (para conservar selección en la vista)
            $filtros = [
                'estado_academico' => isset($_GET['estado_academico']) ? (array)$_GET['estado_academico'] : [],
                'anio' => $_GET['anio'] ?? '',
                'periodo' => $_GET['periodo'] ?? '',
                'fecha_subida' => $_GET['fecha_subida'] ?? '',
                'proyecto_curricular' => $_GET['proyecto_curricular'] ?? '',
                'espacio_academico' => $_GET['espacio_academico'] ?? '',
                'codigo_acuerdo' => $_GET['codigo_acuerdo'] ?? '',
                'grupo' => $_GET['grupo'] ?? '',
            ];
    
            // Renderizar tabla con datos y paginación
            $this->view('components/table', [
                'listado' => $listado,
                'pagina' => $pagina,
                'totalPaginas' => $totalPaginas,
                'totalRegistros' => $totalRegistros,
                'porPagina' => $porPagina
            ]);
        }
    }
    

    

    /*
    public function filter() {
        if($_SERVER['REQUEST_METHOD'] == 'GET'){

            $listado = $this->_viewDataModel->consultaDinamica($_GET);
            $promedioPorPeriodo = $this->_viewDataModel->getPromedioPorPeriodo($_GET);

            $filtros = [
                'estado_academico' => isset($_GET['estado_academico']) ? (array)$_GET['estado_academico'] : [],
                'anio' => $_GET['anio'] ?? '',
                'periodo' => $_GET['periodo'] ?? '',
                'fecha_subida' => $_GET['fecha_subida'] ?? '',
                'proyecto_curricular' => $_GET['proyecto_curricular'] ?? '',
                'espacio_academico' => $_GET['espacio_academico'] ?? '',
                'codigo_acuerdo' => $_GET['codigo_acuerdo'] ?? '',
                'grupo' => $_GET['grupo'] ?? '',
            ];
                // Renderiza solo la tabla
                echo "<script>console.log('promedioPorPeriodo ssss: " . json_encode($promedioPorPeriodo) . "');</script>";
                $this->view('components/table', [
                    'listado' => $listado
                ]);


        }

    }
*/
    public function graphics() {
        if(isset($_SESSION['UsuarioId']) == false){
            redirect("/Login");
        }
        if($_SERVER['REQUEST_METHOD'] == 'GET'){
            // Obtener datos para diferentes tipos de gráficos aplicando los filtros
            $promedioPorPeriodo = $this->_viewDataModel->getPromedioPorPeriodo($_GET);
            $distribucionPorEstado = $this->_viewDataModel->getDistribucionNotasPorEstado($_GET);
            $rendimientoPorMateria = $this->_viewDataModel->getRendimientoPorMateria($_GET);
            $getTop5EstudiantesRendimiento = $this->_viewDataModel->getTop5EstudiantesRendimiento($_GET);
            
            // Para debug - mostrar los filtros aplicados
            echo "<script>console.log('Filtros aplicados: " . json_encode($_GET) . "');</script>";
            echo "<script>console.log('Promedio por período: " . json_encode($promedioPorPeriodo) . "');</script>";
            echo "<script>console.log('Rendimiento por materia: " . json_encode($rendimientoPorMateria) . "');</script>";
            
            $this->view('components/graphics', [
                'promedioPorPeriodo' => $promedioPorPeriodo,
                'distribucionPorEstado' => $distribucionPorEstado,
                'rendimientoPorMateria' => $rendimientoPorMateria,
                'getTop5EstudiantesRendimiento' => $getTop5EstudiantesRendimiento,
                'filtros' => $_GET
            ]);
        }
    }


}

    
?>