/**
  * Muestra el arbol de habilidades completo 
  *
  * @route  jugadorNum12/habilidades
  * @return void
  */
 public function actionIndex()
 {
     /* Actualizar datos de usuario (recuros,individuales y grupales) */
     Usuarios::model()->actualizaDatos(Yii::app()->user->usIdent);
     /* Fin de actualización */
     //Sacar una lista de las acciones desbloqueadas de un usuario
     //$accionesDesbloqueadas = Desbloqueadas::model()->findAllByAttributes(array('usuarios_id_usuario'=>Yii::app()->user->usIdent));
     //Sacar una lista con los recursos del usuario
     $recursosUsuario = Recursos::model()->findByAttributes(array('usuarios_id_usuario' => Yii::app()->user->usIdent));
     //Sacar el nivel del usuario
     $usuario = Usuarios::model()->findByPK(Yii::app()->user->usIdent);
     $accionesGrupales = AccionesGrupales::model()->findAllByAttributes(array('usuarios_id_usuario' => Yii::app()->user->usIdent));
     $accionesIndividuales = AccionesIndividuales::model()->findAllByAttributes(array('usuarios_id_usuario' => Yii::app()->user->usIdent));
     //Comprobaciones de seguridad
     /*if (($accionesDesbloqueadas === null) || ($recursosUsuario === null)) {
     			Yii::app()->user->setFlash('error', 'Acciones o recursos no encontrados. (actionIndex, AccionesController).');
     		} */
     //A partir de las acciones sacamos las habilidades para poder mostrarlas
     /* $acciones = array();
     		foreach ($accionesDesbloqueadas as $habilidad)
     		{
     			$hab = Habilidades::model()->findByPK($habilidad['habilidades_id_habilidad']);
     
     			//Comprobación de seguridad
     			if ($hab === null) {
     				Yii::app()->user->setFlash('habilidad', 'Habilidad no encontrada. (actionIndex,AccionesController).');
     			}	
     				
     			$acciones[] = $hab;
     		} */
     $acciones = Habilidades::model()->findAll();
     //Envía los datos para que los muestre la vista
     $this->render('index', array('acciones' => $acciones, 'recursosUsuario' => $recursosUsuario, 'usuario' => $usuario, 'accionesGrupales' => $accionesGrupales, 'accionesIndividuales' => $accionesIndividuales));
 }
 /**
  * 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;
 }
Beispiel #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;
 }
Beispiel #5
0
 public function eliminaGrupales($id_equipo)
 {
     $grupales = AccionesGrupales::model()->findAllByAttributes(array('equipos_id_equipo' => $id_equipo, 'completada' => 1));
     foreach ($grupales as $gp) {
         Participaciones::model()->deleteAllByAttributes(array('acciones_grupales_id_accion_grupal' => $gp->id_accion_grupal));
         AccionesGrupales::model()->deleteByPk($gp->id_accion_grupal);
     }
 }
 /**
  * Cambiar la aficion a la que pertenece un usuario
  *
  * Actualiza la tabla <usuarios> y <equipos>
  *
  * Las acciones grupales en las que participaba el usuario en el equipo original se 
  * quedan intactas; el creador de la accion podra si quiere, eliminar esas aportaciones
  * 
  * > El id del jugador y el equipo al que pertence se recogen de la variable de sesion
  *
  * @param int $id_nuevo_equipo     id del nuevo equipo al que cambia el jugador
  *
  * @route       jugadorNum12/equipos/cambiar/{$id_nuevo_equipo}
  * @redirect 	jugadorNum12/equipos/ver/{$id_equipo_nuevo}
  * @return      void
  */
 public function actionCambiar($id_nuevo_equipo)
 {
     /* Actualizar datos de usuario (recuros,individuales y grupales) */
     Usuarios::model()->actualizaDatos(Yii::app()->user->usIdent);
     /* Fin de actualización */
     //Coger id de usuario
     $id_usuario = Yii::app()->user->usIdent;
     $modeloUsuario = Usuarios::model()->findByPk($id_usuario);
     $modeloEquipo = Equipos::model()->findByPk($id_nuevo_equipo);
     //Si el id del nuevo equipo corresponde con el mismo en el que estaba error
     //Si el id nuevo no corresponde a ningun equipo tambien devuelve error
     if ($id_nuevo_equipo == $modeloUsuario->equipos_id_equipo) {
         Yii::app()->user->setFlash('equipo_actual', 'Tienes que cambiarte a un equipo diferente al actual.');
         $this->redirect(array('equipos/ver/', 'id_equipo' => $id_nuevo_equipo));
     } else {
         if ($modeloEquipo === null) {
             Yii::app()->user->setFlash('equipo', 'No existe el equipo al que quiere cambiarse.');
         } else {
             //Coger de <<acciones_grupales>> todos los registros con id_usuario
             $acciones_grupales = AccionesGrupales::model()->findAllByAttributes(array('usuarios_id_usuario' => $id_usuario));
             foreach ($acciones_grupales as $accion_grupal) {
                 AccionesGrupales::finalizaGrupal($accion_grupal->id_accion_grupal, true);
             }
             /*ATENCION las acciones en las que el participa ya se encarga el usuario que las creo de borrarlas
             		sino le interesa tener ese aportacion de recursos*/
             //Una vez devueltos los recursos a la gente que participo en las acciones que creo el usuario
             //cambio el id del equipo al que pertenece y guardo el modelo modificado
             $modeloUsuario = Usuarios::model()->findByPk($id_usuario);
             $modeloUsuario->setAttributes(array('equipos_id_equipo' => $id_nuevo_equipo));
             $modeloUsuario->save();
             //Cambiar variable de sesion
             Yii::app()->user->setState('usAfic', $id_nuevo_equipo);
             $this->redirect(array('equipos/ver/', 'id_equipo' => $id_nuevo_equipo));
         }
     }
 }
 /** 
  * Muestra la informacion previa a un partido.
  * 
  * 1 Si el partido ya se jugo, mostrar la cronica (resultado) de ese partido
  * 2 Si el partido no se ha jugado aún y no es el partido próximo mostrar:
  *     - fecha y hora
  *     - equipos que jugarán
  * 3 Si el partido es el próximo partido del equipo, mostrar:
  *     - fecha y hora	
  *     - ambiente para el partido
  *     - equipo local y visitante
  * 	   - detalles de ambos equipos (aforo previsto, nivel de los equipos)
  *     - acciones completadas por las aficiones
  *
  * @param int $id_partido  id del partido sobre el que se consulta la previa
  *
  * @route 		jugadorNum12/partidos/previa/{$id_partido}
  * @redirect    jugadorNum12/partidos/index     si se intenta asistir a un partido posterior al siguiente
  * 
  * @return void
  */
 public function actionPrevia($id_partido)
 {
     /* Actualizar datos de usuario (recuros,individuales y grupales) */
     Usuarios::model()->actualizaDatos(Yii::app()->user->usIdent);
     /* Fin de actualización */
     //Saco la informacion del partido
     $modeloPartidos = Partidos::model()->findByPk($id_partido);
     //Saco la información de los equipos para mostrar el nombre en la vista
     $modeloEquipoLocal = Equipos::model()->findByPk($modeloPartidos->equipos_id_equipo_1);
     $modeloEquipoVisitante = Equipos::model()->findByPk($modeloPartidos->equipos_id_equipo_2);
     //Saco la información de las acciones grupales previstas para el partido por el equipo local
     $modeloGrupalesLocal = AccionesGrupales::model()->findAllByAttributes(array('equipos_id_equipo' => $modeloPartidos->equipos_id_equipo_1));
     //Saco la información de las acciones grupales previstas para el partido por el equipo visitante
     $modeloGrupalesVisitante = AccionesGrupales::model()->findAllByAttributes(array('equipos_id_equipo' => $modeloPartidos->equipos_id_equipo_2));
     //Obtener hora actual,de momento 130 porque no estan ajustadas las horas en la tabla
     $hora_actual = 130;
     //Obtener el equipo del usuario
     $id_usuario = Yii::app()->user->usIdent;
     $id_equipo = Usuarios::model()->findByPk($id_usuario)->equipos_id_equipo;
     //Obtener el partido a consultar y
     //el siguiente partido del equipo del usuario
     $modeloPartido = Partidos::model()->findByPk($id_partido);
     $modeloSigPartido = Equipos::model()->findByPk(Yii::app()->user->usAfic)->sigPartido;
     //Si el partido se encuentra en su ultimo turno muestro la cronica
     ///Sino muestro la previa del partido, si es el siguiente que juega el equipo
     //Sino cumple ninguna de esas condiciones muestro que no tengo informacion
     Yii::import('application.components.Partido');
     $ultimo_turno = Partido::ULTIMO_TURNO;
     if ($modeloPartido->turno == $ultimo_turno + 1) {
         // Cargar css de previa
         //$uri = Yii::app()->request->baseUrl.'/less/infopartido.less';
         //Yii::app()->clientScript->registerLinkTag('stylesheet/less', 'text/css', $uri);
         //si el partido se jugo, obtener cronica
         $this->render('cronica', array('modeloP' => $modeloPartidos, 'modeloL' => $modeloEquipoLocal, 'modeloV' => $modeloEquipoVisitante));
     } elseif ($id_partido == $modeloSigPartido->id_partido && $modeloSigPartido->turno == 0) {
         // Cargar css de previa
         //$uri = Yii::app()->request->baseUrl.'/less/infopartido.less';
         //Yii::app()->clientScript->registerLinkTag('stylesheet/less', 'text/css', $uri);
         //si el partido no se ha jugado y es el siguiente partido del equipo del usuario
         //Renderizo la vista que me muestra la previa
         $this->render('previa', array('modeloP' => $modeloPartidos, 'modeloL' => $modeloEquipoLocal, 'modeloV' => $modeloEquipoVisitante, 'modeloGL' => $modeloGrupalesLocal, 'modeloGV' => $modeloGrupalesVisitante));
     } else {
         //no se puede asistir a un partido que esta despues del siguiente partido
         Yii::app()->user->setFlash('Partido', 'No hay informacion acerca del partido');
         $this->redirect(array('partidos/index'));
     }
 }
