Esempio n. 1
0
 /**
  * Funcion que actualiza el campo de reporte de una participacion de estudiante
  * 
  * Ingresa la ruta del archivo cargado en el campo de archivo_reporte de la participacion
  * del estudiante en una prueba. si la prueba es test vocacional hace un insert ya que esta prueba
  * no registra participacion por parte del estudiante. Para los demas casos realiza un update 
  * a traves de la funcion updateParticipacion
  * 
  * @author Diego Malagon <*****@*****.**>
  * @param integer $estudiante_id id de usuario estudiante
  * @param integer $form_id id de formulario o prueba
  * @param string $path ruta del archivo
  */
 private function updateArchivoReporte($estudiante_id, $form_id, $path)
 {
     $FormServ = $this->get('formularios');
     $em = $this->getDoctrine()->getManager();
     // Si es para la prueba de test vocacional
     if ($FormServ->getFormId('test_vocacional') == $form_id) {
         // Verificar si ya existe un registro
         $dql = "SELECT COUNT(p.id) AS c \n                    FROM vocationetBundle:Participaciones p\n                    WHERE \n                        p.usuarioEvaluado = :usuario_id\n                        AND p.formulario = :formulario_id";
         $query = $em->createQuery($dql);
         $query->setParameter('usuario_id', $estudiante_id);
         $query->setParameter('formulario_id', $form_id);
         $result = $query->getResult();
         $count = $result[0]['c'];
         // Si no existe crearlo
         if ($count == 0) {
             // Insertar nueva participacion para test vocacional
             $participacion = new \AT\vocationetBundle\Entity\Participaciones();
             $participacion->setFormulario($form_id);
             $participacion->setFecha(new \DateTime());
             $participacion->setUsuarioParticipa($estudiante_id);
             $participacion->setUsuarioEvaluado($estudiante_id);
             $participacion->setArchivoReporte($path);
             $participacion->setEstado(1);
             $em->persist($participacion);
             $em->flush();
         } else {
             // Actualizar registro de participacion
             $this->updateParticipacion($estudiante_id, $form_id, $path);
         }
     } else {
         // Actualizar registro de participacion
         $this->updateParticipacion($estudiante_id, $form_id, $path);
     }
 }
 /**
  * Funcion para enviar invitaciones a usuarios
  * 
  * Envio de invitaciones para evaluacion 360
  * 
  * @param array $emails arreglo de correos
  * @param integer $usuarioId id de usuario que envia la invitacion
  */
 private function enviarInvitaciones($emails, $usuarioId)
 {
     $form_id = $this->get('formularios')->getFormId('evaluacion360');
     $em = $this->getDoctrine()->getManager();
     $usuario = $em->getRepository("vocationetBundle:Usuarios")->findOneById($usuarioId);
     $usuarioNombre = $usuario->getUsuarioNombre() . ' ' . $usuario->getUsuarioApellido();
     // Envio de email
     $subject = $this->get('translator')->trans("%usu%.invito.contestar.evaluacion.360", array('%usu%' => $usuarioNombre), 'mail');
     $body = $this->get('translator')->trans("%usu%.invito.contestar.evaluacion.360.body", array('%usu%' => $usuarioNombre), 'mail');
     $link = $this->get('request')->getSchemeAndHttpHost() . $this->get('router')->generate('evaluacion360_evaluacion', array("id" => $usuarioId));
     $dataRender = array('title' => $subject, 'body' => $body, 'link' => $link, 'link_text' => $this->get('translator')->trans("participar.evaluacion", array(), 'mail'));
     $this->get('mail')->sendMail($emails, $subject, $dataRender, 'bcc');
     // Registro de invitaciones en la db
     foreach ($emails as $email) {
         // Validar que no exista la invitacion
         $participacion = $em->getRepository("vocationetBundle:Participaciones")->findOneBy(array("formulario" => $form_id, "usuarioEvaluado" => $usuarioId, "correoInvitacion" => $email));
         if (!$participacion) {
             // Registrar invitacion
             $participacion = new \AT\vocationetBundle\Entity\Participaciones();
             $participacion->setFecha(new \DateTime());
             $participacion->setFormulario($form_id);
             $participacion->setUsuarioEvaluado($usuarioId);
             $participacion->setCorreoInvitacion($email);
             $participacion->setEstado(0);
             $em->persist($participacion);
         }
     }
     $em->flush();
 }
