/** * Ejecutar la accion * * @param int $id_usuario id del usuario que realiza la accion * @throws \Exception usuario no encontrado * @return int 0 si completada con exito ; -1 en caso contrario */ public function ejecutar($id_accion) { // TODO $ret = 0; //COmpruebo si la accion existe $accGrup = AccionesGrupales::model()->findByPk($id_accion); if ($accGrup === null) { throw new Exception("Accion grupal inexistente.", 404); } $creador = $accGrup->usuarios; $equipo = $creador->equipos; $sigPartido = $equipo->sigPartido; //1.- Añadir bonificación al partido $ret = min($ret, Equipos::aumentar_recursos_equipo($equipo->id_equipo, "aforo_base", Efectos::$datos_acciones['FinanciarPelicula']['aforo_base'])); $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, "nivel", Efectos::$datos_acciones['FinanciarPelicula']['nivel_equipo'])); //2.- Dar bonificación al creador $ret = min($ret, Recursos::aumentar_recursos($creador->id_usuario, "animo_gen", Efectos::$datos_acciones['FinanciarPelicula']['bonus_creador']['animo_gen'])); $ret = min($ret, Recursos::aumentar_recursos($creador->id_usuario, "dinero_gen", Efectos::$datos_acciones['FinanciarPelicula']['bonus_creador']['dinero_gen'])); //3.- Devolver influencias $participantes = $accGrup->participaciones; foreach ($participantes as $participacion) { $infAportadas = $participacion->influencias_aportadas; $usuario = $participacion->usuarios_id_usuario; //if (Recursos::aumentar_recursos($usuario,"influencias",$infAportadas) == 0) { if (Recursos::disminuir_influencias_bloqueadas($usuario, $infAportadas) == 0) { $ret = min($ret, 0); } else { $ret = -1; } } //4.- Finalizar funciónK return $ret; }
public function ejecutar($id_accion) { $ret = 0; $accGrup = AccionesGrupales::model()->findByPk($id_accion); if ($accGrup === null) { throw new Exception("Accion grupal inexistente.", 404); } $creador = $accGrup->usuarios; $equipo = $creador->equipos; $sigPartido = $equipo->sigPartido; //1.- Añadir bonificación al partido $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, "nivel", Efectos::$datos_acciones['IncentivoEconomico']['nivel_equipo'])); $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, "moral", Efectos::$datos_acciones['IncentivoEconomico']['moral'])); //2.- Dar bonificación al creador $ret = min($ret, Recursos::aumentar_recursos($creador->id_usuario, "influencias", Efectos::$datos_acciones['IncentivoEconomico']['bonus_creador']['influencias'])); //3.- Devolver influencias $participantes = $accGrup->participaciones; foreach ($participantes as $participacion) { $infAportadas = $participacion->influencias_aportadas; $usuario = $participacion->usuarios_id_usuario; //if (Recursos::aumentar_recursos($usuario,"influencias",$infAportadas) == 0) if (Recursos::disminuir_influencias_bloqueadas($usuario, $infAportadas) == 0) { $ret = min($ret, 0); } else { $ret = -1; } } //Finalizar función return $ret; }
public function ejecutar($id_usuario, $id_partido, $id_equipo) { $ret = 0; //Traer el array de efectos parent::ejecutar($id_usuario, $id_partido, $id_equipo); //Validar usuario $us = Usuarios::model()->findByPk($id_usuario); if ($us === null) { throw new Exception("Usuario incorrecto.", 404); } // Cojo el equipo del usuario $equipo = $us->equipos; // Modifico Los factores de ese partido $ret = min($ret, Partidos::aumentar_factores($id_partido, $equipo->id_equipo, "defensivo", Efectos::$datos_acciones['RetransmitirRRSS']['defensivo'])); //Modifico los recursos Del usuario if (Recursos::aumentar_recursos($id_usuario, "animo", Efectos::$datos_acciones['RetransmitirRRSS']['animo']) == 0) { $ret = min($ret, 0); } else { $ret = -1; } // Incorporo un registro a la tabla acciones turno si el usuario aun no esta en ella AccionesTurno::incorporarAccion($id_usuario, $id_partido, $id_equipo); //Finalizar función return $ret; }
public function ejecutar($id_accion) { $ret = 0; $accGrup = AccionesGrupales::model()->findByPk($id_accion); if ($accGrup === null) { throw new Exception("Accion grupal inexistente.", 404); } $creador = $accGrup->usuarios; $equipo = $creador->equipos; $sigPartido = $equipo->sigPartido; //1.- Añadir bonificación al partido $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, 'ambiente', Efectos::$datos_acciones['Pintarse']['ambiente'])); $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, "moral", Efectos::$datos_acciones['Pintarse']['moral'])); $ret = min($ret, Partidos::aumentar_factores($sigPartido->id_partido, $equipo->id_equipo, "ofensivo", Efectos::$datos_acciones['Pintarse']['ofensivo'])); //2.- Dar bonificación al creador $ret = min($ret, Recursos::aumentar_recursos($creador->id_usuario, 'animo', Efectos::$datos_acciones['Pintarse']['bonus_creador']['animo'])); //3.- Devolver influencias y dar animo de la accion $participantes = $accGrup->participaciones; foreach ($participantes as $participacion) { $infAportadas = $participacion->influencias_aportadas; $usuario = $participacion->usuarios_id_usuario; $ret = min($ret, Recursos::aumentar_recursos($usuario, "animo", Efectos::$datos_acciones['Pintarse']['animo'])); //$ret = min($ret,Recursos::aumentar_recursos($usuario,"influencias",$infAportadas)); $ret = min($ret, Recursos::disminuir_influencias_bloqueadas($usuario, $infAportadas)); } //Finalizar función return $ret; }
public function generaLiga($liga) { $interval = new DateInterval("P7D"); $fecha = new DateTime("2014-11-2"); $format = "Y-m-d"; foreach ($liga as $num => $partidos) { $fechaPartido = $fecha->format($format); $jornada = new Jornadas($this->id, $fechaPartido); $jornada->persit(); $fecha->add($interval); foreach ($partidos as $jugado) { $partido = new Partidos($jornada->getId(), $jugado['local'], $jugado['visitante']); $partido->persit(); } } }
public function ejecutar($id_usuario, $id_partido, $id_equipo) { $ret = 0; //Traer el array de efectos parent::ejecutar($id_usuario, $id_partido, $id_equipo); //Validar usuario $us = Usuarios::model()->findByPk($id_usuario); if ($us === null) { throw new Exception("Usuario incorrecto.", 404); } // Cojo el equipo del usuario $equipo = $us->equipos; // Modifico Los factores de ese partido $ret = min($ret, Partidos::aumentar_factores($id_partido, $equipo->id_equipo, "moral", Efectos::$datos_acciones['CorearEstadio']['moral'])); // Incorporo un registro a la tabla acciones turno si el usuario aun no esta en ella AccionesTurno::incorporarAccion($id_usuario, $id_partido, $id_equipo); //Finalizar función return $ret; }
private function actualizaSiguientePartido($id_equipo) { //Tomar hora actual $tiempo = time(); $primerTurno = Partido::PRIMER_TURNO; //Generar criterio de búsqueda para conocer el siguiente encuentro $busqueda = new CDbCriteria(); $busqueda->addCondition(':bTiempo <= hora'); $busqueda->addCondition('turno = :bPrimerTurno'); $busqueda->addCondition('((equipos_id_equipo_1 = :bequipo) OR (equipos_id_equipo_2 = :bequipo))'); $busqueda->params = array(':bTiempo' => $tiempo, ':bPrimerTurno' => $primerTurno, ':bequipo' => $id_equipo); $busqueda->order = 'hora ASC'; //Buscamos el siguiente partido $partidos = Partidos::model()->find($busqueda); $equipo = Equipos::model()->findByPk($id_equipo); if ($equipo === null) { throw new Exception("El equipo no existe (Partido.php).", 404); } if ($partidos === null) { //Si no hay más partidos que jugar esta temporada, el siguiente será NULL $equipo->partidos_id_partido = null; } else { //Asignamos el siguiente partido $equipo->partidos_id_partido = $partidos->id_partido; } //Guardamos los datos if (!$equipo->save()) { throw new Exception("Error al situar proximo partido.", 404); } }
/** * Devuelve el modelo de datos basado en la clave primaria dada por la variable GET * * > Funcion predeterminada de Yii * * @param int $id id del modelo que se va a cargar * @throws \CHttpException El modelo de datos no se encuentra * @return \AccionesGrupales modelo de datos */ public function loadModel($id) { $model = Partidos::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
<?php /**** SCRIPT DE TURNOS DE PARTIDOS ****/ //1.- Seleccionar partidos para los que haya que generar un nuevo turno (activos) //2.- Iterar sobre la lista de partidos resultante //Selecciono partidos con hora mayor que la de la tabla <<Partidos>> y //turnos entre 0 y 10 $tiempo = time(); $primerTurno = Partido::PRIMER_TURNO; $ultimoTurno = Partido::ULTIMO_TURNO; $busqueda = new CDbCriteria(); $busqueda->addCondition("'" . $tiempo . "' >= hora"); $busqueda->addCondition("turno >= '" . $primerTurno . "' "); $busqueda->addCondition("turno <= '" . $ultimoTurno . "' "); $partidos = Partidos::model()->findAll($busqueda); foreach ($partidos as $partido) { $partido = new Partido($partido->id_partido); $partido->jugarse(); } /****/
/** * Funcion auxiliar que toma la lista de partidos divididos por jornadas * * @static * * @return array asociativo con los partidos divididos en jornadas */ public static function partidosPorJornadas() { // Obtener la lista de partidos $listaPartidos = Partidos::model()->findAll(); // Crear array inicial de datos $parPorJornadas = array(); // Agregar datos al array foreach ($listaPartidos as $p) { $parPorJornadas[$p->jornada][] = $p; } return $parPorJornadas; }
/** Funcion auxiliar que modifica la tabla de partidos. A diferencia del * aumento normal de factores, éste se hace de forma proporcional. * * @paremetro partido en el que modificamos sus factores * @paremetro equipo al que pertenece * @parametro columna sobre la que modificamos (moral,ambiente,ind.ofensivo...) * @parametro proporción de recursos que aumentamos * @devuelve flag de error */ public function aumentar_factores_prop($id_partido, $id_equipo, $columna, $proporcion) { //Cojo el modelo correspondiente a ese id $partido = Partidos::model()->findByPK($id_partido); //Comprobación de seguridad if ($partido === null) { throw new CHttpException(404, "Partido no encontrado. (aumentar_factores_prop,Helper.php)"); } //Comrpuebo si juega de local o de visitante if ($partido->equipos_id_equipo_1 == $id_equipo) { $factor = self::$datos_factores['local'][$columna]; //Aumentar proporcionalmente $valor_nuevo = $partido->{$factor} + $partido->{$factor} * $proporcion; //Si fallara tiene que ser por el $factor,comprobar si es asi $partido->setAttributes(array('' . $factor . '' => $valor_nuevo)); if ($partido->save()) { return 0; } else { return -1; } } else { if ($partido->equipos_id_equipo_2 == $id_equipo) { $factor = self::$datos_factores['visitante'][$columna]; //Aumentar proporcionalmente $valor_nuevo = $partido->{$factor} + $partido->{$factor} * $proporcion; //Si fallara tiene que ser por el $factor,comprobar si es asi $partido->setAttributes(array('' . $factor . '' => $valor_nuevo)); if ($partido->save()) { return 0; } else { return -1; } } else { //Si ha llegado aqui por alguna cosa, es que no coincide con ninguno de //los id de los equipo del partido return -1; } } }
/** * Añade un nuevo partido entre los equipos indicados en la fecha indicada. * * >ADVERTENCIA: * Los datos (dif_niveles, indOfens, ...) puden cambiar hasta que empiece el partido, * aqui se rellenan (porque se me ha pedido explicitamente), * pero deberían actualizarse en el primer turno de partido. * * >ATENCION los partidos empiezan con sigpartido -> id = 0 !!!! * * @param int $id_local id del equipo local * @param int $id_visitande id del equipo visitante * @param int $time hora del partido * @param int $jornada jornada de la liga * @param bool $generateNewTransaction generar nueva transaccion * * @throws \Exception Los viajes en el tiempo no esta implemetados en esta version del juego. * @throws \Exception excepcion interna * @return void */ public function generaPartido($id_local, $id_visitande, $time, $jornada = 0, $generateNewTransaction = true) { if ($time < time()) { throw new Exception("Los viajes en el tiempo no esta implemetados en esta version del juego."); } if ($generateNewTransaction) { $transaction = Yii::app()->db->beginTransaction(); } $equipo_local = Equipos::model()->findByPk($id_local); $equipo_visitante = Equipos::model()->findByPk($id_visitande); if ($equipo_local === null || $equipo_visitante === null) { return; } try { $partido = new Partidos(); $partido->setAttributes(array('equipos_id_equipo_1' => $id_local, 'equipos_id_equipo_2' => $id_visitande, 'hora' => $time, 'jornada' => $jornada, 'nivel_local' => $equipo_local->nivel_equipo, 'nivel_visitante' => $equipo_visitante->nivel_equipo, 'dif_niveles' => $equipo_local->nivel_equipo - $equipo_visitante->nivel_equipo, 'aforo_local' => $equipo_local->aforo_base, 'aforo_visitante' => $equipo_visitante->aforo_base, 'ofensivo_local' => $equipo_local->factor_ofensivo, 'ofensivo_visitante' => $equipo_visitante->factor_ofensivo, 'defensivo_local' => $equipo_local->factor_defensivo, 'defensivo_visitante' => $equipo_visitante->factor_defensivo)); $partido->save(); if ($equipo_local->partidos_id_partido == 0 || $time < $equipo_local->sigPartido->hora) { $equipo_local->setAttributes(array('partidos_id_partido' => $partido->id_partido)); $equipo_local->save(); } if ($equipo_visitante->partidos_id_partido == 0 || $time < $equipo_visitante->sigPartido->hora) { $equipo_visitante->setAttributes(array('partidos_id_partido' => $partido->id_partido)); $equipo_visitante->save(); } if ($generateNewTransaction) { $transaction->commit(); } } catch (Exception $ex) { if ($generateNewTransaction) { $transaction->rollback(); } throw $ex; } }