File: /var/www/ipsremont-demo/app/Http/Requests/Order/IndexRequest.php
<?php
namespace App\Http\Requests\Order;
use App\Http\Requests\Request;
use App\Models\Order;
use Illuminate\Validation\Rule;
/**
* @property ?bool $sortable
* @property ?string $field
* @property ?string $sort
* @property ?string $name
* @property ?int $branch_id
* @property ?int $service_id
* @property ?string $status
* @property ?int $id
* @property ?int $repair_id
* @property ?string $part_external_id
* @property ?string $client
* @property ?string $date_start
* @property ?string $date_end
*/
class IndexRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(): array
{
return [
'sortable' => ['nullable', 'boolean'],
'field' => ['nullable', Rule::in(Order::getSortableFields())],
'sort' => ['nullable', Rule::in(['asc', 'desc'])],
'name' => ['nullable', 'string'],
'branch_id' => ['nullable', 'integer'],
'service_id' => ['nullable', 'integer'],
'status' => ['string', 'nullable'],
'id' => ['integer', 'nullable'],
'repair_id' => ['integer', 'nullable'],
'part_external_id' => ['string', 'nullable'],
'client' => ['string', 'nullable'],
'date_start' => ['date_format:Y-m-d', 'nullable', 'required_with:date_end'],
'date_end' => ['date_format:Y-m-d', 'nullable', 'required_with:date_start'],
];
}
protected function prepareForValidation()
{
$date = $this->dateFromRangeJs($this->order_date);
$this->merge([
'id' => $this->numberToInt($this->id),
'repair_id' => $this->numberToInt($this->repair_id),
'date_start' => $date['start'],
'date_end' => $date['end'],
]);
}
}