/**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new EquiposObservaciones();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['EquiposObservaciones'])) {
         $idActivo = $_GET["idActivo"];
         $elEstado = Equipos::model()->findByPk($idActivo);
         if ($elEstado->Estado == "Activo") {
             $nuevoEstado = "Inactivo";
         } else {
             $nuevoEstado = "Activo";
         }
         $model->attributes = $_POST['EquiposObservaciones'];
         $model->fecha = date("Y-m-d");
         $model->equipo_id = $idActivo;
         $model->estado = $nuevoEstado;
         $model->personal_id = 1;
         if ($model->save()) {
             //Actualizar Activo
             $elEstado->Estado = $nuevoEstado;
         }
         $elEstado->save();
         //$this->redirect(array('view','id'=>$model->id));
         $this->redirect('index.php?r=equipos/view&id=' . $idActivo);
     }
     $this->render('create', array('model' => $model));
 }
Ejemplo n.º 2
0
 /**
  * Muestra el timeline principal de la pagina
  *
  * Informacion a mostrar
  *  - Equipo del usuario
  *  - Enlace al proximo partido del jugador
  *  - Enlace a crear una nueva habilidad grupal
  *  - Acciones grupales activas del equipo del usuario
  * 
  * @route jugadorNum12/usuarios/index
  * @return void
  */
 public function actionIndex()
 {
     // 1) recogemos id de la sesion
     $idUsuario = Yii::app()->user->usIdent;
     $idEquipo = Yii::app()->user->usAfic;
     // 2) actualizar datos de usuario
     Usuarios::model()->actualizaDatos($idUsuario);
     // 3) obtenemos las acciones grupales del equipo del usuario
     $modeloEquipo = Equipos::model()->with('accionesGrupales');
     $equipo = $modeloEquipo->findByPK($idEquipo);
     // 4) obtenemos el proximo partido
     Yii::import('application.components.Partido');
     $equipoUsuario = Equipos::model()->findByPk($idEquipo);
     $proximoPartido = $equipoUsuario->sigPartido;
     $primerTurno = Partido::PRIMER_TURNO;
     $ultimoTurno = Partido::ULTIMO_TURNO;
     // *) renderizar la vista
     $this->render('index', array('equipo' => $equipo, 'proximoPartido' => $proximoPartido, 'primerTurno' => $primerTurno, 'ultimoTurno' => $ultimoTurno));
 }
