/** * Creates a new DotaDraft model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new DotaDraft(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * добавляет в базу новую ставку * * @param $fantasy * @return bool */ public function addRate($fantasy) { $draftModel = new DotaDraft(); $draftModel->attributes = $this->attributes; if ($draftModel->save() === false) { return false; } //echo'<pre>'; print_r($draftModel);echo'</pre>';die; switch ($this->scenario) { case self::SCENARIO_MIXED_DRAFT: $DotaDraftPlayer = new DotaDraftPlayer(); $DotaDraftHero = new DotaDraftHero(); $DotaDraftPlayer->addPlayersRows($this->players, $draftModel->id, $this->draft_slots); $DotaDraftHero->addHeroesRows($this->heroes, $draftModel->id); break; case self::SCENARIO_PLAYERS_DRAFT: $DotaDraftPlayer = new DotaDraftPlayer(); $DotaDraftPlayer->addPlayersRows($this->players, $draftModel->id, $this->draft_slots); break; case self::SCENARIO_HEROES_DRAFT: $DotaDraftHero = new DotaDraftHero(); $DotaDraftHero->addHeroesRows($this->heroes, $draftModel->id); break; } //снимаем взнос+комиссия у игрока $user = User::findOne(Yii::$app->user->id); $deposit_before = $user->deposit; $user->deposit = $user->deposit - $fantasy->deposit - $fantasy->fee; if ($user->save() === false) { $draftModel->delete(); //если возникла ошибка - удаляем из базы ставку пользователя return false; } //заносим в лог $data = ['fantasy_id' => $fantasy->id, 'game' => Transaction::TR_GAME_DOTA]; $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 = $draftModel->getCountFantasyDrafts($fantasy->id) * $fantasy->deposit; if ($total_sum_rates > $fantasy->prize_pool_real) { DotaFantasy::upateRealPrizePool($fantasy->id, $total_sum_rates); } return true; }