<?php

namespace App\Http\Requests\V1;

use App\Libs\Api\ParsedListParams;
use Illuminate\Foundation\Http\FormRequest;
use App\Libs\Support\Sanitizer\Traits\SanitizesInput;


class SearchRequest extends FormRequest
{

    use SanitizesInput;

    /**
     * Get data to be validated from the request.
     *
     * @return array
     */
    public function validationData(): array
    {
        $defaultValidationData   = ParsedListParams::getDefaultApiListRequestValidationData($this);
        //optional aditional validation data
        $adicionalValidationData = [];

        return array_replace($defaultValidationData, $adicionalValidationData);
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(): array
    {

        $defaultRules   = ParsedListParams::getDefaultApiListRequestRules();
        //optional aditional validation rules to apply
        $adicionalRules = [
            'q' => 'required|string',
        ];
        return array_replace($defaultRules, $adicionalRules);
    }

    /**
     * Filters to be applied to the input.
     *
     * @return array
     */
    public function filters()
    {

        $defaultFilters   = ParsedListParams::getDefaultApiListFilters();
        //optional aditional filters to apply
        $adicionalFilters = [
            'q' => "strip_tags|xss_clean|trim"
        ];
        return array_replace($defaultFilters, $adicionalFilters);
    }
}
