Update Perhitungan Controller and Dashboard

This commit is contained in:
Zakiaass 2024-03-13 14:08:50 +07:00
parent 26eabd15c0
commit d23fc9e634
11 changed files with 337 additions and 72 deletions

View File

@ -12,32 +12,32 @@ class CriteriaController extends Controller
* Display a listing of the resource.
*/
public function calculateBobotKriteria()
{
$criterias = Criteria::all();
// public function calculateBobotKriteria()
// {
// $criterias = Criteria::all();
$totalKriteria = count($criterias);
// $totalKriteria = count($criterias);
$bobotKriteria = [];
// $bobotKriteria = [];
foreach ($criterias as $key => $criteria) {
$sum = 0;
// Iterasi untuk setiap nilai prioritas pada kriteria
for ($i = $key; $i < $totalKriteria; $i++) {
// Hitung nilai SMARTER
$sum += 1 / ($i + 1);
}
// Hitung bobot kriteria menggunakan rumus SMARTER ROC
$bobot = $sum / $totalKriteria;
// foreach ($criterias as $key => $criteria) {
// $sum = 0;
// // Iterasi untuk setiap nilai prioritas pada kriteria
// for ($i = $key; $i < $totalKriteria; $i++) {
// // Hitung nilai SMARTER
// $sum += 1 / ($i + 1);
// }
// // Hitung bobot kriteria menggunakan rumus SMARTER ROC
// $bobot = $sum / $totalKriteria;
$bobotKriteria[$criteria->nama] = $bobot;
// $bobotKriteria[$criteria->nama] = $bobot;
$criteria->update(['bobot' => $bobot]);
$criteria->save();
}
// $criteria->update(['bobot' => $bobot]);
// $criteria->save();
// }
return redirect()->route('kriteria.index')->with('success', 'Bobot kriteria berhasil dihitung dan disimpan.');
}
// return redirect()->route('kriteria.index')->with('success', 'Bobot kriteria berhasil dihitung dan disimpan.');
// }
public function index()
{

View File

@ -17,7 +17,11 @@ public function index()
$jumlahEkstra = Extracuricullar::count();
$jumlahKriteria = Criteria::count();
$jumlahSubKriteria = SubCriteria::count();
return view('dashboard.index', compact('jumlahEkstra','jumlahKriteria','jumlahSubKriteria'));
$criterias = Criteria::all();
$extracuricullars = Extracuricullar ::all();
$subcriterias = Subcriteria::all();
return view('dashboard.index', compact('jumlahEkstra','jumlahKriteria','jumlahSubKriteria', 'criterias', 'subcriterias', 'extracuricullars'));
}
/**

View File

@ -15,11 +15,11 @@ class PenilaianController extends Controller
*/
public function index()
{
$criterias = Criteria::all();
$extracuricullars = Extracuricullar ::all();
$subcriterias = Subcriteria::all();
// $criterias = Criteria::all();
// $extracuricullars = Extracuricullar ::all();
// $subcriterias = Subcriteria::all();
return view('penilaian.input-nilai', compact('criterias','extracuricullars','subcriterias'));
// return view('penilaian.input-nilai', compact('criterias','extracuricullars','subcriterias'));
}
/**

View File

@ -0,0 +1,148 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Criteria;
use App\Models\SubCriteria;
use App\Models\Extracuricullar;
use App\Models\ExtracuricullarSubKriteria;
use RealRashid\SweetAlert\Facades\Alert;
use Illuminate\Support\Facades\Validator;
class PerhitunganController extends Controller
{
/**
* Display a listing of the resource.
*/
public function calculateBobotKriteria()
{
$criterias = Criteria::all();
$totalKriteria = count($criterias);
$bobotKriteria = [];
foreach ($criterias as $key => $criteria) {
$sum = 0;
// Iterasi untuk setiap nilai prioritas pada kriteria
for ($i = $key; $i < $totalKriteria; $i++) {
// Hitung nilai SMARTER
$sum += 1 / ($i + 1);
}
// Hitung bobot kriteria menggunakan rumus SMARTER ROC
$bobot = $sum / $totalKriteria;
$bobotKriteria[$criteria->nama] = $bobot;
$criteria->update(['bobot' => $bobot]);
$criteria->save();
}
return redirect()->route('kriteria.index')->with('success', 'Bobot kriteria berhasil dihitung dan disimpan.');
}
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 = $subcriterias->count();
$bobotSubKriteria = [];
// Hitung bobot untuk setiap sub-kriteria
foreach ($subcriterias as $key => $subcriteria) {
$sum = 0;
// Iterasi untuk setiap nilai prioritas pada kriteria
for ($i = $key; $i < $totalSubKriteria; $i++) {
// Hitung nilai SMARTER
$sum += 1 / ($i + 1);
}
// Hitung bobot kriteria menggunakan rumus SMARTER ROC
$bobot = $sum / $totalSubKriteria;
$bobotSubKriteria[$subcriteria->nama] = $bobot;
$subcriteria->update(['bobot' => $bobot]);
$subcriteria->save();
}
}
return redirect()->route('subkriteria.index')->with('success', 'Bobot sub kriteria berhasil dihitung dan disimpan.');
}
public function penilaian()
{
$criterias = Criteria::all();
$extracuricullars = Extracuricullar ::all();
$subcriterias = Subcriteria::all();
return view('penilaian.input-nilai', compact('criterias','extracuricullars','subcriterias'));
}
public function transformasiNilai(Request $request)
{
$criterias = Criteria::all();
$subcriterias = SubCriteria::all();
$extracuricullars = Extracuricullar::all();
return view('perhitungan.transformasi-nilai');
}
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}

