/** * 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; } }