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]); }
/** * @return \yii\db\ActiveQuery */ public function getResultadosExamens() { return $this->hasMany(ResultadosExamen::className(), ['id_alumno' => 'id']); }
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); }