<?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 CmBundle\Entity\Claves;
use CmBundle\Entity\AplicacionExamenUnico;
use CmBundle\Entity\ClavesOcupadas;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;

date_default_timezone_set('America/Mexico_City');

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

    //put your code here
    public function generarAction(Request $request) {
        $session = $request->getSession();
        if ($session->has("idEmpleado") && ($session->get("rol") == 200 )) {
            if ($request->getMethod() == 'POST') {

                $em = $this->getDoctrine()->getManager();
                for ($i = 1; $i <= 5; $i++) {
                    $ban = 1;
                    while ($ban == 1) {
                        // Numero aleatorio de 6 digitos
                        $folio = "";
                        $c = "0123456789";
                        for ($l = 6; $l > 0; $l--) {
                            $folio .= $c[rand(0, strlen($c) - 1)];
                        }

                        $auxClave = $em->getRepository('CmBundle:Claves')
                                ->findOneBy(array('folio' => $folio));
                        if ($auxClave != null) {
                            $ban = 1;
                        } else {
                            $clave = new Claves();
                            $clave->setEstatus(1);
                            $clave->setFolio($folio);
                            $clave->setMotivo("");
                            $clave->setFecMov(new \DateTime(date('Y-m-d')));

                            $em->persist($clave);
                            $em->flush();
                            $ban = 0;
                        }
                    }
                }
                $claves = $em->getRepository('CmBundle:Claves')
                        ->findBy(array('estatus' => 1));
                $ocupadas = $em->getRepository('CmBundle:Claves')
                        ->findBy(array('estatus' => 0));


                return $this->render('CmBundle:Claves:vistaGenerarClaves.html.twig', array('claves' => $claves, 'ocupadas' => $ocupadas));
            } else { // NO FUE POST
                $em = $this->getDoctrine()->getManager();
                $claves = $em->getRepository('CmBundle:Claves')
                        ->findBy(array('estatus' => 1));
                $ocupadas = $em->getRepository('CmBundle:Claves')
                        ->findBy(array('estatus' => 0));

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

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

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

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

                $clave = $em->getRepository('CmBundle:Claves')
                        ->findOneBy(array('folio' => $request->get('c'), 'estatus' => 1));
                if ($clave != null) {
                    return new JsonResponse('true', 200);
                } else {
                    return new JsonResponse('false', 200);
                }
            }
        } else {
            $this->get('session')->getFlashBag()->add(
                    'mensaje', 'Debe estar logeado para ver este contenido'
            );

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

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

                $em = $this->getDoctrine()->getManager();
                $motivo = $request->get('motivo');
                $clave = $em->getRepository('CmBundle:Claves')
                        ->findOneBy(array('folio' => $request->get('c'), 'estatus' => 1));
                $alumno = $em->getRepository('CmBundle:Alumnos')
                        ->findOneBy(array('ideAlu' => $request->get('ideAlu')));

                if ($clave != null) {
                    $claveOcupada = new ClavesOcupadas();
                    $claveOcupada->setFolio($request->get('c'));
                    $claveOcupada->setMotivo($session->get('identificador') . "::" . $alumno->getCveCtl() . "::" . $motivo);
                    $claveOcupada->setFecMov(new \DateTime(date('Y-m-d')));
                    $claveOcupada->setHorMov(new \DateTime(date('H:i:s')));

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

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

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

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

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

                $aplicacion = new AplicacionExamenUnico();
                $aplicacion->setNumeroAplicacion($request->get('numeroAplicacion'));
                $aplicacion->setFechaAplicacion(new \DateTime($request->get('fechaAplicacion')));
                $aplicacion->setFecMov(new \DateTime(date('Y-m-d')));
                $aplicacion->setEstatus(1);

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

                return $this->redirect($this->generateUrl('aplicaciones_eu'));
            } else { // GET
                $em = $this->getDoctrine()->getManager();
                $aplicaciones = $em->getRepository('CmBundle:AplicacionExamenUnico')
                        ->findBy(array('estatus' => 1));
                return $this->render('CmBundle:Aplicaciones:alta-aplicaciones-eu.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'));
        }
    }

}