Ejemplo n.º 3
0
 public function jugarse()
 {
     switch ($this->turno) {
         case self::PRIMER_TURNO:
             //Turno inicial (preparar partido)
             $this->inicializaEncuentro();
             $this->generaCronicaBase();
             $this->guardaEstado();
             break;
         case self::TURNO_DESCANSO:
             $this->generaEstadoDescanso();
             $this->generaCronicaDescanso();
             $this->guardaEstado();
             break;
         case $this->turno > self::PRIMER_TURNO && $this->turno < self::ULTIMO_TURNO && $this->turno != self::TURNO_DESCANSO:
             //Este apartado incluye el descanso del partido!
             //Turnos de partido
             $this->generar_estado();
             $this->guardaEstado();
             break;
         case self::ULTIMO_TURNO:
             //Turno para generar el estado y crónica finales
             $this->generar_estado();
             $this->generaCronicaUltimoTurno();
             /****/
             $this->finalizaEncuentro();
             /****/
             $this->guardaEstado();
             /****/
             $this->actualizaSiguientePartido($this->id_local);
             $this->actualizaSiguientePartido($this->id_visitante);
             $this->rellenaSiguientePartido($this->id_local);
             $this->rellenaSiguientePartido($this->id_visitante);
             $this->eliminaGrupales($this->id_local);
             $this->eliminaGrupales($this->id_visitante);
             //Creamos una notificación de fin de partido
             $notificacion = new Notificaciones();
             $notificacion->fecha = time();
             $notificacion->mensaje = Equipos::model()->findByPk($this->id_local)->nombre . " " . $this->goles_local . " - " . $this->goles_visitante . " " . Equipos::model()->findByPk($this->id_visitante)->nombre;
             $notificacion->imagen = "images/iconos/notificaciones/partido_terminado.png";
             $notificacion->save();
             //Enviamos la notificación a los interesados
             $componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo' => $this->id_local));
             foreach ($componentes as $componente) {
                 $usrnotif = new Usrnotif();
                 $usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
                 $usrnotif->usuarios_id_usuario = $componente->id_usuario;
                 $usrnotif->save();
                 //Devuelvo la influencia a los participantes7
                 $componente->recursos->influencias_partido_bloqueadas = 0;
                 $componente->recursos->save();
             }
             $componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo' => $this->id_visitante));
             foreach ($componentes as $componente) {
                 $usrnotif = new Usrnotif();
                 $usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
                 $usrnotif->usuarios_id_usuario = $componente->id_usuario;
                 $usrnotif->save();
                 //Devuelvo la influencia a los participantes
                 $componente->recursos->influencias_partido_bloqueadas = 0;
                 $componente->recursos->save();
             }
             /****/
             break;
             /*case self::ULTIMO_TURNO:
                 	//Turno para permitir visualizar el fin de partido durante un tiempo extra
                 	//y cambiar los datos del siguiente partido
             		$this->finalizaEncuentro();
             		$this->guardaEstado();
             		$this->actualizaSiguientePartido($this->id_local);
             		$this->actualizaSiguientePartido($this->id_visitante);
             		$this->rellenaSiguientePartido($this->id_local);
             		$this->rellenaSiguientePartido($this->id_visitante);
             		$this->eliminaGrupales($this->id_local);
             		$this->eliminaGrupales($this->id_visitante);
             		//Creamos una notificación de fin de partido
             		$notificacion = new Notificaciones;
             		$notificacion->fecha = time();
             		$notificacion->mensaje = Equipos::model()->findByPk($this->id_local)->nombre . "(local)" . " vs " . Equipos::model()->findByPk($this->id_visitante)->nombre . "(visitante)";
             		$notificacion->imagen = "images/iconos/notificaciones/partido_terminado.png";
             		$notificacion->save();
             		//Enviamos la notificación a los interesados
             		$componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo'=>$this->id_local));
             		foreach ($componentes as $componente){
             			$usrnotif = new Usrnotif;
             			$usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
             			$usrnotif->usuarios_id_usuario = $componente->id_usuario;
             			$usrnotif->save();
             		}
             		$componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo'=>$this->id_visitante));
             		foreach ($componentes as $componente){
             			$usrnotif = new Usrnotif;
             			$usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
             			$usrnotif->usuarios_id_usuario = $componente->id_usuario;
             			$usrnotif->save();
             		}
                 	break;*/
         /*case self::ULTIMO_TURNO:
             	//Turno para permitir visualizar el fin de partido durante un tiempo extra
             	//y cambiar los datos del siguiente partido
         		$this->finalizaEncuentro();
         		$this->guardaEstado();
         		$this->actualizaSiguientePartido($this->id_local);
         		$this->actualizaSiguientePartido($this->id_visitante);
         		$this->rellenaSiguientePartido($this->id_local);
         		$this->rellenaSiguientePartido($this->id_visitante);
         		$this->eliminaGrupales($this->id_local);
         		$this->eliminaGrupales($this->id_visitante);
         		//Creamos una notificación de fin de partido
         		$notificacion = new Notificaciones;
         		$notificacion->fecha = time();
         		$notificacion->mensaje = Equipos::model()->findByPk($this->id_local)->nombre . "(local)" . " vs " . Equipos::model()->findByPk($this->id_visitante)->nombre . "(visitante)";
         		$notificacion->imagen = "images/iconos/notificaciones/partido_terminado.png";
         		$notificacion->save();
         		//Enviamos la notificación a los interesados
         		$componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo'=>$this->id_local));
         		foreach ($componentes as $componente){
         			$usrnotif = new Usrnotif;
         			$usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
         			$usrnotif->usuarios_id_usuario = $componente->id_usuario;
         			$usrnotif->save();
         		}
         		$componentes = Usuarios::model()->findAllByAttributes(array('equipos_id_equipo'=>$this->id_visitante));
         		foreach ($componentes as $componente){
         			$usrnotif = new Usrnotif;
         			$usrnotif->notificaciones_id_notificacion = $notificacion->id_notificacion;
         			$usrnotif->usuarios_id_usuario = $componente->id_usuario;
         			$usrnotif->save();
         		}
             	break;*/
         default:
             // No debería llegar aquí
             echo "Jodimos algo";
     }
 }
