| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/client-portal-laravel/releases/20260626120707/app/DataTransferObjects/ |
Upload File : |
<?php
declare(strict_types=1);
namespace App\DataTransferObjects;
readonly class ParsedQuery
{
/**
* @param array<array{field: string, operator: string, value: mixed}> $filters
* @param array<string> $excludeTerms
*/
public function __construct(
public string $textSearch,
public array $filters = [],
public array $excludeTerms = [],
) {}
public function hasTextSearch(): bool
{
return $this->textSearch !== '';
}
public function hasFilters(): bool
{
return count($this->filters) > 0;
}
public function hasExcludeTerms(): bool
{
return count($this->excludeTerms) > 0;
}
public function isEmpty(): bool
{
return ! $this->hasTextSearch() && ! $this->hasFilters() && ! $this->hasExcludeTerms();
}
/**
* @return array{text_search: string, filters: array, exclude_terms: array}
*/
public function toArray(): array
{
return [
'text_search' => $this->textSearch,
'filters' => $this->filters,
'exclude_terms' => $this->excludeTerms,
];
}
}