Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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();
         }
     }
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 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);
     }
 }
Ejemplo n.º 8
0
 /**
  * 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;
 }
Ejemplo n.º 9
0
<?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();
}
/****/
Ejemplo n.º 10
0
 /** 
  * 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;
 }
Ejemplo n.º 11
0
 /** 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;
         }
     }
 }
Ejemplo n.º 12
0
 /**
  * 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;
     }
 }