Ejemplo n.º 4
0
/* @var $model Equipos */
$this->menu = array(array('label' => 'Listar Equipos', 'url' => array('index')), array('label' => 'Crear Equipo', 'visible' => Yii::app()->user->perfil != 1, 'url' => array('create')));
Yii::app()->clientScript->registerScript('search', "\n\$('.search-button').click(function(){\n\t\$('.search-form').toggle();\n\treturn false;\n});\n\$('.search-form form').submit(function(){\n\t\$('#equipos-grid').yiiGridView('update', {\n\t\tdata: \$(this).serialize()\n\t});\n\treturn false;\n});\n");
?>

<h1>Equipos - <a href="#exportar" class="btn btn-warning" role="button" data-toggle="modal"><i class="icon-share-alt icon-white"></i> Exportar</a></h1>


<div class="search-form" style="display:none">
<?php 
$this->renderPartial('_search', array('model' => $model));
?>
</div><!-- search-form -->

<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'equipos-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array(array('header' => 'ID.', 'name' => 'id', 'value' => '$data->id', 'htmlOptions' => array('width' => '20')), array('header' => 'Nombre', 'name' => 'nombre', 'filter' => CHtml::listData(Equipos::model()->findAll(array('order' => 'nombre ASC')), 'nombre', 'nombre'), 'value' => '$data[\'nombre\']', 'htmlOptions' => array('width' => '250')), 'numero', array('name' => 'Estado', 'filter' => array('Activo' => 'Activo', 'Inactivo' => 'Inactivo'), 'value' => '$data->Estado', 'htmlOptions' => array('width' => '150')), array('class' => 'CButtonColumn', 'template' => '{view}'))));
?>

<div id="exportar" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Exportar a un archivo de Excel </h3>
  </div>
  <div class="modal-body">
  	<p>Seleccione las opciones de Exportar</p>
 	<form id="frmExportar" name="frmExportar" action="index.php?r=equipos/exportar&tipo=<?php 
$elTipo;
?>
" method = "post">
  		<div class="span5">
			<label>Filtro:</label>
Ejemplo n.º 5
0
/* @var $this CitasEquipoController */
/* @var $model CitasEquipo */
$this->menu = array();
Yii::app()->clientScript->registerScript('search', "\n\$('.search-button').click(function(){\n\t\$('.search-form').toggle();\n\treturn false;\n});\n\$('.search-form form').submit(function(){\n\t\$('#citas-equipo-grid').yiiGridView('update', {\n\t\tdata: \$(this).serialize()\n\t});\n\treturn false;\n});\n");
?>

<h1>Agenda de Equipos</h1>

<div class="search-form" style="display:none">
<?php 
$this->renderPartial('_search', array('model' => $model));
?>
</div><!-- search-form -->

