From f97d81ef010d39f8c77ee162e88c4ead0c43373b Mon Sep 17 00:00:00 2001 From: a220971mg <a220971mg@h05.informatica.escoladeltreball.org> Date: Mon, 5 May 2025 18:02:20 +0200 Subject: [PATCH] arreglos --- app/Http/Controllers/ChaptersController.php | 26 +++-- app/Http/Controllers/FilmsController.php | 98 ++++++------------- app/Http/Controllers/GenreController | 33 +++++++ app/Http/Controllers/SeriesController.php | 24 ++--- app/Http/Requests/ChapterRequest.php | 15 ++- app/Http/Requests/FilmRequest.php | 1 + app/Models/Chapter.php | 4 +- app/Models/Film.php | 10 +- app/Models/Genre.php | 17 ++++ app/Models/Serie.php | 8 +- ...025_03_24_162404_create_chapters_table.php | 6 +- ...2025_05_05_154905_create_genres_table.php} | 11 +-- database/seeders/ChapterSeeder.php | 14 --- database/seeders/DatabaseSeeder.php | 14 +-- database/seeders/FilmSeeder.php | 49 ++++------ database/seeders/GenreSeeder.php | 45 +++++++++ database/seeders/SerieSeeder.php | 63 +++++++----- resources/views/contentInfo.blade.php | 38 ++----- 18 files changed, 256 insertions(+), 220 deletions(-) create mode 100644 app/Http/Controllers/GenreController create mode 100644 app/Models/Genre.php rename database/migrations/{2025_04_09_143536_add_username_and_subscription_to_users_table.php => 2025_05_05_154905_create_genres_table.php} (62%) create mode 100644 database/seeders/GenreSeeder.php diff --git a/app/Http/Controllers/ChaptersController.php b/app/Http/Controllers/ChaptersController.php index 8370b86a..86191a5d 100644 --- a/app/Http/Controllers/ChaptersController.php +++ b/app/Http/Controllers/ChaptersController.php @@ -4,22 +4,36 @@ use Illuminate\Http\Request; use App\Models\Chapter; +use App\Models\Serie; + class ChaptersController extends Controller { - public function addChapter(Request $request){ + + + public function store(Request $request) { $chapter = new Chapter(); - $chapter->idCapitulo = $request->input('idCapitulo'); + $chapter->idSerie = $request->input('serie'); + $chapter->temporada = $request->input('temporada'); $chapter->numeroCapitulo = $request->input('numeroCapitulo'); - $chapter->duracion = $request->input('duracion'); - $chapter->enlaceCapitulo = $request->input('enlaceCapitulo'); + + $enlaceCapitulo= $request->file('enlaceCapitulo'); + $enlaceCapituloPath = $enlaceCapitulo->store('capitulos', 'public'); + $chapter->enlaceCapitulo = $enlaceCapituloPath; + $chapter->save(); - return redirect()->route('addChapter')->with('success', 'Capitulo agregado correctamente'); + return redirect()->route('home')->with('success', 'Capitulo agregado correctamente'); } - + public function listChapters(){ $chapters = Chapter::all(); return $chapters; } + + public function create(Request $request) + { + $series = Serie::all(); + return view('addChapter', compact('series')); + } } diff --git a/app/Http/Controllers/FilmsController.php b/app/Http/Controllers/FilmsController.php index feaebc4a..39625e45 100644 --- a/app/Http/Controllers/FilmsController.php +++ b/app/Http/Controllers/FilmsController.php @@ -5,11 +5,9 @@ use Illuminate\Http\Request; use App\Models\Film; use App\Models\Serie; -use App\Http\Requests\FilmRequest; -use App\Models\Favorite; - +use App\Models\Genre; -use Illuminate\Support\Facades\Auth; +use App\Http\Requests\FilmRequest; class FilmsController extends Controller { @@ -23,19 +21,36 @@ public function showAllFilms() { //Consulta ELoquent $films = Film::all(); - return view('filmsHome', ['allFilms'=>$films]); + $series = Serie::all(); + $genres = Genre::all(); + return view('filmsHome', ['allFilms'=>$films, 'allGenres'=>$genres]); } - public function showList() { - - //Consulta ELoquent - $films = Film::all(); + public function showList(Request $request) { + // Obtener todos los géneros + $genres = Genre::all(); + + // Consulta Eloquent para obtener todas las películas + $films = Film::query(); + + // Si se ha seleccionado un género y no es vacío, filtra las películas por el género + if ($request->filled('genero') && $request->genero != '') { + $films = $films->where('genero', $request->input('genero')); + } + + // Obtener las películas según los filtros + $films = $films->get(); + + // Obtener todas las series $series = Serie::all(); - return view('home', ['allFilms'=>$films, 'allSeries'=>$series]); - + + return view('home', [ + 'allFilms' => $films, + 'allSeries' => $series, + 'allGenres' => $genres + ]); } - public function store(FilmRequest $request) @@ -56,7 +71,8 @@ public function store(FilmRequest $request) $film->portada = $portadaPath; $archivo= $request->file('archivo'); - $archivoPath = $archivo->store('films/peliculas', 'public'); + $nombreOriginal = $archivo->getClientOriginalName(); + $archivoPath = $archivo->storeAs('films/peliculas', $nombreOriginal); $film->archivo = $archivoPath; $trailer= $request->file('trailer'); @@ -74,68 +90,18 @@ public function store(FilmRequest $request) */ // Redireccionar a una página de éxito o mostrar un mensaje - return redirect()->route('admin.film.tools')->with('success', '¡Gracias! Tu pelicula ha sido guardada correctamente.'); + return redirect()->route('home')->with('success', '¡Gracias! Tu pelicula ha sido guardada correctamente.'); } public function showMovie($id) { $content = Film::findOrFail($id); - $type = 'film'; - $isFavorite = $this->checkFavorite($id); - return view('contentInfo', ['content' => $content,'isFavorite' => $isFavorite, 'type' => $type ]); + return view('contentInfo', ['content' => $content]); } public function reproduceMovie($id) { $content = Film::findOrFail($id); return view('watchContent', ['content' => $content]); } - - public function checkFavorite($id) { - if (auth()->check()) { - return Favorite::film($id)->user(Auth::user()->id)->exists(); - } else { - return false; - } - } - - // ADMIN - public function adminShowAllFilms() { - - //Consulta ELoquent - $films = Film::all(); - return view('admin/film/films-list', ['allFilms'=>$films]); - - } - - public function adminGetFilmWithId($id) { - $film = Film::findOrFail($id); - return view('admin/film/film-modify', ['film' => $film]); - } - - public function adminUpdateFilm(Request $request) { - - $film = Film::findOrFail($request->input('filmId')); - - $request->validate([ - 'duracion' => 'required|numeric|digits_between:1,3', - // 'portada' => 'required|file', - 'sinopsis' => 'required|string|max:999', - 'genero' => 'required|string|max:100', - 'nombre' => 'required|string|max:50' - ]); - - $film->sinopsis = $request->input('sinopsis'); - $film->duracion = $request->input('duracion'); - $film->genero = $request->input('genero'); - $film->nombre = $request->input('nombre'); - $film->save(); - return redirect()->route('admin.film.tools')->with('success', '¡Gracias! Tu pelicula ha sido guardada correctamente.'); - } - - public function adminDeleteFilm($id) { - $film = Film::findOrFail($id); - $film->delete(); - return redirect()->route('admin.film.list')->with('success', '¡Gracias! Tu pelicula ha sido borrada correctamente.'); - } - + } \ No newline at end of file diff --git a/app/Http/Controllers/GenreController b/app/Http/Controllers/GenreController new file mode 100644 index 00000000..03ac2188 --- /dev/null +++ b/app/Http/Controllers/GenreController @@ -0,0 +1,33 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use App\Models\Genre; + + +class GenreController extends Controller +{ + // + public function showAllGenres() + { + $genres = Genre::all(); + return view('films-form', ['allGenres' => $genres]); + } + public function index(Request $request) + { + // Obtener todos los géneros para el selector + $allGenres = Genre::all(); + + // Filtrar las películas si se ha seleccionado un género + if ($request->has('genero') && $request->genero != '') { + $filteredFilms = Film::where('genero', $request->genero)->get(); + } else { + // Si no hay filtro, obtener todas las películas + $filteredFilms = Film::all(); + } + + // Pasar los géneros y las películas filtradas a la vista + return view('films.index', compact('filteredFilms', 'allGenres')); + } +} diff --git a/app/Http/Controllers/SeriesController.php b/app/Http/Controllers/SeriesController.php index d6d80c5c..6eaeeb6e 100644 --- a/app/Http/Controllers/SeriesController.php +++ b/app/Http/Controllers/SeriesController.php @@ -1,13 +1,11 @@ <?php namespace App\Http\Controllers; - use App\Http\Requests\SerieRequest; // Importar la clase SerieRequest + use Illuminate\Http\Request; use App\Models\Serie; -use App\Models\Favorite; -use Illuminate\Support\Facades\Auth; - +use App\Models\Genre; class SeriesController extends Controller { @@ -15,7 +13,8 @@ public function showAllSeries() { //Consulta ELoquent $series = Serie::all(); - return view('seriesHome', ['allSeries'=>$series]); + $genres = Genre::all(); + return view('seriesHome', ['allSeries'=>$series, 'allGenres'=>$genres]); } public function store(SerieRequest $request) { @@ -45,17 +44,12 @@ public function store(SerieRequest $request) { public function showSerie($id) { $content = Serie::findOrFail($id); - $type = 'serie'; - $isFavorite = $this->checkFavorite($id); - return view('contentInfo', ['content' => $content, 'isFavorite' => $isFavorite, 'type' => $type]); + return view('contentInfo', ['content' => $content]); } - - public function checkFavorite($id) { - if (auth()->check()) { - return Favorite::where('serie_id', $id)->where('user_id', Auth::user()->id)->exists(); - } else { - return false; - } + + public function showAddChapterForm() { + $series = Serie::all(); + return view('addChapter', compact('series')); } } diff --git a/app/Http/Requests/ChapterRequest.php b/app/Http/Requests/ChapterRequest.php index b614503e..e2c5038d 100644 --- a/app/Http/Requests/ChapterRequest.php +++ b/app/Http/Requests/ChapterRequest.php @@ -25,21 +25,20 @@ public function authorize() public function rules() { return [ - 'idCapitulo' => 'required|numeric', + 'idSerie' => 'required|numeric', + 'temporada' => 'required|numeric', 'numeroCapitulo' => 'required|string', - 'duracion' => 'required|string', - 'enlaceCapitulo' => 'required|string', + 'enlaceCapitulo'=> 'required|file|mimes:mp4,mkv,avi', ]; } public function messages() { return [ - 'idCapitulo.required' => 'El id del capitulo es requerido', - 'idCapitulo.numeric' => 'El id del capitulo debe ser numerico', - 'numeroCapitulo.required' => 'El numero del capitulo es requerido', - 'duracion.required' => 'La duracion del capitulo es requerido', - 'enlaceCapitulo.required' => 'El enlace del capitulo es requerido', + 'idSerie.required' => 'El id de la serie es necesario', + 'temporada.required' => 'La temporada del capitulo es necesario', + 'numeroCapitulo.required' => 'El numero del capitulo es necesario', + 'enlaceCapitulo.required' => 'El enlace del capitulo es necesario', ]; } } diff --git a/app/Http/Requests/FilmRequest.php b/app/Http/Requests/FilmRequest.php index 67865d59..e1f6e256 100644 --- a/app/Http/Requests/FilmRequest.php +++ b/app/Http/Requests/FilmRequest.php @@ -50,6 +50,7 @@ public function messages() 'portada' => 'required|file|mimes:jpg,jpeg,png', 'archivo' => 'required|file|mimes:mp4,mkv,avi', 'trailer' => 'required|file|mimes:mp4,mkv,avi', + 'genero' => 'required|exists:genres,id', ]; } } diff --git a/app/Models/Chapter.php b/app/Models/Chapter.php index 45f035d2..945f400e 100644 --- a/app/Models/Chapter.php +++ b/app/Models/Chapter.php @@ -10,9 +10,9 @@ class Chapter extends Model use HasFactory; protected $fillable = [ - 'idCapitulo', + 'idSerie', + 'temporada', 'numeroCapitulo', - 'duracion', 'enlaceCapitulo' ]; } diff --git a/app/Models/Film.php b/app/Models/Film.php index 1b6361e3..e2e56b94 100644 --- a/app/Models/Film.php +++ b/app/Models/Film.php @@ -1,5 +1,4 @@ <?php - namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -15,7 +14,12 @@ class Film extends Model 'trailer', 'portada', 'sinopsis', - 'genero', - 'nombre' + 'genero', // Esto es el ID del género + 'nombre', ]; + + public function genre() + { + return $this->belongsTo(Genre::class, 'genero'); // 'genero' es la columna que guarda el ID del género + } } diff --git a/app/Models/Genre.php b/app/Models/Genre.php new file mode 100644 index 00000000..3d2198ab --- /dev/null +++ b/app/Models/Genre.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Models; + +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Model; + +class Genre extends Model +{ + use HasFactory; + + public $timestamps = false; + + protected $fillable = [ + 'genreName', + ]; +} diff --git a/app/Models/Serie.php b/app/Models/Serie.php index 5ac73d83..2669c688 100644 --- a/app/Models/Serie.php +++ b/app/Models/Serie.php @@ -17,4 +17,10 @@ class Serie extends Model 'genero', 'nombre' ]; -} \ No newline at end of file + + // Definir la relación con Genre + public function genre() + { + return $this->belongsTo(Genre::class, 'genero'); + } +} diff --git a/database/migrations/2025_03_24_162404_create_chapters_table.php b/database/migrations/2025_03_24_162404_create_chapters_table.php index 0439c015..9fbf1e08 100644 --- a/database/migrations/2025_03_24_162404_create_chapters_table.php +++ b/database/migrations/2025_03_24_162404_create_chapters_table.php @@ -15,14 +15,14 @@ public function up() { Schema::create('chapters', function (Blueprint $table) { $table->id(); - $table->decimal('idCapitulo', 5, 0); + $table->integer('idSerie'); + $table->integer('temporada'); $table->string('numeroCapitulo'); - $table->string('duracion'); $table->string('enlaceCapitulo'); $table->timestamps(); }); } - + /** * Reverse the migrations. * diff --git a/database/migrations/2025_04_09_143536_add_username_and_subscription_to_users_table.php b/database/migrations/2025_05_05_154905_create_genres_table.php similarity index 62% rename from database/migrations/2025_04_09_143536_add_username_and_subscription_to_users_table.php rename to database/migrations/2025_05_05_154905_create_genres_table.php index 04f4513b..5dad295f 100644 --- a/database/migrations/2025_04_09_143536_add_username_and_subscription_to_users_table.php +++ b/database/migrations/2025_05_05_154905_create_genres_table.php @@ -13,9 +13,9 @@ */ public function up() { - Schema::table('users', function (Blueprint $table) { - $table->string('username'); - $table->boolean('subscription')->default(false); + Schema::create('genres', function (Blueprint $table) { + $table->id(); + $table->string('genreName'); }); } @@ -26,8 +26,7 @@ public function up() */ public function down() { - Schema::table('users', function (Blueprint $table) { - // - }); + Schema::dropIfExists('genres'); } + }; diff --git a/database/seeders/ChapterSeeder.php b/database/seeders/ChapterSeeder.php index 2ed73cca..36dc56fd 100644 --- a/database/seeders/ChapterSeeder.php +++ b/database/seeders/ChapterSeeder.php @@ -15,20 +15,6 @@ class ChapterSeeder extends Seeder */ public function run() { - // - Chapter::create([ - 'idCapitulo' => 1, - 'numeroCapitulo' => '1', - 'duracion' => '20', - 'enlaceCapitulo' => 'https://www.youtube.com/watch?v=yB4n_K7dZV8' - ]); - - Chapter::create([ - 'idCapitulo' => 2, - 'numeroCapitulo' => '2', - 'duracion' => '20', - 'enlaceCapitulo' => 'https://www.youtube.com/watch?v=yB4n_K7dZV8' - ]); } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 2b20789a..45d0e5cd 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -1,11 +1,8 @@ <?php - namespace Database\Seeders; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; - class DatabaseSeeder extends Seeder { /** @@ -15,18 +12,13 @@ class DatabaseSeeder extends Seeder */ public function run() { - // \App\Models\User::factory(10)->create(); - - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); + // Llamamos primero al GenreSeeder para asegurarnos de que los géneros existen $this->call([ + GenreSeeder::class, // Primero los géneros SerieSeeder::class, - FilmSeeder::class, + FilmSeeder::class, // Luego las películas, que ya tendrán los géneros FavoriteSeeder::class, ChapterSeeder::class, - UserSeeder::class, ]); } } diff --git a/database/seeders/FilmSeeder.php b/database/seeders/FilmSeeder.php index 9e599329..268dbc3a 100644 --- a/database/seeders/FilmSeeder.php +++ b/database/seeders/FilmSeeder.php @@ -2,10 +2,9 @@ namespace Database\Seeders; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\Film; - +use App\Models\Genre; // Importar el modelo de Genre class FilmSeeder extends Seeder { @@ -16,16 +15,23 @@ class FilmSeeder extends Seeder */ public function run() { - // + // Obtener los géneros por su nombre + $drama = Genre::where('genreName', 'Drama')->first(); + $comedy = Genre::where('genreName', 'Comedy')->first(); + $action = Genre::where('genreName', 'Action')->first(); + $horror = Genre::where('genreName', 'Horror')->first(); + $romance = Genre::where('genreName', 'Romance')->first(); + $scienceFiction = Genre::where('genreName', 'Science Fiction')->first(); + + // Crear las películas con los géneros correctos Film::create([ 'duracion' => 150, 'archivo' => 'films/peliculas/pan.mp4', 'trailer' => 'films/trailers/pan.mp4', 'portada' => 'films/caratulas/1743007011_jaws.jpeg', - 'sinopsis' => 'Tiburón (título original: Jaws) es una película estadounidense de terror, suspense y aventuras de 1975, dirigida por Steven Spielberg y basada en la novela homónima de Peter Benchley. En la historia, un enorme tiburón blanco devorador de hombres ataca a los bañistas en las playas de Amity Island, lo cual lleva al jefe de la policía local a emprender la caza del escualo junto a un biólogo marino y un marinero profesional. El actor Roy Scheider interpreta al jefe de policía Martin Brody, Richard Dreyfuss al oceanógrafo Matt Hooper, Robert Shaw al marinero Quint, Murray Hamilton al alcalde de Amity Island y Lorraine Gary a Ellen, esposa de Brody. El guion está acreditado tanto al propio Benchley, que elaboró los borradores iniciales, como al actor y guionista Carl Gottlieb, que lo reescribió durante el rodaje.', - 'genero' => 'Terror, suspense', + 'sinopsis' => 'Tiburón (título original: Jaws) es una película estadounidense de terror, suspense...', + 'genero' => $horror->id, // Asignamos el ID del género 'nombre' => 'Tiburón' - ]); Film::create([ @@ -33,10 +39,9 @@ public function run() 'archivo' => 'films/peliculas/pan.mp4', 'trailer' => 'films/trailers/pan.mp4', 'portada' => 'films/caratulas/1743010338_caballeroOscuro.jpeg', - 'sinopsis' => 'La trama sigue al justiciero Batman, al teniente de policía James Gordon y al fiscal de distrito Harvey Dent, quienes forman una alianza para desmantelar el crimen organizado en Ciudad Gótica . Sus esfuerzos se ven frustrados por el Guasón, una mente maestra anarquista que busca poner a prueba hasta dónde llegará Batman para salvar la ciudad del caos.', - 'genero' => 'Accion, superheroes', + 'sinopsis' => 'La trama sigue al justiciero Batman, al teniente de policía James Gordon...', + 'genero' => $action->id, // Asignamos el ID del género 'nombre' => 'El Caballero Oscuro' - ]); Film::create([ @@ -44,10 +49,9 @@ public function run() 'archivo' => 'films/peliculas/pan.mp4', 'trailer' => 'films/trailers/pan.mp4', 'portada' => 'films/caratulas/1743010483_poratdaBarbie.jpg', - 'sinopsis' => 'Barbie (Margot Robbie) lleva una vida ideal en Barbieland, allí todo es perfecto, con chupi fiestas llenas de música y color, y todos los días son el mejor día. Claro que Barbie se hace algunas preguntas, cuestiones bastante incómodas que no encajan con el mundo idílico en el que ella y las demás Barbies viven.', - 'genero' => 'Comedia, drama', + 'sinopsis' => 'Barbie (Margot Robbie) lleva una vida ideal en Barbieland...', + 'genero' => $comedy->id, // Asignamos el ID del género 'nombre' => 'Barbie' - ]); Film::create([ @@ -55,10 +59,9 @@ public function run() 'archivo' => 'films/peliculas/pan.mp4', 'trailer' => 'films/trailers/pan.mp4', 'portada' => 'films/caratulas/1743010559_pulpFiction.jpeg', - 'sinopsis' => 'Jules Winnfield (Samuel L. Jackson, Jackie Brown) y Vincent Vega (John Travolta, Grease) son dos asesinos a sueldo que trabajan a las órdenes del temido gángster Marsellus Wallace (Ving Rhames, Amanecer de los muertos), quien les encarga la importante misión de recuperar su misterioso maletín, que ha sido robado.', - 'genero' => 'Thriller, acción', + 'sinopsis' => 'Jules Winnfield (Samuel L. Jackson, Jackie Brown) y Vincent Vega...', + 'genero' => $drama->id, // Asignamos el ID del género 'nombre' => 'Pulp Fiction' - ]); Film::create([ @@ -66,21 +69,9 @@ public function run() 'archivo' => 'films/peliculas/pan.mp4', 'trailer' => 'films/trailers/pan.mp4', 'portada' => 'films/caratulas/1743011150_roky.jpeg', - 'sinopsis' => 'Rocky es una película estadounidense de 1976 escrita y protagonizada por Sylvester Stallone y dirigida por John G. Avildsen. La historia narra la búsqueda del sueño americano por parte de Rocky Balboa, un italoestadounidense de clase baja que se dedica a cobrar los créditos de un prestamista de Filadelfia.', - 'genero' => 'Acción, deporte', + 'sinopsis' => 'Rocky es una película estadounidense de 1976 escrita y protagonizada por Sylvester Stallone...', + 'genero' => $action->id, // Asignamos el ID del género 'nombre' => 'Roky' - ]); - - // Film::create([ - // 'duracion' => 150, - // 'archivo' => 'https://www.youtube.com/watch?v=yB4n_K7dZV8', - // 'portada' => 'httyd.jpg', - // 'sinopsis' => 'Cómo entrenar a tu dragón se centra alrededor de un Vikingo adolescente llamado Hipo que vive en la isla de berk con el resto de su tribu. A lo largo de siete generaciones, berk ha sido continuamente atacada por dragones de todas las especies diferentes, lo que provocó una guerra entre ellos y la tribu.', - // 'genero' => 'Animacion, accion', - // 'nombre' => 'Como entrenar a tu dragon' - - // ]); - } } diff --git a/database/seeders/GenreSeeder.php b/database/seeders/GenreSeeder.php new file mode 100644 index 00000000..62344c13 --- /dev/null +++ b/database/seeders/GenreSeeder.php @@ -0,0 +1,45 @@ +<?php + +namespace Database\Seeders; + +use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use Illuminate\Database\Seeder; +use App\Models\Genre; + + +class GenreSeeder extends Seeder +{ + /** + * Run the database seeds. + * + * @return void + */ + public function run() + { + // + Genre::create([ + 'genreName' => 'Drama', + ]); + + Genre::create([ + 'genreName' => 'Comedy', + ]); + + Genre::create([ + 'genreName' => 'Action', + ]); + + Genre::create([ + 'genreName' => 'Horror', + ]); + + Genre::create([ + 'genreName' => 'Romance', + ]); + + Genre::create([ + 'genreName' => 'Science Fiction', + ]); + + } +} diff --git a/database/seeders/SerieSeeder.php b/database/seeders/SerieSeeder.php index 1ae0d317..a2127f1d 100644 --- a/database/seeders/SerieSeeder.php +++ b/database/seeders/SerieSeeder.php @@ -2,71 +2,80 @@ namespace Database\Seeders; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\Serie; +use App\Models\Genre; class SerieSeeder extends Seeder { /** * Run the database seeds. - * - * @return void */ public function run() { + // Obtener los géneros por nombre + $dystopia = Genre::where('genreName', 'Distopia')->first(); + $scifi = Genre::where('genreName', 'Science Fiction')->first(); + $horror = Genre::where('genreName', 'Horror')->first(); + $action = Genre::where('genreName', 'Action')->first(); + $adventure = Genre::where('genreName', 'Adventure')->first(); + $drama = Genre::where('genreName', 'Drama')->first(); + $crime = Genre::where('genreName', 'Crime')->first(); + $comedy = Genre::where('genreName', 'Comedy')->first(); + + // Crear series con género por ID (puedes combinar varios si usas relaciones many-to-many) Serie::create([ - 'temporadas' => '6', + 'temporadas' => 6, 'portada' => 'series/0br0qi51KvAxO1T6xqmcc1aB5Yfzc437ixYh4Uwz.jpg', - 'sinopsis' => 'Cien jóvenes exiliados de una aciaga estación espacial son enviados a la Tierra 97 años luego de un Apocalipsis nuclear para evaluar si el planeta es habitable otra vez.', - 'genero' => 'Distopia, ciencia-ficción', + 'sinopsis' => 'Cien jóvenes exiliados...', + 'genero' => $scifi?->id, 'nombre' => 'Los 100', - 'archivo' => 'los_100_episode_1.mp4' // Ejemplo de archivo + 'archivo' => 'los_100_episode_1.mp4' ]); Serie::create([ + 'temporadas' => 1, 'portada' => 'series/ysahsTM7ZLvELc6Kozy6vnU5JrQmxNRsdyf08nu9.webp', + 'sinopsis' => 'En The Last of Us...', + 'genero' => $horror?->id ?? $action?->id, 'nombre' => 'The Last of Us', - 'sinopsis' => 'En The Last of Us, la supervivencia de los jugadores se ve desafiada por numerosos retos, y tal vez ninguno sea más imponente que los diferentes infectados a los que se enfrentan Joel, Ellie y los demás.', - 'genero' => 'Terror, acción, aventura', - 'temporadas' => '1', - 'archivo' => 'the_last_of_us_episode_1.mp4' // Ejemplo de archivo + 'archivo' => 'the_last_of_us_episode_1.mp4' ]); Serie::create([ - 'temporadas' => '2', + 'temporadas' => 2, 'portada' => 'series/Wf0Z0IKLQoSmaWFrXRmT3JKjrFMIE3FjYZlxMaUB.webp', - 'sinopsis' => 'Un profesor de química con cáncer terminal se asocia con un exalumno suyo para fabricar y vender metanfetamina a fin de que su familia no pase apuros económicos. "Breaking Bad" obtuvo 16 premios Emmy, incluyendo cuatro al mejor actor en una serie dramática para Bryan Cranston.', - 'genero' => 'Drama, crimen', + 'sinopsis' => 'Un profesor de química...', + 'genero' => $drama?->id ?? $crime?->id, 'nombre' => 'Breaking Bad', - 'archivo' => 'breaking_bad_episode_1.mp4' // Ejemplo de archivo + 'archivo' => 'breaking_bad_episode_1.mp4' ]); Serie::create([ - 'temporadas' => '3', + 'temporadas' => 3, 'portada' => 'series/cSzGDkK4pS9923zvLLcqaQdgXlz63jq4ZOT204E5.jpg', - 'sinopsis' => 'Better Call Saul sigue la transformación de Jimmy McGill (Bob Odenkirk), un ex estafador que intenta convertirse en un abogado respetable, a la personalidad del extravagante abogado penalista Saul Goodman (un juego de palabras con la frase "[it]s all good, man!"), seis años antes de aliarse con Walter White en...', - 'genero' => 'Drama, crimen', + 'sinopsis' => 'Better Call Saul sigue...', + 'genero' => $drama?->id ?? $crime?->id, 'nombre' => 'Better Call Saul', - 'archivo' => 'better_call_saul_episode_1.mp4' // Ejemplo de archivo + 'archivo' => 'better_call_saul_episode_1.mp4' ]); Serie::create([ - 'temporadas' => '4', + 'temporadas' => 4, 'portada' => 'series/N4X9uc7qP6zJ01MEMxJoqMIMQvFB7aCTQ4bDoo6Z.webp', - 'sinopsis' => 'Birmingham, 1939. Thomas Shelby es el violento líder de una conocida banda; un jefe del crimen organizado dispuesto a llegar a lo más alto sin importar el precio. Ganó un BAFTA a mejor serie dramática; Cillian Murphy y Charlie Murphy los IFTA a mejor actor y mejor actriz de reparto.', - 'genero' => 'Drama, crimen', + 'sinopsis' => 'Birmingham, 1939...', + 'genero' => $drama?->id ?? $crime?->id, 'nombre' => 'Peaky Blinders', - 'archivo' => 'peaky_blinders_episode_1.mp4' // Ejemplo de archivo + 'archivo' => 'peaky_blinders_episode_1.mp4' ]); Serie::create([ - 'temporadas' => '10', + 'temporadas' => 10, 'portada' => 'https://image.tmdb.org/t/p/original/klL4yhwiU8aF4AuF5dCfJA9sRnS.jpg', - 'sinopsis' => 'La serie narra la vida de Jay Pritchett y su familia, todos vecinos del mismo barrio a las afueras de Los Ángeles, y gira en torno a tres tipos de familia: nuclear, extendida y con padres del mismo sexo y está basada en situaciones cómicas que podrían ocurrirle a cualquiera en la vida real.', - 'genero' => 'Comedia', + 'sinopsis' => 'La serie narra la vida de Jay Pritchett...', + 'genero' => $comedy?->id, 'nombre' => 'Modern Family', - 'archivo' => 'peaky_blinders_episode_1.mp4' + 'archivo' => 'modern_family_episode_1.mp4' ]); } } diff --git a/resources/views/contentInfo.blade.php b/resources/views/contentInfo.blade.php index f3d1e259..a902a036 100644 --- a/resources/views/contentInfo.blade.php +++ b/resources/views/contentInfo.blade.php @@ -13,8 +13,12 @@ <p class="text-center">{{ $content->sinopsis }}</p> </div> <div class="p-3 w-100"> - <p class="text-left"><strong>Género:</strong> {{ $content->genero }}</p> - {{-- Si no hay duracion total por que es una serie y solo sale en pelis no sacamos el P --}} + @if ($content->genre) + <p><strong>Género:</strong> {{ $content->genre->genreName }}</p> + @else + <p><strong>Género:</strong> No disponible</p> + @endif + {{-- Si no hay duracion total por que es una serie y solo sale en pelis no sacamos el P --}} @if ($content->duracion !== null) <p class="text-left"><strong>Duración:</strong> {{ $content->duracion }} min</p> @endif @@ -30,7 +34,6 @@ </div> @endif </div> - @if ($content->temporadas !== null) <div class="d-flex justify-content-center w-100"> <a class="btn btn-primary w-100 m-1" href="{{ url('/media/watchContent/serie/' . $content->id) }}" role="button">Watch Now</a> @@ -40,32 +43,9 @@ <a class="btn btn-primary w-100 m-1" href="{{ url('/media/watchContent/film/' . $content->id) }}" role="button">Watch Now</a> </div> @endif - - @auth - @if (!$isFavorite) - <!-- <div class="d-flex justify-content-left w-100"> - <a class="btn btn-secondary m-1" href="/media/addToFavorites/{{ $content->id }}" role="button">Add to favorites</a> - </div> --> - <form action="{{ route('addToFavorites'); }}" method="POST"> - @csrf - <input type="text" name="idContent" value="{{ $content->id }}" hidden > - <input type="text" name="type" value="{{ $type }}" hidden > - <button type="submit"class="btn btn-secondary m-1">Add to favorites</button> - </form> - @else - <form action="{{ route('removedFromFavorites'); }}" method="POST"> - @csrf - <input type="text" name="idContent" value="{{ $content->id }}" hidden > - <input type="text" name="type" value="{{ $type }}" hidden > - <button type="submit"class="btn btn-danger m-1">Remove from favorites</button> - </form> - @endif - @endauth - @guest - <div class="d-flex justify-content-left w-100"> - <a class="btn btn-secondary m-1" href="/login" role="button">Login to add to favorites</a> - </div> - @endguest + <div class="d-flex justify-content-left w-100"> + <a class="btn btn-primary m-1" href="#" role="button">Add to favorites</a> + </div> </div> <div class="col-md-4"> <p style="font-size: 2em;"><strong>Play Trailer</strong></p> -- GitLab