<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace CmBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use CmBundle\Controller\PDF;

date_default_timezone_set('America/Mexico_City');

/**
 * Description of ListasController
 *
 * @author omar
 */
class ListasController extends Controller {

//put your code here
    public function listasAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3)) {
            $session->set("vista", "grupos");
            if ($request->getMethod() == "POST") {

                $em = $this->getDoctrine()->getManager();

                $ideGru = $request->get('cveGru');
                $ideCur = $request->get('cveCur');

                $alumnos = $em->getRepository('CmBundle:AlumnosGrupos')
                        ->findBy(
                        array(
                            'cveGru' => $ideGru
                ));
                $listaAlumnos = [];
                foreach ($alumnos as $key => $value) {
                    $auxAlu = $em->getRepository('CmBundle:AlumnosCurriculas')
                            ->findOneBy(
                            array(
                                'cveAlu' => $value->getCveAlu()->getIdeAlu(),
                                'cveCur' => $ideCur
                    ));
                    $listaAlumnos[$key] = $auxAlu;
                }
                $horario = $em->getRepository('CmBundle:Horarios')
                        ->findOneBy(
                        array(
                            'cveGru' => $ideGru,
                            'cveCur' => $ideCur
                ));


                $pdf = new PDF('L', 'mm', 'Letter');
                $pdf->setTitulo("INSTITUTO *IUJFH* UNIVERSITARIO \"LICENCIATURAS\"");
                $pdf->setPosicion("H");
                $pdf->AddPage();
                $pdf->AliasNbPages();
                $pdf->SetFont('Arial', '', 12);
                $pdf->listaGrupo($horario, $listaAlumnos);

                return new Response($pdf->Output('lista.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            } else {
// Renderizar formulario de Estatus
                $em = $this->getDoctrine()->getManager();

// BUSCAR EL NIVEL ACADEMICO
                $rfc = $session->get('rfc');
                $profesor = $em->getRepository('CmBundle:Profesores')
                        ->findOneBy(array('rfc' => $rfc));

                $licenciaturas = $em->getRepository('CmBundle:Horarios')
                        ->findBy(array('cvePro' => $profesor->getIdePro()));

                $curriculas = $em->getRepository('CmBundle:Curriculas')
                        ->findBy(array(), array('cveLic' => 'DESC'));
                $profesores = $em->getRepository('CmBundle:Profesores')
                        ->findAll();
                $horarios = $em->getRepository('CmBundle:Horarios')
                        ->findAll();

                return $this->render('CmBundle:Profesor:vista-listas.html.twig', array(
                            'licenciaturas' => $licenciaturas,
                            'curriculas' => $curriculas,
                            'profesores' => $profesores,
                            'horarios' => $horarios
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function vistaListasLicenciaturaAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3)) {
            $session->set("vista", "grupos");
            if ($request->getMethod() == "POST") {
                $em = $this->getDoctrine()->getEntityManager();
                $ideLic = $request->get('ideLic');
                $licenciatura = $em->getRepository('CmBundle:Licenciaturas')->findOneBy(array('ideLic' => $ideLic));
                $idePla = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $session->get('plantel')));

                if ($ideLic == 14) { // TRONCO COMÚN
                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('cvePla' => $idePla->getIdePla(), 'estatus' => 1, 'numero' => 1, 'tipoAlumno' => 3, 'cveLic' => array(1, 6, 7, 10, 11, 12, 13, 14, 16, 18)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                } else {
                    if ($ideLic == 17) {//NIVELATORIO ENFERMERÍA
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                                ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                    } elseif ($ideLic == 26) {// NIVELATORIO TRABAJO SOCIAL
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                                ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                    } else {
                        if ($licenciatura->getCveNivAca()->getIdeNivAca() == 3) { // LICENCIATURAS
                            if ($ideLic == 21) { // DIPLOMADO EN ENFERMERÍA
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC'));
                            } else {
                                if ($idePla->getIdePla() == 4) {
                                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                                            ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC'));
                                } else {
                                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                                            ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC'));
                                }
                            }
                        } else { // PUEDE QUE SEA MAEStría, doctorado o de bachillerato o e.u.
                            if ($ideLic == 2) { //EXAMEN ÚNICO
                                $aplicacion = $em->getRepository('CmBundle:AplicacionExamenUnico')->findOneBy(array('estatus' => 1));
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cveNumApli' => $aplicacion, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                            } else {
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cvePla' => $idePla->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                            }
                        }
                    }
                }

                $alumnosPagos = [];
                if ($ideLic != 2) {
                    foreach ($alumnos as $key => $value) {
                        $dql = "SELECT p "
                                . "FROM CmBundle:Pagos p "
                                . "WHERE p.cveAlu = " . $value->getIdeAlu() . " "
                                . "AND p.fecIni BETWEEN '2019-09-01' AND '2019-09-30' "
                                . "AND p.numero > 0 ";
                        $query = $em->createQuery($dql);
                        $pago = $query->getResult();

                        //print_r($pago[0]->getCveAlu()->getIdeAlu());
                        //die();

                        if ($pago != null) {
                            //CHECAR SI ESTÁ PAGADO O NO
                            if ($pago[0]->getStaPag() == '1') {
                                // NO ESTÁ PAGADO
                                $alumnosPagos[] = array('1', $value, $pago);
                            } elseif ($pago[0]->getStaPag() == '2') {
                                // ESTÁ PAGADO
                                $alumnosPagos[] = array('2', $value, $pago);
                            }
                        } else {
                            //NO SE HA REINSCRITO O PROBABLEMENTE YA ES EGRESADO
                            $alumnosPagos[] = array('0', $value, '');
                        }
                    }
                } else {
                    $alumnosPagos = $alumnos;
                    $alumnosPagos = array('3', $alumnos, '');
                }

                return $this->render('CmBundle:Alumno:tabla-lista.html.twig', array(
                            'alumnos' => $alumnos, 'lic' => $ideLic, 'alumnosPagos' => $alumnosPagos
                ));
            } else {
// Renderizar formulario de Estatus
                $em = $this->getDoctrine()->getManager();

                $licenciaturas = $em->getRepository('CmBundle:Licenciaturas')
                        ->findBy(array(), array('cveNivAca' => 'ASC', 'nomLic' => 'ASC'));

                return $this->render('CmBundle:Alumno:vista-listas.html.twig', array(
                            'licenciaturas' => $licenciaturas
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function imprimirListasLicenciaturaAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3)) {
            $session->set("vista", "grupos");
            if ($request->getMethod() == "POST") {
                
            } else {
                $ideLic = $request->get('ideLic');

                $em = $this->getDoctrine()->getManager();

                $licenciatura = $em->getRepository('CmBundle:Licenciaturas')->findOneBy(array('ideLic' => $ideLic));
                $alumnos = 0;
                $plantel = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $session->get('plantel')));

                if ($ideLic == 14) { // TRONCO COMÚN
                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                            ->findBy(array('cvePla' => $plantel->getIdePla(), 'estatus' => 1, 'numero' => 1, 'tipoAlumno' => 3, 'cveLic' => array(1, 6, 7, 10, 11, 12, 13, 14, 16, 18)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                } else {
                    if ($ideLic == 17) { // NIVELATORIO DE ENFERMERÍA
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                                ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                    } elseif ($ideLic == 26) {// NIVELATORIO TRABAJO SOCIAL
                        $alumnos = $em->getRepository('CmBundle:Alumnos')
                                ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                    } else {
                        if ($licenciatura->getCveNivAca()->getIdeNivAca() == 3) { // LICENCIATURAS
                            if ($ideLic == 21) { // DIPLOMADO EN ENFERMERÍA
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                            } else {
                                if ($plantel->getIdePla() == 4) {
                                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                                            ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                                } else {
                                    $alumnos = $em->getRepository('CmBundle:Alumnos')
                                            ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1, 'numero' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                                }
                            }
//$alumnos = $em->getRepository('CmBundle:Alumnos')
//        ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1, 'numero' => array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                        } else { // PUEDE QUE SEA MAEStría, doctorado o de bachillerato o e.u.
                            if ($ideLic == 2) { //EXAMEN ÚNICO
                                $aplicacion = $em->getRepository('CmBundle:AplicacionExamenUnico')->findOneBy(array('estatus' => 1));
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cveNumApli' => $aplicacion, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                            } else {
                                $alumnos = $em->getRepository('CmBundle:Alumnos')
                                        ->findBy(array('cveLic' => $ideLic, 'cvePla' => $plantel->getIdePla(), 'estatus' => 1), array('numero' => 'DESC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));
                            }
                        }
                    }
                }


                $pdf = new PDF('P', 'mm', 'Letter');
                $pdf->setPosicion("V");
                $pdf->AddPage();
                $pdf->AliasNbPages();
                $pdf->SetFont('Arial', '', 12);
                $pdf->listaAlumnos($alumnos, $licenciatura, $plantel);

                return new Response($pdf->Output('lista.pdf', 'I'), 200, array('Content-Type' => 'application/pdf'));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function listarRetroactivosAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $retroactivos = $em->getRepository('CmBundle:Alumnos')
                        ->findBy(array('tipoAlumno' => 7), array('cvePla' => 'ASC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));

                return $this->render('CmBundle:Listas:listaRetroactivos.html.twig', array('retroactivos' => $retroactivos));
            }
        } else {
            return $this->redirect($this->generateUrl('logout'));
        }
    }

}
