示例#1
0
 public function encontrarArea($id_inscripcion)
 {
     $re = new ResultadosExamen();
     $resultados = $re->find()->where(['id_inscripcion' => $id_inscripcion, 'id_tipo' => 2])->limit(3)->orderBy(['nota' => SORT_DESC])->all();
     foreach ($resultados as $prof) {
         $actividad = $re->find()->where(['id_inscripcion' => $id_inscripcion, 'id_tipo' => 1, 'id_area' => $prof->id_area])->one();
         if ($actividad->nota > $prof->nota) {
             $diferencia = $actividad->nota - $prof->nota;
         } else {
             $diferencia = $prof->nota - $actividad->nota;
         }
         if ($diferencia >= 0 && $diferencia <= 25) {
             return $prof;
         }
     }
 }
 public function actionSistemaExperto($id)
 {
     $negocio = new RespuestaExamenNegocio();
     $perfil = $negocio->procesarRespuestas($id);
     $resultadosExamen = new ResultadosExamen();
     $dataProvider = new ActiveDataProvider(['query' => ResultadosExamen::find()->where(['id_inscripcion' => $id])->orderBy(['id_area' => SORT_ASC])]);
     if ($perfil != null) {
         $valor = $perfil->getValor();
     } else {
         $valor = 'no se encontro un resultado';
     }
     if (strcasecmp($valor, \app\SistemaExperto\backwardchain::$DEFINIDO) == 0) {
         $profesion = $negocio->encontrarArea($id);
         $carrera = new ActiveDataProvider(['query' => Carrera::find()->where(['id_area' => $profesion->id_area])]);
     } else {
         $profesion = null;
         $carrera = null;
     }
     return $this->render('resultado', ['dataProvider' => $dataProvider, 'perfil' => $valor, 'profesion' => $profesion, 'carrera' => $carrera]);
 }
示例#3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getResultadosExamens()
 {
     return $this->hasMany(ResultadosExamen::className(), ['id_alumno' => 'id']);
 }
示例#4
0
 private function obtenerDisprepancia($id_inscripcion)
 {
     $discrepancia = new hecho();
     $discrepancia->setVariable(self::$DISCREPANCIA_PROF_PREF);
     $re = new ResultadosExamen();
     $resultados = $re->find()->where(['id_inscripcion' => $id_inscripcion, 'id_tipo' => 2])->andWhere(['>=', 'nota', 60])->limit(3)->orderBy(['nota' => SORT_DESC])->all();
     $valid = FALSE;
     foreach ($resultados as $prof) {
         $actividad = $re->find()->where(['id_inscripcion' => $id_inscripcion, 'id_tipo' => 1, 'id_area' => $prof->id_area])->one();
         if ($actividad->nota > $prof->nota) {
             $diferencia = $actividad->nota - $prof->nota;
         } else {
             $diferencia = $prof->nota - $actividad->nota;
         }
         $valid = $valid || $diferencia >= 0 && $diferencia <= 25;
     }
     $discrepancia->setValor($valid ? self::$NO_EXISTE : self::$EXISTE);
     $discrepancia->setEsNumerico(FALSE);
     $this->bh->addHecho($discrepancia);
 }