<?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 Symfony\Component\HttpFoundation\JsonResponse;
use CmBundle\Entity\Titulaciones;
use CmBundle\Entity\Ingresos;
use CmBundle\Entity\InstitucionesEgresos;
use CmBundle\Entity\PagosTitulacion;
use CmBundle\Entity\Documentos;
use CmBundle\Entity\DocumentosAlumnos;
use CmBundle\Entity\PagosMatriculacion;
use Picqer\Barcode\BarcodeGeneratorPNG;
use CmBundle\Controller\PdfDocTitulacion;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

date_default_timezone_set('America/Mexico_City');

/**
 * Description of TitulacionController
 *
 * @author Omar
 */
class TitulacionController extends Controller
{

    //const UPLOAD_DIR = 'archivo' . DIRECTORY_SEPARATOR;
    const UPLOAD_DIR = 'archivo/';

    //put your code here
    public function seguimientoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101)) {
            if ($request->getMethod() == 'POST') {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $alumnos = $em->getRepository('CmBundle:Alumnos')->findBy(array('tipoAlumno' => 6));
                return $this->render('CmBundle:Titulacion:seguimiento.html.twig', array('alumnos' => $alumnos));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function cargarPlantelesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();
                $planteles = $em->getRepository('CmBundle:InstitucionesEgresos')->findBy(array(), array('nomIns' => 'ASC'));

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));

                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $request->get('ideAlu')));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));

                $fechaHoy = new \DateTime(date('Y-m-d'));

                $fechaBachillerato = "";
                $fechaValidada = "";
                $banderaFecha = 0;
                $numero = 1;
                if ($titulacion->getFecCerBac() != null) {
                    $fechaBachillerato = new \DateTime($titulacion->getFecCerBac()->format('Y-m-d'));
                    $fechaValidada = $fechaHoy->diff($fechaBachillerato);
                    $numero = $fechaValidada->format('%y');
                    $numero = $numero * 1;
                    $fechaValidada = $fechaValidada->format('%y años con %m meses y %d días');
                } else {
                    $banderaFecha = 1;
                }

                return $this->render('CmBundle:Titulacion:lista-planteles.html.twig', array(
                    'planteles' => $planteles,
                    'pagos' => $pagosTitulacion,
                    'registro' => $pagoTitulacion,
                    'tit' => $titulacion,
                    'esp' => $especialidades,
                    'fecha' => $fechaValidada,
                    'banderaFecha' => $banderaFecha,
                    'numero' => $numero
                ));
            } else { // NO FUE POST
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function ingresarTramiteAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $plantel = $em->getRepository('CmBundle:InstitucionesEgresos')
                    ->findOneBy(array('ideInsEgr' => $request->get('idePla')));
                $tramiteTitulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $request->get('ideAlu')));

                $tramiteTitulacion->setCveIngresado($plantel->getIdeInsEgr());
                $tramiteTitulacion->setFecIngresado(new \DateTime(date('Y-m-d')));
                $tramiteTitulacion->setEstatus(2);
                $em->persist($tramiteTitulacion);
                $em->flush();

                $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $tramiteTitulacion->getCveLic()));


                return $this->render('CmBundle:Titulacion:correcto-asignacion-plantel.html.twig', array(
                    'tramite' => $tramiteTitulacion,
                    'plantel' => $plantel,
                    'especialidad' => $especialidades
                ));
            } else { // NO FUE POST
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function guardarPlantelesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $nomIns = $request->get('plantelN');

                $nuevoPlantel = new InstitucionesEgresos();
                $nuevoPlantel->setNomIns($nomIns);
                $nuevoPlantel->setFecMov(new \DateTime(date('Y-m-d')));
                $em->persist($nuevoPlantel);
                $em->flush();

                $planteles = $em->getRepository('CmBundle:InstitucionesEgresos')->findBy(array(), array('nomIns' => 'ASC'));
                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));

                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $request->get('ideAlu')));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                $fechaHoy = new \DateTime(date('Y-m-d'));

                $fechaBachillerato = "";
                $fechaValidada = "";
                $banderaFecha = 0;
                $numero = 1;
                if ($titulacion->getFecCerBac() != null) {
                    $fechaBachillerato = new \DateTime($titulacion->getFecCerBac()->format('Y-m-d'));
                    $fechaValidada = $fechaHoy->diff($fechaBachillerato);
                    $numero = $fechaValidada->format('%y');
                    $numero = $numero * 1;
                    $fechaValidada = $fechaValidada->format('%y años con %m meses y %d días');

                    if ($numero >= 3) {
                        $banderaFecha = 0;
                    } else {
                        $banderaFecha = 1;
                    }
                } else {
                    $banderaFecha = 1;
                }

                return $this->render('CmBundle:Titulacion:lista-planteles.html.twig', array(
                    'planteles' => $planteles,
                    'pagos' => $pagosTitulacion,
                    'registro' => $pagoTitulacion,
                    'tit' => $titulacion,
                    'esp' => $especialidades,
                    'fecha' => $fechaValidada,
                    'banderaFecha' => $banderaFecha,
                    'numero' => $numero
                ));
            } else { // NO FUE POST
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function validarAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();
                //PRIMERA VALIDACIÓN: Verificar que el alumno se encuentre en el SEPTIMO cuatrimestre o MAYOR
                $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $request->get('ideAlu')));
                if ($alumno != null) {
                    if ($alumno->getNumero() >= 1) {
                        // SI ES CANDIDATO A TITULACIÓN
                        //VERIFICAR QUE EL ALUMNO ESTE DADO DE ALTA EN TRAMITES DE TITULACIÓN
                        $alumnoTitulacion = $em->getRepository('CmBundle:Titulaciones')->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                        if ($alumnoTitulacion != null) {
                            // YA ESTÁ DADO DE ALTA EN TRAMITES DE TITULACION
                            // VERIFICAR EL ESTATUS DEL ALUMNO
                            /**
                             *      ESTATUS:::>
                             *      1: EL ALUMNO AÚN SIGUE REALIZANDO PAGOS PARA SU TRAMITE DE TITULACIÓN
                             *      2: EL ALUMNO HA CUBIERTO EL TOTAL DEL COSTO DE TITULACIÓN, EL ALUMNO
                             *         DEBE DE INGRESAR A LA BASE DE ALUMNOS PARA TITULACIÓN.
                             */
                            $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));

                            $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                                ->findOneBy(array('cveAlu' => $request->get('ideAlu')));

                            return $this->render('CmBundle:Titulacion:detallesPagos.html.twig', array(
                                'pagosTitulacion' => $pagosTitulacion,
                                'pagT' => $pagoTitulacion
                            ));
                        } else {
                            // NO SE HA DADO DE ALTA EN TRAMITES DE TITULACIÓN
                            // INICIAR TRÁMITE PARA COMENZAR LA TITULACIÓN
                            return $this->render('CmBundle:Caja:tablaAbonosTitulacion.html.twig', array('bandera' => 2));
                        }
                    } else {
                        // NO ES CANDIDATO A TITULACIÓN
                        return $this->render('CmBundle:Caja:tablaAbonosTitulacion.html.twig', array('bandera' => 1));
                    }
                } else {
                    // NO SE ENCONTRÓ AL ALUMNO (NO EXISTE)
                }
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $alumnos = $em->getRepository('CmBundle:Alumnos')->findBy(array('tipoAlumno' => 6));
                return $this->render('CmBundle:Titulacion:seguimiento.html.twig', array('alumnos' => $alumnos));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function guardarAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();
                //PRIMERA VALIDACIÓN: Verificar que el alumno se encuentre en el SEPTIMO cuatrimestre o MAYOR
                $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $pagoTitulacion = new PagosTitulacion();
                $pagoTitulacion->setCveAlu($alumno);
                $pagoTitulacion->setFecMov(new \DateTime(date('Y-m-d')));
                $pagoTitulacion->setMonto($request->get('cT'));
                $pagoTitulacion->setDebe($request->get('cT'));
                $pagoTitulacion->setEstatus(1);
                $pagoTitulacion->setCveUsu($session->get('identificador'));
                $em->persist($pagoTitulacion);
                $em->flush();

                $titulacion = new Titulaciones();
                $titulacion->setCveAlu($alumno);
                $titulacion->setCvePag($pagoTitulacion->getIdePagTit());
                $titulacion->setEstatus(1);
                $titulacion->setTipoAlumno($alumno->getTipoAlumno());
                $titulacion->setCostoTramite($request->get('cT'));

                $titulacion->setFecCerBac(null);
                $titulacion->setFecIngresado(null);
                $titulacion->setFecLiberado(null);
                $titulacion->setFecEntregado(null);
                $titulacion->setFecCancelado(null);
                $titulacion->setFecCartaPasante(null);
                $titulacion->setFecConsTerminos(null);
                $titulacion->setFecHistorial(null);
                $titulacion->setFecCertTotal(null);
                $titulacion->setFecTitulo(null);
                $titulacion->setFecActTitulacion(null);
                $titulacion->setFecLibSerSocial(null);
                $titulacion->setFecCarExtension(null);
                $titulacion->setFecConsTraTitulo(null);
                $titulacion->setFecConsEstudios(null);
                $titulacion->setFecOtros(null);
                $titulacion->setCveLic(null);
                $titulacion->setCveIngresado(null);
                $titulacion->setCveEgreso(null);
                $titulacion->setCord(null);


                $em->persist($titulacion);
                $em->flush();

                $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));

                return $this->render('CmBundle:Titulacion:detallesPagos.html.twig', array(
                    'pagosTitulacion' => $pagosTitulacion,
                    'pagT' => $pagoTitulacion
                ));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $alumnos = $em->getRepository('CmBundle:Alumnos')->findBy(array('tipoAlumno' => 6));
                return $this->render('CmBundle:Titulacion:seguimiento.html.twig', array('alumnos' => $alumnos));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function guardarPagoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 77 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();
                //PRIMERA VALIDACIÓN: Verificar que el alumno se encuentre en el SEPTIMO cuatrimestre o MAYOR
                $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')->findOneBy(array('cveAlu' => $request->get('ideAlu')));


                $anio = date('y');
                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));

                $contador = $plantel->getContadorIngresos();

                $numeroRecibo = $session->get('plantel') . $anio;

                if ($contador <= 9) {
                    $numeroRecibo = $session->get('plantel') . $anio . "000" . $contador;
                } elseif ($contador > 9 & $contador <= 99) {
                    $numeroRecibo = $session->get('plantel') . $anio . "00" . $contador;
                } elseif ($contador > 99 & $contador <= 999) {
                    $numeroRecibo = $session->get('plantel') . $anio . "0" . $contador;
                } elseif ($contador > 999 & $contador <= 9999) {
                    $numeroRecibo = $session->get('plantel') . $anio . $contador;
                }


                $ingreso = new Ingresos();
                $ingreso->setCveAlu($alumno);
                $ingreso->setCvePag($pagoTitulacion->getIdePagTit());
                $ingreso->setCvePla($plantel);
                $ingreso->setReferencia($request->get('ref'));
                $ingreso->setDescripcion("PAGO DE TITULACIÓN");
                $ingreso->setMonto($request->get('monto'));
                $ingreso->setRecargos(0);
                $ingreso->setTotal($request->get('monto'));
                $ingreso->setTipPag($request->get('modoPago'));
                $ingreso->setBeca(0);
                $ingreso->setNumRecibo($numeroRecibo);
                $ingreso->setCveUsu($session->get('identificador'));
                $ingreso->setFecMov(new \DateTime(date('Y-m-d')));
                $ingreso->setHorMov(new \DateTime(date("H:i:s")));
                $em->persist($ingreso);
                $em->flush();


                $suma = $pagoTitulacion->getAbonado() + $request->get('monto');

                $debe = $pagoTitulacion->getMonto() - ($pagoTitulacion->getAbonado() + $request->get('monto'));
                //print_r("MONTO: " . $pagoTitulacion->getAbonado());
                //print_r("SUMA: " . ($pagoTitulacion->getAbonado() + $request->get('monto')));
                //print_r("DEBE: " . $debe);
                $pagoTitulacion->setAbonado($pagoTitulacion->getAbonado() + $request->get('monto'));
                $pagoTitulacion->setDebe($debe);
                if ($debe == 0) {
                    // YA HA TERMINADO DE PAGAR SU TRAMITE DE TITULACIÓN
                    $pagoTitulacion->setEstatus(2);
                } else {
                    $pagoTitulacion->setEstatus(1);
                }
                $em->persist($pagoTitulacion);
                $em->flush();


                if ($request->get("modoPago") != 99) {
                    $plantel->setContadorIngresos($plantel->getContadorIngresos() + 1);
                    $em->persist($plantel);
                    $em->flush();
                } else {
                    // NO AUMENTAR EL CONTADOR DE INGRESOS DEL PLANTEL
                }

                $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => "PAGO DE TITULACIÓN"));

                return $this->render('CmBundle:Titulacion:detallesPagos.html.twig', array(
                    'pagosTitulacion' => $pagosTitulacion,
                    'pagT' => $pagoTitulacion
                ));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $alumnos = $em->getRepository('CmBundle:Alumnos')->findBy(array('tipoAlumno' => 6));
                return $this->render('CmBundle:Titulacion:seguimiento.html.twig', array('alumnos' => $alumnos));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function deletePagoTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $numRec = $request->get('numRec');
                $cveIng = $request->get('cveIng');

                $ingreso = $em->getRepository('CmBundle:Ingresos')->findOneBy(array('ideIng' => $cveIng));
                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $ideAlu));

                $bandera = 0;
                if ($ingreso != NULL) {
                    if ($pagoTitulacion != null) {

                        $pagoTitulacion->setAbonado($pagoTitulacion->getAbonado() - $ingreso->getMonto());
                        $pagoTitulacion->setDebe($pagoTitulacion->getDebe() + $ingreso->getMonto());
                        $em->persist($pagoTitulacion);
                        $em->flush();

                        $em->remove($ingreso);
                        $em->flush();

                        $bandera = 1;
                    } else {
                        $bandera = -1;
                    }
                } else {
                    $bandera = -1;
                }


                return $this->render('CmBundle:Titulacion:pagoTitulacionEliminado.html.twig', array(
                    'banderaIngresoEliminado' => $bandera
                ));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $numRec = $request->get('numRec');
                $cveIng = $request->get('cveIng');

                $ingreso = $em->getRepository('CmBundle:Ingresos')->findOneBy(array('ideIng' => $cveIng));
                $bandera = 0;
                if ($ingreso != NULL) {
                    $bandera = 1;
                } else {
                    $bandera = -1;
                }

                return $this->render('CmBundle:Titulacion:detallePagoTitulacion.html.twig', array('ingreso' => $ingreso, 'bandera' => $bandera));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function cambiarCostoTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $numRec = $request->get('numRec');
                $cveIng = $request->get('cveIng');

                $ingreso = $em->getRepository('CmBundle:Ingresos')->findOneBy(array('ideIng' => $cveIng));
                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $ideAlu));

                $bandera = 0;
                if ($ingreso != NULL) {
                    if ($pagoTitulacion != null) {

                        $pagoTitulacion->setAbonado($pagoTitulacion->getAbonado() - $ingreso->getMonto());
                        $pagoTitulacion->setDebe($pagoTitulacion->getDebe() + $ingreso->getMonto());
                        $em->persist($pagoTitulacion);
                        $em->flush();

                        $em->remove($ingreso);
                        $em->flush();

                        $bandera = 1;
                    } else {
                        $bandera = -1;
                    }
                } else {
                    $bandera = -1;
                }


                return $this->render('CmBundle:Titulacion:pagoTitulacionEliminado.html.twig', array(
                    'banderaIngresoEliminado' => $bandera
                ));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $numRec = $request->get('numRec');
                $cveIng = $request->get('cveIng');

                $ingreso = $em->getRepository('CmBundle:Ingresos')->findOneBy(array('ideIng' => $cveIng));
                $bandera = 0;
                if ($ingreso != NULL) {
                    $bandera = 1;
                } else {
                    $bandera = -1;
                }

                return $this->render('CmBundle:Titulacion:detallePagoTitulacion.html.twig', array('ingreso' => $ingreso, 'bandera' => $bandera));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function impComprobanteTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 2 || $session->get("rol") == 1 || $session->get("rol") == 3 || $session->get("rol") == 4 || $session->get("rol") == 99 || $session->get("rol") == 101)) {

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

            $ideIng = $request->get('ideIng');
            $cveAlu = $request->get('ideAlu');
            $ingreso = $em->getRepository('CmBundle:Ingresos')
                ->findOneBy(array('ideIng' => $ideIng, 'cveAlu' => $cveAlu));
            $usuario = $em->getRepository('CmBundle:Empleados')
                ->findOneBy(array('identificador' => $ingreso->getCveUsu()));

            $generator = new BarcodeGeneratorPNG();
            $imagenBarra = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getCveAlu()->getCveCtl(), $generator::TYPE_CODE_128));
            $cb1 = $this->base64_to_png($imagenBarra, 'barras/' . $ingreso->getCveAlu()->getCveCtl() . '.png');

            $imagenBarraDos = "data:image/png;base64," . base64_encode($generator->getBarcode($ingreso->getNumRecibo(), $generator::TYPE_CODE_128));
            $cb2 = $this->base64_to_png($imagenBarraDos, 'barras/' . $ingreso->getNumRecibo() . '.png');

            $rolUsuario = $session->get("rol");

            //$pdf = new PDFBachillerato('P', 'mm', 'Letter');
            $pdf = new PDFBachillerato('L', 'mm', array(140, 216));
            $pdf->banRecibo = 1;
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobanteT(0, $ingreso, null, 0, $usuario, $cb1, $cb2, $rolUsuario);
            $pdf->AddPage();
            $pdf->SetFont('Helvetica');
            $pdf->ReciboComprobanteT(0, $ingreso, null, 0, $usuario, $cb1, $cb2, $rolUsuario);

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

    public function altaTDAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                // ABRIR EL FORMULARIO PARA DAR DE ALTA UN TRAMITE DE TITULACIÓN DIRECTA
                $em = $this->getDoctrine()->getManager();
                $especialidadesTitulacion = $em->getRepository('CmBundle:LicenciaturasTitulacion')->findAll();
                return $this->render('CmBundle:Titulacion:altaTD.html.twig', array('lt' => $especialidadesTitulacion));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function actualizarFecCertificadoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {
                $em = $this->getDoctrine()->getManager();
                $fecha = $request->get('fecha');
                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $request->get('ideAlu')));
                $titulacion->setFecCerBac(new \DateTime($fecha));
                $em->persist($titulacion);
                $em->flush();


                $planteles = $em->getRepository('CmBundle:InstitucionesEgresos')->findBy(array(), array('nomIns' => 'ASC'));

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu(), 'descripcion' => 'PAGO DE TITULACIÓN'));

                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $request->get('ideAlu')));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                $fechaHoy = new \DateTime(date('Y-m-d'));

                $fechaBachillerato = "";
                $fechaValidada = "";
                $banderaFecha = 0;
                $numero = 1;
                if ($titulacion->getFecCerBac() != null) {
                    $fechaBachillerato = new \DateTime($titulacion->getFecCerBac()->format('Y-m-d'));
                    $fechaValidada = $fechaHoy->diff($fechaBachillerato);
                    $numero = $fechaValidada->format('%y');
                    $numero = $numero * 1;
                    $fechaValidada = $fechaValidada->format('%y años con %m meses y %d días');
                    if ($numero >= 3) {
                        $banderaFecha = 0;
                    } else {
                        $banderaFecha = 1;
                    }
                } else {
                    $banderaFecha = 1;
                }

                return $this->render('CmBundle:Titulacion:lista-planteles.html.twig', array(
                    'planteles' => $planteles,
                    'pagos' => $pagosTitulacion,
                    'registro' => $pagoTitulacion,
                    'tit' => $titulacion,
                    'esp' => $especialidades,
                    'fecha' => $fechaValidada,
                    'banderaFecha' => $banderaFecha,
                    'numero' => $numero
                ));
            } else { // NO FUE POST
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function baseEscolarizadoAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $dql = "";

                if ($session->get('rol') == 2 | $session->get('rol') == 3) {
                    $cvePlantel = $session->get('plantel');
                    $plantel = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $cvePlantel));

                    $dql = "SELECT "
                        . "a.ideAlu, a.cveCtl, a.apePat, a.apeMat, a.nomAlu, a.tipoAlumno, e.desEst, l.nomLic, p.nomPla, p.nomenclatura "
                        . "FROM "
                        . "CmBundle:Alumnos a, "
                        . "CmBundle:Estatus e, "
                        . "CmBundle:Licenciaturas l, "
                        . "CmBundle:Planteles p "
                        . "WHERE "
                        . "a.estatus = e.ideEst "
                        . "AND "
                        . "a.cveLic = l.ideLic "
                        . "AND "
                        . "a.cvePla = p.idePla "
                        . "AND "
                        . "a.cvePla = " . $plantel->getIdePla() . " "
                        . "AND "
                        . "a.estatus = 12 "
                        . "AND "
                        . "a.tipoAlumno IN(3,4,5)";

                    $query = $em->createQuery($dql);
                    $resultados = $query->getResult();
                } else {
                    $dql = "SELECT "
                        . "a.ideAlu, a.cveCtl, a.apePat, a.apeMat, a.nomAlu, e.desEst, a.tipoAlumno, l.nomLic, p.nomPla, p.nomenclatura "
                        . "FROM "
                        . "CmBundle:Alumnos a, "
                        . "CmBundle:Estatus e, "
                        . "CmBundle:Licenciaturas l, "
                        . "CmBundle:Planteles p "
                        . "WHERE "
                        . "a.estatus = e.ideEst "
                        . "AND "
                        . "a.cveLic = l.ideLic "
                        . "AND "
                        . "a.cvePla = p.idePla "
                        . "AND "
                        . "a.estatus = 12 "
                        . "AND "
                        . "a.tipoAlumno IN(3,4,5)";

                    $query = $em->createQuery($dql);
                    $resultados = $query->getResult();
                }


                $datos = [];
                foreach ($resultados as $key => $value) {
                    $titulacion = $em->getRepository('CmBundle:Titulaciones')
                        ->findOneBy(array('cveAlu' => $value['ideAlu']));

                    $plantel = null;

                    $especialidades = null;
                    $cordinadores = null;
                    $pagosTitulacio = null;

                    if ($titulacion != null) {
                        $dql = "SELECT SUM(i.total) total "
                            . "FROM "
                            . "CmBundle:Ingresos i "
                            . "WHERE "
                            . "i.cveAlu = " . $titulacion->getCveAlu()->getIdeAlu() . " "
                            . "AND "
                            . "i.descripcion = 'PAGO DE TITULACIÓN' "
                            . "AND "
                            . "i.cvePag = " . $titulacion->getCvePag();
                        $query = $em->createQuery($dql);
                        $pagosTitulacion = $query->getResult();

                        $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                            ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                        $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                            ->findOneBy(array('ideCorTit' => $titulacion->getCord()));
                    }

                    $dql = "SELECT d.nomDoc nomDoc, da.archivo archivo, da.estatus estatus "
                        . "FROM "
                        . "CmBundle:DocumentosAlumnos da, "
                        . "CmBundle:Documentos d "
                        . "WHERE "
                        . "da.cveDoc = d.ideDoc "
                        . "AND "
                        . "da.cveAlu = " . $value['ideAlu'] . " ";
                    $query = $em->createQuery($dql);
                    $documentosAlumno = $query->getResult();

                    $datos[] = array($value, ($pagosTitulacion[0]['total'] * 1), $plantel, $titulacion, $especialidades, $cordinadores, $documentosAlumno);

                }


                return $this->render('CmBundle:Seguridad:homeTitulacionE.html.twig', array(
                    'titulaciones' => $datos,
                    'ban' => 1
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function baseTDAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {

            } else { // NO FUE POST
                $em = $this->getDoctrine()->getEntityManager();

                $dql = "";

                if ($session->get('rol') === 2 | $session->get('rol') === 3) {
                    $cvePlantel = $session->get('plantel');
                    $plantel = $em->getRepository('CmBundle:Planteles')
                        ->findOneBy(array('cvePla' => $cvePlantel));

                    $corTit = $em->getRepository('CmBundle:CordinadoresTitulacion')
                        ->findBy(array('cvePla' => $plantel));

                    $lisCor = [];
                    foreach ($corTit as $value) {
                        $lisCor[] = $value->getIdeCorTit();
                    }

                    $texto = implode(",", $lisCor);

//                    $dql = "SELECT t "
//                        . "FROM "
//                        . "CmBundle:Titulaciones t,"
//                        . "CmBundle:Alumnos a "
//                        . "WHERE "
//                        . "t.cveAlu = a.ideAlu "
//                        . "AND "
//                        . "t.cord IN( $texto ) "
//                        . "AND "
//                        . "a.tipoAlumno = 8";
//                    $query = $em->createQuery($dql);

                    $dql = "SELECT "
                        . "a.ideAlu, a.cveCtl, a.curp, a.apePat, a.apeMat, a.nomAlu, IDENTITY(a.estatus) estatus , e.desEst, a.tipoAlumno, "
                        . "t.costoTramite, t.cvePag, t.cveIngresado, IDENTITY(t.cveLic) cveLic, IDENTITY(t.cord) cord "
                        . "FROM "
                        . "CmBundle:Alumnos a, "
                        . "CmBundle:Estatus e, "
                        . "CmBundle:Titulaciones t "
                        . "WHERE "
                        . "t.cveAlu = a.ideAlu "
                        . "AND "
                        . "a.estatus = e.ideEst "
                        . "AND "
                        . "t.cord IN( $texto ) "
                        . "AND "
                        . "a.tipoAlumno = 8";
                    $query = $em->createQuery($dql);
                    //$query->setParameter('idePla', $plantel->getIdePla());
                    $resultados = $query->getResult();
                } else {


                    $dql = "SELECT "
                        . "a.ideAlu, a.cveCtl, a.curp, a.apePat, a.apeMat, a.nomAlu, IDENTITY(a.estatus) estatus , e.desEst, a.tipoAlumno, "
                        . "t.costoTramite, t.cvePag, t.cveIngresado, IDENTITY(t.cveLic) cveLic, IDENTITY(t.cord) cord "
                        . "FROM "
                        . "CmBundle:Alumnos a, "
                        . "CmBundle:Estatus e, "
                        . "CmBundle:Titulaciones t "
                        . "WHERE "
                        . "t.cveAlu = a.ideAlu "
                        . "AND "
                        . "a.estatus = e.ideEst "
                        . "AND "
                        . "a.tipoAlumno = 8";

                    $query = $em->createQuery($dql);
                    $resultados = $query->getResult();

                }

                $datos = [];
                foreach ($resultados as $key => $value) {

                    $dql = "SELECT SUM(i.total) total "
                        . "FROM "
                        . "CmBundle:Ingresos i "
                        . "WHERE "
                        . "i.cveAlu = " . $value['ideAlu'] . " "
                        . "AND "
                        . "i.descripcion = 'PAGO DE TITULACIÓN' "
                        . "AND "
                        . "i.cvePag = " . $value['cvePag'];
                    $query = $em->createQuery($dql);
                    $pagosTitulacion = $query->getResult();

                    $plantel = $em->getRepository('CmBundle:InstitucionesEgresos')
                        ->findOneBy(array('ideInsEgr' => $value['cveIngresado']));

                    $titulacion = $em->getRepository('CmBundle:Titulaciones')
                        ->findOneBy(array('cveAlu' => $value['ideAlu']));

                    $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                        ->findOneBy(array('ideLicTit' => $value['cveLic']));
                    $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                        ->findOneBy(array('ideCorTit' => $value['cord']));

                    $dql = "SELECT d.nomDoc, da.archivo "
                        . "FROM "
                        . "CmBundle:DocumentosAlumnos da, "
                        . "CmBundle:Documentos d "
                        . "WHERE "
                        . "da.cveDoc = d.ideDoc "
                        . "AND "
                        . "da.cveAlu = " . $value['ideAlu'] . " ";
                    $query = $em->createQuery($dql);
                    $documentosAlumno = $query->getResult();

                    $datos[] = array($value, ($pagosTitulacion[0]['total'] * 1), $plantel, $titulacion, $especialidades, $cordinadores, $documentosAlumno);
                }

                return $this->render('CmBundle:Seguridad:homeTitulacion.html.twig', array(
                    'titulaciones' => $datos,
                    'ban' => 2
                ));
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function exportarTDAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {
                $em = $this->getDoctrine()->getEntityManager();

                $dql = "";

                if ($request->get('opcion') == 1) {
                    if ($session->get('rol') == 2 | $session->get('rol') == 3) {
                        $cvePlantel = $session->get('plantel');
                        $plantel = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $cvePlantel));

                        $dql = "SELECT t "
                            . "FROM "
                            . "CmBundle:Titulaciones t,"
                            . "CmBundle:Alumnos a "
                            . "WHERE "
                            . "t.cveAlu = a.ideAlu "
                            . "AND "
                            . "a.tipoAlumno != 8 "
                            . "AND "
                            . "a.cvePla = :idePla";
                        $query = $em->createQuery($dql);
                        $query->setParameter('idePla', $plantel->getIdePla());
                        $resultados = $query->getResult();
                    } else {
                        $dql = "SELECT a "
                            . "FROM "
                            . "CmBundle:Alumnos a "
                            . "WHERE "
                            . "a.estatus = 12 "
                            . "AND "
                            . "a.tipoAlumno IN(3,4,5)";

                        $query = $em->createQuery($dql);
                        $resultados = $query->getResult();
                    }
                } elseif ($request->get('opcion') == 2) {
                    if ($session->get('rol') === 2 | $session->get('rol') === 3) {
                        $cvePlantel = $session->get('plantel');
                        $plantel = $em->getRepository('CmBundle:Planteles')->findOneBy(array('cvePla' => $cvePlantel));

                        $dql = "SELECT t "
                            . "FROM "
                            . "CmBundle:Titulaciones t,"
                            . "CmBundle:Alumnos a "
                            . "WHERE "
                            . "t.cveAlu = a.ideAlu "
                            . "AND "
                            . "a.tipoAlumno = 8 "
                            . "AND "
                            . "a.cvePla = :idePla";
                        $query = $em->createQuery($dql);
                        $query->setParameter('idePla', $plantel->getIdePla());
                        $resultados = $query->getResult();
                    } else {
                        $dql = "SELECT t "
                            . "FROM "
                            . "CmBundle:Titulaciones t,"
                            . "CmBundle:Alumnos a "
                            . "WHERE "
                            . "t.cveAlu = a.ideAlu "
                            . "AND "
                            . "a.tipoAlumno = 8";
                        $query = $em->createQuery($dql);
                        $resultados = $query->getResult();
                    }
                }

                $datos = [];
                foreach ($resultados as $key => $value) {
                    $titulacion = $em->getRepository('CmBundle:Titulaciones')
                        ->findOneBy(array('cveAlu' => $value->getIdeAlu()));

                    $pagosTitulacion = null;
                    $plantel = null;
                    $especialidades = null;
                    $cordinadores = null;

                    if ($titulacion != null) {
                        $pagosTitulacion = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(
                                array(
                                    'cveAlu' => $value->getIdeAlu(),
                                    'descripcion' => "PAGO DE TITULACIÓN",
                                    'cvePag' => $titulacion->getCvePag()
                                ));
                        $plantel = $em->getRepository('CmBundle:InstitucionesEgresos')
                            ->findOneBy(array('ideInsEgr' => $titulacion->getCveIngresado()));

                        $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                            ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                        $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                            ->findOneBy(array('ideCorTit' => $titulacion->getCord()));

                    }

                    $datos[] = array($value, $pagosTitulacion, $plantel, $titulacion, $especialidades, $cordinadores);
                }

                return $this->render('CmBundle:Titulacion:tablaTitulacion.html.twig', array(
                    'titulaciones' => $datos,
                    'ban' => $request->get('opcion')
                ));
            } else { // NO FUE POST
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cambiarCostoTitulacionDirectaAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {

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

                $ideAlu = $request->get('ideAlu');
                $nuevoMonto = $request->get('monto');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                $pagoTitulacion = $em->getRepository('CmBundle:PagosTitulacion')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                //$alumno->setCostoInscripcion($nuevoMonto);

                $pagoTitulacion->setMonto($nuevoMonto);
                $pagoTitulacion->setDebe($nuevoMonto - $pagoTitulacion->getAbonado());

                $titulacion->setCostoTramite($nuevoMonto);

                //$em->persist($alumno);
                $em->flush();
                $em->persist($pagoTitulacion);
                $em->flush();
                $em->persist($titulacion);
                $em->flush();

                return $this->render('CmBundle:Titulacion:costoActualTitulacionCorrecto.html.twig');
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                return $this->render('CmBundle:Titulacion:costoActualTitulacion.html.twig', array(
                    'monto' => $titulacion->getCostoTramite()
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function cambiarEstatusTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {

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

                $ideAlu = $request->get('ideAlu');
                $estatus = $request->get('estatus');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                $titulacion->setEstatus($estatus);

                $em->persist($titulacion);
                $em->flush();

                return $this->render('CmBundle:Titulacion:estatusTitulacion.html.twig', array(
                    'titulacion' => $titulacion,
                    'alumno' => $alumno
                ));
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));

                return $this->render('CmBundle:Titulacion:estatusTitulacion.html.twig', array(
                    'titulacion' => $titulacion,
                    'alumno' => $alumno
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    /**
     * SUBIR DOCUMENTACIÓN TITULACIÓN
     */
    public function subirDocumentosTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {

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

                return $this->render('CmBundle:Titulacion:costoActualTitulacionCorrecto.html.twig');
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                $documentos = null;
                $especialidad = null;
                $cordinador = null;

                if ($alumno->getTipoAlumno() == 8) {
                    $documentos = $em->getRepository('CmBundle:Documentos')
                        ->findBy(array('cveNiv' => $titulacion->getTipoAlumno()), array('nomDoc' => 'ASC'));
                    $especialidad = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                        ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                    $cordinador = $em->getRepository('CmBundle:CordinadoresTitulacion')
                        ->findOneBy(array('ideCorTit' => $titulacion->getCord()));
                } else {
                    $documentos = $em->getRepository('CmBundle:Documentos')
                        ->findBy(array('cveNiv' => $alumno->getCveLic()->getCveNivAca()));
                }

                $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findBy(array('cveAlu' => $alumno->getIdeAlu()));


                return $this->render('CmBundle:Titulacion:vista-subir-documentos-titulacion.html.twig', array(
                    'titulacion' => $titulacion,
                    'alumno' => $alumno,
                    'documentos' => $documentos,
                    'documentosAlumno' => $documentosAlumno,
                    'especialidad' => $especialidad,
                    'cordinador' => $cordinador
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function altaDocumentosTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                /**
                 * SE DEBE GENERAR LA ACTIVACIÓN DE DOCUMENTOS DE TITULCIÓN
                 * EN LA TABLA DOCUMENTOS-ALUMNOS
                 */
                $em = $this->getDoctrine()->getManager();

                $cveAlu = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));
                $cveDoc = $em->getRepository('CmBundle:Documentos')
                    ->findOneBy(array('ideDoc' => $request->get('ideDoc')));

                $documentoAlumno = new DocumentosAlumnos();
                $documentoAlumno->setCveAlu($cveAlu);
                $documentoAlumno->setCveDoc($cveDoc);

                $documentoAlumno->setFecEntrega(null);
                $documentoAlumno->setFecRecibe(null);
                $documentoAlumno->setHorEntrega(null);
                $documentoAlumno->setHorRecibe(null);

                $documentoAlumno->setPlantelEntrega(null);

                $documentoAlumno->setPlantelRecibe(null);

                $em->persist($documentoAlumno);
                $em->flush();


                $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findBy(array('cveAlu' => $cveAlu->getIdeAlu()));

                return $this->render('CmBundle:Titulacion:tabla-documentos-pendietes.html.twig', array(
                    'documentosAlumno' => $documentosAlumno
                ));
            } else {// NO FUE POST
                /**
                 * DAR DE ALTA UN NUEVO DOCUMENTO EN LA BASE GENERAL DE DOCUMENTOS.
                 * EN LA TABLA DOCUMENTOS
                 */

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

                $ideAlu = $request->get('ideAlu');
                $texto = $request->get('texto');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));

                $documentos = "";

                if ($alumno->getTipoAlumno() == 8) {
                    //BUSCA EL NIVEL ACADÉMICO EN LA TABLA TITULACIÓNES
                    $titulacion = $em->getRepository('CmBundle:Titulaciones')
                        ->findOneBy(array('cveAlu' => $alumno->getIdeAlu()));
                    $cveNivAca = $em->getRepository('CmBundle:NivelesAcademicos')->findOneBy(array('ideNivAca' => $titulacion->getTipoAlumno()));

                    $newDocumento = new Documentos();
                    $newDocumento->setNomDoc($texto);
                    $newDocumento->setCveNiv($cveNivAca);
                    $newDocumento->setFecMov(new \DateTime(date('Y-m-d')));

                    $em->persist($newDocumento);
                    $em->flush();

                    $documentos = $em->getRepository('CmBundle:Documentos')
                        ->findBy(array('cveNiv' => $titulacion->getTipoAlumno()));
                } else {
                    $newDocumento = new Documentos();
                    $newDocumento->setNomDoc($texto);
                    $newDocumento->setCveNiv($alumno->getCveLic()->getCveNivAca());
                    $newDocumento->setFecMov(new \DateTime(date('Y-m-d')));

                    $em->persist($newDocumento);
                    $em->flush();

                    $documentos = $em->getRepository('CmBundle:Documentos')
                        ->findBy(array('cveNiv' => $alumno->getCveLic()->getCveNivAca()));
                }


                return $this->render('CmBundle:Titulacion:correcto-alta-documentos-titulacion.html.twig', array(
                    'documentos' => $documentos, 'alumno' => $alumno
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function impDocumentosTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {

            } else {// NO FUE POST
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function escanearDocumentosTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == "POST") {

                //$ideAlu = $request->get('ideAlu') . $request->get('tipoDeDocumento');

                $ideAlu = $request->get('ideAlu');
                $ideDocAlu = $request->get('ideDocAlu');


                //print_r($ideAlu);


                $respuesta = "ESCANEO CORRECTO: " . $request->get('nomDoc');

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

                $contador = "";

                $documentoAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findOneBy(array('ideDocAlu' => $ideDocAlu));

                $contador = $documentoAlumno->getContador();
                // "doc_tit_$ideAlu_$ideDocAlu_$contador.pdf
                $nombre = "doc_tit_" . $ideAlu . "_" . $ideDocAlu . "_" . $contador;

                $documentoAlumno->setArchivo("archivo/" . $nombre . ".pdf");
                $documentoAlumno->setContador($contador + 1);
                $documentoAlumno->setEstatus(2);

                $em->persist($documentoAlumno);
                $em->flush();

                $this->processRequest($nombre);

                return new JsonResponse($respuesta, 200);
            } else { // NO FUE POST
                $this->get('session')->getFlashBag()->add(
                    'mensaje', 'Debe estar logeado para ver este contenido'
                );

                return $this->redirect($this->generateUrl('login'));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                'mensaje', 'Debe estar logeado para ver este contenido'
            );

            return $this->redirect($this->generateUrl('login'));
        }
    }

    public function loadDocumentosTitulacionPdfAction(Request $request)
    {

        if ($request->getMethod() == "POST") {

            $datos = $request->get('d');

            list($ideAlu, $ideDocAlu) = explode('-', $datos);

            $numCtl = $request->get('cveCtl');

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

            $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $ideAlu));

            $respuesta = "ESCANEO CORRECTO: " . $request->get('nomDoc');
            $respuesta = "---TODO BIEN---";

            $contador = "";

            $documentoAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                ->findOneBy(array('ideDocAlu' => $ideDocAlu));

            $contador = $documentoAlumno->getContador();
            // "doc_tit_$ideAlu_$ideDocAlu_$contador.pdf
            $nombre = "doc_tit_" . $ideAlu . "_" . $ideDocAlu . "_" . $contador;


            if ($_FILES['archivoFoto']['error'] > 0) {

            } else {
                move_uploaded_file($_FILES['archivoFoto']['tmp_name'], 'fotos_documentos/' . $nombre . '.jpg');
            }


            $documentoAlumno->setArchivo("archivo/" . $nombre . ".pdf");
            $documentoAlumno->setContador($contador + 1);
            $documentoAlumno->setEstatus(2);

            $em->persist($documentoAlumno);
            $em->flush();


            $fotoAlumno = 'fotos_documentos/' . $nombre . '.jpg';


            /**
             * CREACIÓN DEL PDF
             */
            $pdf = new PdfDocTitulacion();
            $pdf->AddPage('P', 'Letter', '');
            $pdf->CargarImagen($fotoAlumno);

            $pdf->Output('archivo/' . $nombre . '.pdf', 'F');


            /**
             * FINALIZA LA CREACIÓN DEL PDF
             */
            return $this->render('CmBundle:Titulacion:exitoFotoQRpdf.html.twig', array(
                'a' => $alumno,
                'ideDocTit' => $ideDocAlu,
                'fotoAlumno' => $fotoAlumno
            ));
        } else { // NO FUE POST
            $datos = $request->get('d');

            list($ideAlu, $ideDocAlu) = explode("-", $datos);

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

            $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $ideAlu));

            return $this->render('CmBundle:Titulacion:cargarFotoDocumentoQR.html.twig', array(
                'a' => $alumno,
                'ideDocTit' => $ideDocAlu
            ));
        }
    }

    public function loadDocTitPendientesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $cveAlu = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findBy(array('cveAlu' => $cveAlu->getIdeAlu()));

                return $this->render('CmBundle:Titulacion:tabla-documentos-pendietes.html.twig', array(
                    'documentosAlumno' => $documentosAlumno
                ));
            } else {// NO FUE POST
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function freeDocTitPendientesAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $cveAlu = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findBy(array('cveAlu' => $cveAlu->getIdeAlu()));

                return $this->render('CmBundle:Titulacion:correcto-liberacion-documento.html.twig');
            } else {// NO FUE POST
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function deleteDocTitAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $docAlu = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findOneBy(array('ideDocAlu' => $request->get('doc')));

                /*
                 * REVISAR EXISTENCIA DEL EXPEDIENTE
                 */
                $documento = $docAlu->getArchivo();
                if (file_exists($documento)) {
                    unlink($documento);
                }

                /*
                 * FIN REVISIÓN Y ELIMINACIÓN DEL EXPEDIENTE
                 */

                $em->remove($docAlu);
                $em->flush();

                return $this->render('CmBundle:Titulacion:correctoEliminarDocTitulacion.html.twig');
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $docAlu = $em->getRepository('CmBundle:DocumentosAlumnos')
                    ->findOneBy(array('ideDocAlu' => $request->get('doc')));

                return $this->render('CmBundle:Titulacion:vistaEliminarDocTitulacion.html.twig',
                    array(
                        'doc' => $docAlu
                    )
                );
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function teTOtdAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $ideCor = $request->get('plantel');
                $ideEsp = $request->get('especialidad');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno));
                $especialidad = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $ideEsp));
                $cordinador = $em->getRepository('CmBundle:CordinadoresTitulacion')
                    ->findOneBy(array('ideCorTit' => $ideCor));

                /*
                 * REVISAR LA EXISTENCIA DE LA DOCUMENTACIÓN DIGITAL
                 */
                $actaNacimiento = $alumno->getCveCtl() . "-an.pdf";
                $certificadoSecundaria = $alumno->getCveCtl() . "-cs.pdf";
                $certificadoBachillerato = $alumno->getCveCtl() . "-cb.pdf";
                $certificadoTotalLicenciatura = $alumno->getCveCtl() . "-ctl.pdf";
                $cedulaLic = $alumno->getCveCtl() . "-cedLic.pdf";
                $certificadoTotalMaestria = $alumno->getCveCtl() . "-ctm.pdf";
                $tituloLicenciatura = $alumno->getCveCtl() . "-tl.pdf";
                $tituloMaestria = $alumno->getCveCtl() . "-tm.pdf";
                $cedulaMae = $alumno->getCveCtl() . "-cedMae.pdf";
                $ifeIne = $alumno->getCveCtl() . "-ine.pdf";
                $curp = $alumno->getCveCtl() . "-curp.pdf";
                //$comprobanteDomiciliario = $alumno->getCveCtl() . "-comDom.pdf";
                //$cedula =  $alumno->getCveCtl() . "-ced.pdf";

                $ARCHIVO = "archivo/";
                $rutaCarpetaAlumno = "";

                if ($alumno->getCvePla() != null) {
                    $rutaCarpeta = "archivo/" . $alumno->getCvePla()->getIdePla();
                    $rutaCarpetaAlumno = $rutaCarpeta . "/" . $alumno->getIdeAlu();
                }

                /*
                 * DOCUMENTOS BASE
                 */
                if (file_exists($rutaCarpetaAlumno . "/" . $actaNacimiento)) {
                    rename($rutaCarpetaAlumno . "/" . $actaNacimiento, $ARCHIVO . $actaNacimiento);
                }
                if (file_exists($rutaCarpetaAlumno . "/" . $curp)) {
                    rename($rutaCarpetaAlumno . "/" . $curp, $ARCHIVO . $curp);
                }
                if (file_exists($rutaCarpetaAlumno . "/" . $ifeIne)) {
                    rename($rutaCarpetaAlumno . "/" . $ifeIne, $ARCHIVO . $ifeIne);
                }
                /*
                 * FIN DOCUMENTOS BASE
                 */

                if ($alumno->getTipoAlumno() == 3) {// LICENCIATURA

                    if (file_exists($rutaCarpetaAlumno . "/" . $certificadoBachillerato)) {
                        rename($rutaCarpetaAlumno . "/" . $certificadoBachillerato, $ARCHIVO . $certificadoBachillerato);
                    }

                } elseif ($alumno->getTipoAlumno() == 4) {// MAESTRIA

                    if (file_exists($rutaCarpetaAlumno . "/" . $certificadoTotalLicenciatura)) {
                        rename($rutaCarpetaAlumno . "/" . $certificadoTotalLicenciatura, $ARCHIVO . $certificadoTotalLicenciatura);
                    }

                    if (file_exists($rutaCarpetaAlumno . "/" . $tituloLicenciatura)) {
                        rename($rutaCarpetaAlumno . "/" . $tituloLicenciatura, $ARCHIVO . $tituloLicenciatura);
                    }

                    if (file_exists($rutaCarpetaAlumno . "/" . $cedulaLic)) {
                        rename($rutaCarpetaAlumno . "/" . $cedulaLic, $ARCHIVO . $cedulaLic);
                    }

                } elseif ($alumno->getTipoAlumno() == 5) {// DOCTORADO

                    if (file_exists($rutaCarpetaAlumno . "/" . $certificadoTotalLicenciatura)) {
                        rename($rutaCarpetaAlumno . "/" . $certificadoTotalLicenciatura, $ARCHIVO . $certificadoTotalLicenciatura);
                    }
                    if (file_exists($rutaCarpetaAlumno . "/" . $tituloLicenciatura)) {
                        rename($rutaCarpetaAlumno . "/" . $certificadoTotalLicenciatura, $ARCHIVO . $tituloLicenciatura);
                    }
                    if (file_exists($rutaCarpetaAlumno . "/" . $cedulaLic)) {
                        rename($rutaCarpetaAlumno . "/" . $cedulaLic, $ARCHIVO . $cedulaLic);
                    }
                    if (file_exists($rutaCarpetaAlumno . "/" . $certificadoTotalMaestria)) {
                        rename($rutaCarpetaAlumno . "/" . $certificadoTotalMaestria, $ARCHIVO . $certificadoTotalMaestria);
                    }
                    if (file_exists($rutaCarpetaAlumno . "/" . $tituloMaestria)) {
                        rename($rutaCarpetaAlumno . "/" . $tituloMaestria, $ARCHIVO . $tituloMaestria);
                    }
                    if (file_exists($rutaCarpetaAlumno . "/" . $cedulaMae)) {
                        rename($rutaCarpetaAlumno . "/" . $cedulaMae, $ARCHIVO . $cedulaMae);
                    }


                } elseif ($alumno->getTipoAlumno() == 8) {// TITULACIÓN DIRECTA
                    print_r("ES DIRECTA");
                    print_r("<br>");
                }

                /*
                 * FINALIZA REVISIÓN DE DOCUMENTACIÓN DIGITAL
                 */


                $alumno->setTipoAlumno(8);
                $alumno->setCostoInscripcion($titulacion->getCostoTramite());
                $alumno->setCostoReinscripciones(0);
                $alumno->setCostoMensualidad(0);
                $alumno->setCveLic(null);
                $alumno->setCvePla(null);
                $em->persist($alumno);
                $em->flush();

                $titulacion->setTipoAlumno($especialidad->getCveNivAca()->getIdeNivAca());
                $titulacion->setCveLic($especialidad);
                $titulacion->setCord($cordinador);
                $em->persist($titulacion);
                $em->flush();

                return $this->render('CmBundle:Titulacion:correcto_te_to_td.html.twig');
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno));
                $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findBy(array('cveNivAca' => $alumno->getTipoAlumno()), array('cveNivAca' => 'ASC', 'nomLic' => 'ASC'));
                $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                    ->findBy(['cvePla' => $alumno->getCvePla()], ['nomCor' => 'ASC']);

                return $this->render('CmBundle:Titulacion:vista_te_to_td.html.twig', array(
                    'alumno' => $alumno,
                    'titulacion' => $titulacion,
                    'especialidades' => $especialidades,
                    'cordinadores' => $cordinadores
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function tdTOteAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            if ($request->getMethod() == 'POST') {
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $ideEsp = $request->get('especialidad');
                $idePla = $request->get('plantel');
                $modalidad = $request->get('modalidad');

                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno));
                $plantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('idePla' => $idePla));


                $especialidad = $em->getRepository('CmBundle:Licenciaturas')
                    ->findOneBy(array('ideLic' => $ideEsp));

                //ACTUALIZAR TABLA ALUMNO
                $alumno->setTipoAlumno($especialidad->getCveNivAca()->getIdeNivAca());
                $alumno->setCveLic($especialidad);
                $alumno->setCostoInscripcion(0);
                $alumno->setCostoReinscripciones(0);
                $alumno->setCostoMensualidad(0);

                $alumno->setCvePla($plantel);
                $alumno->setModalidad($modalidad);
                $alumno->setNumero(9);
                $em->persist($alumno);
                $em->flush();

                //ACTUALIZAR TABLA TITUALCION
                $titulacion->setTipoAlumno($especialidad->getCveNivAca()->getIdeNivAca());
                $titulacion->setCveLic(null);
                $titulacion->setCord(null);
                $em->persist($titulacion);
                $em->flush();

                return $this->render('CmBundle:Titulacion:correcto_td_to_te.html.twig');
            } else {// NO FUE POST
                $em = $this->getDoctrine()->getManager();

                $ideAlu = $request->get('ideAlu');
                $alumno = $em->getRepository('CmBundle:Alumnos')
                    ->findOneBy(array('ideAlu' => $ideAlu));
                $titulacion = $em->getRepository('CmBundle:Titulaciones')
                    ->findOneBy(array('cveAlu' => $alumno));
                $especialidad = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                    ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                $licenciaturas = $em->getRepository('CmBundle:Licenciaturas')
                    ->findBy(array('cveNivAca' => $especialidad->getCveNivAca()), array('nomLic' => 'ASC'));
                $planteles = $em->getRepository('CmBundle:Planteles')
                    ->findBy(array(), array('nomPla' => 'ASC'));
                $cordinador = $em->getRepository('CmBundle:CordinadoresTitulacion')
                    ->findOneBy(array('ideCorTit' => $titulacion->getCord()));
                return $this->render('CmBundle:Titulacion:vista_td_to_te.html.twig', array(
                    'alumno' => $alumno,
                    'titulacion' => $titulacion,
                    'especialidad' => $especialidad,
                    'licenciaturas' => $licenciaturas,
                    'planteles' => $planteles,
                    'cordinador' => $cordinador
                ));
            }
        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    public function generarExcelBaseTitulacionAction(Request $request)
    {
        $session = $request->getSession();
        if ($session->has("idEmpleado")) {
            $em = $this->getDoctrine()->getEntityManager();

            if ($session->get('rol') == 2) {
                $auxPlantel = $em->getRepository('CmBundle:Planteles')
                    ->findOneBy(array('cvePla' => $session->get('plantel')));
                $cordinador = $em->getRepository('CmBundle:CordinadoresTitulacion')
                    ->findOneBy(array('cvePla' => $auxPlantel));

                $dql = "SELECT t "
                    . "FROM "
                    . "CmBundle:Titulaciones t, "
                    . "CmBundle:Alumnos a "
                    . "WHERE "
                    . "a.ideAlu = t.cveAlu "
                    . "AND "
                    . "a.tipoAlumno = 8 "
                    . "AND "
                    . "t.cord = " . $cordinador->getIdeCorTit();
            } else {
                $dql = "SELECT t "
                    . "FROM "
                    . "CmBundle:Titulaciones t, "
                    . "CmBundle:Alumnos a "
                    . "WHERE "
                    . "a.ideAlu = t.cveAlu "
                    . "AND "
                    . "a.tipoAlumno = 8 ";
            }


            $query = $em->createQuery($dql);
            $titulaciones = $query->getResult();
            $datos = [];
            foreach ($titulaciones as $key => $value) {
                $auxTipoAlumno = $value->getCveAlu()->getTipoAlumno();
                $auxEstatusAlumno = $value->getCveAlu()->getEstatus()->getIdeEst();

                if ($auxTipoAlumno == 8) {
                    $pagosTitulacio = $em->getRepository('CmBundle:Ingresos')
                        ->findBy(
                            array(
                                'cveAlu' => $value->getCveAlu()->getIdeAlu(),
                                'descripcion' => "PAGO DE TITULACIÓN",
                                'cvePag' => $value->getCvePag()
                            ));

                    $plantel = $em->getRepository('CmBundle:InstitucionesEgresos')
                        ->findOneBy(array('ideInsEgr' => $value->getCveIngresado()));

                    $titulacion = $em->getRepository('CmBundle:Titulaciones')
                        ->findOneBy(array('cveAlu' => $value->getCveAlu()->getIdeAlu()));

                    $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                        ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                    $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                        ->findOneBy(array('ideCorTit' => $titulacion->getCord()));
                    $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                        ->findBy(array('cveAlu' => $value->getCveAlu()->getIdeAlu()), array('cveDoc' => 'ASC'));

                    $datos[] = array($value, $pagosTitulacio, $plantel, $titulacion, $especialidades, $cordinadores, $documentosAlumno);
                } else {
                    if ($auxEstatusAlumno == 12) {
                        $pagosTitulacio = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(
                                array(
                                    'cveAlu' => $value->getCveAlu()->getIdeAlu(),
                                    'descripcion' => "PAGO DE TITULACIÓN",
                                    'cvePag' => $value->getCvePag()
                                ));

                        $plantel = $em->getRepository('CmBundle:InstitucionesEgresos')
                            ->findOneBy(array('ideInsEgr' => $value->getCveIngresado()));

                        $titulacion = $em->getRepository('CmBundle:Titulaciones')
                            ->findOneBy(array('cveAlu' => $value->getCveAlu()->getIdeAlu()));

                        $especialidades = $em->getRepository('CmBundle:LicenciaturasTitulacion')
                            ->findOneBy(array('ideLicTit' => $titulacion->getCveLic()));
                        $cordinadores = $em->getRepository('CmBundle:CordinadoresTitulacion')
                            ->findOneBy(array('ideCorTit' => $titulacion->getCord()));
                        $documentosAlumno = $em->getRepository('CmBundle:DocumentosAlumnos')
                            ->findBy(array('cveAlu' => $value->getCveAlu()->getIdeAlu()), array('cveDoc' => 'ASC'));

                        $datos[] = array($value, $pagosTitulacio, $plantel, $titulacion, $especialidades, $cordinadores, $documentosAlumno);
                    } else {
                        // NO ESTÁ MARCADO COMO EGRESADO, NO HACER NADA.
                    }
                }
            }


            /*
             *
             */

            $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();

            $phpExcelObject->getProperties()->setCreator("El Inge")
                ->setLastModifiedBy("El Inge")
                ->setTitle("Office 2007 XLSX Test Document")
                ->setSubject("Office 2007 XLSX Test Document")
                ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                ->setKeywords("office 2007 openxml php")
                ->setCategory("Test result file");

            $LETRA = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z'];

            $encabezados = [
                "N.C.",
                "MATRICULA",
                "NOMBRE",
                "TIPO",
                "ESPECIALIDAD",
                "COSTO TOTAL", //5
                "DEPOSITO", // 6
                "DEBE", // 7
                "ESTATUS",
                "PLANTEL"
            ];

            //ENCABEZADOS
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('A1', $encabezados[0]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('B1', $encabezados[1]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('C1', $encabezados[2]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('D1', $encabezados[3]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('E1', $encabezados[4]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('F1', $encabezados[5]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('G1', $encabezados[6]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('H1', $encabezados[7]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('I1', $encabezados[8]);
            $phpExcelObject->setActiveSheetIndex(0)->setCellValue('J1', $encabezados[9]);


            $indice = 0;
            $numero = 2;
            foreach ($datos as $k => $v) {
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice] . $numero, $k + 1);
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 1] . $numero, $v[0]->getCveAlu()->getCveCtl());
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 2] . $numero, $v[0]->getCveAlu()->getApePat() . " " . $v[0]->getCveAlu()->getApeMat() . " " . $v[0]->getCveAlu()->getNomAlu());
                $tipoAlumno = $v[0]->getCveAlu()->getTipoAlumno();
                $campoTipoAlumno = "";
                switch ($tipoAlumno) {
                    case 1:
                        $campoTipoAlumno = "TE BACH";
                        break;
                    case 2:
                        $campoTipoAlumno = "TE E.U.";
                        break;
                    case 3:
                        $campoTipoAlumno = "TE LIC.";
                        break;
                    case 4:
                        $campoTipoAlumno = "TE M.";
                        break;
                    case 5:
                        $campoTipoAlumno = "TE DOC.";
                        break;
                    case 8:
                        $auxTipoAlumno = $v[3]->getTipoAlumno();
                        switch ($auxTipoAlumno) {
                            case 3:
                                $campoTipoAlumno = "TD LIC.";
                                break;
                            case 4:
                                $campoTipoAlumno = "TD M.";
                                break;
                            case 5:
                                $campoTipoAlumno = "TD DOC.";
                                break;
                            default:
                                $campoTipoAlumno = "TD ERROR #2";
                                break;
                        }
                        break;
                    default:
                        $campoTipoAlumno = "TE ERROR #1";
                        break;
                }
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 3] . $numero, $campoTipoAlumno);
                $nombreEspecialidad = "";
                if ($v[0]->getCveAlu()->getCveLic() != null) {
                    // ES ESCOLARIZADO
                    $nombreEspecialidad = $v[0]->getCveAlu()->getCveLic()->getCveNivAca()->getNombre() . " EN " . $v[0]->getCveAlu()->getCveLic()->getNomLic();
                } else {
                    // VALIDAR SI ES DIRECTA
                    if ($v[4] != null) {
                        $nombreEspecialidad = $v[4]->getNomLic();
                    } else {
                        $nombreEspecialidad = "ERROR";
                    }
                }
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 4] . $numero, $nombreEspecialidad);

                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 5] . $numero, "$ " . $v[0]->getCostoTramite());
                $sumaDeposito = 0;
                foreach ($v[1] as $dd) {
                    $sumaDeposito = $sumaDeposito + $dd->getTotal();
                }
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 6] . $numero, "$ " . $sumaDeposito);
                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 7] . $numero, "$ " . ($v[0]->getCostoTramite() - $sumaDeposito));

                $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 8] . $numero, $v[0]->getCveAlu()->getEstatus()->getDesEst());
                if ($v[0]->getCord() == null) {
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 9] . $numero, "XD");
                } else {
                    $phpExcelObject->setActiveSheetIndex(0)->setCellValue($LETRA[$indice + 9] . $numero, $v[0]->getCord()->getNomCor());
                }


                $numero++;
            }

            $phpExcelObject->getActiveSheet()->setTitle('TD');
            // Set active sheet index to the first sheet, so Excel opens this as the first sheet
            $phpExcelObject->setActiveSheetIndex(0);

            // create the writer
            $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel2007');
            // create the response
            $response = $this->get('phpexcel')->createStreamedResponse($writer);
            // adding headers
            $dispositionHeader = $response->headers->makeDisposition(
                ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'base_titulacion_directa' . '.xlsx'
            );


            $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
            $response->headers->set('Pragma', 'public');
            $response->headers->set('Cache-Control', 'maxage=1');
            $response->headers->set('Content-Disposition', $dispositionHeader);

            return $response;

            /*
             *
             */

        } else {// EL USUARIO NO TIENE SESIÓN, NO DEBE DE ENTRAR
            return $this->redirect($this->generateUrl('logout'));
        }
    }

    // Front controller 
    function processRequest($ideAlu)
    {
        if (isset($_GET['delay']) && is_numeric($_GET['delay'])) {
            sleep($_GET['delay']);
        }

        $action = $_GET['action'];
        switch ($action) {
            case 'upload':
                { // handle file upload
                    header('Content-type: text/plain; charset=utf-8');

                    $fileNames = handleUploadedFiles($ideAlu);
                    if (is_array($fileNames) && count($fileNames) > 0) {
                        foreach ($fileNames as $index => $filename) {
                            if ($index > 0) {
                                print('\n');
                            }
                            if (strpos($filename, 'ERROR:') === 0) {
                                print($filename); // error mesg 
                            } else {
                                print(dirname(getCurrentPageURL()) . str_replace(DIRECTORY_SEPARATOR, "/", substr(UPLOAD_DIR, strlen(__DIR__))) . $filename);
                            }
                        }
                    } else {
                        print('ERROR: no file uploaded');
                    }
                    return; // without printing footer 
                }
                break;

            case 'source':
                { // display source code of this file
                    //show_source(__FILE__);
                }
                break;

            case 'dump':
                { // dump request information
                    //print('<html><head><title>Asprise Upload Tester</title><link rel="stylesheet" href="' . dirname(getCurrentPageURL()) . '/upload.css" /></head><body>'); 
                    //print('<p class="url">URL: ' . getCurrentPageURL()); 
                    //print(' | <a href="' . str_replace("action=dump", "action=source", getCurrentPageURL()) . '" target=_blank>Mostrar código</a></p>'); 
                    //print('<div id="main"><div id="left"><h2>Archivos subidos</h2>'); 
                    $fileNames = $this->handleUploadedFiles($ideAlu);
                    if (is_array($fileNames) && count($fileNames) > 0) {
                        foreach ($fileNames as $index => $filename) {
                            //print("Index".$index);
                            //print("Nombre del Archivo".$filename);

                            if (strpos($filename, 'ERROR:') === 0) {
                                print("<p>$filename</p>");
                            } else {
                                $extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
                                $targetUrl = dirname($this->getCurrentPageURL()) . str_replace(DIRECTORY_SEPARATOR, "/", substr(ArchivosController::UPLOAD_DIR, strlen(__DIR__))) . $filename;
                                //print('<a href="' . $targetUrl . '" target="_blank">'); 
                                if (strpos($filename, 'ERROR:') !== 0 && in_array($extension, array('jpg', 'jpeg', 'gif', 'png'))) {
                                    $imgAnchor = '<img src="' . $targetUrl . '" height="160">';
                                } else if (strpos($filename, 'ERROR:') !== 0 && in_array($extension, array('tif', 'tiff'))) {
                                    $imgAnchor = '<img src="' . dirname($this->getCurrentPageURL()) . '/icon-tif.png">';
                                } else if (strpos($filename, 'ERROR:') !== 0 && $extension == 'pdf') {
                                    $imgAnchor = '<img src="' . dirname($this->getCurrentPageURL()) . '/icon-pdf.png">';
                                } else {
                                    $imgAnchor = '<img src="' . dirname($this->getCurrentPageURL()) . '/icon-others.png">';
                                }
                                //print($imgAnchor . '</a>'); 
                            }
                        }
                    }
                }
                break;

            case 'form':
                { // form for manual upload
                    print('<form action="upload.php?action=dump" method="post" enctype="multipart/form-data">' .
                        '<input type="file" name="file[]"><br>' .
                        '<input type="file" name="file[]"><br>' .
                        '<input type="submit" name="submit" value="Submit"></form>');
                }
                break;

            default:
            {
                print('Use a &lt;form&gt; to post scanned images or <a href="' . $_SERVER["PHP_SELF"] .
                    '?action=form">manually upload</a> to this URL | <a href="' . $_SERVER["PHP_SELF"] . '?action=source">Show source code</a>');
            }
        } // end of switch 

        /* print('<hr style="height: 1px; color: #999; font-size: 0; border: 0; background: #999; margin-top: 20px; margin-bottom: 10px;">' .
          '<span style="font-family: Arial; color: #999; font-size: 12px;">ALL RIGHTS RESERVED BY LAB ASPRISE <a href="http://asprise.com/" target=_blank>asprise.com</a> &copy; ' . date('Y') . '.</span>'); */
    }

    /**
     * @return an array of mixing simple names of the files uploaded into UPLOAD_DIR and error strings starting with 'ERROR: ' or empty array if there is no uploaded file.
     */
    function handleUploadedFiles($ideAlu)
    {
        $fileNames = array();
        if (is_array($_FILES)) {
            foreach ($_FILES as $name => $fileSpec) {
                if (!is_array($fileSpec)) {
                    continue;
                }

                if (is_array($fileSpec['tmp_name'])) { // multiple files with same name 
                    foreach ($fileSpec['tmp_name'] as $index => $value) {
                        if ($fileSpec['error'][$index] == UPLOAD_ERR_OK) {
                            /* array_push($fileNames, doHandleUploadedFile($fileSpec['name'][$index], $fileSpec['type'][$index], $fileSpec['tmp_name'][$index], $fileSpec['error'][$index], $fileSpec['size'][$index])); */
                            array_push($fileNames, $this->doHandleUploadedFile($ideAlu, $fileSpec['type'][$index], $fileSpec['tmp_name'][$index], $fileSpec['error'][$index], $fileSpec['size'][$index]));
                        }
                    }
                } else {
                    if ($fileSpec['error'] == UPLOAD_ERR_OK) {
                        array_push($fileNames, doHandleUploadedFile($fileSpec['name'], $fileSpec['type'], $fileSpec['tmp_name'], $fileSpec['error'], $fileSpec['size']));
                    }
                }
            }
        }

        return $fileNames;
    }

    /**
     * @return simple name of the file in the UPLOAD_DIR or an error string starting with 'ERROR: '.
     */
    function doHandleUploadedFile($name, $type, $tmp_name, $error, $size)
    {
        if ($error != UPLOAD_ERR_OK) {
            return 'ERROR: upload error code: ' . $error . ' for file ' . $name;
        }

        $extension = pathinfo($name, PATHINFO_EXTENSION);
        if ($extension == null || strlen($extension) == 0) {
            $extension = $this->getImageExtensionByMimeType($type);
            if ($extension != null) {
                $name .= '.' . $extension;
            }
        }

        /* print_r($name);
          print_r(" ");
          print_r(ArchivosController::UPLOAD_DIR); */

        if ($extension == null || strlen($extension) == 0 || (strlen($extension) > 0 && (!in_array(strtolower($extension), array('jpg', 'jpeg', 'gif', 'png', 'tif', 'tiff', 'pdf'))))) {
            return 'ERROR: extension not allowed: ' . $extension . ' for file ' . $name;
        }

        if (!file_exists(ArchivosController::UPLOAD_DIR)) {
            mkdir(ArchivosController::UPLOAD_DIR); // try to mkedir 
        }

        $moved = move_uploaded_file($tmp_name, ArchivosController::UPLOAD_DIR . $name);
        if ($moved) {
            chmod(ArchivosController::UPLOAD_DIR . $name, 0644);
        } else {
            return 'ERROR: moving uploaded file failed' . ' for file ' . $name;
        }

        return $name;
    }

    function getCurrentPageURL()
    {
        $defaultPort = "80";
        $pageURL = 'http';
        /* if ($_SERVER["HTTPS"] == "on") {
          $pageURL .= "s";
          $defaultPort = "443";
          } */
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != $defaultPort) {
            $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
        } else {
            $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
        }
        return $pageURL;
    }

    function getImageExtensionByMimeType($mimeType)
    {
        $mimeType = strtolower($mimeType);
        switch ($mimeType) {
            case 'image/jpeg':
                return "jpg";
            case 'image/pjpeg':
                return 'jpg';
            case 'image/png':
                return 'png';
            case 'image/gif':
                return 'gif';
            case 'image/tiff':
                return 'tif';
            case 'image/x-tiff':
                return 'tif';
            case 'application/pdf':
                return 'pdf';
            default:
                return '';
        }
    }

    function base64_to_png($base64_string, $output_file)
    {
        // open the output file for writing
        $ifp = fopen($output_file, 'wb');

        // split the string on commas
        // $data[ 0 ] == "data:image/png;base64"
        // $data[ 1 ] == <actual base64 string>
        $data = explode(',', $base64_string);

        // we could add validation here with ensuring count( $data ) > 1
        fwrite($ifp, base64_decode($data[1]));

        // clean up the file resource
        fclose($ifp);

        return $output_file;
    }

}
