From fba20e68c51c06f6153a1e91220eb321cf57ab5e Mon Sep 17 00:00:00 2001 From: Zakiaass <117088186+zakiaass@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:49:53 +0700 Subject: [PATCH] Fix Hasil Riwayat --- .../Controllers/PerhitunganController.php | 129 +++++++++--------- .../views/perhitungan/perangkingan.blade.php | 4 +- .../views/perhitungan/riwayat-hasil.blade.php | 1 - routes/web.php | 3 +- 4 files changed, 72 insertions(+), 65 deletions(-) diff --git a/app/Http/Controllers/PerhitunganController.php b/app/Http/Controllers/PerhitunganController.php index 2f2998a..15d670f 100644 --- a/app/Http/Controllers/PerhitunganController.php +++ b/app/Http/Controllers/PerhitunganController.php @@ -245,66 +245,6 @@ public function perangkingan(Request $request) return view('perhitungan.perangkingan', compact('criterias', 'extracuricullars', 'nilaiAkhir', 'totalNilaiAkhir', 'totalNilaiAkhirPersen', 'peringkat')); } - public function simpanPerangkingan(Request $request) - { - // Ambil data dari formulir atau perhitungan Anda - $nilaiUtility = session('nilaiUtility', []); - - // Lakukan perhitungan perangkingan - $nilaiAkhir = []; - - $logs = LogActivity::all(); - - foreach ($nilaiUtility as $extracurricularId => $criteriaData) { - $totalNilai = 0; - - foreach ($criteriaData as $criteriaId => $utility) { - $criteria = Criteria::find($criteriaId); - if ($criteria) { - $bobotKriteria = $criteria->bobot; - $nilaiAkhir[$extracurricularId][$criteriaId] = number_format($utility * $bobotKriteria, 2, '.', ''); - $totalNilai += $utility * $bobotKriteria; - } else { - $nilaiAkhir[$extracurricularId][$criteriaId] = '0'; - } - } - - $totalNilaiAkhir[$extracurricularId] = number_format($totalNilai, 2, '.', ''); - $totalPersen = ($totalNilai) * 100; - $totalNilaiAkhirPersen[$extracurricularId] = number_format($totalPersen, 0, '.', ''); - $peringkat[$extracurricularId] = $totalPersen; - } - - arsort($peringkat); - - // Ambil id ekstrakurikuler dari peringkat pertama - $extracurricularIds = array_keys($peringkat); - $extracurricularId = reset($extracurricularIds); - - // Periksa apakah id ekstrakurikuler valid - if (isset($nilaiAkhir[$extracurricularId])) { - $nilaiAkhir = $nilaiAkhir[$extracurricularId]; - - // Simpan ke database jika id ekstrakurikuler valid - $userId = auth()->check() ? auth()->user()->id : 1; - // $tanggalPerangkingan = Carbon::now(); - // dd($tanggalPerangkingan); - - LogActivity::create([ - 'user_id' => $userId, - 'extracuricullar_id' => $extracurricularId, - 'final_score' => reset($nilaiAkhir), - // 'date' => $tanggalPerangkingan, - ]); - - // Redirect atau tampilkan view hasil perangkingan - return view('perhitungan.riwayat-hasil', compact('logs', 'userId', 'extracurricularId', 'nilaiAkhir')); - } else { - // Handle jika id ekstrakurikuler tidak valid - return redirect()->back()->with('error', 'Ekstrakurikuler tidak valid'); - } - } - public function getRiwayatHasil() { // Periksa apakah pengguna telah login @@ -322,7 +262,74 @@ public function getRiwayatHasil() $logs = collect(); } - // Kembalikan aktivitas log ke dalam tampilan + // Ambil data dari formulir atau perhitungan Anda + $nilaiUtility = session('nilaiUtility', []); + + // Lakukan perhitungan perangkingan jika ada data + if (!empty($nilaiUtility)) { + $nilaiAkhir = []; + foreach ($nilaiUtility as $extracurricularId => $criteriaData) { + $totalNilai = 0; + + foreach ($criteriaData as $criteriaId => $utility) { + $criteria = Criteria::find($criteriaId); + if ($criteria) { + $bobotKriteria = $criteria->bobot; + $nilaiAkhir[$extracurricularId][$criteriaId] = $utility * $bobotKriteria; + $totalNilai += $utility * $bobotKriteria; + } else { + $nilaiAkhir[$extracurricularId][$criteriaId] = 0; + } + } + + $totalNilaiAkhir[$extracurricularId] = $totalNilai; + $totalPersen = $totalNilai * 100; + $totalNilaiAkhirPersen[$extracurricularId] = $totalPersen; + $peringkat[$extracurricularId] = $totalPersen; + } + + arsort($peringkat); + + // Ambil id ekstrakurikuler dari peringkat pertama + $extracurricularIds = array_keys($peringkat); + $extracurricularId = reset($extracurricularIds); + + // Periksa apakah id ekstrakurikuler valid + if (isset($nilaiAkhir[$extracurricularId])) { + $nilaiAkhir = $nilaiAkhir[$extracurricularId]; + + // Simpan ke database jika id ekstrakurikuler valid + $userId = auth()->check() ? auth()->user()->id : 1; + + // Check apakah sudah ada log untuk ekskul peringkat pertama + $existingLog = LogActivity::where('user_id', $userId) + ->where('extracuricullar_id', $extracurricularId) + ->first(); + + // Jika belum ada log, buat log baru + if (!$existingLog) { + LogActivity::create([ + 'user_id' => $userId, + 'extracuricullar_id' => $extracurricularId, + 'final_score' => $totalNilaiAkhir[$extracurricularId], + ]); + } else { + // Jika sudah ada log, perbarui final score jika nilai akhir baru lebih tinggi + if ($existingLog->final_score < $totalNilaiAkhir[$extracurricularId]) { + $existingLog->final_score = $totalNilaiAkhir[$extracurricularId]; + $existingLog->save(); + } + } + + // Tampilkan view hasil perangkingan dan riwayat + return view('perhitungan.riwayat-hasil', compact('logs', 'userId', 'extracurricularId', 'nilaiAkhir')); + } else { + // Handle jika id ekstrakurikuler tidak valid + return redirect()->back()->with('error', 'Ekstrakurikuler tidak valid'); + } + } + + // Jika tidak ada data perhitungan, langsung tampilkan riwayat hasil return view('perhitungan.riwayat-hasil', compact('logs')); } diff --git a/resources/views/perhitungan/perangkingan.blade.php b/resources/views/perhitungan/perangkingan.blade.php index 4b6541e..298425d 100644 --- a/resources/views/perhitungan/perangkingan.blade.php +++ b/resources/views/perhitungan/perangkingan.blade.php @@ -35,7 +35,7 @@