'required|exists:bukets,id_buket', // Tambahan validasi keamanan //tambahan validasi untuk teks aja 'nama' => 'required|string|min:3|max:100|regex:/^[a-zA-Z\s]+$/', 'no_wa' => 'required|numeric|digits_between:10,15', 'tgl_ambil' => 'required|date|after_or_equal:today', 'waktu_ambil' => [ 'required', 'date_format:H:i', 'after_or_equal:09:00', 'before_or_equal:21:00', ], 'bukti_bayar' => 'required|image|mimes:jpeg,png,jpg|max:2048', 'request_khusus' => 'nullable|string|max:250', 'ucapan' => 'nullable|string|max:100', ]; } public function messages(): array { return [ 'required' => 'Kolom :attribute wajib diisi.', 'string' => 'Input :attribute harus berupa teks valid.', 'min' => ':attribute terlalu pendek, minimal :min karakter.', 'max' => ':attribute terlalu panjang, maksimal :max karakter.', 'numeric' => ':attribute harus berupa angka.', 'digits_between' => ':attribute harus antara :min sampai :max digit.', 'regex' => ':attribute hanya boleh berisi huruf dan spasi.', 'date' => 'Format tanggal pada :attribute tidak valid.', 'after_or_equal' => ':attribute tidak boleh tanggal yang sudah lewat.', 'image' => ':attribute harus berupa file gambar.', 'mimes' => 'Format :attribute harus jpeg, png, atau jpg.', 'bukti_bayar.max' => 'Ukuran :attribute maksimal adalah 2MB.', 'waktu_ambil.after_or_equal' => 'Jam operasional kami mulai pukul 09:00.', 'waktu_ambil.before_or_equal' => 'Jam operasional kami berakhir pukul 21:00.', ]; } public function attributes(): array { return [ 'nama' => 'nama pemesan', 'no_wa' => 'nomor WhatsApp', 'tgl_ambil' => 'tanggal pengambilan', 'waktu_ambil' => 'waktu pengambilan', 'bukti_bayar' => 'bukti pembayaran', 'ucapan' => 'kartu ucapan', ]; } }