/**
  * 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());
 }
 /**
  * 
  *
  * @Route("/pacienteconsulta/data/consulta", name="admin_consulta_guardar_ajax")
  */
 public function dataConsultaAction(Request $request)
 {
     /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      * Easy set variables
      */
     /* Array of database columns which should be read and sent back to DataTables. Use a space where
      * you want to insert a non-database field (for example a counter or static image)
      */
     $id = $request->get('id');
     $medico = $request->get('medico');
     //        $tratamiento = $request->get('tratamiento');
     $tipoConsulta = $request->get('tipoConsulta');
     $sucursal = $request->get('sucursal');
     $observaciones = $request->get('observaciones');
     $costo = $request->get('costoconsulta');
     //        $patologicos = $request->get('patologicos');
     //        $familiares = $request->get('familiares');
     //        $alergias = $request->get('alergias');
     //
     //        $patologicos = $request->get('patologicos');
     //        $familiares = $request->get('familiares');
     //        $alergias = $request->get('alergias');
     $consulta = new Consulta();
     $em = $this->getDoctrine()->getEntityManager();
     $paciente = $em->getRepository('DGPlusbelleBundle:Paciente')->find($id);
     $empleado = $em->getRepository('DGPlusbelleBundle:Empleado')->find($medico);
     //        $tratamientoObj = $em->getRepository('DGPlusbelleBundle:Tratamiento')->find($tratamiento);
     $tipoConsultaObj = $em->getRepository('DGPlusbelleBundle:TipoConsulta')->find($tipoConsulta);
     $sucursalObj = $em->getRepository('DGPlusbelleBundle:Sucursal')->find($sucursal);
     if (count($paciente) != 0) {
         //$persona = $em->getRepository('DGPlusbelleBundle:Persona')->find($paciente->getPersona()->getId());
         $consulta->setPaciente($paciente);
         $consulta->setEmpleado($empleado);
         $consulta->setTipoConsulta($tipoConsultaObj);
         $consulta->setFechaConsulta(new \DateTime('now'));
         //hora inicio
         $consulta->setHoraInicio(new \DateTime('now'));
         //hora fin
         $consulta->setHoraFin(new \DateTime('now'));
         $consulta->setObservacion($observaciones);
         //            $consulta->setTratamiento($tratamientoObj);
         $consulta->setSucursal($sucursalObj);
         $consulta->setReportePlantilla(1);
         $consulta->setCostoConsulta($costo);
         $em->persist($consulta);
         $em->flush();
         return new Response(json_encode($consulta->getId()));
     } else {
         return new Response(json_encode(1));
     }
 }