<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'citas-equipo-grid', 'dataProvider' => $model->search(), 'afterAjaxUpdate' => 'reinstallDatePicker', 'filter' => $model, 'columns' => array(array('header' => 'Cita', 'name' => 'cita_id', 'value' => '$data->cita_id', 'htmlOptions' => array('width' => '50')), array('header' => 'Fecha', 'name' => 'fecha', 'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array('language' => 'es', 'model' => $model, 'attribute' => 'fecha', 'options' => array('showAnim' => 'fold', 'language' => 'es', 'dateFormat' => 'dd-mm-yy', 'changeMonth' => true, 'changeYear' => true, 'yearRange' => '2014:2025'), 'htmlOptions' => array('id' => 'datepicker_for_fecha_cita', 'style' => 'height:20px;width:80px;'), 'defaultOptions' => array('showOn' => 'focus', 'showOtherMonths' => true, 'selectOtherMonths' => true, 'changeMonth' => true, 'changeYear' => true, 'showButtonPanel' => true)), true), 'value' => 'Yii::app()->dateformatter->format("dd-MM-yyyy",$data[\'fecha\']);', 'htmlOptions' => array('width' => '80')), array('name' => 'hora_inicio', 'filter' => CHtml::listData(HorasServicio::model()->findAll(), 'id', 'hora'), 'value' => '$data[\'horaInicio\'][\'hora\']', 'htmlOptions' => array('width' => '85')), array('name' => 'hora_fin_mostrar', 'filter' => CHtml::listData(HorasServicio::model()->findAll(), 'id', 'hora'), 'value' => '$data[\'horaFinMostrar\'][\'hora\']', 'htmlOptions' => array('width' => '85')), array('name' => 'equipo_id', 'filter' => CHtml::listData(Equipos::model()->findAll(array('order' => 'nombre ASC')), 'id', 'nombre'), 'value' => '$data[\'equipo\'][\'nombre\']', 'htmlOptions' => array('width' => '210')), 'equipo.numero', array('name' => 'linea_servicio_id', 'filter' => CHtml::listData(LineaServicio::model()->findAll(array('order' => 'nombre ASC')), 'id', 'nombre'), 'value' => '$data[\'lineaServicio\'][\'nombre\']', 'htmlOptions' => array('width' => '210')), array('name' => 'nombre_paciente', 'filter' => CHtml::listData(Paciente::model()->findAll(array('order' => 'nombre ASC')), 'id', 'nombreCompleto'), 'value' => '$data->cita->paciente->nombreCompleto', 'htmlOptions' => array('width' => '210')), array('name' => 'nombre_asistente', 'filter' => CHtml::listData(Personal::model()->findAll(array('order' => 'nombres ASC')), 'id', 'nombreCompleto'), 'value' => '$data->cita->personal->nombreCompleto', 'htmlOptions' => array('width' => '210')), array('class' => 'CButtonColumn', 'template' => '{view}'))));
Yii::app()->clientScript->registerScript('re-install-date-picker', "\nfunction reinstallDatePicker(id, data) {\n        //use the same parameters that you had set in your widget else the datepicker will be refreshed by default\n    \$('#datepicker_for_fecha_cita').datepicker(jQuery.extend({showMonthAfterYear:false},jQuery.datepicker.regional['es'],{'dateFormat':'dd-mm-yy'}));\n}\n");
?>

