Ejemplo n.º 1
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function fire()
 {
     //Get all running leagues
     $leagues = League::query()->where("running", "=", true, "and")->where("finished", "=", false)->get();
     $now = new \DateTime();
     if ($leagues) {
         //Foreach league get all matches passed current time
         foreach ($leagues as $league) {
             $matches = $league->matches()->getQuery()->where("starts", "<=", $now, "and")->where("finished", "!=", true)->get();
             if ($matches) {
                 foreach ($matches as $match) {
                     $firstTeam = new TeamRepository(Team::find($match->first_team_id));
                     $secondTeam = new TeamRepository(Team::find($match->second_team_id));
                     $firstTeamTraining = new Training(new TrainingRepository(Team::find($match->first_team_id)));
                     $firstTeamTraining->resetTraining();
                     $secondTeamTraining = new Training(new TrainingRepository(Team::find($match->second_team_id)));
                     $secondTeamTraining->resetTraining();
                     $matcher = new Match($firstTeam, $secondTeam);
                     $matchResults = $matcher->generateActions();
                     //Announce Winner,Looser or draft and give them budget : config("offside.minimum_teams_per_league")
                     if ($matchResults->matchSuccessor == MatchSuccessor::hasWinner) {
                         //We got a winnner
                         $winner = $matchResults->getWinner();
                         $looser = $matchResults->getLooser();
                     }
                     //Get all actions from a single match and make persistence
                     $match->actions()->delete();
                     $this->saveActions($firstTeam, $secondTeam, $match);
                     //save formations
                     $match->firstTeamFormation = $this->getFormationOfCurrentMatch($firstTeam);
                     $match->secondTeamFormation = $this->getFormationOfCurrentMatch($secondTeam);
                     $match->first_team_goals = $matchResults->getTeamGoals($firstTeam);
                     $match->second_team_goals = $matchResults->getTeamGoals($secondTeam);
                     $match->finished = true;
                     $match->save();
                 }
             }
             //After match results are generated check if current league has matches left, if not mark this league as finished
             if ($league->matches()->getQuery()->where("finished", "=", false)->count() == 0) {
                 $league->finished = true;
                 $league->save();
             }
         }
     }
 }
 public function getFreeLeague()
 {
     $league = League::where("running", "=", false, "and")->where("finished", "=", false)->first();
     if ($league) {
         return $league;
     } else {
         return League::create(['name' => config("offside.league_names")[rand(0, count(config("offside.league_names")) - 1)]]);
     }
 }
 public function getGenerateMatches()
 {
     $league = new \Offside\Repo\LeagueRepository(League::find(1));
     $matchGenerator = new \Offside\League\InstantMatchGenerator($league);
     $matchGenerator->generateMatches();
 }
