Fix Hasil Riwayat

This commit is contained in:
Zakiaass 2024-03-19 13:49:53 +07:00
parent 6f75678ecc
commit fba20e68c5
4 changed files with 72 additions and 65 deletions

View File

@ -245,66 +245,6 @@ public function perangkingan(Request $request)
return view('perhitungan.perangkingan', compact('criterias', 'extracuricullars', 'nilaiAkhir', 'totalNilaiAkhir', 'totalNilaiAkhirPersen', 'peringkat')); 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() public function getRiwayatHasil()
{ {
// Periksa apakah pengguna telah login // Periksa apakah pengguna telah login
@ -322,7 +262,74 @@ public function getRiwayatHasil()
$logs = collect(); $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')); return view('perhitungan.riwayat-hasil', compact('logs'));
} }

View File

@ -35,7 +35,7 @@
<div class="pd-20"> <div class="pd-20">
<h4 class="text-blue h4 mb-0">Hasil Perangkingan</h4> <h4 class="text-blue h4 mb-0">Hasil Perangkingan</h4>
</div> </div>
<form method="POST" action="{{ route('perangkingan.simpan') }}"> <form method="POST" action="{{ route('riwayat.hasil') }}">
@csrf @csrf
<div class="pb-10"> <div class="pb-10">
<div class="table-responsive"> <div class="table-responsive">
@ -72,7 +72,7 @@
</table> </table>
<div class="col-sm-12"> <div class="col-sm-12">
<div class="input-group mb-3 mx-auto"> <div class="input-group mb-3 mx-auto">
<button type="submit" class="btn btn-primary btn-lg btn-block">Hasil Perangkingan</button> <button type="submit" class="btn btn-primary btn-lg btn-block">Simpan Hasil</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -46,7 +46,6 @@
<th>Nama</th> <th>Nama</th>
<th>Pilihan Ekstrakurikuler</th> <th>Pilihan Ekstrakurikuler</th>
<th>Nilai Akhir</th> <th>Nilai Akhir</th>
{{-- <th>Tanggal Perangkingan</th> --}}
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View File

@ -107,7 +107,8 @@
Route::post('nilai-utility', [PerhitunganController::class, 'nilaiUtility'])->name('nilaiUtility'); Route::post('nilai-utility', [PerhitunganController::class, 'nilaiUtility'])->name('nilaiUtility');
Route::post('nilai-akhir', [PerhitunganController::class, 'nilaiAkhir'])->name('nilaiAkhir'); Route::post('nilai-akhir', [PerhitunganController::class, 'nilaiAkhir'])->name('nilaiAkhir');
Route::post('perangkingan', [PerhitunganController::class, 'perangkingan'])->name('perangkingan'); Route::post('perangkingan', [PerhitunganController::class, 'perangkingan'])->name('perangkingan');
Route::post('/perangkingan/simpan', [PerhitunganController::class, 'simpanPerangkingan'])->name('perangkingan.simpan');
Route::post('/riwayat-hasil', [PerhitunganController::class, 'getRiwayatHasil'])->name('riwayat.hasil');
Route::get('/riwayat-hasil', [PerhitunganController::class, 'getRiwayatHasil'])->name('riwayat.hasil'); Route::get('/riwayat-hasil', [PerhitunganController::class, 'getRiwayatHasil'])->name('riwayat.hasil');
Route::get('/logout', [AuthController::class, 'logout'])->name('logout'); Route::get('/logout', [AuthController::class, 'logout'])->name('logout');