View File

@ -1,13 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SiswaController extends Controller
{
public function dashboard()
{
return view('siswa.dashboard');
}
}

View File

@ -13,38 +13,38 @@ class SubCriteriaController extends Controller
* Display a listing of the resource.
*/
public function calculateBobotSubKriteria()
{
$criterias = Criteria::all();
// 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();
// foreach ($criterias as $criteria) {
// // Ambil semua sub-kriteria untuk kriteria ini
// $subcriterias = SubCriteria::where('criteria_id', $criteria->id)->get();
$totalSubKriteria = $subcriterias->count();
// $totalSubKriteria = $subcriterias->count();
$bobotSubKriteria = [];
// $bobotSubKriteria = [];
// Hitung bobot untuk setiap sub-kriteria
foreach ($subcriterias as $key => $subcriteria) {
$sum = 0;
// Iterasi untuk setiap nilai prioritas pada kriteria
for ($i = $key; $i < $totalSubKriteria; $i++) {
// Hitung nilai SMARTER
$sum += 1 / ($i + 1);
}
// Hitung bobot kriteria menggunakan rumus SMARTER ROC
$bobot = $sum / $totalSubKriteria;
// // Hitung bobot untuk setiap sub-kriteria
// foreach ($subcriterias as $key => $subcriteria) {
// $sum = 0;
// // Iterasi untuk setiap nilai prioritas pada kriteria
// for ($i = $key; $i < $totalSubKriteria; $i++) {
// // Hitung nilai SMARTER
// $sum += 1 / ($i + 1);
// }
// // Hitung bobot kriteria menggunakan rumus SMARTER ROC
// $bobot = $sum / $totalSubKriteria;
$bobotSubKriteria[$subcriteria->nama] = $bobot;
// $bobotSubKriteria[$subcriteria->nama] = $bobot;
$subcriteria->update(['bobot' => $bobot]);
$subcriteria->save();
}
}
// $subcriteria->update(['bobot' => $bobot]);
// $subcriteria->save();
// }
// }
return redirect()->route('subkriteria.index')->with('success', 'Bobot sub kriteria berhasil dihitung dan disimpan.');
}
// return redirect()->route('subkriteria.index')->with('success', 'Bobot sub kriteria berhasil dihitung dan disimpan.');
// }
public function index()

View File

@ -74,6 +74,89 @@
</div>
</div>
</div>
<div class="pb-10">
<div class="card-box height-100-p overflow-hidden">
<div class="profile-tab height-100-p">
<div class="tab height-100-p">
<ul class="nav nav-tabs customtab" role="tablist">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#ekstrakurikuler"
role="tab">Data Ekstrakurikuler</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#subkriteria"
role="tab">Data Sub Kriteria</a>
</li>
</ul>
<div class="tab-content">
<!-- Data Ekstrakurikuler -->
<div class="tab-pane fade show active" id="ekstrakurikuler" role="tabpanel">
<div class="profile-setting">
<div class="table-responsive">
<table class="data-table table stripe hover nowrap">
<thead>
<tr>
<th>No</th>
<th>Nama Ekstrakurikuler</th>
<th>Kategori</th>
</tr>
</thead>
<tbody>
@forelse ($extracuricullars as $extracuricullar)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $extracuricullar->nama }}</td>
<td>{{ $extracuricullar->kategori }}</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center">Tidak ada data.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
<!-- Data Sub Kriteria -->
<div class="tab-pane fade" id="subkriteria" role="tabpanel">
<div class="profile-setting">
<div class="table-responsive">
<table class="data-table table stripe hover nowrap">
<thead>
<tr>
<th>No</th>
<th>Kriteria</th>
<th>Sub Kriteria</th>
<th>Deskripsi</th>
<th>Prioritas</th>
</tr>
</thead>
<tbody>
@forelse ($subcriterias as $subcriteria)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $subcriteria->criteria->nama }}</td>
<td>{{ $subcriteria->nama }}</td>
<td>{{ $subcriteria->deskripsi }}</td>
<td>{{ $subcriteria->prioritas }}</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center">Tidak ada data.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{-- <div class="row">
<div class="col-xl-8 mb-30">
<div class="card-box height-100-p pd-20">

View File

