public function show($id) { $artist = Artist::with('label')->findOrFail($id); $tracks = $artist->tracks()->get(); $images = ['header_url' => $artist->header_url, 'cover_url' => $artist->cover_url]; $links = []; foreach (['twitter', 'facebook', 'soundcloud'] as $service) { if ($artist->{$service}) { $links[] = ['title' => ucwords($service), 'url' => $artist->{$service}, 'icon' => $service, 'class' => $service]; } } if ($artist->website) { $links[] = ['title' => trans('artist.links.site'), 'url' => $artist->website, 'icon' => 'globe', 'class' => '']; } return view('artists.show')->with('artist', $artist)->with('links', $links)->with('tracks', json_collection($tracks, new ArtistTrackTransformer()))->with('images', $images); }
public function show($id) { $artist = Artist::with('label')->findOrFail($id); $albums = $artist->albums()->where('visible', true)->with(['tracks' => function ($query) { $query->orderBy('display_order', 'ASC'); }])->get(); $tracks = $artist->tracks()->whereNull('album_id')->orderBy('display_order', 'ASC NULLS LAST')->get(); $images = ['header_url' => $artist->header_url, 'cover_url' => $artist->cover_url]; // should probably move services to a separate model if the number increases further $links = []; foreach (['soundcloud', 'twitter', 'facebook', 'bandcamp', 'patreon'] as $service) { if ($artist->{$service}) { $links[] = ['title' => ucwords($service), 'url' => $artist->{$service}, 'icon' => $service === 'patreon' ? "extra-social-{$service}" : $service, 'class' => $service]; } } if ($artist->website) { $links[] = ['title' => trans('artist.links.site'), 'url' => $artist->website, 'icon' => 'globe', 'class' => 'website']; } return view('artists.show')->with('artist', $artist)->with('links', $links)->with('albums', json_collection($albums, new ArtistAlbumTransformer(), ['tracks']))->with('tracks', json_collection($tracks, new ArtistTrackTransformer()))->with('images', $images); }