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);
 }
Exemple #2
0
 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);
 }