public function beforeAction($action) { if (!parent::beforeAction($action)) { return false; } if (isset(Yii::app()->user->usIdent)) { // Obtiene la clasificación de los equipos $clasificacion = Clasificacion::model()->with('equipos')->findAll(array('order' => 'posicion ASC')); Yii::app()->setParams(array('clasificacion' => $clasificacion)); // Obtiene la información del usuario $usuario = Usuarios::model()->with('recursos')->findByPK(Yii::app()->user->usIdent); Yii::app()->setParams(array('usuario' => $usuario)); // Obtiene la información de la mensajeria //Saca la lista de los emails recibidos por el usuario y que ademas no los haya leido $mensajeria = Emails::model()->findAllByAttributes(array('id_usuario_to' => Yii::app()->user->usIdent, 'leido' => 0)); $countmens = count($mensajeria); Yii::app()->setParams(array('countmens' => $countmens)); // Obtiene la información de las notificaciones //Saca la lista de las notinicaciones recibidas por el usuario y que ademas no haya leido $notificaciones = Usrnotif::model()->findAllByAttributes(array('usuarios_id_usuario' => Yii::app()->user->usIdent, 'leido' => 0)); $countnot = count($notificaciones); Yii::app()->setParams(array('countnot' => $countnot)); } Yii::app()->setParams(array('bgclass' => 'bg-estadio-fuera')); return true; }
/** * Muestra la clasificacion de todos los equipos * * @route jugadorNum12/equipos * @return void */ public function actionIndex() { /* Actualizar datos de usuario (recuros,individuales y grupales) */ Usuarios::model()->actualizaDatos(Yii::app()->user->usIdent); /* Fin de actualización */ $modeloClasificacion = Clasificacion::model()->findAll(array('order' => 'posicion ASC')); if ($modeloClasificacion === null) { Yii::app()->user->setFlash('clasificacion', 'Clasificacion incorrecta. (actionIndex, EquiposController).'); } $this->render('index', array('modeloC' => $modeloClasificacion)); }
private function actualizaClasificacion() { try { $local = Clasificacion::model()->findByAttributes(array('equipos_id_equipo' => $this->id_local)); $visit = Clasificacion::model()->findByAttributes(array('equipos_id_equipo' => $this->id_visitante)); //Miro quien ha ganado el partido //Sumo los puntos y los goles a favor y en contra de cada equipo if ($this->goles_local > $this->goles_visitante) { $puntosLocal = $local->puntos; $puntosLocal = $puntosLocal + 3; $ganadosLocal = $local->ganados; $perdidosVisit = $visit->perdidos; $local->setAttributes(array('puntos' => $puntosLocal)); $local->setAttributes(array('ganados' => $ganadosLocal + 1)); $visit->setAttributes(array('perdidos' => $perdidosVisit + 1)); } else { if ($this->goles_local < $this->goles_visitante) { $puntosVisitante = $visit->puntos; $puntosVisitante = $puntosVisitante + 3; $ganadosVisit = $visit->ganados; $perdidosLocal = $local->perdidos; $local->setAttributes(array('perdidos' => $perdidosLocal + 1)); $visit->setAttributes(array('ganados' => $ganadosVisit + 1)); $visit->setAttributes(array('puntos' => $puntosVisitante)); } else { $puntosLocal = $local->puntos; $puntosLocal = $puntosLocal + 1; $puntosVisitante = $visit->puntos; $puntosVisitante = $puntosVisitante + 1; $empatadosVisit = $visit->empatados; $empatadosLocal = $local->empatados; $local->setAttributes(array('empatados' => $empatadosLocal + 1)); $visit->setAttributes(array('empatados' => $empatadosVisit + 1)); $local->setAttributes(array('puntos' => $puntosLocal)); $visit->setAttributes(array('puntos' => $puntosVisitante)); } } //una vez actualizado los puntos, toca actualizar las diferencia de goles $difPartidoLocal = $this->goles_local - $this->goles_visitante; $difPartidoVisit = $this->goles_visitante - $this->goles_local; $difTablaLocal = $local->diferencia_goles; $difTablaVisit = $visit->diferencia_goles; $local->setAttributes(array('diferencia_goles' => $difTablaLocal + $difPartidoLocal)); $visit->setAttributes(array('diferencia_goles' => $difTablaVisit + $difPartidoVisit)); $visit->save(); $local->save(); //Una vez hecho esto,voy a la clasificacion y recalculo las posiciones //Para ello voy a coger ahora todos los registros de clasificacion //Y utilizando ORDER BY en la consulta voy a ir colocando las posiciones //Con respecto a los puntos y a la diferencia de goles $criteria = new CDbCriteria(); $criteria->order = 'puntos DESC,diferencia_goles DESC'; /*Otra opcion puede ser esta $Puestos = Clasificacion::model()->findAll( array('order'=>'puntos ASC,diferencia_goles DESC'));*/ $puestos = Clasificacion::model()->findAll($criteria); $i = 1; foreach ($puestos as $puesto) { $puesto->posicion = $i; $i++; $puesto->save(); } } catch (Exception $exc) { throw new Exception("Error al recalcular la clasificación", 1); } }
echo $form->errorSummary($model); ?> <?php echo $form->textFieldRow($model, 'nombre', array('class' => 'span5', 'maxlength' => 100)); ?> <?php echo $form->textAreaRow($model, 'sinopsis', array('rows' => 6, 'cols' => 50, 'class' => 'span8')); ?> <?php echo $form->dropDownListRow($model, 'categoria_id', CHtml::listData(Categoria::model()->findAll(), 'id', 'nombre'), array('prompt' => 'Seleccione una Categoria', 'class' => 'span5')); ?> <?php echo $form->dropDownListRow($model, 'clasificacion_id', CHtml::listData(Clasificacion::model()->findAll(), 'id', 'nombre'), array('prompt' => 'Seleccione una Clasificacion', 'class' => 'span5')); ?> <?php echo $form->dropDownListRow($model, 'estado', array('1' => 'Activo', '0' => 'Desactivado'), array('class' => 'span5', 'prompt' => 'Seleccione una Estado')); ?> <div class="form-actions"> <?php $this->widget('bootstrap.widgets.TbButton', array('buttonType' => 'submit', 'type' => 'primary', 'label' => $model->isNewRecord ? 'Creaar' : 'Guardar')); ?> </div> <?php $this->endWidget();
/** * Crea los emparejamientos para los equipos dados por parametro * * Dada una lista de id_equipos, genera unos emparejamientos con el codigo se sam. * Ej : calendario(array(1,2,6,7,8)); -> emaprejamientos para los equipos_id = 1,2,3,6,7,8 (deja fuera al 4 y 5) * Si no se pasan paritcipantes, coje todos los equipos que haya en la tabla Clasificacion. * * @param int[] $participantes id de los equipos participantes * @return int[][] */ private function calendario($participantes = null) { if ($participantes === null) { //devolver una lista con todos los id_equipo $i = 0; $participantes = array(); $consulta = Clasificacion::model()->findAll(); foreach ($consulta as $row) { $participantes[$i++] = (int) $row['equipos_id_equipo']; } } $N = count($participantes); $calendario = array(); //https://github.com/samuelmgalan/CalendarioLiga/blob/master/src/src/Calendario.java $cont = 0; $cont2 = $N - 2; for ($i = 0; $i < $N - 1; $i++) { for ($j = 0; $j < $N / 2; $j++) { $eq0 = $participantes[$cont++]; if ($cont == $N - 1) { $cont = 0; } if ($j == 0) { $eq1 = $participantes[$N - 1]; } else { $eq1 = $participantes[$cont2--]; if ($cont2 < 0) { $cont2 = $N - 2; } } //Elaboro la matriz final de enfrentamientos por jornada if ($j == 0 && $i % 2 == 0) { //primera vuelta $calendario[$i][$j][0] = $eq1; $calendario[$i][$j][1] = $eq0; //segunda vuelta $calendario[$i + $N - 1][$j][0] = $eq0; $calendario[$i + $N - 1][$j][1] = $eq1; } else { //primera vuelta $calendario[$i][$j][0] = $eq0; $calendario[$i][$j][1] = $eq1; //segunda vuelta $calendario[$i + $N - 1][$j][0] = $eq1; $calendario[$i + $N - 1][$j][1] = $eq0; } } } return $calendario; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = Clasificacion::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }