add kriteria

This commit is contained in:
yulianadewi18 2024-02-03 11:07:06 +08:00
parent 79287e1813
commit 08662080df
4 changed files with 216 additions and 191 deletions

View File

@ -9,8 +9,9 @@ use App\Models\Penilaian;
class PerhitunganController extends Controller class PerhitunganController extends Controller
{ {
function index() { function index()
$alternatif = Alternatif::with('penilaian.kriteria')->orderBy('kode_alternatif','ASC')->get(); {
$alternatif = Alternatif::with('penilaian.kriteria')->orderBy('kode_alternatif', 'ASC')->get();
$kriteria = Kriteria::get(); $kriteria = Kriteria::get();
$penilaian = Penilaian::with('subKriteria')->get(); $penilaian = Penilaian::with('subKriteria')->get();
// return response()->json($alternatif); // return response()->json($alternatif);
@ -21,7 +22,7 @@ class PerhitunganController extends Controller
if ($vkriteria->id == $vpenilaian->id_kriteria) { if ($vkriteria->id == $vpenilaian->id_kriteria) {
if ($vkriteria->sifat == "benefit") { if ($vkriteria->sifat == "benefit") {
$minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot']; $minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot'];
}elseif ($vkriteria->sifat == "cost") { } elseif ($vkriteria->sifat == "cost") {
$minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot']; $minMax[$vkriteria->id][] = $vpenilaian->subKriteria['bobot'];
} }
} }
@ -34,7 +35,7 @@ class PerhitunganController extends Controller
if ($vkriteria->id == $vpenilaian->id_kriteria) { if ($vkriteria->id == $vpenilaian->id_kriteria) {
if ($vkriteria->sifat == "benefit") { //nilai sub_kriteria : nilai maksimal if ($vkriteria->sifat == "benefit") { //nilai sub_kriteria : nilai maksimal
$normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = $vpenilaian->subKriteria['bobot'] / max($minMax[$vkriteria->id]); $normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = $vpenilaian->subKriteria['bobot'] / max($minMax[$vkriteria->id]);
}elseif ($vkriteria->sifat == "cost") { //nilai minimal : nilai sub_kriteria } elseif ($vkriteria->sifat == "cost") { //nilai minimal : nilai sub_kriteria
$normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = min($minMax[$vkriteria->id]) / $vpenilaian->subKriteria['bobot']; $normalisasi[$vpenilaian->alternatif->guru['nama_guru']][$vkriteria->id] = min($minMax[$vkriteria->id]) / $vpenilaian->subKriteria['bobot'];
} }
} }
@ -43,16 +44,26 @@ class PerhitunganController extends Controller
// perangkingan // perangkingan
foreach ($normalisasi as $key => $vnormalisasi) { foreach ($normalisasi as $key => $vnormalisasi) {
foreach ($kriteria as $key_1 => $vkriteria) { //hasil normalisasi x bobot_kriteria foreach ($kriteria as $key_1 => $vkriteria) { // hasil normalisasi x bobot_kriteria
// Check if the key exists in the $vnormalisasi array
if (isset($vnormalisasi[$vkriteria->id])) {
$rank[$key][] = $vnormalisasi[$vkriteria->id] * $vkriteria->bobot_kriteria; $rank[$key][] = $vnormalisasi[$vkriteria->id] * $vkriteria->bobot_kriteria;
} else {
// Handle the case when the key is not found (you can skip it or handle it accordingly)
// For example, you might want to assign a default value or log a message.
$rank[$key][] = 0; // Assign a default value
// or
// log_message('error', 'Key not found: ' . $vkriteria->id);
} }
} }
foreach ($normalisasi as $key => $value){ //total hasil perangkingan }
foreach ($normalisasi as $key => $value) { //total hasil perangkingan
$rank[$key][] = array_sum($rank[$key]); $rank[$key][] = array_sum($rank[$key]);
} }
asort($rank); //sortir $rank // asort($rank); //sortir $rank
// dd($minMax); // dd($minMax);
return view('pages.proses_penilaian.index', compact(['kriteria','alternatif','penilaian','minMax','normalisasi','rank'])); return view('pages.proses_penilaian.index', compact(['kriteria', 'alternatif', 'penilaian', 'minMax', 'normalisasi', 'rank']));
} }
} }

View File

