/**
  * Creates a new Consulta entity.
  *
  * @Route("/create/consulta-estetica", name="admin_consulta_estetica_create")
  * @Method("POST")
  * @Template("DGPlusbelleBundle:Consulta:newconpaciente.html.twig")
  */
 public function createConsultaEsteticaAction(Request $request)
 {
     $entity = new Consulta();
     $em = $this->getDoctrine()->getManager();
     //Obtiene el usuario
     //$id= $request->get('id');
     $cadena = $request->get('identidad');
     //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);
     $user = $this->get('security.token_storage')->getToken()->getUser();
     //Entidades para insertar en el proceso de la consulta de emergencia
     $expediente = new Expediente();
     //Seteo de valores
     $expediente->setFechaCreacion(new \DateTime('now'));
     $expediente->setHoraCreacion(new \DateTime('now'));
     $expediente->setEstado(true);
     $entity->setFechaConsulta(new \DateTime('now'));
     $form = $this->createCreateFormEstetica($entity, 1, $idEntidad);
     $form->handleRequest($request);
     $parameters = $request->request->all();
     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;
         }
         $paciente = $entity->getPaciente();
         $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();
         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();
             $numString = $num[0]["1"];
             switch (strlen($numString)) {
                 case 1:
                     $numeroExp .= "00" . $numString;
                     break;
                 case 2:
                     $numeroExp .= "0" . $numString;
                     break;
                 case 3:
                     $numeroExp .= $numString;
                     break;
             }
             $expediente->setNumero($numeroExp);
             $expediente->setPaciente($paciente);
             $expediente->setUsuario($user);
             $em->persist($expediente);
         }
         $usuario = $this->get('security.token_storage')->getToken()->getUser();
         $empleado = $em->getRepository('DGPlusbelleBundle:Empleado')->findBy(array('persona' => $usuario->getPersona()->getId()));
         $entity->setEmpleado($empleado[0]);
         $placas = new ArrayCollection();
         $path = $this->container->getParameter('photo.paciente');
         $i = 0;
         foreach ($entity->getPlacas2() as $key => $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;
                 $imagenConsulta->setFoto($nombreArchivo);
                 $row->setFoto($nombreArchivo);
                 $row->getFile()->move($path, $nombreArchivo);
                 $em->persist($row);
                 $i++;
             }
         }
         $em->persist($entity);
         $em->flush();
         $plantillaid = $parameters['dgplusbellebundle_consulta']['plantilla'];
         $recetaid = $parameters['dgplusbellebundle_consulta']['sesiontratamiento'];
         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();
         $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 ($parametros as $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);
             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();
         }
         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']);
             $lon = count($nparam);
             if ($lon > 1) {
                 $pnombre = $nparam[0];
                 foreach ($nparam as $key => $par) {
                     //var_dump($key);
                     if ($key + 1 != $lon) {
                         $pnombre .= '_' . $nparam[$key + 1];
                     }
                 }
                 $dataReporte2->setValorDetalle($parameters[$pnombre . "2"]);
             } else {
                 $dataReporte2->setValorDetalle($parameters[$p['nombre'] . "2"]);
             }
             $em->persist($dataReporte2);
             $em->flush();
         }
         $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();
         }
         $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;
         }
     }
     return array('entity' => $entity, 'form' => $form->createView());
 }
 /**
  * Creates a new Consulta entity.
  *
  * @Route("/edit/insert/plantilla/", name="admin_consulta_edit_plantilla", options={"expose"=true})
  * @Method("POST")
  */
 public function editPlantillaAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $idConsulta = $request->get('idConsulta');
     if ($idConsulta != -1) {
         $entity = $em->getRepository('DGPlusbelleBundle:Consulta')->find($idConsulta);
     }
     $flag = 0;
     $cadena = $request->get('identidad');
     $parameters = $request->request->all();
     //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);
     $tipoPlantilla = $parameters['idEstetica'];
     if ($tipoPlantilla == 1) {
         $plantillaid = $parameters['idPlantilla'];
         $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();
         $dataPlantilla = $em->getRepository('DGPlusbelleBundle:HistorialConsulta')->findBy(array('consulta' => $idConsulta));
         if ($dataPlantilla) {
             foreach ($dataPlantilla as $value) {
                 $em->remove($value);
                 $em->flush();
             }
         }
         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]);
             $em->persist($dataReporte);
             $em->flush();
         }
     } else {
         if ($tipoPlantilla == 2) {
             $esteticaid = 3;
         } else {
             if ($tipoPlantilla == 3) {
                 $esteticaid = 1;
             } else {
                 if ($tipoPlantilla == 4) {
                     $esteticaid = 2;
                 }
             }
         }
         if ($esteticaid != 3) {
             $dataCheck = $em->getRepository('DGPlusbelleBundle:HistorialEstetica')->findBy(array('consulta' => $idConsulta));
             if ($dataCheck) {
                 foreach ($dataCheck as $value) {
                     $em->remove($value);
                     $em->flush();
                 }
             }
             $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();
             foreach ($parametros as $p) {
                 $dataReporte = new \DGPlusbelleBundle\Entity\HistorialEstetica();
                 $idOpcion = $p['opcid'];
                 $detalle = $em->getRepository('DGPlusbelleBundle:OpcionesDetalleEstetica')->find($p['opcid']);
                 $dataReporte->setdetalleEstetica($detalle);
                 $dataReporte->setConsulta($entity);
                 $nparam = explode(" ", $p['opcnom']);
                 $lon = count($nparam);
                 if ($lon > 1) {
                     $pnombre = $nparam[0];
                     foreach ($nparam as $key => $par) {
                         if ($key + 1 != $lon) {
                             $pnombre .= '_' . $nparam[$key + 1];
                         }
                     }
                     if (isset($parameters[$pnombre])) {
                         $dataReporte->setValor($pnombre);
                         $em->persist($dataReporte);
                         $em->flush();
                     }
                 } else {
                     $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('-');
                             $em->persist($dataReporte);
                             $em->flush();
                             unset($claves[$key]);
                         }
                     }
                 }
             }
         }
         if ($esteticaid == 1) {
             $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($esteticaid);
             $compCorporal = $em->getRepository('DGPlusbelleBundle:ComposicionCorporal')->findOneBy(array('consulta' => $entity->getId()));
             $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]);
             $em->merge($compCorporal);
             $em->flush();
         }
         if ($esteticaid == 3) {
             $estetica = $em->getRepository('DGPlusbelleBundle:Estetica')->find($esteticaid);
             $dataBotox = $em->getRepository('DGPlusbelleBundle:ConsultaBotox')->findBy(array('consulta' => $idConsulta));
             if ($dataBotox) {
                 foreach ($dataBotox as $value) {
                     $em->remove($value);
                     $em->flush();
                 }
             }
             $botox = new \DGPlusbelleBundle\Entity\ConsultaBotox();
             foreach ($parameters['valores'] as $key => $value) {
                 if ($key < 8) {
                     $index = intval($key) % 8;
                 } else {
                     $index = (intval($key) - 1) % 7;
                 }
                 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;
                 }
                 if ($key % 7 == 0 && $key != 0 || $key == 7) {
                     $botox->setConsulta($entity);
                     $botox->setEstetica($estetica);
                     $em->persist($botox);
                     $em->flush();
                     $botox = new \DGPlusbelleBundle\Entity\ConsultaBotox();
                 }
             }
         }
     }
     //$f = $gg;
     /*  if($producto){
             $this->establecerConsultaProducto($entity, $producto, $indicaciones);
         } */
     $usuario = $this->get('security.token_storage')->getToken()->getUser();
     $this->get('bitacora')->escribirbitacora("Se ha editado una plantilla", $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;
 }