Esempio n. 3
0
 /**
  * Funcion para registrar y calificar las respuestas de usuario en base de datos 
  * 
  * @param integer $formId id de formulario principal
  * @param integer $usuarioId id de usuario que participa
  * @param array $preguntas arreglo de preguntas con id y tipo de pregunta
  * @param array $respuestas arreglo de respuestas recibido del formulario enviado
  * @param integer $usuarioEvaluadoId id de usuario evaluado en el caso de evaluacion 360
  * @param array $adicionales arreglo con respuestas a preguntas no registradas
  * @param integer $carreraId id de carrera se usa unicamente para formulario de ponderacion
  * @return integer puntuacion de las respuestas
  */
 private function registrarRespuestas($formId, $usuarioId, $preguntas, $respuestas, $usuarioEvaluadoId = false, $adicionales = false, $carreraId = false)
 {
     // Registrar participacion
     if ($formId == $this->getFormId('evaluacion360')) {
         // Actualizar registro de invitacion
         $usuarioEmail = $this->security->getSessionValue("usuarioEmail");
         $participacion = $this->em->getRepository("vocationetBundle:Participaciones")->findOneBy(array("formulario" => $formId, "correoInvitacion" => $usuarioEmail, "usuarioEvaluado" => $usuarioEvaluadoId));
         if ($participacion) {
             $participacion->setFecha(new \DateTime());
             $participacion->setUsuarioParticipa($usuarioId);
             $participacion->setEstado(1);
             $this->em->persist($participacion);
         }
     } else {
         // Única prueba que no aprueba el mentor de orientación vocacional
         $estado_part = 1;
         if ($formId == $this->getFormId('diagnostico')) {
             $estado_part = 2;
         }
         $participacion = new \AT\vocationetBundle\Entity\Participaciones();
         $participacion->setFormulario($formId);
         $participacion->setFecha(new \DateTime());
         $participacion->setUsuarioParticipa($usuarioId);
         $participacion->setUsuarioEvaluado($usuarioId);
         $participacion->setEstado($estado_part);
         if ($carreraId) {
             $participacion->setCarrera($carreraId);
         }
         $this->em->persist($participacion);
     }
     $puntaje = 0;
     // Registrar respuestas segun tipo de pregunta
     foreach ($preguntas as $preg) {
         $respuesta = new \AT\vocationetBundle\Entity\Respuestas();
         $respuesta->setParticipacion($participacion);
         $respuesta->setPregunta($preg['id']);
         $res = $respuestas[$preg['id']];
         // Asignar respuesta numerica o texto y calcular puntaje segun el tipo de pregunta
         switch ($preg['preguntaTipoId']) {
             case 1:
                 $respuesta->setRespuestaNumerica($res);
                 $valor = 0;
                 if (isset($preg['opciones'][$res]['peso'])) {
                     $valor = $preg['opciones'][$res]['peso'];
                 }
                 $respuesta->setValor($valor);
                 break;
             case 2:
                 $valor = 0;
                 foreach ($res as $r) {
                     if (isset($preg['opciones'][$r]['peso'])) {
                         $valor += $preg['opciones'][$r]['peso'];
                     }
                 }
                 $res = implode(",", $res);
                 $respuesta->setRespuestaTexto($res);
                 $respuesta->setValor($valor);
                 break;
             case 3:
                 $respuesta->setRespuestaTexto($res);
                 $valor = 0;
                 $res = explode(",", $res);
                 $pos = count($res);
                 foreach ($res as $r) {
                     if (isset($preg['opciones'][$r]['peso'])) {
                         $peso = $preg['opciones'][$r]['peso'];
                         $valor += $peso * $pos;
                     }
                     $pos--;
                 }
                 $respuesta->setValor($valor);
                 break;
             case 4:
                 $respuesta->setRespuestaNumerica($res);
                 $valor = $res;
                 $respuesta->setValor($valor);
                 break;
             case 5:
                 $respuesta->setRespuestaNumerica($res);
                 $valor = $res;
                 $respuesta->setValor($valor);
                 break;
             case 6:
                 $respuesta->setRespuestaNumerica($res);
                 $valor = $res / 100;
                 $respuesta->setValor($valor);
                 break;
             case 7:
                 $respuesta->setRespuestaNumerica($res);
                 $valor = $res;
                 $respuesta->setValor($valor);
                 break;
             case 8:
                 $respuesta->setRespuestaTexto($res);
                 $valor = 0;
                 $respuesta->setValor($valor);
                 break;
         }
         $puntaje += $valor;
         $this->em->persist($respuesta);
     }
     if ($adicionales) {
         foreach ($adicionales as $key => $a) {
             $json = json_encode($a);
             $adicional = new \AT\vocationetBundle\Entity\RespuestasAdicionales();
             $adicional->setParticipacion($participacion);
             $adicional->setRespuestaKey($key);
             $adicional->setRespuestaJson($json);
             $this->em->persist($adicional);
         }
     }
     $this->em->flush();
     return $puntaje;
 }