diff --git a/app/Http/Controllers/CriteriaController.php b/app/Http/Controllers/CriteriaController.php index 84d29db..397779f 100644 --- a/app/Http/Controllers/CriteriaController.php +++ b/app/Http/Controllers/CriteriaController.php @@ -11,6 +11,34 @@ class CriteriaController 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 index() { $criterias = Criteria::all(); @@ -30,9 +58,10 @@ public function create() */ public function store(Request $request) { - $validator = Validator::make($request->only('nama', 'prioritas'), [ - 'nama' => 'required', - 'prioritas' => 'required', + $validator = Validator::make($request->only('nama', 'prioritas', 'bobot'), [ + 'nama' => 'required|string', + 'prioritas' => 'required|integer', + 'bobot' => 'nullable|numeric', ]); if ($validator->fails()) { @@ -42,6 +71,7 @@ public function store(Request $request) Criteria::create([ 'nama' => $request->nama, 'prioritas' => $request->prioritas, + 'bobot' => $request->bobot, ]); return redirect()->route('kriteria.index')->with('success', 'Data Kriteria Berhasil Ditambah!'); @@ -75,8 +105,9 @@ public function update(Request $request, string $id) // return redirect('kriteria')->with('success', 'Data Kriteria Berhasil Diperbarui!'); $validatedData = $request->validate([ - 'nama' => 'required', - 'prioritas' => 'required', + 'nama' => 'required|string', + 'prioritas' => 'required|integer', + 'bobot' => 'nullable|numeric', ]); $kriteria = Criteria::findOrFail($id); @@ -95,4 +126,5 @@ public function destroy(string $id) return back()->with('info', 'Data Kriteria Berhasil Dihapus!'); } + } diff --git a/database/migrations/2023_12_26_053623_create_criterias_table.php b/database/migrations/2023_12_26_053623_create_criterias_table.php index 2479ebc..248f9d7 100644 --- a/database/migrations/2023_12_26_053623_create_criterias_table.php +++ b/database/migrations/2023_12_26_053623_create_criterias_table.php @@ -14,8 +14,8 @@ public function up(): void Schema::create('criterias', function (Blueprint $table) { $table->id(); $table->string('nama'); - $table->string('prioritas'); - $table->string('bobot')->nullable(); + $table->unsignedInteger('prioritas'); + $table->float('bobot')->nullable(); $table->timestamps(); }); } diff --git a/resources/views/kriteria/kriteria.blade.php b/resources/views/kriteria/kriteria.blade.php index 8f2eddf..e4858bd 100644 --- a/resources/views/kriteria/kriteria.blade.php +++ b/resources/views/kriteria/kriteria.blade.php @@ -39,8 +39,13 @@ - + {{-- --}} + +