@ -42,7 +42,10 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="form-group"> <div class="form-group">
<label for="">Sifat Kriteria</label> <label for="">Sifat Kriteria</label>
<input type="text" class="form-control" name="sifat" @if(!empty($kriteria)) value="{{ $kriteria->sifat }}" @else value="{{ Session::get('sifat') }}" @endif> <select class="form-control dataGuru" name="sifat">
<option value="benefit" @if (!empty($kriteria)) {{ ($kriteria->sifat == 'benefit') ? 'selected' : '' }} @endif>Benefit</option>
<option value="cost" @if (!empty($kriteria)) {{ ($kriteria->sifat == 'cost') ? 'selected' : '' }} @endif>Cost</option>
</select>
</div> </div>
</div> </div>
<div class="col-lg-12"> <div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('title', 'Tambah Klasifikasi') @section('title', 'Tambah Klasifikasi')
@section('content') @section('content')
<div class="card border-top-primary shadow mb-4"> <div class="card border-top-primary shadow mb-4">
<form action="{{ url('penilaian-alternatif/store') }}" method="POST"> <form action="{{ url('penilaian-alternatif/store') }}" method="POST">
@csrf @csrf
<div class="card-body pt-3"> <div class="card-body pt-3">
@ -65,5 +65,5 @@
<button class="btn btn-sm btn-primary">Simpan</button> <button class="btn btn-sm btn-primary">Simpan</button>
</div> </div>
</form> </form>
</div> </div>
@endsection @endsection

View File

@ -6,7 +6,7 @@
@endpush @endpush
@section('content') @section('content')
<div class="card border-top-primary shadow mb-4"> <div class="card border-top-primary shadow mb-4">
<div class="card-body pt-3"> <div class="card-body pt-3">
<h4 class="text-gray-900">1. Data Masing Masing Guru Terhadap Kriteria</h4> <h4 class="text-gray-900">1. Data Masing Masing Guru Terhadap Kriteria</h4>
<div class="table-responsive"> <div class="table-responsive">
@ -42,6 +42,7 @@
</tbody> --}} </tbody> --}}
<tbody> <tbody>
@forelse ($alternatif as $alt => $valt) @forelse ($alternatif as $alt => $valt)
@if(count($valt->penilaian) > 0)
<tr> <tr>
<td class="text-center">{{ $valt->kode_alternatif }}</td> <td class="text-center">{{ $valt->kode_alternatif }}</td>
<td>{{ $valt->guru['nama_guru'] }}</td> <td>{{ $valt->guru['nama_guru'] }}</td>
@ -49,9 +50,10 @@
<td class="text-center">{{ $nilai->subKriteria['bobot'] }}</td> <td class="text-center">{{ $nilai->subKriteria['bobot'] }}</td>
@endforeach @endforeach
</tr> </tr>
@endif
@empty @empty
<tr> <tr>
<td class="text-center" colspan="{{ count($kriteria) +2 }}">Data Kosong</td> <td class="text-center" colspan="{{ count($kriteria) + 2 }}">Data Kosong</td>
</tr> </tr>
@endforelse @endforelse
</tbody> </tbody>
@ -59,16 +61,25 @@
<tr class="text-center"> <tr class="text-center">
<th colspan="2">Nilai Maks</th> <th colspan="2">Nilai Maks</th>
@foreach ($kriteria as $key => $vkriteria) @foreach ($kriteria as $key => $vkriteria)
@if (isset($minMax[$vkriteria->id]) && is_array($minMax[$vkriteria->id]))
<th class="bg-secondary text-white">{{ max($minMax[$vkriteria->id]) }}</th> <th class="bg-secondary text-white">{{ max($minMax[$vkriteria->id]) }}</th>
@else
<th class="bg-secondary text-white">0</th> {{-- Or any default value --}}
@endif
@endforeach @endforeach
</tr> </tr>
<tr class="text-center"> <tr class="text-center">
<th colspan="2">Nilai Min</th> <th colspan="2">Nilai Min</th>
@foreach ($kriteria as $key => $vkriteria) @foreach ($kriteria as $key => $vkriteria)
@if (isset($minMax[$vkriteria->id]) && is_array($minMax[$vkriteria->id]))
<th class="bg-secondary text-white">{{ min($minMax[$vkriteria->id]) }}</th> <th class="bg-secondary text-white">{{ min($minMax[$vkriteria->id]) }}</th>
@else
<th class="bg-secondary text-white">0</th> {{-- Or any default value --}}
@endif
@endforeach @endforeach
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
</div> </div>
@ -109,7 +120,7 @@
<th class="text-center">{{ $item->kode_kriteria }}</th> <th class="text-center">{{ $item->kode_kriteria }}</th>
@endforeach @endforeach
<th rowspan="2" style="vertical-align: middle">Total</th> <th rowspan="2" style="vertical-align: middle">Total</th>
<th rowspan="2" style="vertical-align: middle">Rank</th> <!-- <th rowspan="2" style="vertical-align: middle">Rank</th> -->
</tr> </tr>
<tr> <tr>
<th>Bobot</th> <th>Bobot</th>
@ -125,14 +136,14 @@
@foreach ($value as $key_1 => $value_1) @foreach ($value as $key_1 => $value_1)
<td class="text-center">{{ number_format($value_1 ,2) }}</td> <td class="text-center">{{ number_format($value_1 ,2) }}</td>
@endforeach @endforeach
<td>{{ $loop->iteration }}</td> <!-- <td>{{ $loop->iteration }}</td> -->
</tr> </tr>
@endforeach @endforeach
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection
@push('js') @push('js')