2015-08-31 16:30:02 +02:00
< ? php
2015-10-25 06:17:45 +01:00
/**
* Pony . fm - A community for pony fan music .
2021-02-14 03:39:15 +01:00
* Copyright ( C ) 2015 Feld0 .
2015-10-25 06:17:45 +01:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2021-02-14 03:34:58 +01:00
namespace App\Http\Controllers\Api\Web ;
2015-08-31 16:30:02 +02:00
2021-02-14 03:34:58 +01:00
use App\Http\Controllers\ApiControllerBase ;
2021-02-14 03:39:15 +01:00
use App\Models\Genre ;
2021-02-14 03:34:58 +01:00
use App\Models\License ;
use App\Models\ShowSong ;
use App\Models\TrackType ;
2021-02-14 20:45:51 +01:00
use Illuminate\Support\Facades\DB ;
2015-08-31 16:30:02 +02:00
2015-09-06 19:21:11 +02:00
class TaxonomiesController extends ApiControllerBase
2015-08-31 16:30:02 +02:00
{
public function getAll ()
{
2021-02-14 20:45:52 +01:00
return response () -> json ([
2015-08-31 16:30:02 +02:00
'licenses' => License :: all () -> toArray (),
2016-02-15 16:51:26 +01:00
'genres' => Genre :: with ( 'trackCountRelation' )
-> orderBy ( 'name' )
-> get ()
-> toArray (),
2016-09-30 00:26:31 +02:00
'track_types' => TrackType :: select (
'track_types.*' ,
DB :: raw ( '(SELECT COUNT(id) FROM tracks WHERE tracks.track_type_id = track_types.id AND tracks.published_at IS NOT NULL) AS track_count' )
)
2015-11-05 03:47:11 +01:00
-> where ( 'id' , '!=' , TrackType :: UNCLASSIFIED_TRACK )
-> get () -> toArray (),
2016-09-30 00:26:31 +02:00
'show_songs' => ShowSong :: select (
'title' ,
'id' ,
'slug' ,
DB :: raw ( '(SELECT COUNT(tracks.id) FROM show_song_track INNER JOIN tracks ON tracks.id = show_song_track.track_id WHERE show_song_track.show_song_id = show_songs.id AND tracks.published_at IS NOT NULL) AS track_count' )
2021-02-14 03:39:15 +01:00
) -> orderBy ( 'title' ) -> get () -> toArray (),
2015-08-31 16:30:02 +02:00
], 200 );
}
2015-10-25 06:17:45 +01:00
}