feat: user rating and comment
This commit is contained in:
@@ -319,9 +319,18 @@ public function filters(Request $request)
|
||||
]);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$media = Media::with(['image', 'category', 'myNote', 'tags'])
|
||||
public function show($id)
|
||||
{
|
||||
$media = Media::with([
|
||||
'image',
|
||||
'category',
|
||||
'myNote',
|
||||
'tags',
|
||||
'comments' => function($query) {
|
||||
$query->with('user')->latest()->limit(10);
|
||||
},
|
||||
'ratings'
|
||||
])
|
||||
->where('id', $id)
|
||||
->where(function($query) {
|
||||
$query->where('visibility', 'public')
|
||||
@@ -329,7 +338,16 @@ public function show($id)
|
||||
})
|
||||
->firstOrFail();
|
||||
|
||||
return response()->json([
|
||||
// Get user's specific comment
|
||||
$userComment = $media->userComment();
|
||||
|
||||
// Get paginated comments
|
||||
$comments = $media->comments()
|
||||
->with('user')
|
||||
->latest()
|
||||
->paginate(15);
|
||||
|
||||
return response()->json([
|
||||
'id' => $media->id,
|
||||
'title' => $media->title,
|
||||
'caption' => $media->caption,
|
||||
@@ -340,18 +358,28 @@ public function show($id)
|
||||
'visibility' => $media->visibility,
|
||||
'created_at' => $media->created_at,
|
||||
'updated_at' => $media->updated_at,
|
||||
'is_premium' => $media->is_premium,
|
||||
'image' => $media->image,
|
||||
'category' => $media->category,
|
||||
'tags' => $media->tags,
|
||||
'myNote' => $media->myNote,
|
||||
'is_saved' => $media->is_saved,
|
||||
'is_premium' => $media->is_premium,
|
||||
'comments' => $media->comments,
|
||||
'average_rating' => $media->average_rating,
|
||||
'user_rating' => $media->user_rating,
|
||||
'comments_count' => $media->comments()->count(),
|
||||
'statistics' => [
|
||||
'average_rating' => $media->average_rating,
|
||||
'total_ratings' => $media->ratings_count,
|
||||
'total_comments' => $media->comments_count,
|
||||
'rating_distribution' => $media->rating_distribution,
|
||||
],
|
||||
'user_interaction' => [
|
||||
'has_rated' => $media->has_user_rated,
|
||||
'user_rating' => $media->user_rating,
|
||||
'has_commented' => $media->has_user_commented,
|
||||
'user_comment' => $media->user_comment,
|
||||
'user_comment_id' => $media->user_comment_id,
|
||||
],
|
||||
'comments' => $comments,
|
||||
]);
|
||||
}
|
||||
}
|
||||
public function rate(Request $request, $mediaId)
|
||||
{
|
||||
$request->validate([
|
||||
|
||||
@@ -223,11 +223,19 @@ public function update(Request $request, $id)
|
||||
|
||||
|
||||
// ✅ Get all public + user private music
|
||||
public function show($id)
|
||||
public function show($id)
|
||||
{
|
||||
$userId = auth()->id();
|
||||
|
||||
$music = Music::with(['image', 'playlist', 'tags'])
|
||||
$music = Music::with([
|
||||
'image',
|
||||
'playlist',
|
||||
'tags',
|
||||
'comments' => function($query) {
|
||||
$query->with('user')->latest()->limit(10);
|
||||
},
|
||||
'ratings'
|
||||
])
|
||||
->where(function($query) use ($userId) {
|
||||
$query->where('type', 'public')
|
||||
->orWhere(function($q) use ($userId) {
|
||||
@@ -236,8 +244,33 @@ public function show($id)
|
||||
});
|
||||
})
|
||||
->findOrFail($id);
|
||||
|
||||
return response()->json($music);
|
||||
|
||||
// Get user's specific comment
|
||||
$userComment = $music->userComment();
|
||||
|
||||
// Get paginated comments for the response
|
||||
$comments = $music->comments()
|
||||
->with('user')
|
||||
->latest()
|
||||
->paginate(15);
|
||||
|
||||
return response()->json([
|
||||
'music' => $music,
|
||||
'statistics' => [
|
||||
'average_rating' => $music->average_rating,
|
||||
'total_ratings' => $music->ratings_count,
|
||||
'total_comments' => $music->comments_count,
|
||||
'rating_distribution' => $music->rating_distribution,
|
||||
],
|
||||
'user_interaction' => [
|
||||
'has_rated' => $music->has_user_rated,
|
||||
'user_rating' => $music->user_rating,
|
||||
'has_commented' => $music->has_user_commented,
|
||||
'user_comment' => $music->user_comment,
|
||||
'user_comment_id' => $music->user_comment_id,
|
||||
],
|
||||
'comments' => $comments,
|
||||
]);
|
||||
}
|
||||
|
||||
// ✅ Delete music
|
||||
|
||||
Reference in New Issue
Block a user