/**
  * Creates new episodes
  *
  * @param InputInterface $input
  * @param OutputInterface $output
  */
 private function syncEpisodes(InputInterface $input, OutputInterface $output)
 {
     //Each episode has an unique ID in TVMaze, this may be a good hint for us
     //First, let's fetch all series with keys as external IDS, we'll loop through them
     $currentSeries = Serie::all()->keyBy('external_id')->toArray();
     //FirstOrNew is overkill, "eager load Series + contains($episode_id)" cannot check by external_id column, so pre-fetching is best approach
     $currentEpisodes = Episode::all()->lists('title', 'external_id')->toArray();
     foreach ($currentSeries as $external_id => $serie) {
         $output->writeln('Now syncing: ' . $serie['title']);
         $request = new Request('GET', 'http://api.tvmaze.com/shows/' . $external_id . '/episodes?specials=1');
         $response = $this->client->send($request);
         if ($response->getStatusCode() != 200) {
             $output->writeln('An error has been occurred while fetching series with external_id ' . $external_id);
             $output->writeln('Error code: ' . $response->getStatusCode());
             $output->writeln(self::separator);
             continue;
         }
         $episodes = json_decode($response->getBody()->getContents(), true);
         //Loop through all episodes:
         foreach ($episodes as $data) {
             if (!isset($currentEpisodes[$data['id']])) {
                 $episode = new Episode();
                 $episode->external_id = $data['id'];
                 $episode->serie_id_external = $external_id;
                 $episode->serie_id_internal = $currentSeries[$external_id]['id'];
                 $episode->season_id = $data['season'];
                 //Episode ID can be null or an integer, it MOST POSSIBLY IS special
                 if (is_null($data['number'])) {
                     $episode->episode_id = 0;
                     $episode->is_special = 1;
                 } else {
                     $episode->episode_id = $data['number'];
                     $episode->is_special = 0;
                 }
                 $episode->title = $data['name'];
                 $episode->description = $data['summary'];
                 $episode->url = $data['url'];
                 if (isset($data['image']['original'])) {
                     $episode->image = $data['image']['original'];
                 }
                 $episode->airdate = $data['airdate'] . ' ' . $data['airtime'];
                 $episode->save();
             }
         }
         $output->writeln($serie['title'] . ' synced successfully!');
         $output->writeln(self::separator);
     }
 }