TIFNJK_E41222887/app/Http/Requests/UpdateEmployeeRequest.php

98 lines
4.4 KiB
PHP

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateEmployeeRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$employee = $this->route('employee');
$employeeId = $employee->id;
$userId = $employee->user_id;
return [
// ── Identitas ────────────────────────────────────────────────
'name' => ['required', 'string', 'max:255', 'regex:/^[\pL\s]+$/u'],
'email' => [
'nullable',
'email:rfc,dns',
'max:255',
// Abaikan email milik employee ini sendiri
Rule::unique('employees', 'email')->ignore($employeeId),
],
// ── Kepegawaian ──────────────────────────────────────────────
'nip' => [
'required',
'digits:6',
Rule::unique('employees', 'nip')->ignore($employeeId),
],
// ── Data Pribadi ─────────────────────────────────────────────
'gender' => ['required', 'in:L,P'],
'place_of_birth'=> ['nullable', 'string', 'max:100'],
'birth_date' => ['required', 'date', 'before:today'],
'address' => ['nullable', 'string', 'max:500'],
'phone_number' => ['nullable', 'digits_between:8,15'],
// ── Jabatan & Departemen ─────────────────────────────────────
'department_id' => ['required', 'exists:departments,id'],
'position_id' => ['required', 'exists:positions,id'],
// ── Status & Tanggal ─────────────────────────────────────────
'status' => ['required', 'in:PKWT,PKWTT,Magang'],
'join_date' => ['required', 'date'],
];
}
public function messages(): array
{
return [
// Nama
'name.required' => 'Nama lengkap wajib diisi.',
'name.max' => 'Nama lengkap maksimal 255 karakter.',
'name.regex' => 'Nama lengkap hanya boleh berisi huruf dan spasi.',
// Email
'email.email' => 'Format email tidak valid.',
'email.unique' => 'Email sudah digunakan oleh karyawan lain.',
'email.max' => 'Email maksimal 255 karakter.',
// NIP
'nip.required' => 'NIP wajib diisi.',
'nip.digits' => 'NIP harus tepat 6 digit angka.',
'nip.unique' => 'NIP sudah terdaftar pada karyawan lain.',
// Data Pribadi
'gender.required' => 'Jenis kelamin wajib dipilih.',
'gender.in' => 'Jenis kelamin tidak valid.',
'place_of_birth.max' => 'Tempat lahir maksimal 100 karakter.',
'birth_date.required' => 'Tanggal lahir wajib diisi.',
'birth_date.date' => 'Format tanggal lahir tidak valid.',
'birth_date.before' => 'Tanggal lahir harus sebelum hari ini.',
'address.max' => 'Alamat maksimal 500 karakter.',
'phone_number.digits_between' => 'Nomor HP harus berupa angka, minimal 8 dan maksimal 15 digit.',
// Jabatan & Departemen
'department_id.required'=> 'Departemen wajib dipilih.',
'department_id.exists' => 'Departemen tidak ditemukan.',
'position_id.required' => 'Jabatan wajib dipilih.',
'position_id.exists' => 'Jabatan tidak ditemukan.',
// Status & Tanggal
'status.required' => 'Status kepegawaian wajib dipilih.',
'status.in' => 'Status hanya boleh PKWT, PKWTT, atau Magang.',
'join_date.required' => 'Tanggal masuk wajib diisi.',
'join_date.date' => 'Format tanggal masuk tidak valid.',
];
}
}