<?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\JsonResponse;
use DateTime;

date_default_timezone_set('America/Mexico_City');

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

    //put your code here

    public function vistaAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 4 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {

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

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

                /*
                 * PASO 1: Traer todos los id´s de los numeros de aplicaciones
                 * que coinciden con la varible $numAplicacion
                 */
                $aplicaciones = $em->getRepository('CmBundle:AplicacionExamenUnico')
                        ->findBy(array('numeroAplicacion' => $numAplicacion));

                /* $dql = "SELECT a "
                  . "FROM CmBundle:Alumnos a "
                  . "WHERE a.cveNumApli = :cve ";
                  $query = $em->createQuery($dql);
                  $query->setParameter('cve', $aplicaciones);
                  $alumnos = $query->getResult(); */
                $alumnos = $em->getRepository('CmBundle:Alumnos')
                        ->findBy(array('cveNumApli' => $aplicaciones, 'estatus' => 1), array('cveNumApli' => 'ASC', 'apePat' => 'ASC', 'apeMat' => 'ASC', 'nomAlu' => 'ASC'));

                $datos = array();

                foreach ($alumnos as $k => $v) {
                    $pagos = $em->getRepository('CmBundle:Pagos')
                            ->findBy(array('cveAlu' => $v->getIdeAlu()));
                    $pagosConAbonos = array();
                    $detallesBachi = $em->getRepository('CmBundle:DetallesBachiEu')
                            ->findOneBy(array('cveAlu' => $v->getIdeAlu()));
                    /**
                     * RECUPERAR EL LISTADO DE DOCUMENTACIÓN DIGITAL
                     */
                    $rutaCURP = "archivo/" . $v->getCveCtl() . "-curp.pdf";
                    $rutaActa = "archivo/" . $v->getCveCtl() . "-an.pdf";
                    $rutaCert = "archivo/" . $v->getCveCtl() . "-cs.pdf";

                    if ($v->getFecTer() != null) {
                        $date1 = new DateTime($v->getFecTer()->format('Y-m-d'));
                        $date2 = new DateTime("now");
                        $diff = $date1->diff($date2);
                    } else {
                        $date1 = new DateTime("now");
                        $date2 = new DateTime("now");
                        $diff = $date1->diff($date2);
                    }



                    if (file_exists($rutaCURP) & file_exists($rutaActa) & file_exists($rutaCert)) {
                        $detallesBachi->setDocumentacionDigital(1);
                        $em->persist($detallesBachi);
                        $em->flush();
                    } else {
                        $detallesBachi->setDocumentacionDigital(0);
                        $em->persist($detallesBachi);
                        $em->flush();
                    }

                    // TERMINA LA COMPROBACIÓN DE DOCUMENTACIÓN DIGITAL

                    $numeroPagos = 0;
                    foreach ($pagos as $key => $value) {
                        $listaPagos = $em->getRepository('CmBundle:Ingresos')
                                ->findBy(array('cveAlu' => $v->getIdeAlu(), 'cvePag' => $value->getIdePag()));
                        $suma = 0;
                        foreach ($listaPagos as $kk => $vv) {
                            $suma = $suma + $vv->getMonto();
                            $numeroPagos++;
                        }
                        $pagosConAbonos[$key] = array($value, $suma);
                    }

                    if ($diff->y == null) {
                        $datos[$k] = array($v, $pagosConAbonos, $numeroPagos, $detallesBachi, "0");
                    } else {
                        $datos[$k] = array($v, $pagosConAbonos, $numeroPagos, $detallesBachi, $diff->y);
                    }
                }

                //var_dump($datos);

                return $this->render('CmBundle:EU:listas.html.twig', array('alumnos' => $alumnos, 'numApli' => $numAplicacion, 'datos' => $datos));
            } else {
                $em = $this->getDoctrine()->getEntityManager();
                $dql = "SELECT DISTINCT(a.numeroAplicacion) aplicacion, a.estatus estatus "
                        . "FROM CmBundle:AplicacionExamenUnico a ORDER BY aplicacion";
                $query = $em->createQuery($dql);
                $aplicaciones = $query->getResult();

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

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

    public function cambiarCIDAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 4 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {

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

                $monto = $request->get('monto');
                $clavePago = $request->get('ide');

                $pago = $em->getRepository('CmBundle:Pagos')->findOneBy(array('idePag' => $clavePago));

                if ($pago != null) {
                    $pago->setMonto($monto);
                    $em->persist($pago);
                    $em->flush();

                    return new JsonResponse('true', 200);
                } else {

                    return new JsonResponse('false', 500);
                }
            } else {

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

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

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

                if ($alumno != null) {
                    $alumno->setCveNumApli($aplicacion);
                    $em->persist($alumno);
                    $em->flush();

                    return new JsonResponse('true', 200);
                } else {

                    return new JsonResponse('false', 500);
                }
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                    'mensaje', 'Debe estar logeado para ver este contenido'
            );

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

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

                $em = $this->getDoctrine()->getManager();
                $ideAlu = $request->get('ideAlu');
                $valor = $request->get('valor');

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

                $detallesBachi->setTramite($valor);
                $em->persist($detallesBachi);
                $em->flush();

                return $this->render('CmBundle:EU:respuestaCambiarEstatus.html.twig', array('detalles' => $detallesBachi));
            } else {

                $em = $this->getDoctrine()->getManager();
                $ideAlu = $request->get('ideAlu');

                $alumno = $em->getRepository('CmBundle:Alumnos')->findOneBy(array('ideAlu' => $ideAlu));
                $detallesBachi = $em->getRepository('CmBundle:DetallesBachiEu')
                        ->findOneBy(array('cveAlu' => $alumno));
                return $this->render('CmBundle:EU:vistaCambiarEstatus.html.twig', array('detalles' => $detallesBachi));
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                    'mensaje', 'Debe estar logeado para ver este contenido'
            );

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

    public function detallesAlumnoAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 4 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {
                $ideAlu = $request->get('ideAlu');

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

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

                $pagos = $em->getRepository('CmBundle:Pagos')
                        ->findBy(array('cveAlu' => $alumno->getIdeAlu()));
                $pagosConAbonos = array();
                foreach ($pagos as $key => $value) {
                    $listaPagos = $em->getRepository('CmBundle:Ingresos')
                            ->findBy(array('cveAlu' => $ideAlu, 'cvePag' => $value->getIdePag()));
                    $suma = 0;
                    foreach ($listaPagos as $k => $v) {
                        $suma = $suma + $v->getMonto();
                    }
                    $pagosConAbonos[$key] = array($value, $suma);
                }
                $estatus = $em->getRepository('CmBundle:Estatus')
                        ->findAll();
                $becas = $em->getRepository('CmBundle:Becas')
                        ->findAll();
                $planteles = $em->getRepository('CmBundle:Planteles')
                        ->findAll();
                $grados = $em->getRepository('CmBundle:Licenciaturas')
                        ->findAll();
                $mensualidades = $em->getRepository('CmBundle:Colegiaturas')
                        ->findAll();
                $becasBachi = $em->getRepository('CmBundle:BecasBachillerato')
                        ->findBy(array('estatus' => 1));

                $fotoAlumno = 0;
                $nombre_fichero = "fotos/" . $alumno->getCveCtl() . ".jpg";

                if (file_exists($nombre_fichero)) {
                    $fotoAlumno = $nombre_fichero;
                } else {
                    $fotoAlumno = "images/usuario.png";
                }

                $rs = $em->getRepository('CmBundle:RazonSocial')->findAll();

                $aplicaciones = $em->getRepository('CmBundle:AplicacionExamenUnico')->findAll();

                return $this->render('CmBundle:Alumno:consulta-alumno-bachi-tecno2.html.twig', array(
                            'a' => $alumno,
                            'pagos' => $pagos,
                            'pagosConAbonos' => $pagosConAbonos,
                            'estatus' => $estatus,
                            'becas' => $becas,
                            'planteles' => $planteles,
                            'licenciaturas' => $grados,
                            'colegiaturas' => $mensualidades,
                            'fotoAlumno' => $fotoAlumno,
                            'rs' => $rs,
                            'aplicaciones' => $aplicaciones,
                            'tablaPagos' => $becasBachi
                ));
            } else {
                
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                    'mensaje', 'Debe estar logeado para ver este contenido'
            );

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

    public function actualizarAlumnoAction(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->set("vista", "alumno");
            if ($request->getMethod() == "POST") {

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

                $apePat = $request->get('apePat');
                $apeMat = $request->get('apeMat');
                $nomAlu = $request->get('nomAlu');
                $curp = $request->get('curp');
                $sexo = $request->get('sexAlu');
                $fecNac = $request->get('fecNac');
                $edad = $request->get('edad');
                $nacionalidad = $request->get('nacionalidad');
                $edo = $request->get('edoAlu');
                $mun = $request->get('munAlu');
                $calle = $request->get('calle');
                $numExt = $request->get('numExt');
                $numInt = $request->get('numInt');
                $colonia = $request->get('colonia');
                $cp = $request->get('codPos');
                $telefono = $request->get('telefono');
                $email = $request->get('email');

                $apePatT = $request->get('apePatT');
                $apeMatT = $request->get('apeMatT');
                $nomTut = $request->get('nomTut');
                $parentesco = $request->get('parentesco');
                $ocupacion = $request->get('ocupacion');
                $telCelT = $request->get('telCelT');
                $telTraT = $request->get('telTraT');
                $viveAlu = $request->get('vivAlu');
                $correoT = $request->get('correoT');

                $fecIng = $request->get('fecIng');
                $fecEgr = $request->get('fecEgr');
                $tipo = $request->get('staAlu');
                $estatus = $em->getRepository('CmBundle:Estatus')
                        ->findOneBy(array('ideEst' => $tipo));
                $tipBeca = $request->get('cveApo');
                $cveBeca = $em->getRepository('CmBundle:Becas')
                        ->findOneBy(array('ideBec' => $tipBeca));
                $turno = $request->get("turno");
                $tipPlantel = $request->get('cveEsc');
                $plantel = $em->getRepository('CmBundle:Planteles')
                        ->findOneBy(array('idePla' => $tipPlantel));
                $tipLic = $request->get('cveCar');
                $cveLic = $em->getRepository('CmBundle:Licenciaturas')
                        ->findOneBy(array('ideLic' => $tipLic));
                $tipColegiatura = $request->get('colegiatura');
                $cveCol = $em->getRepository('CmBundle:Colegiaturas')
                        ->findOneBy(array('ideCol' => $tipColegiatura));
                $semestre = $request->get('numSem');
                $idePro = $request->get("escProcedencia");
                $cvePro = $em->getRepository('CmBundle:Procedencias')
                        ->findOneBy(array('idePro' => $idePro));
                $modoPago = $request->get('modoP');

                $cerSec = 0;
                $cerPre = 0;
                $actNac = 0;
                $fotInf = 0;
                $copCurp = 0;
                $cerMed = 0;

                $cerSec2 = 0;
                $cerPre2 = 0;
                $actNac2 = 0;
                $fotInf2 = 0;
                $copCurp2 = 0;
                $cerMed2 = 0;

                if ($request->get('cerSec') == "on") {
                    $cerSec = 1;
                }
                if ($request->get('cerPre') == "on") {
                    $cerPre = 1;
                }
                if ($request->get('actNac') == "on") {
                    $actNac = 1;
                }
                if ($request->get('fotInf') == "on") {
                    $fotInf = 1;
                }
                if ($request->get('copCurp') == "on") {
                    $copCurp = 1;
                }
                if ($request->get('cerMed') == "on") {
                    $cerMed = 1;
                }

                if ($request->get('cerSec2') == "on") {
                    $cerSec2 = 1;
                }
                if ($request->get('cerPre2') == "on") {
                    $cerPre2 = 1;
                }
                if ($request->get('actNac2') == "on") {
                    $actNac2 = 1;
                }
                if ($request->get('fotInf2') == "on") {
                    $fotInf2 = 1;
                }
                if ($request->get('copCurp2') == "on") {
                    $copCurp2 = 1;
                }
                if ($request->get('cerMed2') == "on") {
                    $cerMed2 = 1;
                }

                $tipo_alumno = $request->get('tipoAlumno');


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

                //$alumno->setCveCtl($numCtl);
                $alumno->setNomAlu($nomAlu);
                $alumno->setApePat($apePat);
                $alumno->setApeMat($apeMat);
                $alumno->setEstatus($estatus);
                $alumno->setCurp($curp);
                $alumno->setFecNac(new \DateTime($fecNac));
                $alumno->setEdad($edad);
                $alumno->setSexo($sexo);
                $alumno->setNacionalidad($nacionalidad);
                $alumno->setCorreo($email);
                $alumno->setTelefono($telefono);
                $alumno->setTelefonoCelular($request->get('telefonoCelular'));
                $alumno->setCalle($calle);
                $alumno->setNumExt($numExt);
                $alumno->setNumInt($numInt);
                $alumno->setColLoc($colonia);
                $alumno->setMunDel($mun);
                $alumno->setEdo($edo);
                $alumno->setCp($cp);
                $alumno->setNomTut($nomTut);
                $alumno->setPatTut($apePatT);
                $alumno->setMatTut($apeMatT);
                $alumno->setParentesco($parentesco);
                $alumno->setOcupacion($ocupacion);
                $alumno->setTelCelTut($telCelT);
                $alumno->setTelTraTut($telTraT);
                $alumno->setViveAlu($viveAlu);
                $alumno->setEmailTut($correoT);

                if ($fecEgr == null) {
                    $alumno->setFecTer(null);
                } else {
                    $alumno->setFecTer(new \DateTime($fecEgr));
                }

                $alumno->setCerSec($cerSec);
                $alumno->setCerPre($cerPre);
                $alumno->setActNac($actNac);
                $alumno->setFotInf($fotInf);
                $alumno->setCopCurp($copCurp);
                $alumno->setCerMed($cerMed);

                $alumno->setCerSecCopia($cerSec2);
                $alumno->setCerPreCopia($cerPre2);
                $alumno->setActNacCopia($actNac2);
                $alumno->setFotInfCopia($fotInf2);
                $alumno->setCopCurpCopia($copCurp2);
                $alumno->setCerMedCopia($cerMed2);

                //$alumno->setFecIns(new \DateTime($fecIng));
                //$alumno->setAnioIng($anio);
                if ($semestre != "") {
                    $alumno->setSemestre($semestre);
                } else {
                    $alumno->setSemestre(0);
                }
                if ($cveBeca == null) {
                    
                } else {
                    $alumno->setCveBeca($cveBeca);
                }

                $alumno->setTurno($turno);
                $alumno->setCveLic($cveLic);
                $alumno->setCveCol($cveCol);
                $alumno->setCvePla($plantel);
                $alumno->setCvePro($cvePro);
                $alumno->setTipoAlumno($tipo_alumno);
                $alumno->setModoPago($modoPago);

                $alumno->setModalidad($request->get('modalidad'));
                if ($request->get('modalidad') == "SEMESTRAL") {
                    $alumno->setNumero($request->get('numSem'));
                } elseif ($request->get('modalidad') == "CUATRIMESTRAL") {
                    $alumno->setNumero($request->get('numCua'));
                }

                $cveAnterior = $request->get('cveAnterior');
                $alumno->setCveAnterior($cveAnterior);

                $alumno->setCostoInscripcion($request->get('costoInscripcion'));
                $alumno->setCostoReinscripciones($request->get('costoReinscripcion'));
                $alumno->setCostoMensualidad($request->get('colegiatura'));
                $alumno->setHorarioTurno(new \DateTime(date($request->get('horario'))));
                $alumno->setHorarioSalidaTurno(new \DateTime($request->get('horarioSalida')));
                $alumno->setCorteA($request->get('corteA'));
                $alumno->setComoEntero($request->get('comoEntero'));
                $alumno->setCedula($request->get('cedula'));
                $alumno->setLicenciatura($request->get('licenciatura'));

                $alumno->setObservaciones($request->get('observaciones'));
                $alumno->setCoordinador($request->get('coordinador'));
                $alumno->setFacebook($request->get('facebook'));
                $alumno->setDependenciaEmpresa($request->get('dependencia'));
                $alumno->setDepto($request->get('depto'));

                $dias = json_encode($request->get('dias'));

                $alumno->setDiasTurno($dias);


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

                $this->get('session')->getFlashBag()->add(
                        'mensaje', 'CORRECTO'
                );
                if ($alumno->getTipoAlumno() == 2) {

                    return $this->redirect($this->generateUrl('admin_bachi_eu', array('numAplicacion' => $request->get('numAplicacion'))));
                } else {
                    return $this->redirect($this->generateUrl('consulta_alumno_dos', array('ideAlu' => $alumno->getIdeAlu())));
                }
            }
        } else {
            return $this->render('CmBundle:Seguridad:login.html.twig');
        }
    }

    public function cambiarValoresAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 4 || $session->get("rol") == 101 || $session->get("rol") == 99)) {
            if ($request->getMethod() == 'POST') {

                $nuevoValor = $request->get('valor');
                $ideAlu = $request->get('ideAlu');
                $letra = $request->get('letra');

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

                $aluDetalle = $em->getRepository('CmBundle:DetallesBachiEu')
                        ->findOneBy(array('cveAlu' => $ideAlu));

                switch ($letra) {
                    case 'A':
                        $aluDetalle->setFichaInscripcion($nuevoValor);
                        break;
                    case 'B':
                        $aluDetalle->setDocumentacionDigital($nuevoValor);
                        break;
                    case 'C':
                        $aluDetalle->setAsistenciaAsesorias($nuevoValor);
                        break;
                    case 'D':
                        $aluDetalle->setCalendarioActividades($nuevoValor);
                        break;
                    case 'E':
                        $aluDetalle->setCalendarioPagos($nuevoValor);
                        break;
                    case 'F':
                        $aluDetalle->setEntregaDocumentos($nuevoValor);
                        break;
                    case 'G':
                        $aluDetalle->setCartaCompromiso($nuevoValor);
                        break;
                    case 'H':
                        $aluDetalle->setOficioAplicacion($nuevoValor);
                        break;
                    case 'I':
                        $aluDetalle->setLicenciaturaInteres($nuevoValor);
                        break;
                    case 'J':
                        $aluDetalle->setInscrito($nuevoValor);
                        break;
                    case 'K':
                        $aluDetalle->setIngresado($nuevoValor);
                        break;
                    case 'L':
                        $aluDetalle->setTramite($nuevoValor);
                        break;
                    case 'M':
                        $aluDetalle->setCorreccion($nuevoValor);
                        break;
                    case 'N':
                        $aluDetalle->setEntregado($nuevoValor);
                        break;
                }
                $em->persist($aluDetalle);
                $em->flush();

                return new JsonResponse('true', 200);
            } 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 excelAction(Request $request) {
        // ask the service for a Excel5
        $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();

        $phpExcelObject->getProperties()->setCreator("liuggio")
                ->setLastModifiedBy("Giulio De Donato")
                ->setTitle("Office 2005 XLSX Test Document")
                ->setSubject("Office 2005 XLSX Test Document")
                ->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
                ->setKeywords("office 2005 openxml php")
                ->setCategory("Test result file");
        $phpExcelObject->setActiveSheetIndex(0)
                ->setCellValue('A1', 'Hello')
                ->setCellValue('B2', 'world!');
        $phpExcelObject->getActiveSheet()->setTitle('Simple');
        // 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, 'Excel5');
        // create the response
        $response = $this->get('phpexcel')->createStreamedResponse($writer);
        // adding headers
        $dispositionHeader = $response->headers->makeDisposition(
                ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'stream-file.xls'
        );
        $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;
    }

}