Ejemplo n.º 4
0
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();
        //Create a user
        $user_first = User::create(['name' => 'Burim Shala', 'email' => '*****@*****.**', 'password' => Hash::make('123456')]);
        $user_second = User::create(['name' => 'Arian Selimaj', 'email' => '*****@*****.**', 'password' => Hash::make('123456')]);
        $user_firstid = $user_first->id;
        $user_secondtid = $user_second->id;
        //Create a team, and attach to use
        $team_first = Team::create(['name' => 'Real Madrid', 'user_id' => $user_firstid, 'colors' => ["#e3e3e3", "#121212"]]);
        $team_second = Team::create(['name' => 'Barcelona', 'user_id' => $user_secondtid, 'colors' => ["#e3e3e3", "#121212"]]);
        $team_third = Team::create(['name' => 'Real Madrid Cloned', 'user_id' => $user_firstid, 'colors' => ["#e3e3e3", "#121212"]]);
        $team_fourth = Team::create(['name' => 'Barcelona Cloned', 'user_id' => $user_secondtid, 'colors' => ["#e3e3e3", "#121212"]]);
        //Create some players
        $players = json_decode('[
{
"id": 4,
"name": "Ronaldo",
"price": 3000,
"attack": 92,
"stamina": 85,
"defense": 22,
"goal_conversion": 85,
"assist_conversion": 75,
"creativity": 69,
"position": "attack",
"quality": "legendary",
"created_at": "2015-04-07 18:48:32",
"updated_at": "2015-04-07 18:48:32"
},
{
"id": 5,
"name": "Benzema",
"price": 1500,
"attack": 85,
"stamina": 79,
"defense": 20,
"goal_conversion": 75,
"assist_conversion": 70,
"creativity": 55,
"position": "attack",
"quality": "experienced",
"created_at": "2015-04-07 18:49:04",
"updated_at": "2015-04-07 18:49:04"
},
{
"id": 6,
"name": "Bale",
"price": 1500,
"attack": 88,
"stamina": 79,
"defense": 19,
"goal_conversion": 79,
"assist_conversion": 70,
"creativity": 65,
"position": "attack",
"quality": "experienced",
"created_at": "2015-04-07 18:49:41",
"updated_at": "2015-04-07 18:49:41"
},
{
"id": 7,
"name": "Kroos",
"price": 1000,
"attack": 65,
"stamina": 71,
"defense": 44,
"goal_conversion": 25,
"assist_conversion": 59,
"creativity": 72,
"position": "midfield",
"quality": "experienced",
"created_at": "2015-04-07 18:50:42",
"updated_at": "2015-04-07 18:50:42"
},
{
"id": 8,
"name": "Modric",
"price": 1500,
"attack": 72,
"stamina": 75,
"defense": 39,
"goal_conversion": 45,
"assist_conversion": 82,
"creativity": 83,
"position": "midfield",
"quality": "experienced",
"created_at": "2015-04-07 18:51:30",
"updated_at": "2015-04-07 18:51:30"
},
{
"id": 9,
"name": "Khedira",
"price": 1000,
"attack": 49,
"stamina": 82,
"defense": 62,
"goal_conversion": 22,
"assist_conversion": 49,
"creativity": 22,
"position": "midfield",
"quality": "experienced",
"created_at": "2015-04-07 18:52:15",
"updated_at": "2015-04-07 18:52:15"
},
{
"id": 10,
"name": "Pepe",
"price": 1200,
"attack": 12,
"stamina": 85,
"defense": 85,
"goal_conversion": 10,
"assist_conversion": 10,
"creativity": 10,
"position": "defense",
"quality": "experienced",
"created_at": "2015-04-07 18:53:23",
"updated_at": "2015-04-07 18:53:23"
},
{
"id": 11,
"name": "Ramos",
"price": 1200,
"attack": 39,
"stamina": 85,
"defense": 85,
"goal_conversion": 20,
"assist_conversion": 10,
"creativity": 10,
"position": "defense",
"quality": "experienced",
"created_at": "2015-04-07 18:53:47",
"updated_at": "2015-04-07 18:53:47"
},
{
"id": 12,
"name": "Marcelo",
"price": 800,
"attack": 55,
"stamina": 76,
"defense": 0,
"goal_conversion": 22,
"assist_conversion": 25,
"creativity": 10,
"position": "defense",
"quality": "average",
"created_at": "2015-04-07 18:54:25",
"updated_at": "2015-04-07 18:54:25"
},
{
"id": 13,
"name": "Carvajal",
"price": 800,
"attack": 22,
"stamina": 70,
"defense": 0,
"goal_conversion": 15,
"assist_conversion": 15,
"creativity": 15,
"position": "defense",
"quality": "average",
"created_at": "2015-04-07 18:55:06",
"updated_at": "2015-04-07 18:55:06"
},
{
"id": 14,
"name": "Casillas",
"price": 800,
"attack": 0,
"stamina": 65,
"defense": 84,
"goal_conversion": 0,
"assist_conversion": 0,
"creativity": 0,
"position": "goalkeeper",
"quality": "experienced",
"created_at": "2015-04-07 18:55:50",
"updated_at": "2015-04-07 18:55:50"
},
{
"id": 15,
"name": "Ter Stegen",
"price": 800,
"attack": 0,
"stamina": 72,
"defense": 80,
"goal_conversion": 0,
"assist_conversion": 0,
"creativity": 0,
"position": "goalkeeper",
"quality": "average",
"created_at": "2015-04-07 18:56:22",
"updated_at": "2015-04-07 18:56:22"
},
{
"id": 16,
"name": "Messi",
"price": 3000,
"attack": 93,
"stamina": 79,
"defense": 25,
"goal_conversion": 85,
"assist_conversion": 85,
"creativity": 85,
"position": "attack",
"quality": "legendary",
"created_at": "2015-04-07 18:57:01",
"updated_at": "2015-04-07 18:57:01"
},
{
"id": 17,
"name": "Suarez",
"price": 1500,
"attack": 87,
"stamina": 75,
"defense": 20,
"goal_conversion": 80,
"assist_conversion": 75,
"creativity": 59,
"position": "attack",
"quality": "experienced",
"created_at": "2015-04-07 18:57:39",
"updated_at": "2015-04-07 18:57:39"
},
{
"id": 18,
"name": "Neymar",
"price": 1500,
"attack": 83,
"stamina": 63,
"defense": 19,
"goal_conversion": 78,
"assist_conversion": 83,
"creativity": 80,
"position": "attack",
"quality": "experienced",
"created_at": "2015-04-07 18:58:15",
"updated_at": "2015-04-07 18:58:15"
},
{
"id": 19,
"name": "Iniesta",
"price": 1500,
"attack": 69,
"stamina": 62,
"defense": 35,
"goal_conversion": 69,
"assist_conversion": 73,
"creativity": 82,
"position": "midfield",
"quality": "experienced",
"created_at": "2015-04-07 19:03:04",
"updated_at": "2015-04-07 19:03:04"
},
{
"id": 20,
"name": "Busquets",
"price": 1000,
"attack": 32,
"stamina": 79,
"defense": 66,
"goal_conversion": 10,
"assist_conversion": 25,
"creativity": 22,
"position": "midfield",
"quality": "experienced",
"created_at": "2015-04-07 19:04:14",
"updated_at": "2015-04-07 19:04:14"
},
{
"id": 21,
"name": "Rakitic",
"price": 1000,
"attack": 68,
"stamina": 65,
"defense": 42,
"goal_conversion": 62,
"assist_conversion": 73,
"creativity": 75,
"position": "midfield",
"quality": "average",
"created_at": "2015-04-07 19:05:20",
"updated_at": "2015-04-07 19:05:20"
},
{
"id": 22,
"name": "Pique",
"price": 1000,
"attack": 0,
"stamina": 79,
"defense": 82,
"goal_conversion": 0,
"assist_conversion": 0,
"creativity": 0,
"position": "defense",
"quality": "experienced",
"created_at": "2015-04-07 19:05:50",
"updated_at": "2015-04-07 19:05:50"
},
{
"id": 23,
"name": "Mathieu",
"price": 800,
"attack": 10,
"stamina": 75,
"defense": 75,
"goal_conversion": 10,
"assist_conversion": 0,
"creativity": 0,
"position": "defense",
"quality": "average",
"created_at": "2015-04-07 19:07:06",
"updated_at": "2015-04-07 19:07:06"
},
{
"id": 24,
"name": "Alves",
"price": 800,
"attack": 59,
"stamina": 75,
"defense": 75,
"goal_conversion": 20,
"assist_conversion": 35,
"creativity": 12,
"position": "defense",
"quality": "average",
"created_at": "2015-04-07 19:07:57",
"updated_at": "2015-04-07 19:07:57"
},
{
"id": 25,
"name": "Alba",
"price": 700,
"attack": 29,
"stamina": 72,
"defense": 75,
"goal_conversion": 10,
"assist_conversion": 0,
"creativity": 0,
"position": "defense",
"quality": "average",
"created_at": "2015-04-07 19:08:25",
"updated_at": "2015-04-07 19:08:25"
}
]', true);
        //Insert players to databse
        foreach ($players as $key => $player) {
            $cur_player = Player::create(["name" => $player["name"], "price" => $player["price"], "attack" => $player["attack"], "defense" => $player["defense"], "stamina" => $player["stamina"], "goal_conversion" => $player["goal_conversion"], "assist_conversion" => $player["assist_conversion"], "creativity" => $player["creativity"], "position" => $player["position"], "quality" => $player["quality"]]);
        }
        $players = Player::all();
        foreach ($players as $key => $player) {
            $cur_team = $key <= 10 ? $team_first : $team_second;
            $cur_team->players()->attach($player->id, ['position' => 'none']);
        }
        foreach ($players as $key => $player) {
            $cur_team = $key <= 10 ? $team_third : $team_fourth;
            $cur_team->players()->attach($player->id, ['position' => 'none']);
        }
        $league = League::create(['name' => 'local_league']);
        $league->teams()->attach([$team_first->id, $team_second->id, $team_third->id, $team_fourth->id]);
        //Spread players on positions
        $formation = new \Offside\Formation\Formation(new \Offside\Formation\Formation532(), new \Offside\Repo\TeamRepository($team_first));
        $formation->spreadPlayersOnPositions();
        $formation = new \Offside\Formation\Formation(new \Offside\Formation\Formation433(), new \Offside\Repo\TeamRepository($team_second));
        $formation->spreadPlayersOnPositions();
        $formation = new \Offside\Formation\Formation(new \Offside\Formation\Formation433(), new \Offside\Repo\TeamRepository($team_third));
        $formation->spreadPlayersOnPositions();
        $formation = new \Offside\Formation\Formation(new \Offside\Formation\Formation433(), new \Offside\Repo\TeamRepository($team_fourth));
        $formation->spreadPlayersOnPositions();
        $league = new \Offside\Repo\LeagueRepository($league);
        $matchGenerator = new \Offside\League\InstantMatchGenerator($league);
        $matchGenerator->generateMatches();
        //$matchGenerator = new \Offside\
        //Attach players to the team
        //$team->players()->attach([$player_1->id,$player_2->id]);
        //$this->call('UserTableSeeder');
    }