1
0
Files
services_core/app/Http/Requests/Ticket/IndexTicketRequest.php
T
2026-08-07 09:16:13 +07:00

41 lines
1.5 KiB
PHP

<?php
namespace App\Http\Requests\Ticket;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class IndexTicketRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
/** Kata kunci untuk mencari nomor, judul, atau deskripsi ticket. */
'search' => ['nullable', 'string', 'max:255'],
/** Filter berdasarkan status ticket. */
'status' => ['nullable', Rule::in([
'draft', 'open', 'approved', 'assigned', 'progress', 'pending',
'resolved', 'closed', 'cancelled', 'rejected',
])],
/** Filter berdasarkan prioritas ticket. */
'priority' => ['nullable', Rule::in(['low', 'medium', 'high', 'critical'])],
/** Filter berdasarkan ID tipe ticket. */
'ticket_type_id' => ['nullable', 'integer', 'exists:ticket_types,id'],
/** Filter berdasarkan ID customer. */
'customer_id' => ['nullable', 'integer'],
/** Nomor halaman yang ingin diambil. */
'page' => ['nullable', 'integer', 'min:1'],
/** Jumlah data per halaman, maksimal 100. */
'per_page' => ['nullable', 'integer', 'min:1', 'max:100'],
'sort_by' => ['nullable', Rule::in(['ticket_no', 'title', 'priority', 'status', 'created_at'])],
'sort_direction' => ['nullable', Rule::in(['asc', 'desc'])],
'assigned_to_me' => ['nullable', 'boolean'],
];
}
}