store/app/Http/Controllers/Concerns/ParsesDataTableQuery.php

34 lines
1022 B
PHP

<?php
namespace App\Http\Controllers\Concerns;
use Illuminate\Http\Request;
trait ParsesDataTableQuery
{
/**
* @return array{search: string, sort: string, direction: 'asc'|'desc'}
*/
protected function parseDataTableQuery(Request $request): array
{
return [
'search' => $request->string('search')->trim()->toString(),
'sort' => $request->string('sort')->toString(),
'direction' => $request->string('direction')->toString() === 'desc' ? 'desc' : 'asc',
];
}
/**
* @param array{search: string, sort: string, direction: 'asc'|'desc'} $query
* @return array{search: string, sort: string, direction: 'asc'|'desc'|null}
*/
protected function dataTableFilters(array $query, array $extra = []): array
{
return array_merge([
'search' => $query['search'],
'sort' => $query['sort'],
'direction' => $query['sort'] !== '' ? $query['direction'] : null,
], $extra);
}
}