Exemplo n.º 1
0
 public static function calcular16pf($resultadosParciales)
 {
     $Escalas = array();
     // arreglo para guardar los objetos Escalas
     $resultadosEscalas = array();
     // arreglo para guardar los resultados por cada Objeto Escala
     //     $r = new Resultadosparciales();
     $prueba = $resultadosParciales[0]->getPruebas();
     // la prueba actual
     $aspirante = $resultadosParciales[0]->getAspirantes();
     // el aspirante actual
     $aspirantes_id = $aspirante->getId();
     // el id de aspirante
     $pruebas_id = $prueba->getId();
     // el id de la prueba
     $perfil = $prueba->getEvaluaciones()->getPerfil();
     // el perfil en el cual se esta evaluando
     $criteria = new Criteria();
     // creo una nueva consulta
     $criteria->add(ResultadosPeer::ASPIRANTES_ID, $aspirantes_id);
     $criteria->add(ResultadosPeer::PRUEBAS_ID, $pruebas_id);
     $resultado = ResultadosPeer::doSelectOne($criteria);
     // me traigo el Resultado para
     foreach ($resultadosParciales as $resultadoParcial) {
         // por cada resultado parcial obtengo la respuesta
         //          $respuesta = new Respuestas();
         //          $resultadoParcial = new Resultadosparciales();
         $preguntas_id = $resultadoParcial->getPreguntasId();
         $opciones_id = $resultadoParcial->getOpcionesId();
         $criteria = new Criteria();
         $criteria->add(RespuestasPeer::PREGUNTAS_ID, $preguntas_id);
         $criteria->add(RespuestasPeer::OPCIONES_ID, $opciones_id);
         $respuesta = RespuestasPeer::doSelectOne($criteria);
         $Respuestasescalas = $respuesta->getRespuestasescalass();
         //cuando ya tengo la respuestas le pido las RespuestasEscalas
         //          echo $Respuestasescalas[0];
         //          die();
         foreach ($Respuestasescalas as $Respuestaescala) {
             // por cada Respuesta escala
             //              $Respuestaescala = new Respuestasescalas();
             //              var_dump($Respuestaescala->getEscalas());
             //die();
             $Escalas[$Respuestaescala->getEscalas()->getId()] = $Respuestaescala->getEscalas();
             // Guardo la escala en el arreglo
             //
             $resultadosEscalas[$Respuestaescala->getEscalas()->getId()] = (isset($resultadosEscalas[$Respuestaescala->getEscalas()->getId()]) ? $resultadosEscalas[$Respuestaescala->getEscalas()->getId()] : 0) + $Respuestaescala->getValor();
         }
         //            die();
     }
     //      $percentiles_por_escala = array();
     $aprobado_general = true;
     foreach ($resultadosEscalas as $EscalaId => $valor) {
         $Escala = $Escalas[$EscalaId];
         $Resultadosescalas = new Resultadosescalas();
         $Resultadosescalas->setEscalas($Escala);
         $Resultadosescalas->setResultados($resultado);
         //$Resultadosescalas->setValor($valor);
         $percentil = PercentilesPeer::getPercentilPorEscala($EscalaId, $valor);
         //          $percentil = new Percentiles();
         //          $percentil->getPercentil();
         //          $percentiles_por_escala[$Escala] = $percentil->getPercentil();
         $Resultadosescalas->setValor($percentil->getPercentil());
         $Resultadosescalas->save();
         $aprobado = PercentilesPeer::evaluarValorEsperado($perfil, $percentil);
         // devuelve true si aprobo, sino false
         if ($aprobado === false) {
             $aprobado_general = false;
         }
     }
     if ($aprobado_general === true) {
         //            $prueba = new Tests();
         $result = ResultadosPeer::getResultado($prueba->getTestsId(), $aspirante);
         $result->setEstadosresultadosId(sfConfig::get('app_resultado_apto'));
         $result->save();
     }
 }
// Escala A
$criteria->add(EscalasPeer::TESTS_ID, 3);
// 16pf
$escala = EscalasPeer::doSelectOne($criteria);
$t->is("A", $escala->getNombre(), "La escala es A");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 0);
$t->is(1, $percentiles[0]->getPercentil(), "En la escala A, 0 puntos = percentil 1");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 1);
$t->is(1, $percentiles[0]->getPercentil(), "En la escala A, 1 puntos = percentil 1");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 2);
$t->is(1, $percentiles[0]->getPercentil(), "En la escala A, 2 puntos = percentil 1");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 3);
$t->is(1, $percentiles[0]->getPercentil(), "En la escala A, 3 puntos = percentil 1");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 4);
$t->is(2, $percentiles[0]->getPercentil(), "En la escala A, 4 puntos = percentil 2");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 5);
$t->is(2, $percentiles[0]->getPercentil(), "En la escala A, 5 puntos = percentil 2");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 6);
$t->is(3, $percentiles[0]->getPercentil(), "En la escala A, 6 puntos = percentil 3");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 7);
$t->is(4, $percentiles[0]->getPercentil(), "En la escala A, 7 puntos = percentil 4");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 8);
$t->is(5, $percentiles[0]->getPercentil(), "En la escala A, 8 puntos = percentil 5");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 9);
$t->is(6, $percentiles[0]->getPercentil(), "En la escala A, 9 puntos = percentil 6");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 10);
$t->is(7, $percentiles[0]->getPercentil(), "En la escala A, 10 puntos = percentil 7");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 11);
$t->is(8, $percentiles[0]->getPercentil(), "En la escala A, 11 puntos = percentil 8");
$percentiles = PercentilesPeer::getPercentilPorEscala($escala->getId(), 12);
$t->is(9, $percentiles[0]->getPercentil(), "En la escala A, 12 puntos = percentil 9");