Files
firefly-iii/app/JsonApi/V2/Accounts/AccountCollectionQuery.php

87 lines
2.3 KiB
PHP
Raw Normal View History

2024-07-28 07:02:04 +02:00
<?php
declare(strict_types=1);
2024-07-28 07:02:04 +02:00
namespace FireflyIII\JsonApi\V2\Accounts;
use FireflyIII\Models\Account;
use FireflyIII\Rules\Account\IsValidAccountType;
2024-07-28 07:02:04 +02:00
use FireflyIII\Rules\IsAllowedGroupAction;
2024-07-31 20:19:17 +02:00
use FireflyIII\Rules\IsDateOrTime;
use FireflyIII\Rules\IsValidDateRange;
2024-07-28 07:02:04 +02:00
use Illuminate\Support\Facades\Log;
use LaravelJsonApi\Laravel\Http\Requests\ResourceQuery;
use LaravelJsonApi\Validation\Rule as JsonApiRule;
class AccountCollectionQuery extends ResourceQuery
{
/**
* Get the validation rules that apply to the request query parameters.
*/
public function rules(): array
{
Log::debug(__METHOD__);
$validFilters = config('api.valid_api_filters')[Account::class];
2024-07-28 07:02:04 +02:00
return [
'fields' => [
2024-07-28 07:02:04 +02:00
'nullable',
'array',
JsonApiRule::fieldSets(),
],
2024-07-31 20:19:17 +02:00
'userGroupId' => [
2024-07-28 07:02:04 +02:00
'nullable',
'integer',
new IsAllowedGroupAction(Account::class, request()->method()),
],
2024-07-31 20:19:17 +02:00
'startPeriod' => [
'nullable',
'date',
new IsDateOrTime(),
new isValidDateRange(),
],
'endPeriod' => [
'nullable',
'date',
new IsDateOrTime(),
new isValidDateRange(),
],
'filter' => [
2024-07-28 07:02:04 +02:00
'nullable',
'array',
JsonApiRule::filter($validFilters),
new IsValidAccountType()
2024-07-28 07:02:04 +02:00
],
'include' => [
2024-07-28 07:02:04 +02:00
'nullable',
'string',
JsonApiRule::includePaths(),
],
'page' => [
2024-07-28 07:02:04 +02:00
'nullable',
'array',
JsonApiRule::page(),
],
2024-07-31 20:19:17 +02:00
'page.number' => [
'integer',
'min:1',
],
'page.size' => [
'integer',
'min:1',
],
'sort' => [
2024-07-28 07:02:04 +02:00
'nullable',
'string',
JsonApiRule::sort(),
],
'withCount' => [
2024-07-28 07:02:04 +02:00
'nullable',
'string',
JsonApiRule::countable(),
],
];
}
}