|string> */ public function rules(): array { return [ 'start_date' => ['required', 'date'], 'end_date' => ['required', 'date'], 'media_ids' => ['required', 'array'], 'media_ids.*' => ['required', 'exists:media,id'], 'image' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'], 'required_reports' => ['required', 'numeric', 'min:1', 'max:100'], 'task_description' => ['required'], 'enhancer_id' => ['required'], ]; } public function prepareForValidation() { $this->merge([ 'enhancer_id' => Auth::check() ? Auth::id() : null, ]); } public function messages(): array { return [ 'start_date.required' => 'Tanggal mulai harus diisi.', 'start_date.date' => 'Format tanggal mulai tidak valid.', 'end_date.required' => 'Tanggal selesai harus diisi.', 'end_date.date' => 'Format tanggal selesai tidak valid.', 'media_ids.required' => 'Media harus dipilih.', 'media_ids.array' => 'Format media tidak valid.', 'media_ids.*.required' => 'Media yang dipilih tidak boleh kosong.', 'media_ids.*.exists' => 'Media yang dipilih tidak ditemukan dalam sistem.', 'image.image' => 'File yang diunggah harus berupa gambar.', 'image.mimes' => 'Gambar harus berformat PNG, JPG, atau JPEG.', 'image.max' => 'Ukuran gambar maksimal adalah 2MB.', 'required_reports.required' => 'Jumlah laporan yang dibutuhkan harus diisi.', 'required_reports.numeric' => 'Jumlah laporan harus berupa angka.', 'required_reports.min' => 'Jumlah laporan minimal adalah 1.', 'required_reports.max' => 'Jumlah laporan maksimal adalah 100.', 'task_description.required' => 'Deskripsi tugas harus diisi.', ]; } }