feat: user rating and comment

This commit is contained in:
2026-05-20 15:52:28 +03:30
parent 02448db346
commit d0d48866f0
7 changed files with 171 additions and 19 deletions
+38 -10
View File
@@ -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([