Update Bobot Sub Kriteria
This commit is contained in:
parent
6769afb449
commit
26eabd15c0
|
@ -1,64 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class CalculationController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*/
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,6 +12,41 @@ class SubCriteriaController extends Controller
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
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 index()
|
public function index()
|
||||||
{
|
{
|
||||||
$subcriterias = Subcriteria::all();
|
$subcriterias = Subcriteria::all();
|
||||||
|
@ -32,10 +67,12 @@ public function create()
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$validator = Validator::make($request->only('criteria_id','nama', 'prioritas'), [
|
$validator = Validator::make($request->only('criteria_id','nama', 'deskripsi', 'prioritas','bobot'), [
|
||||||
'criteria_id' => 'required',
|
'criteria_id' => 'required',
|
||||||
'nama' => 'required',
|
'nama' => 'required',
|
||||||
|
'deskripsi' => 'required',
|
||||||
'prioritas' => 'required',
|
'prioritas' => 'required',
|
||||||
|
'bobot' => 'nullable|numeric',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($validator->fails()) {
|
if ($validator->fails()) {
|
||||||
|
@ -45,7 +82,9 @@ public function store(Request $request)
|
||||||
SubCriteria::create([
|
SubCriteria::create([
|
||||||
'criteria_id' =>$request->criteria_id,
|
'criteria_id' =>$request->criteria_id,
|
||||||
'nama' => $request->nama,
|
'nama' => $request->nama,
|
||||||
|
'deskripsi' => $request->deskripsi,
|
||||||
'prioritas' => $request->prioritas,
|
'prioritas' => $request->prioritas,
|
||||||
|
'bobot' => $request->bobot,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->route('subkriteria.index')->with('success', 'Data Sub Kriteria Berhasil Ditambah!');
|
return redirect()->route('subkriteria.index')->with('success', 'Data Sub Kriteria Berhasil Ditambah!');
|
||||||
|
@ -76,7 +115,9 @@ public function update(Request $request, string $id)
|
||||||
$validatedData = $request->validate([
|
$validatedData = $request->validate([
|
||||||
'criteria_id' => 'required',
|
'criteria_id' => 'required',
|
||||||
'nama' => 'required',
|
'nama' => 'required',
|
||||||
|
'deskripsi' => 'required',
|
||||||
'prioritas' => 'required',
|
'prioritas' => 'required',
|
||||||
|
'bobot' => 'nullable|numeric',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$subkriteria = SubCriteria::findOrFail($id);
|
$subkriteria = SubCriteria::findOrFail($id);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
class SubCriteria extends Model
|
class SubCriteria extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = ['criteria_id', 'nama', 'prioritas', 'bobot'];
|
protected $fillable = ['criteria_id', 'nama', 'deskripsi', 'prioritas', 'bobot'];
|
||||||
|
|
||||||
public function Criteria()
|
public function Criteria()
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,8 +15,9 @@ public function up(): void
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->unsignedBigInteger('criteria_id');
|
$table->unsignedBigInteger('criteria_id');
|
||||||
$table->string('nama');
|
$table->string('nama');
|
||||||
$table->string('prioritas');
|
$table->text('deskripsi');
|
||||||
$table->string('bobot')->nullable();
|
$table->unsignedInteger('prioritas');
|
||||||
|
$table->float('bobot')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
$table->foreign('criteria_id')->references('id')->on('criterias');
|
$table->foreign('criteria_id')->references('id')->on('criterias');
|
||||||
|
|
|
@ -147,7 +147,7 @@ class="badge btn-danger" data-toggle="modal"
|
||||||
<div class="alert alert-danger">{{ $errors->first('kategori') }}</div>
|
<div class="alert alert-danger">{{ $errors->first('kategori') }}</div>
|
||||||
@endif
|
@endif
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-sm-2 col-form-label">Deskipsi</label>
|
<label class="col-sm-2 col-form-label">Deskripsi</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
|
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
|
||||||
required="">
|
required="">
|
||||||
|
|
|
@ -39,9 +39,6 @@
|
||||||
<!-- Button trigger modal -->
|
<!-- Button trigger modal -->
|
||||||
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="#add-criteria">
|
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="#add-criteria">
|
||||||
<i class="icon dw dw-add"></i> Tambah Kriteria</button>
|
<i class="icon dw dw-add"></i> Tambah Kriteria</button>
|
||||||
{{-- <button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="">
|
|
||||||
<i class="icon dw dw-calculator"></i> Hitung Bobot
|
|
||||||
</button> --}}
|
|
||||||
<button type="button" class="btn btn-primary mx-2" id="calculate-bobot">
|
<button type="button" class="btn btn-primary mx-2" id="calculate-bobot">
|
||||||
<i class="icon dw dw-calculator"></i> Hitung Bobot
|
<i class="icon dw dw-calculator"></i> Hitung Bobot
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
@foreach ($criterias as $criteria)
|
@foreach ($criterias as $criteria)
|
||||||
<td>
|
<td>
|
||||||
<select class="form-control" name="subcriteria[{{ $extracuricullar->id }}][{{ $criteria->id }}]">
|
<select class="form-control" name="subcriteria[{{ $extracuricullar->id }}][{{ $criteria->id }}]">
|
||||||
{{-- <option value="" selected disabled>Pilih Sub Kriteria</option> --}}
|
<option value="" selected disabled>Pilih Sub Kriteria</option>
|
||||||
@foreach ($criteria->subCriteria as $subCriteria)
|
@foreach ($criteria->subCriteria as $subCriteria)
|
||||||
<option value="{{ $subCriteria->id }}">{{ $subCriteria->nama }}</option>
|
<option value="{{ $subCriteria->id }}">{{ $subCriteria->nama }}</option>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
|
@ -39,8 +39,9 @@
|
||||||
<!-- Button trigger modal -->
|
<!-- Button trigger modal -->
|
||||||
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="#add-subcriteria">
|
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="#add-subcriteria">
|
||||||
<i class="icon dw dw-add"></i> Tambah Sub Kriteria</button>
|
<i class="icon dw dw-add"></i> Tambah Sub Kriteria</button>
|
||||||
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="">
|
<button type="button" class="btn btn-primary mx-2" id="calculate-bobot">
|
||||||
<i class="icon dw dw-calculator"></i> Hitung Bobot</button>
|
<i class="icon dw dw-calculator"></i> Hitung Bobot
|
||||||
|
</button>
|
||||||
<form class="form-inline ml-auto" action="{{ route('subkriteria.index') }}" method="GET">
|
<form class="form-inline ml-auto" action="{{ route('subkriteria.index') }}" method="GET">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" name="search" placeholder="Search">
|
<input type="text" class="form-control" name="search" placeholder="Search">
|
||||||
|
@ -60,6 +61,7 @@
|
||||||
<th>No</th>
|
<th>No</th>
|
||||||
<th>Kriteria</th>
|
<th>Kriteria</th>
|
||||||
<th>Sub Kriteria</th>
|
<th>Sub Kriteria</th>
|
||||||
|
<th>Deskripsi</th>
|
||||||
<th>Prioritas</th>
|
<th>Prioritas</th>
|
||||||
<th>Bobot</th>
|
<th>Bobot</th>
|
||||||
<th>Aksi</th>
|
<th>Aksi</th>
|
||||||
|
@ -71,8 +73,15 @@
|
||||||
<td>{{ $loop->iteration }}</td>
|
<td>{{ $loop->iteration }}</td>
|
||||||
<td>{{ $subcriteria->criteria->nama }}</td>
|
<td>{{ $subcriteria->criteria->nama }}</td>
|
||||||
<td>{{ $subcriteria->nama }}</td>
|
<td>{{ $subcriteria->nama }}</td>
|
||||||
|
<td>{{ $subcriteria->deskripsi }}</td>
|
||||||
<td>{{ $subcriteria->prioritas }}</td>
|
<td>{{ $subcriteria->prioritas }}</td>
|
||||||
<td>{{ $subcriteria->bobot }}</td>
|
<td>
|
||||||
|
@if ($subcriteria->bobot)
|
||||||
|
{{ $subcriteria->bobot }}
|
||||||
|
@else
|
||||||
|
<em>Belum dihitung</em>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ route('subkriteria.edit', $subcriteria->id) }}"
|
<a href="{{ route('subkriteria.edit', $subcriteria->id) }}"
|
||||||
class="badge btn-primary" data-toggle="modal"
|
class="badge btn-primary" data-toggle="modal"
|
||||||
|
@ -159,8 +168,21 @@ class="badge btn-danger" data-toggle="modal"
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@if ($errors->has('prioritas'))
|
@if ($errors->has('nama'))
|
||||||
<div class="alert alert-danger">{{ $errors->first('prioritas') }}</div>
|
<div class="alert alert-danger">{{ $errors->first('nama') }}</div>
|
||||||
|
@endif
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-2 col-form-label">Deskripsi</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
|
||||||
|
required="">
|
||||||
|
<div class="valid-feedback">
|
||||||
|
Lengkap!
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($errors->has('deskripsi'))
|
||||||
|
<div class="alert alert-danger">{{ $errors->first('deskripsi') }}</div>
|
||||||
@endif
|
@endif
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-sm-2 col-form-label">Prioritas</label>
|
<label class="col-sm-2 col-form-label">Prioritas</label>
|
||||||
|
@ -236,6 +258,19 @@ class="badge btn-danger" data-toggle="modal"
|
||||||
@if ($errors->has('nama'))
|
@if ($errors->has('nama'))
|
||||||
<div class="alert alert-danger">{{ $errors->first('nama') }}</div>
|
<div class="alert alert-danger">{{ $errors->first('nama') }}</div>
|
||||||
@endif
|
@endif
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-2 col-form-label">Deskripsi</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
|
||||||
|
required="" value="{{ $subcriteria->deskripsi }}">
|
||||||
|
<div class="valid-feedback">
|
||||||
|
Lengkap!
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($errors->has('deskripsi'))
|
||||||
|
<div class="alert alert-danger">{{ $errors->first('deskripsi') }}</div>
|
||||||
|
@endif
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-sm-2 col-form-label">Prioritas</label>
|
<label class="col-sm-2 col-form-label">Prioritas</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
|
@ -286,4 +321,26 @@ class="badge btn-danger" data-toggle="modal"
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
// Event listener for the button click
|
||||||
|
$('#calculate-bobot').click(function() {
|
||||||
|
// Send AJAX request to trigger calculation
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '{{ route('subkriteria.calculate') }}',
|
||||||
|
data: {
|
||||||
|
_token: '{{ csrf_token() }}'
|
||||||
|
},
|
||||||
|
success: function(response) {
|
||||||
|
// Reload the page to show updated values
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
console.error('Error:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
@ -109,6 +109,7 @@
|
||||||
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::resource('subkriteria', SubCriteriaController::class);
|
||||||
|
Route::post('/subkriteria/calculate', [SubCriteriaController::class, 'calculateBobotSubKriteria'])->name('subkriteria.calculate');
|
||||||
|
|
||||||
Route::resource('user', DataUserController::class);
|
Route::resource('user', DataUserController::class);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue