/** * Enregistre un nouveau paris * * @return Response */ public function store() { $user = User::getUserWithToken($_GET['token']); $input = Input::all(); $input['user_id'] = $user->id; $validator = Validator::make($input, Bet::$rules, BaseController::$messages); if ($validator->fails()) { return Response::json(array('success' => false, 'payload' => array(), 'error' => $this->errorsArraytoString($validator->messages())), 400); } //On vérifie si la date du match n'est pas dépassé if (new DateTime() > new DateTime(Game::find($input['game_id'])->date)) { return Response::json(array('success' => false, 'payload' => array(), 'error' => "Le date du match est dépassé !"), 400); } $bet = Bet::whereRaw('user_id = ? && game_id = ?', array($input['user_id'], $input['game_id']))->first(); //Si un paris sur le même match pour cet utilisateur existe, erreur envoyée. if ($bet) { return Response::json(array('success' => false, 'payload' => array(), 'error' => "Un paris existe déjà sur ce match !"), 400); } //On vérifie si la somme misé est disponible if ($input['points'] > $user->points) { return Response::json(array('success' => false, 'payload' => array(), 'error' => "Vous avez miser plus de points que vous en avez !"), 400); } $game = Game::find($input['game_id']); //On vérifie si le winner est bien une équipe du match if ($input['winner_id'] != $game->team1_id && $input['winner_id'] != $game->team2_id) { return Response::json(array('success' => false, 'payload' => array(), 'error' => "Veuillez mettre une équipe du match !"), 400); } $bet = Bet::create($input); Transaction::addTransaction($input['user_id'], $bet->id, $input['points'], 'bet'); return Response::json(array('success' => true, 'payload' => $bet->toArray(), 'message' => 'Pari enregistré (' . $bet->points . ' points) sur : ' . $game->team1->name . ' (' . $bet->team1_goals . ') - (' . $bet->team2_goals . ') ' . $game->team2->name)); }
public function setFinished($num_team) { //Si l'équipe une a gagnée, on redistribue les points pour les paris corrects (paris sur l'équipe une) if ($num_team == 1) { foreach (Bet::whereRaw('game_id = ? && winner_id = ?', array($this->id, $this->team1_id))->get() as $bet) { $cote = $this->getTeam1CoteAttribute(); $points = $bet->points * $cote; if ($this->team1_goals == $bet->team1_goals && $this->team2_goals == $bet->team2_goals) { $points += $bet->points / 10 * $cote; } Transaction::addTransaction($bet->user_id, $bet->id, $points, 'gain'); } $this->winner_id = $this->team1_id; //Si l'équipe deux a gagnée, on redistribue les points pour les paris corrects (paris sur l'équipe deux) } else { foreach (Bet::whereRaw('game_id = ? && winner_id = ?', array($this->id, $this->team2_id))->get() as $bet) { $cote = $this->getTeam2CoteAttribute(); $points = $bet->points * $cote; if ($this->team1_goals == $bet->team1_goals && $this->team2_goals == $bet->team2_goals) { $points += $bet->points / 10 * $cote; } Transaction::addTransaction($bet->user_id, $bet->id, $points, 'gain'); } $this->winner_id = $this->team2_id; } ///////////////////////////////////////////////// //******************* ROUND X *****************// ///////////////////////////////////////////////// //On inscrit l'équipe gagnante dans son prochain match $id = $this->stage()->first()->next_stage()->first()->id; $num_game = round($this->stage_game_num / 2); $game = Game::whereRaw("stage_id = ? && stage_game_num = ?", array($id, $num_game))->first(); if ($this->stage_game_num % 2 == 1) { $game->team1_id = $this->winner_id; } else { $game->team2_id = $this->winner_id; } $game->save(); ///////////////////////////////////////////////// //******************* 3e place ****************// ///////////////////////////////////////////////// //Si on est lors des demi, on va définir aussi la 3e finale if ($this->stage()->first()->next_stage()->first()->next_stage == null) { $stage_third = Stage::getThirdStage()->id; $gamme_third = Game::whereRaw('stage_id = ?', array($stage_third))->first(); //Si équipe 1 a gagné on met l'équipe 2 en 3e place if ($num_game == 1) { if ($this->stage_game_num % 2 == 1) { $gamme_third->team1_id = $this->team1_id; } else { $gamme_third->team2_id = $this->team1_id; } } else { if ($this->stage_game_num % 2 == 1) { $gamme_third->team1_id = $this->team2_id; } else { $gamme_third->team2_id = $this->team2_id; } } $gamme_third->save(); } $this->save(); }