Nilai Utility

This commit is contained in:
Zakiaass 2024-03-16 15:51:30 +07:00
parent a88ab7847b
commit 417f376921
7 changed files with 127 additions and 112 deletions

View File

@ -87,17 +87,6 @@ public function penilaian()
public function transformasiNilai(Request $request)
{
$validator = Validator::make($request->all(), [
'subcriteria.*.*' => 'required',
], [
'subcriteria.*.*.required' => 'Semua dropdown pada kriteria harus diisi.',
'subcriteria.*.*.exists' => 'Pilihan dropdown tidak valid.',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
// Ambil data nilai dari subkriteria yang dipilih dari form
$subcriteriaData = $request->input('subcriteria');
@ -117,6 +106,10 @@ public function transformasiNilai(Request $request)
$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();
@ -124,34 +117,40 @@ public function transformasiNilai(Request $request)
return view('perhitungan.transformasi-nilai', compact('criterias', 'extracuricullars', 'transformedValues'));
}
// public function transformasiNilai(Request $request)
// {
// // Ambil data nilai dari subkriteria yang dipilih dari form
// $subcriteriaData = $request->input('subcriteria');
public function nilaiUtility(Request $request)
{
// Ambil data transformasi nilai dari session
$transformedValues = session('transformedValues', []);
// // Inisialisasi variabel untuk menyimpan nilai hasil transformasi
// $transformedValues = [];
// Inisialisasi variabel untuk menyimpan nilai utility
$nilaiUtility = [];
// // 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);
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');
// // Ambil bobot dari subkriteria yang dipilih
// $bobot = $subcriteria->bobot;
// Periksa apakah penyebut bernilai nol
$denominator = $maxBobot - $minBobot;
if ($denominator == 0) {
// Tangani jika penyebut bernilai nol
$nilaiUtility[$extracurricularId][$criteriaId] = 0; // Atau nilai lainnya sesuai kebutuhan
} else {
// Lakukan perhitungan nilai utility
$utility = (($bobot - $minBobot) / $denominator);
$nilaiUtility[$extracurricularId][$criteriaId] = $utility;
}
}
}
// // Simpan hasil transformasi nilai ke dalam array
// $transformedValues[$extracurricularId][$criteriaId] = $bobot;
// }
// }
// Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view
$criterias = Criteria::all();
$extracuricullars = Extracuricullar::all();
// // Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view
// $criterias = Criteria::all();
// $extracuricullars = Extracuricullar::all();
// return view('perhitungan.transformasi-nilai', compact('criterias', 'extracuricullars', 'transformedValues'));
// }
// Tampilkan hasil perhitungan nilai utility ke dalam view
return view('perhitungan.nilai-utility', compact('criterias', 'extracuricullars', 'nilaiUtility'));
}
public function index()
{

View File

@ -1,72 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Criteria;
use App\Models\Extracuricullar;
use App\Models\ExtracuricullarSubKriteria;
use App\Models\SubCriteria;
class TransformasiNilaiController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$criterias = Criteria::all();
$extracuricullars = Extracuricullar ::all();
$subcriterias = Subcriteria::all();
return view('perhitungan.transformasi-nilai', compact('criterias','extracuricullars','subcriterias'));
}
/**
* 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

@ -36,13 +36,13 @@
@endif
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle">
<span class="micon bi bi-table"></span><span class="mtext">Penilaian</span>
<span class="micon bi bi-table"></span><span class="mtext">Perhitungan</span>
</a>
<ul class="submenu">
<li><a href="{{ route('penilaian.input-nilai') }}">Input Penilaian</a></li>
</ul>
</li>
<li class="dropdown">
{{-- <li class="dropdown">
<a class="dropdown-toggle">
<span class="micon bi bi-table"></span><span class="mtext">Perhitungan</span>
</a>
@ -52,7 +52,7 @@
<li><a href="">Nilai Akhir</a></li>
<li><a href="">Hasil Perangkingan</a></li>
</ul>
</li>
</li> --}}
</ul>
</div>
</div>

View File

@ -1,7 +1,7 @@
@extends('layout.main')
@section('body')
@php
$menu = 'Data Penilaian';
$menu = 'Data Perhitungan';
$pageTitle = 'Data Input Penilaian';
@endphp

View File

@ -0,0 +1,87 @@
@extends('layout.main')
@section('body')
@php
$menu = 'Data Perhitungan';
$pageTitle = 'Perhitungan Nilai Utility';
@endphp
@include('layout.navbar')
@include('layout.sidebar')
{{-- Main Content --}}
<div class="main-container">
<div class="pd-ltr-20 xs-pd-20-10">
<div class="min-height-200px">
<div class="page-header">
<div class="row">
<div class="col-md-6 col-sm-12">
<div class="title">
<h4>{{ $menu }}</h4>
</div>
<nav aria-label="breadcrumb" role="navigation">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ route('penilaian.input-nilai') }}">Input Penilaian</a></li>
@if (isset($pageTitle))
<li class="breadcrumb-item active" aria-current="page">{{ $pageTitle }}</li>
@else
<li class="breadcrumb-item active" aria-current="page"></li>
@endif
</ol>
</nav>
</div>
</div>
</div>
<div class="card-box mb-30">
<div class="pd-20">
<h4 class="text-blue h4 mb-0">Perhitungan Nilai Utility</h4>
</div>
<form method="POST" action="">
@csrf
<div class="pb-10">
<div class="table-responsive">
<table class="data-table table stripe hover nowrap">
<thead>
<tr>
<th>No</th>
<th>Ekstrakurikuler</th>
@foreach ($criterias as $criteria)
<th>{{ $criteria->nama }}</th>
@endforeach
</tr>
</thead>
<tbody>
@forelse ($extracuricullars as $extracuricullar)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $extracuricullar->nama }}</td>
@foreach ($criterias as $criteria)
<td>
@php
$utility = $nilaiUtility[$extracuricullar->id][$criteria->id] ?? null;
@endphp
{{ $utility }}
</td>
@endforeach
@empty
<tr>
<td colspan="5" class="text-center">Tidak ada data.</td>
</tr>
@endforelse
</tbody>
</table>
<div class="col-sm-12">
<div class="input-group mb-3 mx-auto">
<button type="submit" class="btn btn-primary btn-lg btn-block">Hitung Nilai Akhir</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="footer-wrap pd-20 mb-20 card-box">
<strong>Sistem Pendukung Keputusan Pemilihan Ekstrakurikuler Metode SMARTER</strong>
</div>
</div>
</div>
@endsection

View File

@ -35,7 +35,7 @@
<div class="pd-20">
<h4 class="text-blue h4 mb-0">Hasil Transformasi Nilai</h4>
</div>
<form method="POST" action="">
<form method="POST" action="{{ route('nilaiUtility') }}">
@csrf
<div class="pb-10">
<div class="table-responsive">

View File

@ -104,6 +104,7 @@
Route::post('/subkriteria/calculate', [PerhitunganController::class, 'calculateBobotSubKriteria'])->name('subkriteria.calculate');
Route::get('input-nilai', [PerhitunganController::class, 'penilaian'])->name(('penilaian.input-nilai'));
Route::post('transformasi-nilai', [PerhitunganController::class, 'transformasiNilai'])->name('transformasiNilai');
Route::post('nilai-utility', [PerhitunganController::class, 'nilaiUtility'])->name('nilaiUtility');
// Route::resource('input-nilai', PenilaianController::class);