Beispiel #8
0
 /**
  * Funcion que se encarga de actualizar recursos y acciones del usuario
  *
  * Datos que se actualizan:
  *
  *  - generar recursos
  *  - finalizar acciones individuales
  *  - finalizar acciones grupales
  *
  * @param int $id_usuario   id del usuario que se va a actualizar
  * @return void
  */
 public function actualizaDatos($id_usuario)
 {
     AccionesIndividuales::model()->finalizaIndividuales($id_usuario);
     AccionesGrupales::model()->finalizaGrupales();
     Recursos::model()->actualizaRecursos($id_usuario);
 }
 /**
  * Usar una accion grupal
  *
  * @static
  * @param $usuario
  * @param $id_accion
  * @param $id_equipo
  * @param $res : recursos del jugador
  * @param $habilidad
  * @return int id de la nueva accion grupal
  */
 public static function usarGrupal($usuario, $id_accion, $id_equipo, $res, $habilidad)
 {
     $id_usuario = $usuario->id_usuario;
     /*
         Se deberia obtener la accion grupal mediante su PK (id_accion_grupal)
         Como $id_accion equivale $id_habilidad por como se redirige desde acciones/index
         para obtener la accion grupal debo buscar por id_equipo y id_habilidad
         NOTA: no se contempla la posibilidad de en un mismo equipo haya varias acciones iguales
         pero con distinto creador (aunque dicha posibilidad existe) ya que debe arreglarse la redireccion
     */
     $res['dinero'] -= $habilidad['dinero'];
     $res['animo'] -= $habilidad['animo'];
     $res['influencias'] -= $habilidad['influencias'];
     $res['influencias_bloqueadas'] += $habilidad['influencias'];
     //sumarselos al crear nueva accion grupal
     $accion_grupal = new AccionesGrupales();
     $accion_grupal->setAttributes(array('usuarios_id_usuario' => $id_usuario, 'habilidades_id_habilidad' => $id_accion, 'equipos_id_equipo' => $id_equipo, 'influencias_acc' => $habilidad['influencias'], 'animo_acc' => $habilidad['animo'], 'dinero_acc' => $habilidad['dinero'], 'jugadores_acc' => 1, 'finalizacion' => $habilidad['cooldown_fin'] + time(), 'completada' => 0));
     //guardar en los modelos
     $res->save();
     $accion_grupal->save();
     //Crear participación del creador
     $participacion = new Participaciones();
     $participacion->acciones_grupales_id_accion_grupal = $accion_grupal->id_accion_grupal;
     $participacion->usuarios_id_usuario = $id_usuario;
     $participacion->dinero_aportado = $habilidad['dinero'];
     $participacion->influencias_aportadas = $habilidad['influencias'];
     $participacion->animo_aportado = $habilidad['animo'];
     if (!$participacion->save()) {
         Yii::app()->user->setFlash('error', 'Participación no creada. (AccionesController,actionUsar.');
         throw new Exception("Participación no creada. (AccionesController,actionUsar)");
     }
     //Enviamos la notificación correspondiente
     $notificacion = new Notificaciones();
     $notificacion->fecha = time();
     $notificacion->mensaje = Usuarios::model()->findByPk($id_usuario)->nick . " ha abierto la acción " . Habilidades::model()->findByPk($id_accion)->nombre;
     $notificacion->imagen = "images/iconos/notificaciones/nueva_grupal.png";
     $notificacion->save();
     //Enviamos la notificación a la afición
     $componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo' => $id_equipo));
     foreach ($componentes as $componente) {
         $usrnotif = new Usrnotif();
         $usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
         $usrnotif->usuarios_id_usuario = $componente->id_usuario;
         $usrnotif->save();
     }
     // EXP: sumar experencia al usuario
     $usuario->sumarExp(Usuarios::MEDIA_EXP);
     return $accion_grupal['id_accion_grupal'];
 }
 /**
  * Devuelve los recursos de las acciones grupales a los participantes
  *
  * Selecciona las acciones grupales finalizadas sin éxito y devuelve los recursos a sus
  * participantes y creador.
  *
  * @route JugadorNum12/scripts/finalizaGrupales
  *
  * @throws \Exception excepcion interna
  * @return void
  */
 public function actionFinalizaGrupales()
 {
     //Traer acciones y Helper
     Yii::import('application.components.Acciones.*');
     $tiempo = time();
     $busqueda = new CDbCriteria();
     $busqueda->addCondition(':bTiempo >= finalizacion');
     $busqueda->addCondition('completada = :bCompletada');
     $busqueda->params = array(':bTiempo' => $tiempo, ':bCompletada' => 0);
     $grupales = AccionesGrupales::model()->findAll($busqueda);
     //Iterar sobre las acciones grupales resultantes de la búsqueda
     foreach ($grupales as $gp) {
         $transaction = Yii::app()->db->beginTransaction();
         try {
             //Tomar participaciones
             $participantes = Participaciones::model()->findAllByAttributes(array('acciones_grupales_id_accion_grupal' => $gp->id_accion_grupal));
             //Recorro todos los participantes devolviendoles sus recursos.
             //Esto incluye el creador de la acción.
             foreach ($participantes as $participante) {
                 //Cojo el dinero,influencia y animo aportado por el usuario
                 $dinero = $participante->dinero_aportado;
                 $influencia = $participante->influencias_aportadas;
                 $animo = $participante->animo_aportado;
                 //Utilizo el helper para ingresarle al usuario los recursos
                 Recursos::aumentar_recursos($participante->usuarios_id_usuario, 'dinero', $dinero);
                 Recursos::aumentar_recursos($participante->usuarios_id_usuario, 'animo', $animo);
                 Recursos::aumentar_recursos($participante->usuarios_id_usuario, 'influencias', $influencia);
                 //Eliminar ese modelo
                 Participaciones::model()->deleteAllByAttributes(array('acciones_grupales_id_accion_grupal' => $gp->id_accion_grupal, 'usuarios_id_usuario' => $participante->usuarios_id_usuario));
             }
             //Borro esa accion grupal iniciada por el usuario que quiere cambiar de equipo
             AccionesGrupales::model()->deleteByPk($gp->id_accion_grupal);
             //Finalizar transacción con éxito
             $transaction->commit();
         } catch (Exception $ex) {
             //Rollback de la transacción en caso de error
             $transaction->rollback();
             throw $ex;
         }
     }
 }
 /**
  * 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 = AccionesGrupales::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }