From 392a9b9a6281e50e89c50add5329c43e6ec9a6a4 Mon Sep 17 00:00:00 2001
From: a231995gn <a231995gn@h32.informatica.escoladeltreball.org>
Date: Wed, 5 Mar 2025 17:40:15 +0100
Subject: [PATCH] feat: films logic and view

---
 app/Http/Controllers/FilmsController.php      |  19 +++
 app/Models/Film.php                           |  34 ++++
 app/Models/User.php                           |  44 -----
 aq                                            |  24 +++
 .../2014_10_12_000000_create_users_table.php  |  36 ----
 .../2025_02_19_182924_create_films_table.php  |  42 +++++
 database/seeders/DatabaseSeeder.php           |  15 +-
 database/seeders/FilmsSeeder.php              |  51 ++++++
 docs/diagrams/gen.sh                          |   4 +
 docs/diagrams/netflix_er.dot                  |  85 ++++++++++
 docs/diagrams/netflix_er.png                  | Bin 0 -> 40378 bytes
 docs/diagrams/netflix_er.svg                  | 155 ++++++++++++++++++
 resources/views/film.blade.php                |  21 +++
 resources/views/home.blade.php                |  35 ++++
 resources/views/layouts/app.blade.php         |  83 ++++++++++
 routes/web.php                                |  12 +-
 16 files changed, 562 insertions(+), 98 deletions(-)
 create mode 100644 app/Http/Controllers/FilmsController.php
 create mode 100644 app/Models/Film.php
 delete mode 100644 app/Models/User.php
 create mode 100644 aq
 delete mode 100644 database/migrations/2014_10_12_000000_create_users_table.php
 create mode 100644 database/migrations/2025_02_19_182924_create_films_table.php
 create mode 100644 database/seeders/FilmsSeeder.php
 create mode 100755 docs/diagrams/gen.sh
 create mode 100644 docs/diagrams/netflix_er.dot
 create mode 100644 docs/diagrams/netflix_er.png
 create mode 100644 docs/diagrams/netflix_er.svg
 create mode 100644 resources/views/film.blade.php
 create mode 100644 resources/views/home.blade.php
 create mode 100644 resources/views/layouts/app.blade.php

