|string> */ public function rules(): array { $rules = [ 'name' => ['required'], 'start_date' => ['required', 'date'], 'end_date' => ['required', 'date'], 'media_ids' => ['required', 'array'], 'media_ids.*' => ['required'], 'banner' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'], 'description' => ['required'], 'enhancer_id' => ['required'], ]; if($this->isMethod('post')){ $rules['offer_file_template'] = ['required', 'file','mimes:pdf', 'max:2048']; }else{ $rules['offer_file_template'] = ['nullable', 'file','mimes:pdf', 'max:2048']; } return $rules; } protected function prepareForValidation() { $this->merge([ 'enhancer_id' => Auth::check() ? Auth::id() : null, ]); } public function messages(): array { return [ 'name.required' => 'Nama kegiatan wajib diisi.', 'start_date.required' => 'Tanggal mulai wajib diisi.', 'start_date.date' => 'Format tanggal mulai tidak valid.', 'end_date.required' => 'Tanggal selesai wajib diisi.', 'end_date.date' => 'Format tanggal selesai tidak valid.', 'media_ids.required' => 'Media wajib dipilih.', 'media_ids.array' => 'Format media tidak valid.', 'media_ids.*.required' => 'Setiap media harus dipilih.', 'media_ids.*.exists' => 'Media yang dipilih tidak valid.', 'banner.image' => 'File banner harus berupa gambar.', 'banner.mimes' => 'Format banner harus PNG, JPG, atau JPEG.', 'banner.max' => 'Ukuran banner maksimal 2MB.', 'offer_file_template.required' => 'File wajib diisi.', 'offer_file_template.file' => 'File template harus berupa file yang valid.', 'offer_file_template.mimes' => 'Format file template harus PDF.', 'offer_file_template.max' => 'Ukuran file template maksimal 2MB.', 'description.required' => 'Deskripsi kerjasama wajib diisi.', ]; } }