@ -37,7 +37,7 @@
<span class="micon bi bi-table"></span><span class="mtext">Penilaian</span>
</a>
<ul class="submenu">
<li><a href="{{ route('input-nilai.index') }}">Input Penilaian</a></li>
<li><a href="{{ route('penilaian.input-nilai') }}">Input Penilaian</a></li>
</ul>
</li>
<li class="dropdown">

View File

@ -57,7 +57,7 @@
<select class="form-control" name="subcriteria[{{ $extracuricullar->id }}][{{ $criteria->id }}]">
<option value="" selected disabled>Pilih Sub Kriteria</option>
@foreach ($criteria->subCriteria as $subCriteria)
<option value="{{ $subCriteria->id }}">{{ $subCriteria->nama }}</option>
<option value="{{ $subCriteria->id }}">{{ $subCriteria->prioritas }} ({{ $subCriteria->nama }})</option>
@endforeach
</select>
</td>
@ -71,7 +71,7 @@
</table>
<div class="col-sm-12">
<div class="input-group mb-3 mx-auto">
<button class="btn btn-primary btn-lg btn-block" type="submit">Transformasi Nilai</button>
<button id="transformButton" class="btn btn-primary btn-lg btn-block">Transformasi Nilai</button>
</div>
</div>
</div>
@ -83,4 +83,43 @@
</div>
</div>
</div>
{{-- <script>
$(document).ready(function(){
$('select[name^="subcriteria"]').on('change', function(){
var selectedSubCriterias = {};
$('select[name^="subcriteria"]').each(function(){
var extracurricularId = $(this).data('extracurricular-id');
var criteriaId = $(this).data('criteria-id');
var subcriteriaId = $(this).val();
if (subcriteriaId) {
if (!selectedSubCriterias.hasOwnProperty(extracurricularId)) {
selectedSubCriterias[extracurricularId] = {};
}
selectedSubCriterias[extracurricularId][criteriaId] = subcriteriaId;
}
});
$('button#transformButton').data('selected-sub-criterias', JSON.stringify(selectedSubCriterias));
});
});
</script>
<script>
$('#transformButton').on('click', function(){
var selectedSubCriterias = $(this).data('selected-sub-criterias');
$.ajax({
type: 'POST',
url: '{{ route('perhitungan.transformasiNilai') }}',
data: {
_token: '{{ csrf_token() }}',
subcriteria: selectedSubCriterias
},
success: function(response){
// Tampilkan data bobot sub kriteria yang telah dihitung
$('#bobotSubKriteria').html(response);
},
error: function(xhr, status, error){
console.error(xhr.responseText);
}
});
});
</script> --}}
@endsection

View File

@ -307,7 +307,7 @@ class="badge btn-danger" data-toggle="modal"
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<p>Apakah Anda yakin ingin menghapus data sub kriteria {{ $subcriteria->nama }} ini?</p>
<p>Apakah Anda yakin ingin menghapus data sub kriteria {{ $subcriteria->nama }} dari kriteria {{ $criteria->nama }} ini?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>

View File

@ -5,12 +5,11 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\SiswaController;
use App\Http\Controllers\PerhitunganController;
use App\Http\Controllers\CriteriaController;
use App\Http\Controllers\DataUserController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\SubCriteriaController;
use App\Http\Controllers\WakilKepalaController;
use App\Http\Controllers\ExtracurricularController;
use App\Http\Controllers\PenilaianController;
use App\Http\Controllers\TransformasiNilaiController;
@ -106,14 +105,19 @@
Route::resource('ekstrakurikuler', ExtracurricularController::class);
Route::resource('kriteria', CriteriaController::class);
Route::post('/kriteria/calculate', [CriteriaController::class, 'calculateBobotKriteria'])->name('kriteria.calculate');
// Route::post('/kriteria/calculate', [CriteriaController::class, 'calculateBobotKriteria'])->name('kriteria.calculate');
Route::resource('subkriteria', SubCriteriaController::class);
Route::post('/subkriteria/calculate', [SubCriteriaController::class, 'calculateBobotSubKriteria'])->name('subkriteria.calculate');
// Route::post('/subkriteria/calculate', [SubCriteriaController::class, 'calculateBobotSubKriteria'])->name('subkriteria.calculate');
Route::resource('user', DataUserController::class);
Route::resource('input-nilai', PenilaianController::class);
Route::post('/kriteria/calculate', [PerhitunganController::class, 'calculateBobotKriteria'])->name('kriteria.calculate');
Route::post('/subkriteria/calculate', [PerhitunganController::class, 'calculateBobotSubKriteria'])->name('subkriteria.calculate');
Route::get('input-nilai', [PerhitunganController::class, 'penilaian'])->name(('penilaian.input-nilai'));
Route::post('/perhitungan/transformasiNilai', [PerhitunganController::class, 'transformasiNilai'])->name(('perhitungan.transformasiNilai'));
// Route::resource('input-nilai', PenilaianController::class);
Route::resource('transformasi-nilai', TransformasiNilaiController::class);