TIF_NGANJUK_E41220418/app/Http/Requests/Admin/AdminRequest.php

78 lines
2.9 KiB
PHP

<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class AdminRequest extends FormRequest
{
public function authorize(): bool
{
// Pastikan ini true agar request diproses
return true;
}
public function rules(): array
{
// Mengambil ID dari route untuk pengecualian 'unique' saat update
$adminId = $this->route('id');
return [
'nama' => 'required|string|min:3|max:100|regex:/^[a-zA-Z\s]+$/',
'username' => 'required|string|alpha_num|max:10|unique:users,username,' . $adminId . ',id_user',
'email' => 'required|email:dns|unique:users,email,' . $adminId . ',id_user',
'no_wa' => 'required|numeric|digits_between:10,15',
'role' => 'required|in:admin_foto,admin_buket',
'alamat' => 'required|string|max:200|regex:/^[a-zA-Z0-9\s\.,:"-]+$/',
];
}
public function messages(): array
{
return [
'required' => ':attribute wajib diisi.',
'numeric' => ':attribute harus berupa angka.',
'string' => ':attribute harus berupa teks valid.',
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
'min' => ':attribute terlalu pendek, minimal :min karakter.',
'max' => ':attribute terlalu panjang, maksimal :max karakter.',
'digits_between' => ':attribute harus berjumlah antara :min sampai :max digit.',
'email' => 'Format :attribute tidak valid.',
'in' => ':attribute yang dipilih tidak sesuai pilihan yang tersedia.',
'nama.regex' => 'Nama hanya boleh berisi huruf dan spasi.',
'username.alpha_num' => 'Username hanya boleh berisi huruf dan angka.',
'alamat.regex' => 'Alamat hanya boleh berisi huruf, angka, spasi, titik, koma, titik dua, tanda hubung, tanda kurung, garis miring, dan tanda petik dua.',
];
}
public function attributes(): array
{
return [
'nama' => 'nama lengkap',
'username' => 'username',
'email' => 'alamat email',
'no_wa' => 'nomor WA',
'role' => 'peran admin',
'alamat' => 'alamat lengkap',
];
}
/**
* Penanganan khusus agar Modal tetap terbuka saat validasi gagal.
*/
protected function failedValidation(Validator $validator)
{
$redirect = redirect()->back()->withErrors($validator)->withInput();
if ($this->isMethod('post')) {
$redirect->with('error_modal', 'create');
} else {
$redirect->with('error_id', $this->route('id'));
}
throw new HttpResponseException($redirect);
}
}