push to git jtipolije
This commit is contained in:
parent
eba73b04fe
commit
ad790ac178
|
@ -0,0 +1 @@
|
|||
Subproject commit aca32a8501824847efc9e817814d99aafb18a911
|
|
@ -7,12 +7,6 @@
|
|||
use App\Models\SubCriteria;
|
||||
use App\Models\Extracuricullar;
|
||||
use App\Models\LogActivity;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use App\Models\ExtracuricullarSubKriteria;
|
||||
use App\Http\Controllers\Auth;
|
||||
use RealRashid\SweetAlert\Facades\Alert;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class PerhitunganController extends Controller
|
||||
{
|
||||
|
@ -33,9 +27,8 @@ public function calculateBobotKriteria()
|
|||
$prioritas = $criteria->prioritas;
|
||||
$i = $prioritas - 1; // Karena indeks array dimulai dari 0, sedangkan prioritas dimulai dari 1
|
||||
|
||||
// Iterasi untuk setiap nilai prioritas pada kriteria
|
||||
for (; $i < $totalKriteria; $i++) {
|
||||
// Hitung nilai SMARTER
|
||||
// perulangan untuk setiap nilai prioritas pada kriteria
|
||||
for ($i ; $i < $totalKriteria; $i++) {
|
||||
$sum += 1 / ($i + 1);
|
||||
}
|
||||
|
||||
|
@ -55,7 +48,6 @@ public function calculateBobotSubKriteria()
|
|||
$criterias = Criteria::all();
|
||||
|
||||
foreach ($criterias as $criteria) {
|
||||
// Ambil semua sub-kriteria untuk kriteria ini
|
||||
$subcriterias = SubCriteria::where('criteria_id', $criteria->id)->get();
|
||||
|
||||
$totalSubKriteria = count($subcriterias);
|
||||
|
@ -68,12 +60,10 @@ public function calculateBobotSubKriteria()
|
|||
$prioritas = $subcriteria->prioritas;
|
||||
$i = $prioritas - 1;
|
||||
|
||||
// Iterasi untuk setiap nilai prioritas pada kriteria
|
||||
for (; $i < $totalSubKriteria; $i++) {
|
||||
// Hitung nilai SMARTER
|
||||
for ($i ; $i < $totalSubKriteria; $i++) {
|
||||
$sum += 1 / ($i + 1);
|
||||
}
|
||||
// Hitung bobot kriteria menggunakan rumus SMARTER ROC
|
||||
|
||||
$bobot = $sum / $totalSubKriteria;
|
||||
|
||||
$bobotSubKriteria[$subcriteria->nama] = $bobot;
|
||||
|
@ -97,30 +87,22 @@ public function penilaian()
|
|||
|
||||
public function transformasiNilai(Request $request)
|
||||
{
|
||||
// Ambil data nilai dari subkriteria yang dipilih dari form penilaian
|
||||
$subcriteriaData = $request->input('subcriteria');
|
||||
|
||||
// Inisialisasi variabel untuk menyimpan nilai hasil transformasi
|
||||
$transformedValues = [];
|
||||
|
||||
// Lakukan transformasi nilai berdasarkan bobot subkriteria
|
||||
foreach ($subcriteriaData as $extracurricularId => $criteriaData) {
|
||||
foreach ($criteriaData as $criteriaId => $subcriteriaId) {
|
||||
// Ambil data sub-kriteria berdasarkan ID yang dipilih dari form
|
||||
$subcriteria = SubCriteria::findOrFail($subcriteriaId);
|
||||
|
||||
// Ambil bobot dari subkriteria yang dipilih
|
||||
$bobot = $subcriteria->bobot;
|
||||
|
||||
// Simpan hasil transformasi nilai ke dalam array
|
||||
$transformedValues[$extracurricularId][$criteriaId] = $bobot;
|
||||
}
|
||||
}
|
||||
|
||||
// Simpan data transformasi nilai ke dalam session
|
||||
session(['transformedValues' => $transformedValues]);
|
||||
|
||||
// Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view
|
||||
$criterias = Criteria::all();
|
||||
$extracuricullars = Extracuricullar::all();
|
||||
|
||||
|
@ -129,75 +111,67 @@ public function transformasiNilai(Request $request)
|
|||
|
||||
public function nilaiUtility(Request $request)
|
||||
{
|
||||
// Ambil data transformasi nilai dari session
|
||||
$transformedValues = session('transformedValues', []);
|
||||
|
||||
// Inisialisasi variabel untuk menyimpan nilai utility
|
||||
$nilaiUtility = [];
|
||||
|
||||
foreach ($transformedValues as $extracurricularId => $criteriaData) {
|
||||
foreach ($criteriaData as $criteriaId => $bobot) {
|
||||
// Temukan bobot terbesar dan terkecil dari subkriteria
|
||||
$maxBobot = SubCriteria::where('criteria_id', $criteriaId)->max('bobot');
|
||||
$minBobot = SubCriteria::where('criteria_id', $criteriaId)->min('bobot');
|
||||
|
||||
// Periksa apakah penyebut bernilai nol
|
||||
$denominator = $maxBobot - $minBobot;
|
||||
if ($denominator == 0) {
|
||||
// Jika penyebut bernilai nol
|
||||
$nilaiUtility[$extracurricularId][$criteriaId] = 0;
|
||||
} else {
|
||||
// Perhitungan nilai utility
|
||||
$utility = 1*(($bobot - $minBobot) / $denominator);
|
||||
// // rumus nilai utility
|
||||
// $denominator = $maxBobot - $minBobot;
|
||||
// if ($denominator == 0) {
|
||||
// $nilaiUtility[$extracurricularId][$criteriaId] = 0;
|
||||
// } else {
|
||||
// $utility = 1*(($bobot - $minBobot) / $denominator);
|
||||
// $nilaiUtility[$extracurricularId][$criteriaId] = $utility;
|
||||
// // $nilaiUtility[$extracurricularId][$criteriaId] = number_format($utility, 2, '.', '');
|
||||
// }
|
||||
|
||||
$utility = 1*(($bobot - $minBobot) / ($maxBobot - $minBobot));
|
||||
$nilaiUtility[$extracurricularId][$criteriaId] = $utility;
|
||||
// $nilaiUtility[$extracurricularId][$criteriaId] = number_format($utility, 2, '.', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
session(['nilaiUtility' => $nilaiUtility]);
|
||||
|
||||
// Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view
|
||||
$criterias = Criteria::all();
|
||||
$extracuricullars = Extracuricullar::all();
|
||||
|
||||
// Tampilkan hasil perhitungan nilai utility ke dalam view
|
||||
return view('perhitungan.nilai-utility', compact('criterias', 'extracuricullars', 'nilaiUtility'));
|
||||
}
|
||||
|
||||
public function nilaiAkhir(Request $request)
|
||||
{
|
||||
// Ambil data nilai utility dari session
|
||||
$nilaiUtility = session('nilaiUtility', []);
|
||||
|
||||
// Inisialisasi variabel untuk menyimpan nilai akhir
|
||||
$nilaiAkhir = [];
|
||||
$totalNilaiAkhir = [];
|
||||
|
||||
foreach ($nilaiUtility as $extracurricularId => $criteriaData) {
|
||||
foreach ($criteriaData as $criteriaId => $utility) {
|
||||
// Temukan bobot kriteria
|
||||
|
||||
$criteria = Criteria::find($criteriaId);
|
||||
if ($criteria) {
|
||||
// Lakukan perhitungan nilai akhir
|
||||
$bobotKriteria = $criteria->bobot;
|
||||
$nilaiAkhir[$extracurricularId][$criteriaId] = $utility * $bobotKriteria;
|
||||
// $nilaiAkhir[$extracurricularId][$criteriaId] = number_format($utility * $bobotKriteria, 2, '.', '');
|
||||
} else {
|
||||
// Handle jika kriteria tidak ditemukan
|
||||
$nilaiAkhir[$extracurricularId][$criteriaId] = '0';
|
||||
}
|
||||
}
|
||||
|
||||
$totalNilai = array_sum($nilaiAkhir[$extracurricularId]);
|
||||
$totalNilai = min($totalNilai, 100);
|
||||
$totalNilaiAkhir[$extracurricularId]= $totalNilai;
|
||||
// $totalNilaiAkhir[$extracurricularId] = number_format($totalNilai, 2, '.', '');
|
||||
}
|
||||
|
||||
// Membuat koleksi dari nilai akhir yang bersifat multidimenasi menjadi satu dimensi
|
||||
// Membuat koleksi dari nilai akhir yang bersifat multidimensi menjadi satu dimensi
|
||||
$totalAkhir = collect($nilaiAkhir)->flatten()->sum();
|
||||
|
||||
// Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view
|
||||
$criterias = Criteria::all();
|
||||
$extracuricullars = Extracuricullar::all();
|
||||
|
||||
|
@ -206,60 +180,49 @@ public function nilaiAkhir(Request $request)
|
|||
|
||||
public function perangkingan(Request $request)
|
||||
{
|
||||
// Ambil data nilai utility dari session
|
||||
$nilaiUtility = session('nilaiUtility', []);
|
||||
|
||||
$criterias = Criteria::all();
|
||||
$extracuricullars = Extracuricullar::all();
|
||||
|
||||
// Inisialisasi variabel untuk menyimpan nilai akhir
|
||||
$nilaiAkhir = [];
|
||||
$totalNilaiAkhir = [];
|
||||
$totalNilaiAkhirPersen = [];
|
||||
$peringkat = [];
|
||||
|
||||
foreach ($nilaiUtility as $extracurricularId => $criteriaData) {
|
||||
$totalNilai = 0; // Inisialisasi nilai total untuk setiap ekstrakurikuler
|
||||
$totalNilai = 0;
|
||||
|
||||
foreach ($criteriaData as $criteriaId => $utility) {
|
||||
// Temukan bobot kriteria
|
||||
$criteria = Criteria::find($criteriaId);
|
||||
|
||||
if ($criteria) {
|
||||
// Lakukan perhitungan nilai akhir
|
||||
$bobotKriteria = $criteria->bobot;
|
||||
// $nilaiAkhir[$extracurricularId][$criteriaId] = number_format($utility * $bobotKriteria, 2, '.', '');
|
||||
$nilaiAkhir[$extracurricularId][$criteriaId] =$utility * $bobotKriteria;
|
||||
$nilaiAkhir[$extracurricularId][$criteriaId] = $utility * $bobotKriteria;
|
||||
|
||||
// Tambahkan nilai akhir ke total nilai untuk ekstrakurikuler saat ini
|
||||
$totalNilai += $utility * $bobotKriteria;
|
||||
} else {
|
||||
// Handle jika kriteria tidak ditemukan
|
||||
$nilaiAkhir[$extracurricularId][$criteriaId] = '0';
|
||||
}
|
||||
}
|
||||
|
||||
// Simpan total nilai akhir untuk setiap ekstrakurikuler
|
||||
// $totalNilaiAkhir[$extracurricularId] = number_format($totalNilai, 2, '.', '');
|
||||
$totalNilaiAkhir[$extracurricularId]= $totalNilai;
|
||||
|
||||
// Hitung persentase total nilai akhir
|
||||
$totalPersen = ($totalNilai ) * 100;
|
||||
$totalNilaiAkhirPersen[$extracurricularId] = number_format($totalPersen, 0, '.', '');
|
||||
|
||||
// Simpan peringkat
|
||||
$peringkat[$extracurricularId] = $totalPersen;
|
||||
}
|
||||
|
||||
// Urutkan peringkat
|
||||
arsort($peringkat);
|
||||
|
||||
// Tampilkan hasil perhitungan nilai akhir ke dalam view
|
||||
return view('perhitungan.perangkingan', compact('criterias', 'extracuricullars', 'nilaiAkhir', 'totalNilaiAkhir', 'totalNilaiAkhirPersen', 'peringkat'));
|
||||
}
|
||||
|
||||
public function getRiwayatHasil(Request $request)
|
||||
{
|
||||
// Ambil data riwayat hasil dengan pagination
|
||||
$logsQuery = LogActivity::query();
|
||||
|
||||
if (auth()->check() && auth()->user()->role !== 'admin') {
|
||||
|
@ -277,10 +240,8 @@ public function getRiwayatHasil(Request $request)
|
|||
});
|
||||
}
|
||||
|
||||
// Lakukan pagination dengan 10 item per halaman
|
||||
$logs = $logsQuery->paginate(10);
|
||||
|
||||
// Ambil data dari formulir atau perhitungan Anda
|
||||
$nilaiUtility = session('nilaiUtility', []);
|
||||
|
||||
// Lakukan perhitungan perangkingan jika ada data
|
||||
|
@ -308,15 +269,11 @@ public function getRiwayatHasil(Request $request)
|
|||
|
||||
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
|
||||
|
@ -339,15 +296,12 @@ public function getRiwayatHasil(Request $request)
|
|||
}
|
||||
}
|
||||
|
||||
// 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'));
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
|
@ -261,9 +261,7 @@ class="badge btn-danger" data-toggle="modal"
|
|||
@endforeach
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Event listener for the button click
|
||||
$('#calculate-bobot').click(function() {
|
||||
// Send AJAX request to trigger calculation
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ route('kriteria.calculate') }}',
|
||||
|
@ -271,7 +269,6 @@ class="badge btn-danger" data-toggle="modal"
|
|||
_token: '{{ csrf_token() }}'
|
||||
},
|
||||
success: function(response) {
|
||||
// Reload the page to show updated values
|
||||
location.reload();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
|
|
|
@ -331,9 +331,7 @@ class="badge btn-danger" data-toggle="modal"
|
|||
@endforeach
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Event listener for the button click
|
||||
$('#calculate-bobot').click(function() {
|
||||
// Send AJAX request to trigger calculation
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ route('subkriteria.calculate') }}',
|
||||
|
@ -341,7 +339,6 @@ class="badge btn-danger" data-toggle="modal"
|
|||
_token: '{{ csrf_token() }}'
|
||||
},
|
||||
success: function(response) {
|
||||
// Reload the page to show updated values
|
||||
location.reload();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
|
||||
use App\Models\Extracuricullar;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\AuthController;
|
||||
|
@ -11,8 +10,6 @@
|
|||
use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\SubCriteriaController;
|
||||
use App\Http\Controllers\ExtracurricularController;
|
||||
use App\Http\Controllers\PenilaianController;
|
||||
use App\Http\Controllers\TransformasiNilaiController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue