|string> */ public function rules(): array { return [ 'media_name' => ['required', 'max:100'], 'media_address' => ['required'], 'media_link' => ['required'], 'media_type' => ['required', 'in:online,cetak,radio,televisi'], 'media_classification' => ['required', 'in:lokal,regional,nasional'], 'media_journalism_organization' => ['nullable', 'max:100'], 'media_journalism_organization_doc' => ['nullable', 'file', 'mimes:pdf', 'max:2048'], 'media_press_council_certificate' => ['nullable', 'max:100'], 'media_press_council_certificate_doc' => ['nullable', 'file', 'mimes:pdf', 'max:2048'], ]; } public function messages(): array { return [ 'media_name.required' => 'Nama media wajib diisi.', 'media_name.max' => 'Nama media maksimal 100 karakter.', 'media_address.required' => 'Alamat media wajib diisi.', 'media_link.required' => 'Link media wajib diisi.', 'media_type.required' => 'Tipe media wajib dipilih.', 'media_type.in' => 'Tipe media tidak valid.', 'media_classification.required' => 'Klasifikasi media wajib dipilih.', 'media_classification.in' => 'Klasifikasi media tidak valid.', 'media_journalism_organization.max' => 'Organisasi jurnalistik media maksimal 100 karakter.', 'media_journalism_organization_doc.file' => 'Dokumen organisasi jurnalistik media harus berupa file.', 'media_journalism_organization_doc.mimes' => 'Dokumen organisasi jurnalistik media harus dalam format PDF.', 'media_journalism_organization_doc.max' => 'Ukuran dokumen organisasi jurnalistik media maksimal 2 MB.', 'media_press_council_certificate.max' => 'Sertifikat Dewan Pers media maksimal 100 karakter.', 'media_press_council_certificate_doc.file' => 'Dokumen sertifikat Dewan Pers media harus berupa file.', 'media_press_council_certificate_doc.mimes' => 'Dokumen sertifikat Dewan Pers media harus dalam format PDF.', 'media_press_council_certificate_doc.max' => 'Ukuran dokumen sertifikat Dewan Pers media maksimal 2 MB.', ]; } protected function prepareForValidation() { $this->merge([ 'media_journalism_organization' => filled($this->media_journalism_organization) ? $this->media_journalism_organization : null, 'media_journalism_organization_doc' => filled($this->media_journalism_organization_doc) ? $this->media_journalism_organization_doc : null, 'media_press_council_certificate' => filled($this->media_press_council_certificate) ? $this->media_press_council_certificate : null, 'media_press_council_certificate_doc' => filled($this->media_press_council_certificate_doc) ? $this->media_press_council_certificate_doc : null, ]); } }