get(); $cawangan_details = $cawangan_details->filter(fn($x) => !in_array(strtolower($x->details_caw), config('report.excluded_cawangan'))); $connection_active_cawangan = Helper::getActiveCawanganDbConnection(); return collect($cawangan_details->filter(fn($x) => in_array($x->mysql, $connection_active_cawangan))); } public function buildStokAuditModel($month) { // Create the class name dynamically based on the number $className = 'App\StokAudit' . $month; // Ensure the class exists if (!class_exists($className)) { abort(404); } $model = new $className(); return $model; } public function getSummaryLaporanStokAudit(Request $request) { $month = $request->month; $year = $request->year; $stokAudit = $this->buildStokAuditModel($month); $connections = $this->getActiveCawanganConnections(); $total_audit = $connections->map(function ($connection) use ($stokAudit, $year) { $data = $stokAudit->on($connection->mysql)->where('tahun', $year)->get(); return [ 'cawangan' => $connection->details_caw, 'bilangan_pembiayaan' => $data->count(), 'berat' => $data->sum('berat'), 'nilai_marhun' => $data->sum('nilaimarhun'), 'baki_pembiayaan' => $data->sum('bakipjm'), 'pembiayaan' => $data->sum('pinjaman'), 'upah_belum_bayar' => $data->sum('upahblmbyar'), 'total_utg_onepercent' => $data->sum('utgonepercent'), 'total_ujrah' => $data->sum('ujrah'), ]; }); $getTotalAcrossCawangan = function($property) use($total_audit) { $total = array_reduce($total_audit->toArray(), function($carry, $subarray) use($property) { return $carry + $subarray[$property]; }, 0); return $total; }; $total_all_cawangan_audit = [ 'cawangan' => 'Total Semua Cawangan', 'bilangan_pembiayaan' => $getTotalAcrossCawangan('bilangan_pembiayaan'), 'berat' => $getTotalAcrossCawangan('berat'), 'nilai_marhun' => $getTotalAcrossCawangan('nilai_marhun'), 'baki_pembiayaan' => $getTotalAcrossCawangan('baki_pembiayaan'), 'pembiayaan' => $getTotalAcrossCawangan('pembiayaan'), 'upah_belum_bayar' => $getTotalAcrossCawangan('upah_belum_bayar'), 'total_utg_onepercent' => $getTotalAcrossCawangan('total_utg_onepercent'), 'total_ujrah' => $getTotalAcrossCawangan('total_ujrah'), ]; $total_audit->push($total_all_cawangan_audit); if (sizeof($total_audit) == 0) { return response()->json('failed', 200); } else { return response()->json($total_audit, 200); } } }