/** * Define your route model bindings, pattern filters, etc. * * @param \Illuminate\Routing\Router $router * @return void */ public function boot(Router $router) { // parent::boot($router); $router->model('competition', 'App\\Competition'); $router->model('club', 'App\\Club'); $router->model('pair', 'App\\RefereePair'); $router->bind('season', function ($name) { return Season::firstOrNew(['name' => $name]); }); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $data = $request->all(); $clubs = json_decode($data['clubs'], true); $country = Country::firstOrNew(['name' => $data['country']]); $country->save(); $competition = Competition::firstOrNew(['name' => $data['name'], 'country_id' => $country->id, 'type' => $data['type']]); if ($country->competitions()->where(['id' => $competition->id])->get()->count() == 0) { $country->competitions()->save($competition); } Auth::user()->competitions()->save($competition); $season = Season::firstOrNew(['name' => $data['season']]); $season->save(); if ($season->competitions()->where(['id' => $competition->id])->get()->count() == 0) { $season->competitions()->attach($competition->id); } $competition->clubsByName()->wherePivot('season_id', '=', $season->id)->detach(); foreach ($clubs as $club) { $competition->storeClub($club, $country, $season); } $num = count($clubs); if ($num % 2 != 0) { $clubs[$num++] = $competition->storeClub(['name' => '//no-name', 'location' => '//no-loc', 'num' => $num], $country, $season); } $settings = Setting::firstOrNew(['competition_id' => $competition->id, 'season_id' => $season->id]); $settings->save(); return $competition->storeCompetition($season, $num); }