feat: add like and save for playlist
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
]);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user