diff --git a/app/Http/Controllers/FilmsController.php b/app/Http/Controllers/FilmsController.php
new file mode 100644
index 00000000..c44901e0
--- /dev/null
+++ b/app/Http/Controllers/FilmsController.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Models\Film;
+
+class FilmsController extends Controller {
+    public function index() {
+        $filmsSciFi = Film::where("genre", "Sci-Fi")->get();
+        $filmsDrama = Film::where("genre", "Drama")->get();
+        return view("home", compact("filmsSciFi", "filmsDrama"));
+    }
+
+    public function show($id) {
+        $film = Film::findOrFail($id);
+        return view("film", compact("film"));
+    }
+}
\ No newline at end of file
diff --git a/app/Models/Film.php b/app/Models/Film.php
new file mode 100644
index 00000000..6e6e45f7
--- /dev/null
+++ b/app/Models/Film.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Film extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        "genre",
+        "director",
+        "sinopsis",
+        "duration",
+        "year",
+        "casting",
+        "image",
+        "recommended_id"
+    ];
+
+    protected $casts = [
+        "casting" => "array"
+    ];
+
+    public function recommendedFilm() {
+        return $this->belongsTo(Film::class, "recommended_id");
+    }
+
+    public function recommendedBy() {
+        return $this->hasMany(Film::class, "recommended_id");
+    }
+}
\ No newline at end of file
diff --git a/app/Models/User.php b/app/Models/User.php
deleted file mode 100644
index 23b40634..00000000
--- a/app/Models/User.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace App\Models;
-
-// use Illuminate\Contracts\Auth\MustVerifyEmail;
-use Illuminate\Database\Eloquent\Factories\HasFactory;
-use Illuminate\Foundation\Auth\User as Authenticatable;
-use Illuminate\Notifications\Notifiable;
-use Laravel\Sanctum\HasApiTokens;
-
-class User extends Authenticatable
-{
-    use HasApiTokens, HasFactory, Notifiable;
-
-    /**
-     * The attributes that are mass assignable.
-     *
-     * @var array<int, string>
-     */
-    protected $fillable = [
-        'name',
-        'email',
-        'password',
-    ];
-
-    /**
-     * The attributes that should be hidden for serialization.
-     *
-     * @var array<int, string>
-     */
-    protected $hidden = [
-        'password',
-        'remember_token',
-    ];
-
-    /**
-     * The attributes that should be cast.
-     *
-     * @var array<string, string>
-     */
-    protected $casts = [
-        'email_verified_at' => 'datetime',
-    ];
-}
diff --git a/aq b/aq
new file mode 100644
index 00000000..d684d6f4
--- /dev/null
+++ b/aq
@@ -0,0 +1,24 @@
+52320bf (HEAD -> 6-view-listmovies, origin/main, origin/6-view-listmovies) HEAD@{0}: checkout: moving from feature/films to 6-view-listmovies
+b64c149 (feature/films) HEAD@{1}: checkout: moving from feature/films to feature/films
+b64c149 (feature/films) HEAD@{2}: checkout: moving from 6-view-listmovies to feature/films
+52320bf (HEAD -> 6-view-listmovies, origin/main, origin/6-view-listmovies) HEAD@{3}: checkout: moving from 24-layout to 6-view-listmovies
+6612e64 (origin/24-layout, 24-layout) HEAD@{4}: commit: done
+52320bf (HEAD -> 6-view-listmovies, origin/main, origin/6-view-listmovies) HEAD@{5}: checkout: moving from films to 24-layout
+8ad5b6c (origin/films, films) HEAD@{6}: checkout: moving from 22-create_upload_dir_and_upload_form to films
+017ef6e (origin/22-create_upload_dir_and_upload_form, 22-create_upload_dir_and_upload_form) HEAD@{7}: commit: done
+fe28a40 HEAD@{8}: checkout: moving from main to 22-create_upload_dir_and_upload_form
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{9}: reset: moving to HEAD
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{10}: reset: moving to HEAD
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{11}: checkout: moving from create_upload_dir_and_upload_form to main
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{12}: Branch: renamed refs/heads/feature/create_upload_dir to refs/heads/create_upload_dir_and_upload_form
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{14}: checkout: moving from main to feature/create_upload_dir
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{15}: checkout: moving from films to main
+8ad5b6c (origin/films, films) HEAD@{16}: commit: test
+8961381 HEAD@{17}: commit (merge): Fusionando feature/films en films
+39eb140 (origin/6-view-listmovies-3) HEAD@{18}: checkout: moving from feature/films to films
+b64c149 (feature/films) HEAD@{19}: checkout: moving from feature/films to feature/films
+b64c149 (feature/films) HEAD@{20}: checkout: moving from films to feature/films
+39eb140 (origin/6-view-listmovies-3) HEAD@{21}: checkout: moving from feature/films to films
+b64c149 (feature/films) HEAD@{22}: commit: Saving in stage
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{23}: checkout: moving from main to feature/films
+74d1464 (origin/feature/films, origin/create_upload_dir_and_upload_form, rm, main, create_upload_dir_and_upload_form) HEAD@{24}: clone: from https://gitlab.inf.edt.cat/daw/m7/laravel/laravel-9.0.git
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
deleted file mode 100644
index cf6b7766..00000000
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-return new class extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('users', function (Blueprint $table) {
-            $table->id();
-            $table->string('name');
-            $table->string('email')->unique();
-            $table->timestamp('email_verified_at')->nullable();
-            $table->string('password');
-            $table->rememberToken();
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('users');
-    }
-};
diff --git a/database/migrations/2025_02_19_182924_create_films_table.php b/database/migrations/2025_02_19_182924_create_films_table.php
new file mode 100644
index 00000000..f18e0642
--- /dev/null
+++ b/database/migrations/2025_02_19_182924_create_films_table.php
@@ -0,0 +1,42 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('films', function (Blueprint $table) {
+            $table->id();
+            $table->string('title');
+            $table->string('genre');
+            $table->string('director');
+            $table->text('sinopsis');
+            $table->integer('duration');  // minutes
+            $table->year('year');
+            $table->json('casting');
+            $table->string("image")->nullable();
+            $table->unsignedBigInteger('recommended_id')->nullable();
+            $table->timestamps();
+
+            $table->foreign("recommended_id")->references("id")->on("films")->onDelete("set null");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('films');
+    }
+};
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 76d96dc7..1d61543f 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -2,7 +2,6 @@
 
 namespace Database\Seeders;
 
-// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 use Illuminate\Database\Seeder;
 
 class DatabaseSeeder extends Seeder
@@ -12,13 +11,9 @@ class DatabaseSeeder extends Seeder
      *
      * @return void
      */
