diff --git a/app/Http/Controllers/LikeController.php b/app/Http/Controllers/LikeController.php index a600719..3da7611 100644 --- a/app/Http/Controllers/LikeController.php +++ b/app/Http/Controllers/LikeController.php @@ -12,7 +12,7 @@ class LikeController extends Controller public function like(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media', + 'type' => 'required|string|in:music,media,playlist', 'id' => 'required|integer', ]); @@ -39,7 +39,7 @@ public function like(Request $request) public function unlike(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media', + 'type' => 'required|string|in:music,media,playlist', 'id' => 'required|integer', ]); @@ -66,7 +66,7 @@ public function unlike(Request $request) public function toggleLike(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media', + 'type' => 'required|string|in:music,media,playlist', 'id' => 'required|integer', ]); @@ -110,6 +110,7 @@ public function myLikedItems(Request $request) 'types' => [ 'music' => 'App\\Models\\Music', 'media' => 'App\\Models\\Media', + 'playlist' => 'App\\Models\\MusicPlaylist', ] ]); // Transform the response @@ -167,7 +168,7 @@ public function myLikedItems(Request $request) public function checkLiked(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media', + 'type' => 'required|string|in:music,media,playlist', 'id' => 'required|integer', ]); @@ -227,8 +228,9 @@ private function getModelClass($type) $models = [ 'music' => \App\Models\Music::class, 'media' => \App\Models\Media::class, + 'playlist' => \App\Models\MusicPlaylist::class, ]; - + return $models[$type] ?? null; } } diff --git a/app/Http/Controllers/MusicPlaylistController.php b/app/Http/Controllers/MusicPlaylistController.php index a544bf4..64c09b7 100644 --- a/app/Http/Controllers/MusicPlaylistController.php +++ b/app/Http/Controllers/MusicPlaylistController.php @@ -81,11 +81,15 @@ public function show($id) 'total_musics' => $playlist->musics->count(), 'total_duration' => $playlist->total_duration, 'total_comments' => $playlist->comments_count, + 'total_likes' => $playlist->likes_count, + 'total_saves' => $playlist->saved_count, ], 'user_interaction' => [ 'has_commented' => $playlist->has_user_commented, 'user_comment' => $playlist->user_comment, 'user_comment_id' => $playlist->user_comment_id, + 'has_liked' => $playlist->is_liked, + 'has_saved' => $playlist->is_saved, ], 'comments' => $comments, ]); diff --git a/app/Http/Controllers/SaveController.php b/app/Http/Controllers/SaveController.php index 8a0316d..e7bf3ed 100644 --- a/app/Http/Controllers/SaveController.php +++ b/app/Http/Controllers/SaveController.php @@ -13,7 +13,7 @@ class SaveController extends Controller public function save(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media,breathing-template', + 'type' => 'required|string|in:music,media,breathing-template,playlist', 'id' => 'required|integer', ]); @@ -40,7 +40,7 @@ public function save(Request $request) public function unsave(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media,breathing-template', + 'type' => 'required|string|in:music,media,breathing-template,playlist', 'id' => 'required|integer', ]); @@ -67,7 +67,7 @@ public function unsave(Request $request) public function toggleSave(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media,breathing-template', + 'type' => 'required|string|in:music,media,breathing-template,playlist', 'id' => 'required|integer', ]); @@ -112,6 +112,7 @@ public function mySavedItems(Request $request) 'music' => 'App\\Models\\Music', 'media' => 'App\\Models\\Media', 'breathing-template' => 'App\\Models\\BreathingTemplate', + 'playlist' => 'App\\Models\\MusicPlaylist', ] ]); } @@ -121,7 +122,7 @@ public function mySavedItems(Request $request) public function checkSaved(Request $request) { $request->validate([ - 'type' => 'required|string|in:music,media,breathing-template', + 'type' => 'required|string|in:music,media,breathing-template,playlist', 'id' => 'required|integer', ]); @@ -151,8 +152,9 @@ private function getModelClass($type) 'music' => \App\Models\Music::class, 'media' => \App\Models\Media::class, 'breathing-template' => \App\Models\BreathingTemplate::class, + 'playlist' => \App\Models\MusicPlaylist::class, ]; - + return $models[$type] ?? null; } } diff --git a/app/Models/MusicPlaylist.php b/app/Models/MusicPlaylist.php index 96f22b8..b777c3d 100644 --- a/app/Models/MusicPlaylist.php +++ b/app/Models/MusicPlaylist.php @@ -6,9 +6,11 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; // ← Add this use Illuminate\Database\Eloquent\Relations\HasMany; // ← Add this use App\Traits\HasComments; // Add this +use App\Traits\HasLikes; +use App\Traits\HasSaves; class MusicPlaylist extends Model { - use HasComments; + use HasComments, HasLikes, HasSaves; protected $table = 'music_playlists'; protected $fillable = [ @@ -23,7 +25,11 @@ class MusicPlaylist extends Model 'comments_count', 'has_user_commented', 'user_comment', - 'user_comment_id' + 'user_comment_id', + 'is_liked', + 'likes_count', + 'is_saved', + 'saved_count' ]; public function category(): BelongsTo {