/**
  * Metodo que sirve para generar el expediente del paciente
  *
  * @param \DGPlusbelleBundle\Entity\Paciente $paciente
  *
  */
 private function generarExpediente($paciente)
 {
     $em = $this->getDoctrine()->getManager();
     $expediente = new Expediente();
     $user = $this->get('security.token_storage')->getToken()->getUser();
     // Obtencion del apellidos  y nombres del paciente
     $apellido = $paciente->getPersona()->getApellidos();
     $nombre = $paciente->getPersona()->getNombres();
     $search = array('Á', 'É', 'Í', 'Ó', 'Ú');
     $replace = array('A', 'E', 'I', 'O', 'U');
     $apellido = str_replace($search, $replace, $apellido);
     $nombre = str_replace($search, $replace, $nombre);
     //Generacion del numero de expediente
     //        $numeroExp = $nombre[0].$apellido[0].date("Y");
     $numeroExp = substr(strtoupper($nombre), 0, 1) . substr(strtoupper($apellido), 0, 1) . date("Y");
     //        $numeroExp = strtoupper ($numeroExp);
     //        echo $numeroExp;
     $dql = "SELECT COUNT(exp)+1 FROM DGPlusbelleBundle:Expediente exp WHERE exp.numero LIKE :numero";
     $num = $em->createQuery($dql)->setParameter('numero', '%' . $numeroExp . '%')->getResult();
     //var_dump($user);
     $numString = $num[0]["1"];
     //var_dump($numString);
     switch (strlen($numString)) {
         case 1:
             $numeroExp .= "00" . $numString;
             break;
         case 2:
             $numeroExp .= "0" . $numString;
             break;
         case 3:
             $numeroExp .= $numString;
             break;
     }
     //        var_dump($numeroExp);
     //        die();
     //Seteo de valores del expediente
     $expediente->setFechaCreacion(new \DateTime('now'));
     $expediente->setHoraCreacion(new \DateTime('now'));
     $expediente->setEstado(true);
     $expediente->setNumero($numeroExp);
     $expediente->setPaciente($paciente);
     $expediente->setUsuario($user);
     //        $paciente->setExpediente($expediente);
     $em->persist($expediente);
     $em->flush();
     return $numeroExp;
 }
 /**
  * Creates a new Consulta entity.
  *
  * @Route("/create/insert/plantilla/", name="admin_consulta_insert_plantilla", options={"expose"=true})
  * @Method("POST")
  */
 public function insertPlantillaAction(Request $request)
 {
     //$entity = new Consulta();
     $em = $this->getDoctrine()->getManager();
     //Obtiene el usuario
     $idpac = $request->get('id');
     $idConsulta = $request->get('idConsulta');
     //var_dump($idpac);
     if ($idConsulta != -1) {
         $entity = $em->getRepository('DGPlusbelleBundle:Consulta')->find($idConsulta);
     }
     //        var_dump($entity);
     $flag = 0;
     $cadena = $request->get('identidad');
     $parameters = $request->request->all();
     //var_dump($parameters);
     //die();
     //Obtener del parametro el valor que se debe usar para programar la consulta
     $accion = $cadena[0];
     //Obtener el id del parametro
     $idEntidad = substr($cadena, 1);
     $pac = $em->getRepository('DGPlusbelleBundle:Paciente')->find($idpac);
     //var_dump($pac);
     $user = $this->get('security.token_storage')->getToken()->getUser();
     //Entidades para insertar en el proceso de la consulta de emergencia
     //        $historial = new HistorialClinico();
     $expediente = new Expediente();
     //Seteo de valores
     $expediente->setFechaCreacion(new \DateTime('now'));
     $expediente->setHoraCreacion(new \DateTime('now'));
     $expediente->setEstado(true);
     //$historial->setConsulta($entity);
     //var_dump(!isset($parameters['idEstetica']));
     if ($idConsulta != -1) {
         $entity->setFechaConsulta(new \DateTime('now'));
     }
     //Tipo de consulta actica, emergencia
     /*$dql = "SELECT tc FROM DGPlusbelleBundle:TipoConsulta tc WHERE tc.estado = :estado AND tc.id=:id";
       $tipoConsulta = $em->createQuery($dql)
                      ->setParameters(array('estado'=>1,'id'=>1))
                      ->getResult();
              //var_dump($tipoConsulta[0]);
              //die();
       $tipoConsulta = $tipoConsulta[0];*/
     //var_dump($tipoConsulta);
     //die();
     //$entity->setTipoConsulta($tipoConsulta);
     //var_dump($this->tipo);
     if ($idpac == -1) {
         $paciente_est = $em->getRepository('DGPlusbelleBundle:Paciente')->find($parameters['dgplusbellebundle_consulta']['paciente']);
         $entity->setPaciente($paciente_est);
         //var_dump($entity);
         $flag = 1;
         $accion = 'E';
         $pacient = new \DGPlusbelleBundle\Entity\Paciente();
         $form = $this->createCreateForm($entity, 3, $idEntidad, $pacient);
     } else {
         $paciente_est = $em->getRepository('DGPlusbelleBundle:Paciente')->find($idpac);
         if ($idConsulta != -1) {
             $form = $this->createCreateForm($entity, 2, $idEntidad, $pac);
         }
     }
     if ($idConsulta != -1) {
         $form->handleRequest($request);
     }
     //$campos = $form->get('campos')->getData();
     // $indicaciones = $form->get('indicaciones')->getData();
     // foreach($parameters as $p){
     //     $campos = $parameters->campos;
     //}
     //var_dump($parameters['dgplusbellebundle_consulta']['campos']);
     //die();
     //if ($form->isValid()) {
     $em = $this->getDoctrine()->getManager();
     $tratamiento = null;
     switch ($accion) {
         case 'C':
             $cita = $em->getRepository('DGPlusbelleBundle:Cita')->find($idEntidad);
             $cita->setEstado("A");
             $tratamiento = $cita->getTratamiento();
             $entity->setCita($cita);
             $em->persist($cita);
             $em->flush();
             break;
         case 'P':
             //$entity->setCita(null);
             break;
     }
     if ($idConsulta == -1) {
     } else {
         $paciente = $entity->getPaciente();
         //$paciente = $paciente_est;
         $paciente->setEstado(true);
         $apellido = $paciente->getPersona()->getApellidos();
         $nombre = $paciente->getPersona()->getNombres();
         $dql = "SELECT p.id, exp.numero FROM DGPlusbelleBundle:Paciente p " . "JOIN p.expediente exp WHERE p.id=:id ";
         $exp = $em->createQuery($dql)->setParameter('id', $paciente->getId())->getResult();
         //var_dump($exp);
         //$paciente
         //die();
         if (count($exp) == 0) {
             //Generacion del numero de expediente
             $numeroExp = $nombre[0] . $apellido[0] . date("Y");
             $dql = "SELECT COUNT(exp)+1 FROM DGPlusbelleBundle:Expediente exp WHERE exp.numero LIKE :numero";
             $num = $em->createQuery($dql)->setParameter('numero', '%' . $numeroExp . '%')->getResult();
             //var_dump($user);
             $numString = $num[0]["1"];
             //var_dump($numString);
             switch (strlen($numString)) {
                 case 1:
                     $numeroExp .= "00" . $numString;
                     break;
                 case 2:
                     $numeroExp .= "0" . $numString;
                     break;
                 case 3:
                     $numeroExp .= $numString;
                     break;
             }
             //var_dump($numeroExp);
             //die();
             $expediente->setNumero($numeroExp);
             $expediente->setPaciente($paciente);
             $expediente->setUsuario($user);
             $em->persist($expediente);
         }
     }
     if ($idConsulta != -1) {
         $usuario = $this->get('security.token_storage')->getToken()->getUser();
         $empleado = $em->getRepository('DGPlusbelleBundle:Empleado')->findBy(array('persona' => $usuario->getPersona()->getId()));
         //$entity->setEmpleado($empleado[0]);
     }
     //$historial->setConsulta($consulta);
     //$historial->setExpediente($expediente);
     $placas = new ArrayCollection();
     $path = $this->container->getParameter('photo.paciente');
     $i = 0;
     if ($idConsulta != -1) {
         foreach ($entity->getPlacas2() as $key => $row) {
             //var_dump($row);
             $imagenConsulta = new ImagenConsulta();
             if ($row->getFile() != null) {
                 //echo "vc";
                 $fecha = date('Y-m-d His');
                 $extension = $row->getFile()->getClientOriginalExtension();
                 $nombreArchivo = "consulta - " . $i . " - " . $fecha . "." . $extension;
                 //echo $nombreArchivo;
                 //$seguimiento->setFotoAntes($nombreArchivo);
                 $imagenConsulta->setFoto($nombreArchivo);
                 $row->setFoto($nombreArchivo);
                 //$imagenConsulta->setConsulta($entity);
                 //array_push($placas, $imagenConsulta);
                 $row->getFile()->move($path, $nombreArchivo);
                 //$em->merge($seguimiento);
                 $em->persist($row);
                 //$em->flush();
                 $i++;
             }
             //var_dump($row->getFile());
         }
     }
     //die();
     //$entity->setPlacas2($placas);
     //$entity->setRegistraReceta(1);
     //$em->persist($entity);
     //$em->flush();
     if (isset($parameters['idPlantilla'])) {
         $plantillaid = $parameters['idPlantilla'];
         //var_dump($parameters);
         //die();
         $dql = "SELECT det.id, det.nombre " . "FROM DGPlusbelleBundle:DetallePlantilla det " . "JOIN det.plantilla pla " . "WHERE pla.id =  :plantillaid";
         $parametros = $em->createQuery($dql)->setParameter('plantillaid', $plantillaid)->getResult();
         //$valores = array();
         // var_dump($usuario);
         //var_dump($parametros);
         //die();
         foreach ($parametros as $key => $p) {
             $dataReporte = new HistorialConsulta();
             $detalle = $em->getRepository('DGPlusbelleBundle:DetallePlantilla')->find($p['id']);
             $dataReporte->setDetallePlantilla($detalle);
             $dataReporte->setConsulta($entity);
             $dataReporte->setConsultaReceta(null);
             $nparam = explode(" ", $p['nombre']);
             //var_dump(count($nparam));
             $lon = count($nparam);
             $dataReporte->setValorDetalle($parameters['valores'][$key]);
             /*if($lon > 1){
                   $pnombre = $nparam[0];
                   foreach($nparam as $key => $par){
                       if($key +1 != $lon){
                           $pnombre .= '_'.$nparam[$key + 1];
                       }
                   }
                   $dataReporte->setValorDetalle($parameters[$pnombre]);
               } else {
                   $dataReporte->setValorDetalle($parameters[$p['nombre']]);
               }*/
             $em->persist($dataReporte);
             $em->flush();
         }
     } else {
         $esteticaid = $parameters['idEstetica'];
         //echo "estetica";
         //var_dump($parameters);
         $dql = "SELECT det.id, det.nombre, opc.id opcid, opc.nombre opcnom " . "FROM DGPlusbelleBundle:OpcionesDetalleEstetica opc " . "JOIN opc.detalleEstetica det " . "JOIN det.estetica est " . "WHERE est.id =  :esteticaid";
         $parametros = $em->createQuery($dql)->setParameter('esteticaid', $esteticaid)->getResult();
         //var_dump($parametros);
         //$valores = array();
         //var_dump($parameters);
         //die();
         foreach ($parametros as $p) {
             $dataReporte = new \DGPlusbelleBundle\Entity\HistorialEstetica();
             $idOpcion = $p['opcid'];
             $detalle = $em->getRepository('DGPlusbelleBundle:OpcionesDetalleEstetica')->find($p['opcid']);
             //var_dump($p);
             $dataReporte->setdetalleEstetica($detalle);
             $dataReporte->setConsulta($entity);
             //var_dump($dataReporte);
             //$dataReporte->setConsultaReceta(null);
             //var_dump($p['opcnom']);
             $nparam = explode(" ", $p['opcnom']);
             //var_dump($parametros);
             //var_dump(count($nparam));
             $lon = count($nparam);
             //var_dump($lon);
             if ($lon > 1) {
                 $pnombre = $nparam[0];
                 foreach ($nparam as $key => $par) {
                     //var_dump($key);
                     if ($key + 1 != $lon) {
                         //var_dump($lon);
                         $pnombre .= '_' . $nparam[$key + 1];
                     }
                 }
                 if (isset($parameters[$pnombre])) {
                     $dataReporte->setValor($pnombre);
                     //var_dump("persiste");
                     $em->persist($dataReporte);
                     $em->flush();
                 }
             } else {
                 //var_dump($parameters);
                 $claves = array();
                 foreach ($parameters['valores'] as $key => $reg) {
                     if ($reg == 'true') {
                         array_push($claves, $parameters['idParameters'][$key]);
                     }
                 }
                 //Son las claves con true
                 //var_dump($claves);
                 foreach ($claves as $key => $idrow) {
                     if ($idrow == $idOpcion) {
                         $dataReporte->setValor('-');
                         //var_dump($parameters[$p['opcnom']]);
                         //var_dump("persiste");
                         $em->persist($dataReporte);
                         $em->flush();
                         unset($claves[$key]);
                     }
                 }
                 //Se busca que el id de la opc exista en las claves
             }
             //                    $em->persist($dataReporte);
             //                    $em->flush();
         }
         //                if(isset($parameters['corporal'])){
         //                    $compCorporal = new \DGPlusbelleBundle\Entity\ComposicionCorporal;
         //                    $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($parameters['dgplusbellebundle_consulta']['estetica']);
         //
         //                    $compCorporal->setPeso($parameters['corporal']['peso']);
         //                    $compCorporal->setGrasaCorporal($parameters['corporal']['grasa_corporal']);
         //                    $compCorporal->setAguaCorporal($parameters['corporal']['agua_corporal']);
         //                    $compCorporal->setMasaMusculo($parameters['corporal']['masa_musculo']);
         //                    $compCorporal->setValoracionFisica($parameters['corporal']['valoracion_fisica']);
         //                    $compCorporal->setEdadMetabolica($parameters['corporal']['edad_metabolica']);
         //                    $compCorporal->setDciBmr($parameters['corporal']['dci_bmr']);
         //                    $compCorporal->setMasaOsea($parameters['corporal']['masa_osea']);
         //                    $compCorporal->setGrasaVisceral($parameters['corporal']['grasa_visceral']);
         //                    $compCorporal->setFecha(new \DateTime('now'));
         //                    $compCorporal->setConsulta($entity);
         //                    $compCorporal->setEstetica($estetica);
         //                    //var_dump($parameters['corporal']['masa_osea']);
         //                    $em->persist($compCorporal);
         //                    $em->flush();
         //
         //
         ////                  die();
         //                }
         if ($parameters['idEstetica'] == 1) {
             $compCorporal = new \DGPlusbelleBundle\Entity\ComposicionCorporal();
             $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($parameters['idEstetica']);
             $compCorporal->setPeso($parameters['valores'][0]);
             $compCorporal->setGrasaCorporal($parameters['valores'][1]);
             $compCorporal->setAguaCorporal($parameters['valores'][2]);
             $compCorporal->setMasaMusculo($parameters['valores'][3]);
             $compCorporal->setValoracionFisica($parameters['valores'][4]);
             $compCorporal->setDciBmr($parameters['valores'][5]);
             $compCorporal->setEdadMetabolica($parameters['valores'][6]);
             $compCorporal->setMasaOsea($parameters['valores'][7]);
             $compCorporal->setGrasaVisceral($parameters['valores'][8]);
             $compCorporal->setFecha(new \DateTime('now'));
             $compCorporal->setConsulta($entity);
             $compCorporal->setEstetica($estetica);
             //var_dump($parameters['corporal']['masa_osea']);
             $em->persist($compCorporal);
             $em->flush();
             //                  die();
         }
         if ($parameters['idEstetica'] == 3) {
             $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($parameters['idEstetica']);
             $botox = new \DGPlusbelleBundle\Entity\ConsultaBotox();
             foreach ($parameters['valores'] as $key => $value) {
                 //var_dump($value['area_inyectar']);
                 //die();
                 //var_dump($value);
                 //                            echo $key;
                 if ($key < 8) {
                     $index = intval($key) % 8;
                     //                            echo "-".$index;
                 } else {
                     $index = (intval($key) - 1) % 7;
                 }
                 //                            echo "index: ".$index."d";
                 switch ($index) {
                     case 0:
                         $botox->setAreaInyectar($value);
                         break;
                     case 1:
                         $botox->setUnidades($value);
                         break;
                     case 2:
                         $botox->setFechaCaducidad(new \DateTime($value));
                         break;
                     case 3:
                         $botox->setLote($value);
                         break;
                     case 4:
                         $botox->setMarcaProducto($value);
                         break;
                     case 5:
                         $botox->setNumAplicacion($value);
                         break;
                     case 6:
                         $botox->setValor($value);
                         break;
                     case 7:
                         if (isset($value)) {
                             $botox->setRecomendaciones($value);
                         }
                         break;
                 }
                 //echo "fecha: ". $value;
                 if ($key % 7 == 0 && $key != 0 || $key == 7) {
                     $botox->setConsulta($entity);
                     $botox->setEstetica($estetica);
                     $em->persist($botox);
                     $em->flush();
                     $botox = new \DGPlusbelleBundle\Entity\ConsultaBotox();
                 }
             }
         }
         //                if(isset($parameters['botox'])){
         //                    $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($parameters['dgplusbellebundle_consulta']['estetica']);
         //
         //                    foreach ($parameters['botox'] as $value) {
         //                        //var_dump($value['area_inyectar']);
         //                        //die();
         //                        $botox = new \DGPlusbelleBundle\Entity\ConsultaBotox();
         //
         //                        $botox->setAreaInyectar($value['area_inyectar']);
         //                        $botox->setUnidades($value['unidades']);
         //
         //                        $botox->setFechaCaducidad(new \DateTime($value['caducidad']));
         //                        $botox->setLote($value['lote']);
         //                        $botox->setMarcaProducto($value['marca_producto']);
         //                        $botox->setNumAplicacion($value['num_aplicacion']);
         //                        $botox->setValor($value['valor']);
         //
         //                        if(isset($value['recomendaciones'])){
         //                            $botox->setRecomendaciones($value['recomendaciones']);
         //                        }
         //
         //                        $botox->setConsulta($entity);
         //                        $botox->setEstetica($estetica);
         //                        $em->persist($botox);
         //                        $em->flush();
         //                    }
         //                }
     }
     if (isset($parameters['dgplusbellebundle_consulta']['sesiontratamiento'])) {
         $recetaid = $parameters['dgplusbellebundle_consulta']['sesiontratamiento'];
         $dql = "SELECT det.id, det.nombre " . "FROM DGPlusbelleBundle:DetallePlantilla det " . "JOIN det.plantilla pla " . "WHERE pla.id =  :plantillaid";
         $parametros2 = $em->createQuery($dql)->setParameter('plantillaid', $recetaid)->getResult();
         foreach ($parametros2 as $p) {
             $dataReporte2 = new HistorialConsulta();
             $detalle = $em->getRepository('DGPlusbelleBundle:DetallePlantilla')->find($p['id']);
             $dataReporte2->setDetallePlantilla($detalle);
             $dataReporte2->setConsulta(null);
             $dataReporte2->setConsultaReceta($entity);
             $nparam = explode(" ", $p['nombre']);
             //var_dump(count($nparam));
             $lon = count($nparam);
             if ($lon > 1) {
                 $pnombre = $nparam[0];
                 foreach ($nparam as $key => $par) {
                     //var_dump($key);
                     if ($key + 1 != $lon) {
                         //var_dump($lon);
                         $pnombre .= '_' . $nparam[$key + 1];
                     }
                 }
                 $dataReporte2->setValorDetalle($parameters[$pnombre . "2"]);
             } else {
                 $dataReporte2->setValorDetalle($parameters[$p['nombre'] . "2"]);
             }
             //var_dump($p['nombre']);
             $em->persist($dataReporte2);
             $em->flush();
         }
     }
     //$f = $gg;
     /*  if($producto){
             $this->establecerConsultaProducto($entity, $producto, $indicaciones);
         } */
     $idEmpleado = $usuario->getPersona()->getEmpleado()[0]->getId();
     $empleados = $this->verificarComision($idEmpleado, null);
     if ($empleados[0]['suma'] >= $empleados[0]['meta'] && !$empleados[0]['comisionCompleta']) {
         $this->get('envio_correo')->sendEmail($empleados[0]['email'], "", "", "", "cumplio su objetivo");
         $empComision = $em->getRepository('DGPlusbelleBundle:Empleado')->find($empleado[0]->getId());
         $empComision->setComisionCompleta(1);
         $em->persist($empComision);
         $em->flush();
     }
     //$usuario= $this->get('security.token_storage')->getToken()->getUser();
     $this->get('bitacora')->escribirbitacora("Se registro una nueva consulta", $usuario->getId());
     switch ($accion) {
         case 'C':
             return $this->redirect($this->generateUrl('admin_cita'));
             break;
         case 'P':
             return $this->redirect($this->generateUrl('admin_paciente'));
             break;
         case 'E':
             return $this->redirect($this->generateUrl('admin_consultas_paciente'));
             break;
     }
     //}
     $response = new JsonResponse();
     $response->setData(array('query' => 0));
     return $response;
     return array('entity' => $entity, 'form' => $form->createView(), 'flag' => $flag);
 }