leftJoin('NilaiKomponen', 'NilaiKomponen.KomponenId', '=', 'Komponen.KomponenId') ->where('Komponen.PelaporanId', 2) ->where('Komponen.Kode', '!=', 'SK') ->selectRaw('SUM(NilaiKomponen.Nilai) / COUNT(Komponen.KomponenId) AS skl') ->value('skl'); if (isset($nilai_skl)) { // Panggil metode update_nilai_skl dan update_avg_skl dari PelaporanModel (asumsi sudah dibuat) Pelaporan::updateNilaiSkl($idmcpelaporan, 2, $nilai_skl); Pelaporan::updateAvgSkl($idmcpelaporan); } } /** * Sesuaikan SPL pelaporan. * * 1. Pelaporan.SPL_AL, disamakan dengan mcspl_al.nilaispl. * 2. Pelaporan.SPL, dari rata-rata spl-nya. */ public static function sesuaikanSplPelaporan($idmcpelaporan) { $spl = DB::table('Spl_AL') ->where('PelaporanId', $idmcpelaporan) ->first(); if ($spl && $spl->nilaispl) { Pelaporan::updateNilaiSpl($idmcpelaporan, 2, $spl->nilaispl); Pelaporan::updateAvgSpl($idmcpelaporan); } } /** * Ambil status Komunal berdasarkan idmcpelaporan. */ public static function getStatusMckomunal($idmcpelaporan) { return DB::table('Komunal') ->where('PelaporanId', $idmcpelaporan) ->first(); } /** * Update atau insert status mckomunal. */ public static function updateStatusMckomunal($idmcpelaporan, $status) { $existing = self::getStatusMckomunal($idmcpelaporan); if ($existing) { DB::table('Komunal') ->where('PelaporanId', $idmcpelaporan) ->update(['Tersambung' => $status]); } else { DB::table('Komunal') ->insert([ 'PelaporanId' => $idmcpelaporan, 'Tersambung' => $status, ]); } } /** * Cek lampiran surat kerjasama berdasarkan PelaporanId dan KomponenId. */ public static function cekLampiranSk($idmcpelaporan, $idrefkomponen) { return DB::table('Lampiran') ->where([ 'PelaporanId' => $idmcpelaporan, 'KomponenId' => $idrefkomponen, ])->first(); } }