/**
  * @param $matchId
  * @return mixed
  */
 private static function simulate($matchId)
 {
     $match = \App\Lib\DsManager\Models\Match::fromArray(MatchOrm::complete()->where(['id' => $matchId])->first()->toArray());
     $matchResult = $match->simulate()->toArray();
     $result = MatchResult::where(['id' => $matchId])->update(MatchResult::resolveAttributes($matchResult, $matchId));
     return $result;
 }
Example #2
0
 /**
  * @group Stats
  */
 public function testGetStats()
 {
     $match = \App\Lib\DsManager\Models\Orm\Match::where(['simulated' => false])->whereNotNull('league_round_id')->get()->random(1);
     $this->assertNotEmpty($match);
     $result = \App\Lib\DsManager\Helpers\MatchSimulator::simulateRound($match->league_round_id);
     $this->assertNotEmpty($result);
     $players = \App\Lib\DsManager\Models\Orm\Player::getBest();
     $this->assertNotEmpty($players);
     $teams = \App\Lib\DsManager\Models\Orm\Team::getBest();
     $this->assertNotEmpty($teams);
 }
Example #3
0
 /**
  * @group Helpers
  * @group RoundSimulator
  */
 public function testRoundSimulator()
 {
     $match = \App\Lib\DsManager\Models\Orm\Match::where(['simulated' => false])->whereNotNull('league_round_id')->get()->random(1);
     $this->assertNotEmpty($match);
     $result = \App\Lib\DsManager\Helpers\MatchSimulator::simulateRound($match->league_round_id);
     $this->assertNotEmpty($result);
     $match = \App\Lib\DsManager\Models\Orm\Match::where(['id' => $match->id, 'simulated' => true])->first();
     $this->assertNotEmpty($match);
     $round = \App\Lib\DsManager\Models\Orm\LeagueRound::find($match->league_round_id);
     $this->assertNotEmpty($round);
     $this->assertTrue($round->simulated);
 }
 function run()
 {
     $leagues = ['friendly' => 16, 'europa league' => 8];
     $teams = Team::all()->toArray();
     foreach ($leagues as $league => $teamsNum) {
         $teamCopy = $teams;
         $league = League::create(['name' => $league, 'teams' => $teamsNum]);
         //Create Rounds
         shuffle($teamCopy);
         $teamCopy = array_splice($teamCopy, 0, $teamsNum);
         $rounds = LeagueFixtureGenerator::generate($teamCopy);
         foreach ($rounds as $i => $round) {
             $leagueRound = LeagueRound::create(['league_id' => $league->id, 'day' => $i + 1]);
             foreach ($round as $match) {
                 $newMatch = Match::create(['home_team_id' => $match['home_team_id'], 'away_team_id' => $match['away_team_id'], 'league_round_id' => $leagueRound->id]);
             }
         }
     }
 }
Example #5
0
$api->get('/leagues', function ($request, $response, $args) {
    return Responder::getJsonResponse(League::all(), $response);
});
$api->get('/leagues/{id}', function ($request, $response, $args) {
    return Responder::getJsonResponse(League::with('rounds')->where(['id' => $args['id']])->first(), $response);
});
$api->get('/leagues/{id}/rounds/{roundId}', function ($request, $response, $args) {
    return Responder::getJsonResponse(LeagueRound::complete()->where(['id' => $args['roundId']])->first(), $response);
});
$api->put('/leagues/{id}/rounds/{roundId}/simulate', function ($request, $response, $args) {
    return Responder::getJsonResponse(MatchSimulator::simulateRound($args['roundId']), $response);
});
$api->get('/matches', function ($request, $response, $args) {
    return Responder::getJsonResponse(Match::teams()->get(), $response);
});
$api->post('/matches', function ($request, $response, $args) {
    $json = $request->getBody();
    $json = json_decode($json, true);
    return Responder::getJsonResponse(Match::create($json), $response);
});
$api->get('/matches/{id}', function ($request, $response, $args) {
    return Responder::getJsonResponse(Match::complete()->where(['id' => $args['id']])->first(), $response);
});
$api->get('/matches/{id}/result', function ($request, $response, $args) {
    $result = MatchResult::complete()->where(['id' => $args['id']])->first();
    return Responder::getJsonResponse($result, $response);
});
$api->put('/matches/{id}/simulate', function ($request, $response, $args) {
    return Responder::getJsonResponse(MatchSimulator::simulateCompleteResult($args['id']), $response);
});
$api->run();
Example #6
0
 public function scopeComplete($query)
 {
     return parent::scopeComplete($query)->with('scorers');
 }