30 lines
1.2 KiB
PHP
30 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Modules\Movies\Http\Controllers\Browse;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Modules\Movies\Services\Contracts\ListMoviesServiceInterface;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class MoviesIndexController extends Controller
|
|
{
|
|
public function __invoke(Request $request, ListMoviesServiceInterface $service): JsonResponse
|
|
{
|
|
$paginator = $service->list([
|
|
'q' => $request->string('q')->toString(),
|
|
'per_page' => $request->integer('per_page', 20),
|
|
'sort' => $request->string('sort')->toString() ?: 'title_asc',
|
|
'genre' => $request->string('genre')->toString(),
|
|
'rating' => $request->string('rating')->toString(),
|
|
'year_min' => $request->has('year_min') ? $request->integer('year_min') : null,
|
|
'year_max' => $request->has('year_max') ? $request->integer('year_max') : null,
|
|
'actor' => $request->string('actor')->toString(),
|
|
'director' => $request->string('director')->toString(),
|
|
'studio' => $request->string('studio')->toString(),
|
|
]);
|
|
|
|
return response()->json($paginator);
|
|
}
|
|
}
|