-    public function run()
-    {
-        // \App\Models\User::factory(10)->create();
-
-        // \App\Models\User::factory()->create([
-        //     'name' => 'Test User',
-        //     'email' => 'test@example.com',
-        // ]);
+    public function run() {
+        $this->call([
+            FilmsSeeder::class
+        ]);
     }
-}
+}
\ No newline at end of file
diff --git a/database/seeders/FilmsSeeder.php b/database/seeders/FilmsSeeder.php
new file mode 100644
index 00000000..cb006223
--- /dev/null
+++ b/database/seeders/FilmsSeeder.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+use App\Models\Film;
+
+class FilmsSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run() {
+        $film1 = Film::create([
+            "title" => "Inception",
+            "genre" => "Sci-Fi",
+            "director" => "Christopher Nolan",
+            "sinopsis" => "A thief who enters the dreams of others to steal secrets.",
+            "duration" => 148,
+            "year" => 2010,
+            "casting" => json_encode(["Leonardo DiCaprio", "Joseph Gordon-Levitt", "Elliot Page"]),
+            "image" => "inception.jpg"
+        ]);
+
+        $film2 = Film::create([
+            "title" => "Interstellar",
+            "genre" => "Sci-Fi",
+            "director" => "Christopher Nolan",
+            "sinopsis" => "A team of explorers travel through a wormhole in space.",
+            "duration" => 169,
+            "year" => 2014,
+            "casting" => json_encode(["Matthew McConaughey", "Anne Hathaway", "Jessica Chastain"]),
+            "image" => "interstellar.jpg",
+            "recommended_id" => $film1->id
+        ]);
+
+        $film3 = Film::create([
+            "title" => "The Godfather",
+            "genre" => "Drama",
+            "director" => "Francis Ford Coppola",
+            "sinopsis" => "La historia de una familia mafiosa en Nueva York.",
+            "duration" => 175,
+            "year" => 1972,
+            "casting" => json_encode(["Marlon Brando", "Al Pacino"]),
+            "image" => "godfather.jpg"
+        ]);
+    }
+}
\ No newline at end of file
diff --git a/docs/diagrams/gen.sh b/docs/diagrams/gen.sh
new file mode 100755
index 00000000..084eb0eb
--- /dev/null
+++ b/docs/diagrams/gen.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+dot -Tpng ./netflix_er.dot -o ./netflix_er.png
+dot -Tsvg ./netflix_er.dot -o ./netflix_er.svg
\ No newline at end of file
diff --git a/docs/diagrams/netflix_er.dot b/docs/diagrams/netflix_er.dot
new file mode 100644
index 00000000..2fc5111a
--- /dev/null
+++ b/docs/diagrams/netflix_er.dot
@@ -0,0 +1,85 @@
+digraph NetflixER {
+    rankdir=TB;
+    node [shape=plaintext, fontname="Helvetica Neue", fontsize=10];
+    edge [fontname="Helvetica Neue", fontsize=9, arrowsize=0.8, color="#606060"];
+    
+    /* ================= TABLAS PRINCIPALES ================= */
+    Users [label=<
+        <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+            <tr><td bgcolor="#2c3e50" colspan="2"><font color="white"><b>Users</b></font></td></tr>
+            <tr><td align="left" port="user_id">πŸ”‘ user_id</td></tr>
+            <tr><td align="left">πŸ“§ email</td></tr>
+            <tr><td align="left">πŸ”’ password_hash</td></tr>
+            <tr><td align="left">πŸ“… registration_date</td></tr>
+            <tr><td align="left" port="plan_id">πŸ—‚ plan_id (FK)</td></tr>
+        </table>>];
+    
+    Profiles [label=<
+        <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+            <tr><td bgcolor="#2c3e50" colspan="2"><font color="white"><b>Profiles</b></font></td></tr>
+            <tr><td align="left" port="profile_id">πŸ”‘ profile_id</td></tr>
+            <tr><td align="left" port="user_id">πŸ‘₯ user_id (FK)</td></tr>
+            <tr><td align="left">πŸ‘€ name</td></tr>
+            <tr><td align="left">πŸ–Ό avatar</td></tr>
+        </table>>];
+    
+    Content [label=<
+        <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+            <tr><td bgcolor="#2c3e50" colspan="2"><font color="white"><b>Content</b></font></td></tr>
+            <tr><td align="left" port="content_id">πŸ”‘ content_id</td></tr>
+            <tr><td align="left">🎬 title</td></tr>
+            <tr><td align="left">πŸ“ description</td></tr>
+            <tr><td align="left">⏱ duration</td></tr>
+            <tr><td align="left">🎞 type</td></tr>
+        </table>>];
+    
+    Genres [label=<
+        <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+            <tr><td bgcolor="#2c3e50" colspan="2"><font color="white"><b>Genres</b></font></td></tr>
+            <tr><td align="left" port="genre_id">πŸ”‘ genre_id</td></tr>
+            <tr><td align="left">🏷 name</td></tr>
+        </table>>];
+    
+    /* ================= TABLAS DE RELACIΓ“N ================= */
+    ContentGenres [label=<
+        <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#f8f9fa">
+            <tr><td bgcolor="#95a5a6" colspan="2"><font color="white"><b>ContentGenres</b></font></td></tr>
+            <tr><td align="left" port="content_id">🎬 content_id (FK)</td></tr>
+            <tr><td align="left" port="genre_id">🏷 genre_id (FK)</td></tr>
+        </table>>];
+    
+    /* ================= ESTRUCTURA JERÁRQUICA ================= */
+    subgraph cluster_media {
+        label="Estructura de Contenido";
+        bgcolor="transparent";
+        
+        Seasons [label=<
+            <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+                <tr><td bgcolor="#34495e" colspan="2"><font color="white"><b>Seasons</b></font></td></tr>
+                <tr><td align="left" port="season_id">πŸ”‘ season_id</td></tr>
+                <tr><td align="left" port="content_id">🎬 content_id (FK)</td></tr>
+                <tr><td align="left">#️⃣ number</td></tr>
+            </table>>];
+        
+        Episodes [label=<
+            <table border="0" cellborder="1" cellspacing="0" cellpadding="4" bgcolor="#ffffff">
+                <tr><td bgcolor="#34495e" colspan="2"><font color="white"><b>Episodes</b></font></td></tr>
+                <tr><td align="left" port="episode_id">πŸ”‘ episode_id</td></tr>
+                <tr><td align="left" port="season_id">πŸ“Ό season_id (FK)</td></tr>
+                <tr><td align="left">πŸ“Ί title</td></tr>
+            </table>>];
+    }
+    
+    /* ================= RELACIONES PRINCIPALES ================= */
+    Users -> Profiles [label="1:N", headlabel="<<has>>", fontcolor="#2980b9"];
+    Content -> Seasons [label="1:N", headlabel="<<has>>", fontcolor="#2980b9"];
+    Seasons -> Episodes [label="1:N", headlabel="<<has>>", fontcolor="#2980b9"];
+    
+    Content -> ContentGenres [label="N:M", dir=both, arrowtail=crow, arrowhead=crow];
+    ContentGenres -> Genres [label="N:1", dir=back, arrowtail=none, arrowhead=normal];
+    
+    /* ================= ALINEACIΓ“N VISUAL ================= */
+    { rank=same; Users; Content; Genres }
+    { rank=same; Profiles; ContentGenres }
+    { rank=same; Seasons; Episodes }
+}
\ No newline at end of file
diff --git a/docs/diagrams/netflix_er.png b/docs/diagrams/netflix_er.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd63f6f11967ba36fa05c7b83d2bd705a1b3bc93
GIT binary patch
literal 40378
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

