diff --git a/app/Http/Controllers/VideoController.php b/app/Http/Controllers/VideoController.php
new file mode 100644
index 0000000..e4b2792
--- /dev/null
+++ b/app/Http/Controllers/VideoController.php
@@ -0,0 +1,44 @@
+findOrFail($showId);
+ return view('shows.videos', compact('show'));
+ }
+
+ public function store(Request $request, $showId)
+ {
+ $request->validate([
+ 'title' => 'required|max:255',
+ 'video_url' => 'required|url|unique:videos,video_url',
+ ]);
+
+ $show = Show::findOrFail($showId);
+
+ if ($show->representations->isEmpty()) {
+ return redirect()->back()->withErrors(['error' => 'pas de representation pour ce show']);
+ }
+
+ $video = new Video($request->all());
+ $video->show_id = $showId;
+ $video->save();
+
+ return redirect()->route('show.videos', $showId);
+ }
+ public function showArtistVideos($name)
+ {
+ $artist = Artist::where('name', $name)->firstOrFail();
+ $shows = $artist->shows()->with('videos')->get();
+
+ return view('artists.videos', compact('artist', 'shows'));
+ }
+}
diff --git a/app/Models/Show.php b/app/Models/Show.php
index 6013c1a..5f5268e 100644
--- a/app/Models/Show.php
+++ b/app/Models/Show.php
@@ -31,7 +31,11 @@ public function representations()
{
return $this->hasMany(Representation::class);
}
-
+ // relation video examen
+ public function videos()
+ {
+ return $this->hasMany(Video::class);
+ }
public function location()
{
return $this->belongsTo(Location::class);
diff --git a/app/Models/Video.php b/app/Models/Video.php
new file mode 100644
index 0000000..0ae3082
--- /dev/null
+++ b/app/Models/Video.php
@@ -0,0 +1,18 @@
+belongsTo(Show::class);
+ }
+}
diff --git a/app/Policies/AdminPolicy.php b/app/Policies/AdminPolicy.php
index bbb0902..5373ad4 100644
--- a/app/Policies/AdminPolicy.php
+++ b/app/Policies/AdminPolicy.php
@@ -4,9 +4,20 @@
use App\Models\User;
use Illuminate\Auth\Access\Response;
-
+use Illuminate\Auth\Access\HandlesAuthorization;
+use Illuminate\Support\Facades\Log;
class AdminPolicy
{
+
+ public function admin(User $user)
+ {
+ return $user->isAdmin()
+ ? Response::allow()
+ : Response::deny('Vous devez être administrateur pour ajouter une video');
+
+ Log::info('User is admin');
+ }
+
/**
* Determine whether the user can view any models.
*/
diff --git a/database/migrations/2024_05_31_074314_create_videos_table.php b/database/migrations/2024_05_31_074314_create_videos_table.php
new file mode 100644
index 0000000..bec1d1d
--- /dev/null
+++ b/database/migrations/2024_05_31_074314_create_videos_table.php
@@ -0,0 +1,30 @@
+id();
+ $table->string('title', 255);
+ $table->string('video_url', 255)->unique();
+ $table->foreignId('show_id')->constrained()->onUpdate('cascade')->onDelete('restrict');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('videos');
+ }
+};
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index d3986b0..babe3e2 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -38,6 +38,8 @@ public function run(): void
ReviewSeeder::class,
TagSeeder::class,
ShowTagSeeder::class,
+ VideoSeeder::class,
+
]);
}
}
diff --git a/database/seeders/VideoSeeder.php b/database/seeders/VideoSeeder.php
new file mode 100644
index 0000000..2f2bd2f
--- /dev/null
+++ b/database/seeders/VideoSeeder.php
@@ -0,0 +1,26 @@
+ 'Tintin Video',
+ 'video_url' => 'https://youtu.be/ERA14Xjjtlk',
+ 'show_id' => $show->id,
+ ]);
+ }
+}
diff --git a/public/posters/dd.png b/public/posters/dd.png
deleted file mode 100644
index 1355996..0000000
Binary files a/public/posters/dd.png and /dev/null differ
diff --git a/resources/views/artists/videos.blade.php b/resources/views/artists/videos.blade.php
new file mode 100644
index 0000000..00c12c4
--- /dev/null
+++ b/resources/views/artists/videos.blade.php
@@ -0,0 +1,18 @@
+ Aucune vidéo pour ce spectacle.Vidéos des spectacles de {{ $artist->name }}
+
+ @foreach ($shows as $show)
+ {{ $show->title }}
+ @if ($show->videos->isEmpty())
+ {{ $video->title }}
+
+
Aucune vidéo pour ce spectacle.
+ @else + @foreach ($show->videos as $video) +Aucune vidéo pour ce spectacle.
+ @else + @foreach ($show->videos as $video) +