<script>
    $(document).ready(function()
    {
        $('body').on('dblclick', '#citas-equipo-grid tbody tr', function(event)
        {
            var
                rowNum = $(this).index(),
                keys = $('#citas-equipo-grid > div.keys > span'),
                rowId = keys.eq(rowNum).text();

            location.href = '<?php 
echo Yii::app()->createUrl('citasEquipo/view');
Ejemplo n.º 6
0
 /** 
  * Muestra el segundo formulario para registrarse en la pagina
  *
  * Registro - Paso 2
  * 
  * - Eleccion del equipo
  *
  * > Si hay datos en $_POST procesa el formulario y almacena el nuevo usuario en la tabla <usuarios>
  *
  * @param int $id_usuario id del usuario que esta completando el registro
  *
  * @route    jugadorNum12/registro/equipo/{$id_usuario}
  * @redirect jugadorNum12/registro/personaje/{$id_usuario}
  *
  * @throws \Exception Fallo al actualizar el usuario en la BD
  * @return void
  */
 public function actionEquipo($id_usuario)
 {
     $modelo = Usuarios::model()->findByPk($id_usuario);
     $modelo->scenario = 'update';
     $error = false;
     $equip = Equipos::model()->findAll();
     foreach ($equip as $equipo) {
         $equipos[$equipo['id_equipo']] = $equipo['nombre'];
     }
     $seleccionado = 0;
     $transaction = Yii::app()->db->beginTransaction();
     try {
         if (isset($_POST['ocup'])) {
             $seleccionado = $_POST['ocup'];
             $modelo->setAttributes(array('equipos_id_equipo' => $seleccionado));
             if ($modelo->save()) {
                 $transaction->commit();
                 $this->redirect(array('registro/personaje', 'id_usuario' => $modelo->id_usuario));
             } else {
                 $error = true;
             }
         } else {
             $error = true;
         }
     } catch (Exception $e) {
         $transaction->rollback();
     }
     $this->render('equipo', array('error' => $error, 'equipos' => $equipos, 'seleccionado' => $seleccionado));
 }
Ejemplo n.º 7
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 = Equipos::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Ejemplo n.º 8
0
 /** Funcion auxiliar que modifica la tabla de equipos
  * 
  * @paremetro equipo al que modificamos sus recursos
  * @parametro columna sobre la que modificamos (dinero, dinero_gen, ...)
  * @parametro cantidad de recursos que aumentamos
  * @devuelve flag de error
  * @ejemplo Recursos::aumentar_recursos(3, "animo", 30);
  */
 public static function aumentar_recursos_equipo($id_equipo, $columna, $cantidad)
 {
     /* ROBER */
     /*Recupero el usuario del que voy a aumentar los recursos*/
     $equipo = Equipos::model()->findByPK($id_equipo);
     //Comprobación de seguridad
     if ($equipo === null) {
         throw new CHttpException(404, "Equipo no encontrado. (aumentar_recursos_equipo,Helper.php)");
     }
     /*Cojo la columna a modificar del modelo, para modificarla despues*/
     $actuales = $equipo->{$columna};
     $valor_nuevo = $actuales + $cantidad;
     /*Debo comprobar que no esta o sobrepasa en su máximo el atributo*/
     /*En el caso del animo*/
     if ($columna === 'aforo_base' && $valor_nuevo >= $equipo->aforo_max) {
         $equipo->{$columna} = $equipo->aforo_max;
     } else {
         $equipo->{$columna} = $valor_nuevo;
     }
     /*Si save() no lanza error entonces se realizo correctamente la actualizacion
       sino devuelves error*/
     if ($equipo->save()) {
         return 0;
     } else {
         return -1;
     }
 }
Ejemplo n.º 9
0
 /**
  *
  * renderiza el estado completo de un partido
  *
  * - marcador
  * - tiempo
  * - crónica
  *
  * @param int $id_partido id del partido 
  * 
  * @route jugadorNum12/partidos/actPartido/{$id_partido}
  * @return void
  */
 public function actionActPartido($id_partido)
 {
     // FIXME: ¿misma logica que actionAsistir?
     // Obtener el equipo del usuario
     $equipoUsuario = Equipos::model()->findByPk(Yii::app()->user->usAfic);
     // Obtener la informacion restante necesaria
     $partido = Partidos::model()->findByPk($id_partido);
     $equipoLocal = Equipos::model()->findByPk($partido->equipos_id_equipo_1);
     $equipoVisitante = Equipos::model()->findByPk($partido->equipos_id_equipo_2);
     //Comprobación de datos
     if ($partido === null || $equipoUsuario === null || $equipoLocal === null || $equipoVisitante === null) {
         Yii::app()->user->setFlash('datos', 'Datos suministrados incorrectos - partido/equipo/local/visitante -. (actionActPartido).');
     }
     // Un usuario no puede asisitir a un partido en el que su equipo no participa
     if ($partido->equipos_id_equipo_1 != $equipoUsuario->id_equipo && $partido->equipos_id_equipo_2 != $equipoUsuario->id_equipo) {
         Yii::app()->user->setFlash('partido', 'No puedes acceder a un partido en el que no participe tu equipo. (actionActPartido).');
         //throw new Exception("No puedes acceder a un partido en el que no participe tu equipo. (actionActPartido)", 401);
     } else {
         if ($equipoUsuario->partidos_id_partido != $id_partido) {
             Yii::app()->user->setFlash('partido', 'Este no es el próximo partido de tu equipo. (actionActPartido).');
             //throw new Exception("Este no es el próximo partido de tu equipo. (actionActPartido)", 401);
         } else {
             //pasar los datos del partido y los equipos
             $data = array('golesLocal' => (int) $partido->goles_local, 'golesVisit' => (int) $partido->goles_visitante, 'turno' => (int) $partido->turno, 'estado' => (int) $partido->estado, 'tiempo' => (int) $partido->tiempoRestantePartido(), 'tiempoTurno' => (int) $partido->tiempoRestanteTurno(), 'cronica' => (string) $partido->cronica, 'ambiente' => (int) $partido->ambiente, 'nivel_local' => (int) $partido->nivel_local, 'nivel_visitante' => (int) $partido->nivel_visitante, 'ofensivo_local' => (int) $partido->ofensivo_local, 'ofensivo_visitante' => (int) $partido->ofensivo_visitante, 'defensivo_local' => (int) $partido->defensivo_local, 'defensivo_visitante' => (int) $partido->defensivo_visitante, 'aforo_local' => (int) $partido->aforo_local, 'aforo_visitante' => (int) $partido->aforo_visitante, 'moral_local' => (int) $partido->moral_local, 'moral_visitante' => (int) $partido->moral_visitante);
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         }
     }
 }
Ejemplo n.º 10
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;
     }
 }
Ejemplo n.º 11
0
 /**
  * Ejecuta la accion de partido pulsada. Este método será llamado por Ajax durante el partido,
  * de modo que lo único que hará será devolver los datos de éxito o fallo para informar al 
  * usuario.
  *
  * Cualquier habilidad resta los recursos iniciales al jugador, además,
  * 
  * - Por ser una habilidad de partido se ejecuta al momento
  * 
  * > El id del jugador y la aficion a la que pertence se recogen de la variable de sesion
  *
  * - CODIGOS DEVUELTOS -
  *
  * 0 -> Habilidad no encontrada
  * 1 -> Habilidad no desbloqueada
  * 2 -> Habilidad en cooldown
  * 3 -> Recursos insuficientes 
  * 4 -> Error de equipo
  * 5 -> Error de partido, puede ser que no esté en juego o que no sea el siguiente del equipo
  * 6 -> La acción no es de partido
  * 7 -> Acción ejecutada con éxito
  * 8 -> Error general
  *
  * @param int $id_accion 	id de la habilidad que se ejecuta
  *
  * @return void
  */
 public function actionUsarPartido($id_accion)
 {
     // Actualizar recursos de usuario
     Recursos::model()->actualizaRecursos(Yii::app()->user->usIdent);
     //Comenzar transaccion
     $trans = Yii::app()->db->beginTransaction();
     try {
         // Importar elementos necesarios
         Yii::import('application.components.Acciones.*');
         Yii::import('application.components.Partido');
         //Cojo el id_usuario
         $id_usuario = Yii::app()->user->usIdent;
         //Obtener modelo de Habilidades
         $habilidad = Habilidades::model()->findByPk($id_accion);
         //Habilidad no encontrada
         if ($habilidad === null) {
             $trans->rollback();
             // Devolver error de acción no encontrada
             $data = array('ok' => false, 'error' => 'Habilidad incorrecta');
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         }
         //Habilidad encontrada
         //Obtener modelo de Desbloqueadas
         $desbloqueada = Desbloqueadas::model()->findByAttributes(array('usuarios_id_usuario' => $id_usuario, 'habilidades_id_habilidad' => $id_accion));
         //Si no esta desbloqueada para el usuario, error
         if ($desbloqueada === null) {
             $trans->rollback();
             // Devolver error de habilidad no desbloqueada
             $data = array('ok' => false, 'error' => 'Acci&oacute;n no desbloqueada');
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         }
         //Si esta desbloqueada
         //Comprovar que no esta en cooldown
         if ($desbloqueada['fin_del_cooldown'] > ($now = time())) {
             $trans->rollback();
             // Devolver error de cooldown
             $data = array('ok' => false, 'error' => 'Habilidad en cooldown', 'cooldownEnd' => $desbloqueada['fin_del_cooldown']);
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         } else {
             //se actualiza el cooldown
             $desbloqueada['fin_del_cooldown'] = $now + $habilidad['cooldown_fin'];
             $desbloqueada->save();
         }
         //Si esta disponible
         //Obtener modelo de Recursos
         $res = Recursos::model()->findByAttributes(array('usuarios_id_usuario' => $id_usuario));
         //Si no son suficientes recursos cancelar transaccion y notificar al usuario
         if ($res['dinero'] < $habilidad['dinero'] || $res['animo'] < $habilidad['animo'] || $res['influencias'] < $habilidad['influencias']) {
             $trans->rollback();
             // Devolver error de recursos insuficientes
             $data = array('ok' => false, 'error' => 'Recursos insuficientes');
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         }
         $usuario = Usuarios::model()->findByPk($id_usuario);
         //Si tenemos suficientes recursos comprobamos el tipo de acción
         if ($habilidad['tipo'] == Habilidades::TIPO_PARTIDO) {
             //Sacar id de equipo y partido para poder ejecutar la accion
             $id_equipo = Yii::app()->user->usAfic;
             $equipo = Equipos::model()->findByAttributes(array('id_equipo' => $id_equipo));
             if ($equipo === null) {
                 $trans->rollback();
                 // Devolver error de equipo incorrecto
                 $data = array('ok' => false, 'error' => 'Equipo incorrecto');
                 echo CJavaScript::jsonEncode($data);
                 Yii::app()->end();
             }
             $siguientepartido = $equipo->sigPartido;
             $id_partido = $siguientepartido->id_partido;
             // Comprobar si el partido está en juego
             if ($siguientepartido->turno <= Partido::PRIMER_TURNO || $siguientepartido->turno > Partido::ULTIMO_TURNO) {
                 $trans->rollback();
                 // Devolver error de partido incorrecto
                 $data = array('ok' => false, 'error' => 'Partido incorrecto');
                 echo CJavaScript::jsonEncode($data);
                 Yii::app()->end();
             }
             // Todo correcto, ejecutar acción de partido
             AccionesTurno::usarPartido($id_usuario, $id_equipo, $id_partido, $habilidad, $res);
             // EXP: sumar experencia al usuario
             $usuario->sumarExp(Usuarios::MEDIA_EXP);
         } else {
             // Tipo inválido
             $trans->rollback();
             // Devolver error de tipo inválido
             $data = array('ok' => false, 'error' => 'Acción incorrecta');
             echo CJavaScript::jsonEncode($data);
             Yii::app()->end();
         }
         // Finalizar transacción
         $trans->commit();
         // Todo correcto
         $data = array('ok' => true, 'message' => 'Acción ejecutada correctamente', 'cooldownEnd' => $desbloqueada['fin_del_cooldown']);
         echo CJavaScript::jsonEncode($data);
         Yii::app()->end();
     } catch (Exception $e) {
         $trans->rollback();
         // Devolver error general
         $data = array('ok' => false, 'error' => 'Error al ejecutar la acción ');
         echo CJavaScript::jsonEncode($data);
         Yii::app()->end();
     }
 }
Ejemplo n.º 12
0
				<?php 
echo $form->dropDownList($model, 'restringido', array('SI' => 'SI', 'NO' => 'NO'), array('class' => 'input-small'));
?>
				<?php 
echo $form->error($model, 'restringido');
?>
			</div>
		</div>

		<div class="span6">
			<div class="row">
				<?php 
echo $form->labelEx($model, 'equipo_id');
?>
				<?php 
echo $form->dropDownList($model, 'equipo_id', CHtml::listData(Equipos::model()->findAll(), 'id', 'nombre'), array('class' => 'input-xlarge', 'empty' => ''));
?>
				<a href="index.php?r=equipos/create" class="btn btn-small btn-primary"><i class="icon-plus-sign icon-white"></i> Agregar</a>
				<?php 
echo $form->error($model, 'equipo_id');
?>
			</div>
		</div>
	</div>
	

	<div class="row buttons">
		<?php 
echo CHtml::submitButton($model->isNewRecord ? 'Crear' : 'Guardar', array('class' => 'btn btn-info'));
?>
	</div>