literal 0
HcmV?d00001

diff --git a/docs/diagrams/netflix_er.svg b/docs/diagrams/netflix_er.svg
new file mode 100644
index 00000000..7f5f0d0e
--- /dev/null
+++ b/docs/diagrams/netflix_er.svg
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.43.0 (0)
+ -->
+<!-- Title: NetflixER Pages: 1 -->
+<svg width="514pt" height="301pt"
+ viewBox="0.00 0.00 514.00 301.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 297)">
+<title>NetflixER</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-297 510,-297 510,4 -4,4"/>
+<!-- Users -->
+<g id="node1" class="node">
+<title>Users</title>
+<polygon fill="#ffffff" stroke="transparent" points="8,-163 8,-289 112,-289 112,-163 8,-163"/>
+<polygon fill="#2c3e50" stroke="transparent" points="8,-268 8,-289 112,-289 112,-268 8,-268"/>
+<polygon fill="none" stroke="black" points="8,-268 8,-289 112,-289 112,-268 8,-268"/>
+<text text-anchor="start" x="45.5" y="-277" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Users</text>
+<polygon fill="none" stroke="black" points="8,-247 8,-268 112,-268 112,-247 8,-247"/>
+<text text-anchor="start" x="13" y="-255" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ user_id</text>
+<polygon fill="none" stroke="black" points="8,-226 8,-247 112,-247 112,-226 8,-226"/>
+<text text-anchor="start" x="13" y="-234" font-family="Helvetica Neue" font-size="10.00">πŸ“§ email</text>
+<polygon fill="none" stroke="black" points="8,-205 8,-226 112,-226 112,-205 8,-205"/>
+<text text-anchor="start" x="13" y="-213" font-family="Helvetica Neue" font-size="10.00">πŸ”’ password_hash</text>
+<polygon fill="none" stroke="black" points="8,-184 8,-205 112,-205 112,-184 8,-184"/>
+<text text-anchor="start" x="13" y="-192" font-family="Helvetica Neue" font-size="10.00">πŸ“… registration_date</text>
+<polygon fill="none" stroke="black" points="8,-163 8,-184 112,-184 112,-163 8,-163"/>
+<text text-anchor="start" x="13" y="-171" font-family="Helvetica Neue" font-size="10.00">πŸ—‚ plan_id (FK)</text>
+</g>
+<!-- Profiles -->
+<g id="node2" class="node">
+<title>Profiles</title>
+<polygon fill="#ffffff" stroke="transparent" points="20.5,-4 20.5,-109 99.5,-109 99.5,-4 20.5,-4"/>
+<polygon fill="#2c3e50" stroke="transparent" points="21,-87.5 21,-108.5 100,-108.5 100,-87.5 21,-87.5"/>
+<polygon fill="none" stroke="black" points="21,-87.5 21,-108.5 100,-108.5 100,-87.5 21,-87.5"/>
+<text text-anchor="start" x="41.5" y="-96.5" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Profiles</text>
+<polygon fill="none" stroke="black" points="21,-66.5 21,-87.5 100,-87.5 100,-66.5 21,-66.5"/>
+<text text-anchor="start" x="26" y="-74.5" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ profile_id</text>
+<polygon fill="none" stroke="black" points="21,-45.5 21,-66.5 100,-66.5 100,-45.5 21,-45.5"/>
+<text text-anchor="start" x="26" y="-53.5" font-family="Helvetica Neue" font-size="10.00">πŸ‘₯ user_id (FK)</text>
+<polygon fill="none" stroke="black" points="21,-24.5 21,-45.5 100,-45.5 100,-24.5 21,-24.5"/>
+<text text-anchor="start" x="26" y="-32.5" font-family="Helvetica Neue" font-size="10.00">πŸ‘€ name</text>
+<polygon fill="none" stroke="black" points="21,-3.5 21,-24.5 100,-24.5 100,-3.5 21,-3.5"/>
+<text text-anchor="start" x="26" y="-11.5" font-family="Helvetica Neue" font-size="10.00">πŸ–Ό avatar</text>
+</g>
+<!-- Users&#45;&gt;Profiles -->
+<g id="edge1" class="edge">
+<title>Users&#45;&gt;Profiles</title>
+<path fill="none" stroke="#606060" d="M60,-158.8C60,-146.54 60,-133.76 60,-121.56"/>
+<polygon fill="#606060" stroke="#606060" points="62.8,-121.23 60,-113.23 57.2,-121.23 62.8,-121.23"/>
+<text text-anchor="middle" x="67.5" y="-133.8" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">1:N</text>
+<text text-anchor="middle" x="41.5" y="-116.03" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">&lt;&lt;has&gt;&gt;</text>
+</g>
+<!-- Content -->
+<g id="node3" class="node">
+<title>Content</title>
+<polygon fill="#ffffff" stroke="transparent" points="226.5,-163 226.5,-289 303.5,-289 303.5,-163 226.5,-163"/>
+<polygon fill="#2c3e50" stroke="transparent" points="227,-268 227,-289 304,-289 304,-268 227,-268"/>
+<polygon fill="none" stroke="black" points="227,-268 227,-289 304,-289 304,-268 227,-268"/>
+<text text-anchor="start" x="245" y="-277" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Content</text>
+<polygon fill="none" stroke="black" points="227,-247 227,-268 304,-268 304,-247 227,-247"/>
+<text text-anchor="start" x="232" y="-255" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ content_id</text>
+<polygon fill="none" stroke="black" points="227,-226 227,-247 304,-247 304,-226 227,-226"/>
+<text text-anchor="start" x="232" y="-234" font-family="Helvetica Neue" font-size="10.00">🎬 title</text>
+<polygon fill="none" stroke="black" points="227,-205 227,-226 304,-226 304,-205 227,-205"/>
+<text text-anchor="start" x="232" y="-213" font-family="Helvetica Neue" font-size="10.00">πŸ“ description</text>
+<polygon fill="none" stroke="black" points="227,-184 227,-205 304,-205 304,-184 227,-184"/>
+<text text-anchor="start" x="232" y="-192" font-family="Helvetica Neue" font-size="10.00">⏱ duration</text>
+<polygon fill="none" stroke="black" points="227,-163 227,-184 304,-184 304,-163 227,-163"/>
+<text text-anchor="start" x="232" y="-171" font-family="Helvetica Neue" font-size="10.00">🎞 type</text>
+</g>
+<!-- ContentGenres -->
+<g id="node5" class="node">
+<title>ContentGenres</title>
+<polygon fill="#f8f9fa" stroke="transparent" points="404,-25 404,-88 498,-88 498,-25 404,-25"/>
+<polygon fill="#95a5a6" stroke="transparent" points="404,-66.5 404,-87.5 498,-87.5 498,-66.5 404,-66.5"/>
+<polygon fill="none" stroke="black" points="404,-66.5 404,-87.5 498,-87.5 498,-66.5 404,-66.5"/>
+<text text-anchor="start" x="412.5" y="-75.5" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">ContentGenres</text>
+<polygon fill="none" stroke="black" points="404,-45.5 404,-66.5 498,-66.5 498,-45.5 404,-45.5"/>
+<text text-anchor="start" x="409" y="-53.5" font-family="Helvetica Neue" font-size="10.00">🎬 content_id (FK)</text>
+<polygon fill="none" stroke="black" points="404,-24.5 404,-45.5 498,-45.5 498,-24.5 404,-24.5"/>
+<text text-anchor="start" x="409" y="-32.5" font-family="Helvetica Neue" font-size="10.00">🏷 genre_id (FK)</text>
+</g>
+<!-- Content&#45;&gt;ContentGenres -->
+<g id="edge4" class="edge">
+<title>Content&#45;&gt;ContentGenres</title>
+<path fill="none" stroke="#606060" d="M318.25,-177.05C346.11,-151.96 379.83,-121.59 406.31,-97.74"/>
+<polygon fill="#606060" stroke="#606060" points="317.88,-177.38 309.53,-180.06 314.91,-180.06 311.94,-182.73 311.94,-182.73 311.94,-182.73 314.91,-180.06 314.34,-185.41 317.88,-177.38 317.88,-177.38"/>
+<polygon fill="#606060" stroke="#606060" points="406.59,-97.49 414.95,-94.81 409.57,-94.81 412.54,-92.14 412.54,-92.14 412.54,-92.14 409.57,-94.81 410.13,-89.46 406.59,-97.49 406.59,-97.49"/>
+<text text-anchor="middle" x="378" y="-133.8" font-family="Helvetica Neue" font-size="9.00">N:M</text>
+</g>
+<!-- Seasons -->
+<g id="node6" class="node">
+<title>Seasons</title>
+<polygon fill="#ffffff" stroke="transparent" points="134,-14.5 134,-98.5 228,-98.5 228,-14.5 134,-14.5"/>
+<polygon fill="#34495e" stroke="transparent" points="134,-77.5 134,-98.5 228,-98.5 228,-77.5 134,-77.5"/>
+<polygon fill="none" stroke="black" points="134,-77.5 134,-98.5 228,-98.5 228,-77.5 134,-77.5"/>
+<text text-anchor="start" x="160.5" y="-86.5" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Seasons</text>
+<polygon fill="none" stroke="black" points="134,-56.5 134,-77.5 228,-77.5 228,-56.5 134,-56.5"/>
+<text text-anchor="start" x="139" y="-64.5" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ season_id</text>
+<polygon fill="none" stroke="black" points="134,-35.5 134,-56.5 228,-56.5 228,-35.5 134,-35.5"/>
+<text text-anchor="start" x="139" y="-43.5" font-family="Helvetica Neue" font-size="10.00">🎬 content_id (FK)</text>
+<polygon fill="none" stroke="black" points="134,-14.5 134,-35.5 228,-35.5 228,-14.5 134,-14.5"/>
+<text text-anchor="start" x="139" y="-22.5" font-family="Helvetica Neue" font-size="10.00">#️⃣ number</text>
+</g>
+<!-- Content&#45;&gt;Seasons -->
+<g id="edge2" class="edge">
+<title>Content&#45;&gt;Seasons</title>
+<path fill="none" stroke="#606060" d="M231.8,-158.8C223.68,-142.61 215.1,-125.51 207.36,-110.06"/>
+<polygon fill="#606060" stroke="#606060" points="209.71,-108.51 203.62,-102.61 204.71,-111.02 209.71,-108.51"/>
+<text text-anchor="middle" x="228.5" y="-133.8" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">1:N</text>
+<text text-anchor="middle" x="185.12" y="-105.41" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">&lt;&lt;has&gt;&gt;</text>
+</g>
+<!-- Genres -->
+<g id="node4" class="node">
+<title>Genres</title>
+<polygon fill="#ffffff" stroke="transparent" points="418,-194.5 418,-257.5 484,-257.5 484,-194.5 418,-194.5"/>
+<polygon fill="#2c3e50" stroke="transparent" points="418,-236 418,-257 484,-257 484,-236 418,-236"/>
+<polygon fill="none" stroke="black" points="418,-236 418,-257 484,-257 484,-236 418,-236"/>
+<text text-anchor="start" x="432.5" y="-245" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Genres</text>
+<polygon fill="none" stroke="black" points="418,-215 418,-236 484,-236 484,-215 418,-215"/>
+<text text-anchor="start" x="423" y="-223" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ genre_id</text>
+<polygon fill="none" stroke="black" points="418,-194 418,-215 484,-215 484,-194 418,-194"/>
+<text text-anchor="start" x="423" y="-202" font-family="Helvetica Neue" font-size="10.00">🏷 name</text>
+</g>
+<!-- ContentGenres&#45;&gt;Genres -->
+<g id="edge5" class="edge">
+<title>ContentGenres&#45;&gt;Genres</title>
+<path fill="none" stroke="#606060" d="M451,-92.16C451,-120.9 451,-161.55 451,-190.29"/>
+<text text-anchor="middle" x="458.5" y="-133.8" font-family="Helvetica Neue" font-size="9.00">N:1</text>
+</g>
+<!-- Episodes -->
+<g id="node7" class="node">
+<title>Episodes</title>
+<polygon fill="#ffffff" stroke="transparent" points="280,-14.5 280,-98.5 370,-98.5 370,-14.5 280,-14.5"/>
+<polygon fill="#34495e" stroke="transparent" points="280,-77.5 280,-98.5 370,-98.5 370,-77.5 280,-77.5"/>
+<polygon fill="none" stroke="black" points="280,-77.5 280,-98.5 370,-98.5 370,-77.5 280,-77.5"/>
+<text text-anchor="start" x="303.5" y="-86.5" font-family="Helvetica Neue" font-weight="bold" font-size="10.00" fill="white">Episodes</text>
+<polygon fill="none" stroke="black" points="280,-56.5 280,-77.5 370,-77.5 370,-56.5 280,-56.5"/>
+<text text-anchor="start" x="285" y="-64.5" font-family="Helvetica Neue" font-size="10.00">πŸ”‘ episode_id</text>
+<polygon fill="none" stroke="black" points="280,-35.5 280,-56.5 370,-56.5 370,-35.5 280,-35.5"/>
+<text text-anchor="start" x="285" y="-43.5" font-family="Helvetica Neue" font-size="10.00">πŸ“Ό season_id (FK)</text>
+<polygon fill="none" stroke="black" points="280,-14.5 280,-35.5 370,-35.5 370,-14.5 280,-14.5"/>
+<text text-anchor="start" x="285" y="-22.5" font-family="Helvetica Neue" font-size="10.00">πŸ“Ί title</text>
+</g>
+<!-- Seasons&#45;&gt;Episodes -->
+<g id="edge3" class="edge">
+<title>Seasons&#45;&gt;Episodes</title>
+<path fill="none" stroke="#606060" d="M236.26,-56.5C245.13,-56.5 254.35,-56.5 263.36,-56.5"/>
+<polygon fill="#606060" stroke="#606060" points="263.55,-59.3 271.55,-56.5 263.55,-53.7 263.55,-59.3"/>
+<text text-anchor="middle" x="254" y="-62.3" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">1:N</text>
+<text text-anchor="middle" x="253.05" y="-49.3" font-family="Helvetica Neue" font-size="9.00" fill="#2980b9">&lt;&lt;has&gt;&gt;</text>
+</g>
+</g>
+</svg>
diff --git a/resources/views/film.blade.php b/resources/views/film.blade.php
new file mode 100644
index 00000000..bd38690a
--- /dev/null
+++ b/resources/views/film.blade.php
@@ -0,0 +1,21 @@
+@extends('layouts.app')
+
+@section('title', $film->title)
+
+@section('content')
+
+    {{-- Film's banner --}}
+    <div class="text-center">
+        <img src="{{ asset('images/' . $film->image) }}" class="img-fluid" alt="{{ $film->title }}">
+    </div>
+
+    {{-- Film's info --}}
+    <div class="mt-4 p-4">
+        <h2>{{ $film->title }}</h2>
+        <p><strong>AΓ±o:</strong> {{ $film->year }} | <strong>DuraciΓ³n:</strong> {{ $film->duration }} min</p>
+        <p>{{ $film->sinopsis }}</p>
+        <p><strong>Director:</strong> {{ $film->director }}</p>
+        <p><strong>Reparto:</strong> {{ implode(', ', json_decode($film->casting)) }}</p>
+    </div>
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
new file mode 100644
index 00000000..77fdae8b
--- /dev/null
+++ b/resources/views/home.blade.php
@@ -0,0 +1,35 @@
+@extends('layouts.app')
+
+@section('title', 'Home')
+
+@section('content')
+
+    {{-- Main banner --}}
+    <div class="text-center">
+        <img src="{{ asset('images/banner.jpg') }}" class="img-fluid" alt="Banner">
+    </div>
+
+    {{-- Carrousel of categories --}}
+    <div class="mt-4">
+        <h3>Ciencia FicciΓ³n</h3>
+        <div class="d-flex overflow-auto">
+            @foreach($filmsSciFi as $film)
+                <div class="p-2 film-card" onclick="location.href='{{ route('films.show', $film->id) }}'">
+                    <img src="{{ asset('images/' . $film->image) }}" alt="{{ $film->title }}">
+                </div>
+            @endforeach
+        </div>
+    </div>
+
+    <div class="mt-4">
+        <h3>Drama</h3>
+        <div class="d-flex overflow-auto">
+            @foreach($filmsDrama as $film)
+                <div class="p-2 film-card" onclick="location.href='{{ route('films.show', $film->id) }}'">
+                    <img src="{{ asset('images/' . $film->image) }}" alt="{{ $film->title }}">
+                </div>
+            @endforeach
+        </div>
+    </div>
+    
+@endsection
\ No newline at end of file
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
new file mode 100644
index 00000000..4d7a73d1
--- /dev/null
+++ b/resources/views/layouts/app.blade.php
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="es">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>@yield('title')</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
+    <style>
+        body {
+            background-color: #000;
+            color: white;
+        }
+        .film-card img {
+            width: 100%;
+            height: 300px;
+            object-fit: cover;
+            border-radius: 10px;
+        }
+        .film-card {
+            cursor: pointer;
+        }
+        .side-menu {
+            position: fixed;
+            top: 0;
+            left: -250px;
+            width: 250px;
+            height: 100%;
+            background-color: rgba(0, 0, 0, 0.9);
+            padding-top: 60px;
+            transition: 0.3s;
+        }
+        .side-menu a {
+            padding: 10px 20px;
+            text-decoration: none;
+            font-size: 18px;
+            color: white;
+            display: block;
+        }
+        .side-menu a:hover {
+            background-color: #333;
+        }
+        .menu-toggle {
+            cursor: pointer;
+            font-size: 24px;
+        }
+    </style>
+</head>
+<body>
+
+    {{-- Lateral menu --}}
+    <div class="side-menu" id="sideMenu">
+        <a href="javascript:void(0)" class="closebtn" onclick="closeMenu()">Γ—</a>
+        <a href="#">Buscar</a>
+        <a href="#">Inicio</a>
+        <a href="#">PelΓ­culas</a>
+        <a href="#">Series</a>
+        <a href="#">Favoritos</a>
+        <a href="#">Perfil</a>
+    </div>
+
+    {{-- Button to open the menu --}}
+    <div class="p-3">
+        <span class="menu-toggle" onclick="openMenu()">☰</span>
+    </div>
+
+    {{-- Page's content --}}
+    <div class="container">
+        @yield('content')
+    </div>
+
+    <script>
+        function openMenu() {
+            document.getElementById("sideMenu").style.left = "0";
+        }
+
+        function closeMenu() {
+            document.getElementById("sideMenu").style.left = "-250px";
+        }
+    </script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 52173c06..e991c0a3 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -2,19 +2,15 @@
 
 use Illuminate\Support\Facades\Route;
 use App\Http\Controllers\UpdateController;
+use App\Http\Controllers\FilmsController;
 
 
 Route::get("/upload-image", [UploadController::class, "showForm"])->name("image.form");
 Route::post("/upload-image", [UploadController::class, "upload"])->name("image.upload");
 
-Route::get('/', function () {
-    return view('welcome');
-});
-
+Route::get("/", [FilmsController::class, "index"])->name("home");
+Route::get("/films/{id}", [FilmsController::class, "show"])->name("films.show");
 
 Route::get("/series", [SeriesController::class, "index"])->name("series.index");
-
 Route::get('/series/create', [SeriesController::class, 'create'])->name('series.create');
-
-Route::post('/series/crear', [SeriesController::class, 'store'])->name('series.store');
->>>>>>> routes/web.php
+Route::post('/series/crear', [SeriesController::class, 'store'])->name('series.store');
\ No newline at end of file
-- 
GitLab