getBasicInfoRules(), $this->getPaymentRules(), $this->getSettlementRules(), $this->getAuthorizationRules(), ); } /** * Aturan validasi untuk informasi dasar * * @return array */ private function getBasicInfoRules() { return [ 'permohonan_id' => 'required|exists:permohonan,id', 'persetujuan_penawaran_id' => 'required|exists:persetujuan_penawaran,id', 'status' => 'nullable|boolean', 'created_by' => 'nullable|exists:users,id', 'updated_by' => 'nullable|exists:users,id', ]; } /** * Aturan validasi untuk data pembayaran * * @return array */ private function getPaymentRules() { $fileRule = 'nullable|file|mimes:' . self::ALLOWED_FILE_TYPES . '|max:' . self::MAX_FILE_SIZE; return [ 'total_harus_bayar' => 'nullable|numeric|min:0', 'nominal_bayar' => 'nullable|numeric|min:0', 'total_pembukuan' => 'nullable|numeric|min:0', 'bukti_ksl' => $fileRule, 'bukti_bayar' => $fileRule, 'status_bayar' => 'nullable|boolean', 'tanggal_pembayaran' => 'nullable|date', 'status_kurang_bayar' => 'nullable|boolean', 'status_lebih_bayar' => 'nullable|boolean', 'nominal_kurang_bayar' => 'nullable|numeric|min:0', 'nominal_lebih_bayar' => 'nullable|numeric|min:0', 'bukti_pengembalian' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:2048', ]; } /** * Aturan validasi untuk data penyelesaian * * @return array */ private function getSettlementRules() { $fileRule = 'nullable|file|mimes:' . self::ALLOWED_FILE_TYPES . '|max:' . self::MAX_FILE_SIZE; return [ 'nominal_penyelesaian' => 'nullable|numeric|min:0', 'status_penyelesaian' => 'nullable|boolean', 'tanggal_penyelesaian' => 'nullable|date', 'bukti_penyelesaian' => $fileRule, 'memo_penyelesaian' => $fileRule, 'catatan_noc' => 'nullable|string', 'nomor_tiket' => 'nullable|string', 'nomor_rekening_lebih_bayar' => 'nullable|string', 'bukti_ksl_lebih_bayar' => 'nullable|string', 'bukti_ksl_kurang_bayar' => 'nullable|string' ]; } /** * Aturan validasi untuk otorisasi * * @return array */ private function getAuthorizationRules() { return [ 'authorized_status' => 'nullable|boolean', 'authorized_at' => 'nullable|date', 'authorized_by' => 'nullable|exists:users,id', ]; } /** * Pesan khusus untuk validasi * * @return array */ public function messages() { return [ 'permohonan_id.required' => 'ID Permohonan harus diisi', 'permohonan_id.exists' => 'ID Permohonan tidak valid', 'persetujuan_penawaran_id.required' => 'ID Persetujuan Penawaran harus diisi', 'persetujuan_penawaran_id.exists' => 'ID Persetujuan Penawaran tidak valid', 'nominal_bayar.numeric' => 'Nominal Bayar harus berupa angka', 'nominal_bayar.min' => 'Nominal Bayar minimal 0', 'bukti_ksl.file' => 'Bukti KSL harus berupa file', 'bukti_ksl.mimes' => 'Bukti KSL harus berformat pdf, jpg, jpeg, atau png', 'bukti_ksl.max' => 'Ukuran Bukti KSL maksimal 10MB', 'bukti_bayar.file' => 'Bukti Bayar harus berupa file', 'bukti_bayar.mimes' => 'Bukti Bayar harus berformat pdf, jpg, jpeg, atau png', 'bukti_bayar.max' => 'Ukuran Bukti Bayar maksimal 10MB', 'status.boolean' => 'Status harus berupa boolean', 'status_bayar.boolean' => 'Status Bayar harus berupa boolean', 'tanggal_pembayaran.date' => 'Format Tanggal Pembayaran tidak valid', 'nominal_penyelesaian.numeric' => 'Nominal Penyelesaian harus berupa angka', 'nominal_penyelesaian.min' => 'Nominal Penyelesaian minimal 0', 'status_penyelesaian.boolean' => 'Status Penyelesaian harus berupa boolean', 'tanggal_penyelesaian.date' => 'Format Tanggal Penyelesaian tidak valid', 'bukti_penyelesaian.file' => 'Bukti Penyelesaian harus berupa file', 'bukti_penyelesaian.mimes' => 'Bukti Penyelesaian harus berformat pdf, jpg, jpeg, atau png', 'bukti_penyelesaian.max' => 'Ukuran Bukti Penyelesaian maksimal 10MB', 'memo_penyelesaian.file' => 'Memo Penyelesaian harus berupa file', 'memo_penyelesaian.mimes' => 'Memo Penyelesaian harus berformat pdf, jpg, jpeg, atau png', 'memo_penyelesaian.max' => 'Ukuran Memo Penyelesaian maksimal 10MB', 'authorized_status.boolean' => 'Status Otorisasi harus berupa boolean', 'authorized_at.date' => 'Format Tanggal Otorisasi tidak valid', 'authorized_by.exists' => 'User Otorisasi tidak valid', 'status_kurang_bayar.boolean' => 'Status Kurang Bayar harus berupa boolean', 'status_lebih_bayar.boolean' => 'Status Lebih Bayar harus berupa boolean', 'nominal_kurang_bayar.numeric' => 'Nominal Kurang Bayar harus berupa angka', 'nominal_kurang_bayar.min' => 'Nominal Kurang Bayar minimal 0', 'nominal_lebih_bayar.numeric' => 'Nominal Lebih Bayar harus berupa angka', ]; } }