TIF_E41202317/app/Http/Controllers/MainController.php

123 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Siswa;
use App\Models\Kategori;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class MainController extends Controller
{
public function index()
{
// Ambil data siswa dan kategori dari database
$siswa = Siswa::all();
$kategori = Kategori::all();
$pengetahuan = Kategori::where('kode', '01')->first();
$keterampilan = Kategori::where('kode', '02')->first();
$sikap = Kategori::where('kode', '03')->first();
$kehadiran = Kategori::where('kode', '04')->first();
// Fuzzy
$x_pengetahuan = $pengetahuan->x;
$y_pengetahuan = $pengetahuan->y;
$z_pengetahuan = $pengetahuan->z;
$x_keterampilan = $keterampilan->x;
$y_keterampilan = $keterampilan->y;
$z_keterampilan = $keterampilan->z;
$x_sikap = $sikap->x;
$y_sikap = $sikap->y;
$z_sikap = $sikap->z;
$x_kehadiran = $kehadiran->x;
$y_kehadiran = $kehadiran->y;
$z_kehadiran = $kehadiran->z;
foreach ($siswa as $s) {
// Hitung Indeks Kecocokan Fuzzy
$fuzzy_pengetahuan = $this->getBobotFuzzy($s->pengetahuan);
$fuzzy_keterampilan = $this->getBobotFuzzy($s->keterampilan);
$fuzzy_sikap = $this->getBobotFuzzy($s->sikap);
$fuzzy_kehadiran = $this->getBobotFuzzy($s->kehadiran);
$s->x = (($fuzzy_pengetahuan['x'] * $x_pengetahuan) +
($fuzzy_keterampilan['x'] * $x_keterampilan) +
($fuzzy_sikap['x'] * $x_sikap) +
($fuzzy_kehadiran['x'] * $x_kehadiran))/4;
$s->y = (($fuzzy_pengetahuan['y'] * $y_pengetahuan) +
($fuzzy_keterampilan['y'] * $y_keterampilan) +
($fuzzy_sikap['y'] * $y_sikap) +
($fuzzy_kehadiran['y'] * $y_kehadiran))/4;
$s->z = (($fuzzy_pengetahuan['z'] * $z_pengetahuan) +
($fuzzy_keterampilan['z'] * $z_keterampilan) +
($fuzzy_sikap['z'] * $z_sikap) +
($fuzzy_kehadiran['z'] * $z_kehadiran))/4;
// Alpha = 0
$s->fmcdm_a = 1/2 * ((0 * $s->z) + $s->y + (1 - 0) * $s->x);
// Alpha = 0.5
$s->fmcdm_b = 1/2 * ((0.5 * $s->z) + $s->y + (1 - 0.5) * $s->x);
// Alpha = 1
$s->fmcdm_c = 1/2 * ((1 * $s->z) + $s->y + (1 - 1) * $s->x);
}
$siswa = $siswa->sortByDesc('fmcdm_c')->values();
// Tambahkan ranking
$siswa->each(function ($s, $index) {
$s->ranking = $index + 1;
});
// Assign hasil siswa ke variabel $hasilSiswa untuk dikirim ke view
$hasilSiswa = $siswa;
return view('main', compact('hasilSiswa', 'kategori'));
}
function getBobotFuzzy($nilai) {
if ($nilai < 60) {
return [
'x' => 0,
'y' => 0,
'z' => 0.25,
];
} else if ($nilai >= 61 && $nilai <= 74) {
return [
'x' => 0,
'y' => 0.25,
'z' => 0.5,
];
} else if ($nilai >= 75 && $nilai <= 80) {
return [
'x' => 0.25,
'y' => 0.5,
'z' => 0.75,
];
} else if ($nilai >= 81 && $nilai <= 90) {
return [
'x' => 0.5,
'y' => 0.75,
'z' => 1,
];
} else if ($nilai >= 91 && $nilai <= 100) {
return [
'x' => 0.75,
'y' => 1,
'z' => 1,
];
} else {
return [
'x' => 0,
'y' => 0,
'z' => 0.25,
];
}
}
}