diff --git a/app/Models/Movie.php b/app/Models/Movie.php index b6c30b2..56aba9e 100644 --- a/app/Models/Movie.php +++ b/app/Models/Movie.php @@ -55,6 +55,11 @@ class Movie extends Model public function keywords() { - return $this->belongsToMany(Keyword::class, 'movie_keywords', 'movie_id', 'leyword_id'); + return $this->belongsToMany(Keyword::class, 'movie_keywords', 'movie_id', 'keyword_id'); + } + + public function releaseDates() + { + return $this->belongsToMany(ReleaseDate::class, 'movie_release_dates', 'movie_id', 'release_date_id'); } } diff --git a/app/Models/ReleaseDate.php b/app/Models/ReleaseDate.php new file mode 100644 index 0000000..7085b63 --- /dev/null +++ b/app/Models/ReleaseDate.php @@ -0,0 +1,18 @@ +removeElementFromRemainingJobs($item->tmdb_id, ItemToFetchJobs::JOB_KEYWORDS); } + private function getReleases($item) + { + $tmdbReleases = $this->moviesApi->getReleases($item->tmdb_id); + + if (empty($tmdbReleases) || !isset($tmdbReleases['countries'])) { + echo "[E] Movie ".$item->tmdb_id ." Releases ".json_encode($tmdbReleases)."\n\n"; + return; + } + + $movie = Movie::where('tmdb_id', $item->tmdb_id)->first(); + + echo "Movie ".$movie->id ." Releases ".json_encode($tmdbReleases)."\n\n"; + + foreach ($tmdbReleases['countries'] as $tmdbRelease) { + $existingReleaseDate = ReleaseDate::where('iso_3166', $tmdbRelease['iso_3166_1']) + ->where('release_date', $tmdbRelease['release_date']) + ->where('certification', $tmdbRelease['certification']) + ->first(); + + + if (!$existingReleaseDate) { + $existingReleaseDate = ReleaseDate::create([ + 'iso_3166' => $tmdbRelease['iso_3166_1'], + 'certification' => $tmdbRelease['certification'], + 'descriptors' => $tmdbRelease['descriptors'] ? json_encode($tmdbRelease['descriptors']) : null, + 'release_date' => $tmdbRelease['release_date'], + ]); + } + + if ($movie->whereHas('releaseDates', function ($query) use ($movie) { + $query->where('movie_id', $movie->id); + })->exists()) { + echo "Movie has release date | "; + return; + } else { + echo "Movie does not have release date | "; + $movie->releaseDates()->attach($existingReleaseDate); + } + } + + $this->removeElementFromRemainingJobs($item->tmdb_id, ItemToFetchJobs::JOB_RELEASES); + } + private function processMovieCollection(int $movieId, $belongsToCollection) { $movieCollection = MovieCollection::where('tmdb_id', $belongsToCollection['id'])->first(); diff --git a/database/migrations/2024_12_30_005017_create_release_dates_table.php b/database/migrations/2024_12_30_005017_create_release_dates_table.php new file mode 100644 index 0000000..f678ce3 --- /dev/null +++ b/database/migrations/2024_12_30_005017_create_release_dates_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('iso_3166'); + $table->string('certification'); + $table->text('descriptors'); + $table->string('iso_639'); + $table->text('note'); + $table->date('release_date'); + $table->integer('type'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('release_dates'); + } +}; diff --git a/database/migrations/2024_12_30_005026_create_movie_release_dates_table.php b/database/migrations/2024_12_30_005026_create_movie_release_dates_table.php new file mode 100644 index 0000000..ece0292 --- /dev/null +++ b/database/migrations/2024_12_30_005026_create_movie_release_dates_table.php @@ -0,0 +1,29 @@ +id(); + $table->unsignedBigInteger('movie_id'); + $table->unsignedBigInteger('release_date_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('movie_release_dates'); + } +};