/** * save one game. * @param $data * @param $package * @return static * @internal param $item */ protected function saveGames($data, $package) { $data['icon'] = $this->saveImageFromLink($data['icon'], 'avatars'); if ($data['icon']) { $category = Category::where('name', $data['category'])->first(); if (!$category) { copy(public_path() . '/images/avatars/' . $data['icon'], public_path() . '/images/categories/' . $data['icon']); $category = Category::create(['name' => $data['category'], 'icon' => $data['icon'], 'type' => $data['type']]); } $data['category_id'] = $category->id; try { $game = Game::create($data); foreach ($data['screens'] as $urlCapture) { $urlCapture = $this->saveImageFromLink($urlCapture, 'captures'); if ($urlCapture) { Capture::create(['name' => $urlCapture, 'game_id' => $game->id]); } } try { Package::create([ 'game_id' => $game->id, 'name' => $package ]); } catch (QueryException $e) { DB::table('packages')->where('name', $package)->delete(); Package::create([ 'game_id' => $game->id, 'name' => $package ]); } } catch (QueryException $e) { return; } } }