From 81ac4a896fc71097a92338dc2c5c949b4306cfbf Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Tue, 16 Jun 2026 17:15:08 +0330 Subject: [PATCH] feat: scene update --- app/Http/Controllers/SceneController.php | 14 ++++++++---- app/Models/Scene.php | 3 ++- ..._120000_add_is_premium_to_scenes_table.php | 22 +++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 database/migrations/2026_06_15_120000_add_is_premium_to_scenes_table.php diff --git a/app/Http/Controllers/SceneController.php b/app/Http/Controllers/SceneController.php index 4b2d1d9..ed196de 100644 --- a/app/Http/Controllers/SceneController.php +++ b/app/Http/Controllers/SceneController.php @@ -77,9 +77,10 @@ public function store(Request $request) 'theme_id' => 'nullable|exists:themes,id', 'order' => 'nullable|integer', 'is_active' => 'nullable|boolean', + 'is_premium' => 'nullable|boolean', 'image' => 'nullable|file|extensions:jpg,jpeg,png,gif,webp,bmp,svg|max:8192', - 'video' => 'nullable|mimes:mp4,mov,webm|max:512000', - 'sound' => 'nullable|mimes:mp3,wav,ogg,flac|max:51200', + 'video' => 'nullable|file|extensions:mp4,mov,webm,mkv,avi,m4v,3gp|max:512000', + 'sound' => 'nullable|file|extensions:mp3,wav,ogg,flac,aac,m4a,opus,mpga,wma|max:51200', ]); $scene = Scene::create([ @@ -87,6 +88,7 @@ public function store(Request $request) 'theme_id' => $data['theme_id'] ?? null, 'order' => $data['order'] ?? 0, 'is_active' => $data['is_active'] ?? true, + 'is_premium' => $data['is_premium'] ?? false, 'image_path' => $request->hasFile('image') ? $request->file('image')->store('scenes/images', 'public') : null, 'video_path' => $request->hasFile('video') ? $request->file('video')->store('scenes/videos', 'public') : null, 'sound_path' => $request->hasFile('sound') ? $request->file('sound')->store('scenes/sounds', 'public') : null, @@ -108,9 +110,10 @@ public function update(Request $request, $id) 'theme_id' => 'nullable|exists:themes,id', 'order' => 'nullable|integer', 'is_active' => 'nullable|boolean', + 'is_premium' => 'nullable|boolean', 'image' => 'nullable|file|extensions:jpg,jpeg,png,gif,webp,bmp,svg|max:8192', - 'video' => 'nullable|mimes:mp4,mov,webm|max:512000', - 'sound' => 'nullable|mimes:mp3,wav,ogg,flac|max:51200', + 'video' => 'nullable|file|extensions:mp4,mov,webm,mkv,avi,m4v,3gp|max:512000', + 'sound' => 'nullable|file|extensions:mp3,wav,ogg,flac,aac,m4a,opus,mpga,wma|max:51200', ]); if (array_key_exists('name', $data)) { @@ -125,6 +128,9 @@ public function update(Request $request, $id) if (array_key_exists('is_active', $data)) { $scene->is_active = $data['is_active']; } + if (array_key_exists('is_premium', $data)) { + $scene->is_premium = $data['is_premium']; + } foreach (['image' => 'scenes/images', 'video' => 'scenes/videos', 'sound' => 'scenes/sounds'] as $field => $folder) { if ($request->hasFile($field)) { diff --git a/app/Models/Scene.php b/app/Models/Scene.php index e656c10..3def72c 100644 --- a/app/Models/Scene.php +++ b/app/Models/Scene.php @@ -7,10 +7,11 @@ class Scene extends Model { - protected $fillable = ['theme_id', 'name', 'image_path', 'video_path', 'sound_path', 'order', 'is_active']; + protected $fillable = ['theme_id', 'name', 'image_path', 'video_path', 'sound_path', 'order', 'is_active', 'is_premium']; protected $casts = [ 'is_active' => 'boolean', + 'is_premium' => 'boolean', 'order' => 'integer', ]; diff --git a/database/migrations/2026_06_15_120000_add_is_premium_to_scenes_table.php b/database/migrations/2026_06_15_120000_add_is_premium_to_scenes_table.php new file mode 100644 index 0000000..eb3e631 --- /dev/null +++ b/database/migrations/2026_06_15_120000_add_is_premium_to_scenes_table.php @@ -0,0 +1,22 @@ +boolean('is_premium')->default(false)->after('is_active'); + }); + } + + public function down(): void + { + Schema::table('scenes', function (Blueprint $table) { + $table->dropColumn('is_premium'); + }); + } +};