From a7e3f2cbd8b78aed8eb331498195ec561230911a Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Mon, 15 Jun 2026 11:39:09 +0330 Subject: [PATCH] feat: add total duration for playlist --- app/Http/Controllers/MusicCategoryController.php | 2 +- app/Http/Controllers/MusicPlaylistController.php | 2 ++ app/Models/MusicPlaylist.php | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/MusicCategoryController.php b/app/Http/Controllers/MusicCategoryController.php index 7715a75..0f67189 100644 --- a/app/Http/Controllers/MusicCategoryController.php +++ b/app/Http/Controllers/MusicCategoryController.php @@ -126,7 +126,7 @@ public function grouped($id) 'description' => $sub->description, 'image_url' => $sub->image?->url, ], - 'playlists' => $sub->playlists, + 'playlists' => $sub->playlists->each(fn ($p) => $p->append('duration')), ])->values(), ]); } diff --git a/app/Http/Controllers/MusicPlaylistController.php b/app/Http/Controllers/MusicPlaylistController.php index ffdbd3a..9d83137 100644 --- a/app/Http/Controllers/MusicPlaylistController.php +++ b/app/Http/Controllers/MusicPlaylistController.php @@ -98,6 +98,8 @@ public function show($id) ->latest() ->paginate(15); + $playlist->append('duration'); + return response()->json(array_merge( $playlist->toArray(), [ diff --git a/app/Models/MusicPlaylist.php b/app/Models/MusicPlaylist.php index 796c3d5..f9c043a 100644 --- a/app/Models/MusicPlaylist.php +++ b/app/Models/MusicPlaylist.php @@ -71,4 +71,10 @@ public function getTotalDurationAttribute() { return $this->musics()->where('music.is_active', true)->sum('music.duration'); } + + // Total play time of the playlist = sum of its active musics' durations. + public function getDurationAttribute() + { + return $this->total_duration; + } }