/** * возвращает игроков, относящихся к данному ивенту для фантазии * @param int $fantasy_id * @return mixed */ public static function loadPlayersListOnFantasy($fantasy_id = 0) { $event_id = PokerFantasy::getEventId($fantasy_id); $eventModel = PokerEvent::findOne($event_id); if ($eventModel === null) { return; } $rows = $eventModel->eventPlayersList; //echo'<pre>';print_r($rows);echo'</pre>';die; return $rows; }
public function getInfos(&$dataProvider) { $arFantasies = []; foreach ($dataProvider->models as $model) { $arFantasies[$model->game][] = $model->fantasy_id; } //echo'<pre>';print_r($arFantasies);echo'</pre>';//die; foreach ($arFantasies as $game => $fanrasies) { switch ($game) { case GamesParams::GAME_DOTA: $fantasyModel = new DotaFantasy(); $draftModel = new DotaDraft(); break; case GamesParams::GAME_POKER: $fantasyModel = new PokerFantasy(); $draftModel = new PokerDraft(); break; } $fantasiesList = $fantasyModel->getFantasiesFromIds($fanrasies); $drafts_counts = $draftModel->getDraftsCount($fanrasies); //echo'<pre>';print_r($drafts_counts);echo'</pre>';//die; foreach ($dataProvider->models as $model) { if ($model->game == $game) { foreach ($fantasiesList as $item) { if ($item['id'] == $model->fantasy_id) { $model->info = $item; } } foreach ($drafts_counts as $id => $item) { if ($id == $model->fantasy_id) { $model->info['drafts_counts'] = $item; } } } } } return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = PokerFantasy::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'event_id' => $this->event_id, 'users_count' => $this->users_count, 'deposit' => $this->deposit, 'prize_pool' => $this->prize_pool]); $query->andFilterWhere(['like', 'name', $this->name]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params, $fantasy_type = 'all', $only_active = true) { $query = PokerFantasy::find()->joinWith('event'); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'event_id' => $this->event_id, 'users_count' => $this->users_count, 'deposit' => $this->deposit, 'prize_pool' => $this->prize_pool]); $query->andFilterWhere(['like', 'name', $this->name]); switch ($fantasy_type) { case self::FANTASY_LIST_NOW: $query->andFilterWhere(['<', 'start', time()]); $query->andFilterWhere(['>', 'end', time()]); break; case self::FANTASY_LIST_FUTURE: $query->andFilterWhere(['>', 'start', time()]); break; case self::FANTASY_LIST_MY: if (!Yii::$app->user->isGuest) { $fantasyIds = UserFantasy::getFavFantasyIds(Yii::$app->user->id, Transaction::TR_GAME_POKER); //echo'<pre>';print_r($fantasyIds);echo'</pre>';//die; //$query->andFilterWhere([ $this->tableName(). '.id' =>$fantasyIds]); if (count($fantasyIds) == 0) { $fantasyIds = [0]; } $query->andFilterWhere(['IN', $this->tableName() . '.id', $fantasyIds]); } break; } if ($only_active == true) { $query->andFilterWhere(['=', 'status', self::FANTASY_ACTIVE]); } return $dataProvider; }
public static function getFavFantasies($user_id = 0) { $sql = 'SELECT `id`, `fantasy_id`, `game` FROM ' . self::tableName() . ' WHERE `user_id` = :user_id ORDER BY `id` DESC LIMIT 0,4'; $params = [':user_id' => $user_id]; $rows = Yii::$app->db->createCommand($sql)->bindValues($params)->queryAll(); //echo'<pre>';print_r($rows);echo'</pre>';//die; $arFantasies = []; foreach ($rows as $row) { $arFantasies[$row['game']][] = $row['fantasy_id']; } //echo'<pre>';print_r($arFantasies);echo'</pre>';//die; foreach ($arFantasies as $game => $fanrasies) { switch ($game) { case GamesParams::GAME_DOTA: $fantasyModel = new DotaFantasy(); break; case GamesParams::GAME_POKER: $fantasyModel = new PokerFantasy(); break; } $fantasiesList = $fantasyModel->getFantasiesFromIds($fanrasies); foreach ($rows as &$row) { if ($row['game'] == $game) { foreach ($fantasiesList as $item) { if ($item['id'] == $row['fantasy_id']) { $row['info'] = $item; } } } } //echo'<pre>';print_r($fantasiesList);echo'</pre>';//die; } //echo'<pre>';print_r($rows);echo'</pre>';//die; return $rows; }
/** * возвращает модель фантазии в зависимости от вида игры * * @param int $fantasy_id * @param int $game_id * @return mixed */ private static function getFantasyModel($fantasy_id, $game_id) { switch ($game_id) { case Transaction::TR_GAME_DOTA: $fantasyModel = DotaFantasy::findOne($fantasy_id); break; case Transaction::TR_GAME_POKER: $fantasyModel = PokerFantasy::findOne($fantasy_id); break; } return $fantasyModel; }
/** * добавляет в базу новую ставку * @param Model $fantasy */ public function addRate($fantasy) { $draftModel = new PokerDraft(); $PokerDraftPlayer = new PokerDraftPlayer(); $draftModel->attributes = $this->attributes; $draftModel->save(); //echo'<pre>'; print_r($draftModel);echo'</pre>';die; $PokerDraftPlayer->addPlayersRows($this->players, $draftModel->id); //снимаем взнос+комиссия у игрока $user = User::findOne(Yii::$app->user->id); $deposit_before = $user->deposit; $user->deposit = $user->deposit - $fantasy->deposit - $fantasy->fee; if ($user->save()) { //заносим в лог $data = ['fantasy_id' => $fantasy->id, 'game' => Transaction::TR_GAME_POKER]; $trans_descr = Transaction::buildTransactionDescrForSave(Transaction::TR_TYPE_FANTASY_PAYMENT, $data); Transaction::saveTransaction($user->id, $deposit_before, -($fantasy->deposit + $fantasy->fee), $trans_descr); } //если нужно - увеличиваем призовой фонд //$total_sum_rates = PokerDraft::getCountFantasyDrafts($fantasy->id) * $fantasy->deposit; $total_sum_rates = $draftModel->getCountFantasyDrafts($fantasy->id) * $fantasy->deposit; if ($total_sum_rates > $fantasy->prize_pool_real) { PokerFantasy::upateRealPrizePool($fantasy->id, $total_sum_rates); } }
public function actionShowRatings($id) { $modelFantasy = new PokerFantasy(); //$model = $modelFantasy->getFantasyInfo($id); $model = $modelFantasy->loadFantasyInfo($id); //echo'<pre>';print_r($model->name);echo'</pre>';die; if ($model === false) { return; } $DraftModel = new PokerDraft(); $rates_list = $DraftModel->getRatesListWithResults([$id]); //echo'<pre>';print_r($rates_list);echo'</pre>';//die; //echo'<pre>';print_r($model);echo'</pre>';die; $params = PokerParams::loadParams(); $prizes = PrizeMatrix::getPrizesForFantasy($model); //echo'<pre>';print_r($prizes);echo'</pre>';//die; return $this->renderPartial('/common/show-ratings', ['model' => $model, 'rates_list' => $rates_list, 'params' => $params, 'prizes' => $prizes, 'game_id' => GamesParams::GAME_POKER, 'game_name' => GamesParams::GAME_POKER_NAME]); }
/** * @return \yii\db\ActiveQuery */ public function getFantasy() { return $this->hasOne(PokerFantasy::className(), ['id' => 'fantasy_id']); }
/** * @return \yii\db\ActiveQuery */ public function getFantasies() { return $this->hasMany(PokerFantasy::className(), ['event_id' => 'id']); }
/** * Финализирует фантазии по окончившимся турнирам. * Считает места, распределяет выигранные стредства. * @return mixed */ public function actionFinishFantasies() { $fantasy_model = new PokerFantasy(); $result = $fantasy_model->finishFantasies(); switch ($result) { case 0: $msg_type = 'success'; $msg = 'Finish fantasies was successful.'; break; case 1: $msg_type = 'error'; $msg = 'Возникла ошибка при расчете процентов по выигрышу.'; break; case 2: $msg_type = 'error'; $msg = 'Возникла ошибка при расчете сумм по выигрышу.'; break; } Yii::$app->session->setFlash($msg_type, $msg); return $this->redirect(['index']); }
<?php use yii\helpers\Html; use yii\helpers\Url; use yii\widgets\Menu; use common\models\poker\PokerFantasy; $current_events_url = Url::to(['poker-fantasy/' . $current_action, 'type' => 'all']); $futured_events_url = Url::to(['poker-fantasy/' . $current_action]); $fantasy_type_list = []; $fantasy_type_list_ = PokerFantasy::getTypeList(); //print_r($fantasy_type_list_); foreach ($fantasy_type_list_ as $k => $val) { $url = Url::to(['poker-fantasy/' . $current_action, 'type' => $k]); $fantasy_type_list[$url] = $val; } $active_fantasy_type = Url::to(['poker-fantasy/' . $current_action, 'type' => $fantasy_type]); $event_type_params = ['id' => 'fantasy-type', 'class' => 'width-150']; if ($current_action == 'stat') { $event_type_params['disabled'] = 'disabled'; } ?> <div class="section-head head-menu"> <?php echo Html::dropDownList('event-type', $active_fantasy_type, $fantasy_type_list, $event_type_params); ?> <h1>POKER DRAFT</h1> <div class="clr clr-1380"></div>