I have a table work in a database that have columns score_1, score_2, score_3, and score_4. I want to get the total value and save it to database as a total_score. And from that total_score I want to get the average matching the work data with the vendor ID. How to achieve this? At the moment I have, the total_score as a raw view (not saved to the database). Here is the code for the table:
JavaScript
x
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title"><b>{{$penyedia->nama}}</b></h3> <br>
{{-- @foreach ($pekerjaan as $pekerjaans)
@endforeach
@php
$nilaiPenyedia = 0.0;
$totalNilai = 0.0;
$totalNilai = $pekerjaans->nilai_1 + $pekerjaans->nilai_2 + $pekerjaans->nilai_3 + $pekerjaans->nilai_4;
$nilaiPenyedia += $totalNilai;
@endphp --}} // Supposed to get the average but not working properly
{{-- <h3 class="card-title">Nilai Total: <b>{{$nilaiPenyedia}}</b></h3> --}}
</div>
<!-- /.card-header -->
<div class="card-body table-responsive">
<table id="tabelpekerjaan" class="table table-bordered">
<thead>
<tr>
<th style="width: 10px">No.</th>
<th>Paket Pekerjaan</th>
<th>Nama Perusahaan</th>
<th>Lokasi Pekerjaan</th>
<th>HPS</th>
<th>Nilai Kontrak</th>
<th>Nilai</th>
<th style="width: 120px">Aksi</th>
</tr>
</thead>
<tbody>
@php $no = 1; $totalNilai = 0.0; @endphp
@foreach ($pekerjaan as $pekerjaans)
<tr>
<td>{{$no++}}</td>
<td>{{$pekerjaans->pekerjaan}}</td>
<td>{{$pekerjaans->penyedia->nama}}</td>
<td>{{$pekerjaans->lokasi}}</td>
<td>Rp. {{number_format($pekerjaans->hps,0,',',',')}}</td>
<td>Rp. {{number_format($pekerjaans->nilai_kontrak,0,',',',')}}</td>
@php
$totalNilai = $pekerjaans->nilai_1 + $pekerjaans->nilai_2 + $pekerjaans->nilai_3 + $pekerjaans->nilai_4;
@endphp //Get the total_score but not saved to the database.
<td>{{$totalNilai}}</td>
<td>
<a href="/nilai/{{$pekerjaans->id}}" type="button" class="btn btn-outline-primary">Beri Penilaian</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div class="card-footer">
<a href="/datanilai_penyedia" type="button" class="btn btn-outline-secondary">Kembali</a>
</div>
</div>
</section>
Here is the form where the user input the data
JavaScript
<section class="content">
<div class="container-fluid">
<div class="row">
<!-- left column -->
<div class="col-12">
<!-- general form elements -->
<div class="card card-primary">
<!-- /.card-header -->
<!-- form start -->
<div class="card-body">
<div class="form-group">
<label for="exampleInputEmail1">Paket Pekerjaan</label>
<input type="text" name="pekerjaan" class="form-control" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->pekerjaan}}" disabled>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Nama Perusahaan</label>
<input name="penyedia_id" class="form-control" style="width: 100%;" value="{{$pekerjaan->penyedia->nama}}" disabled>
</div>
<div class="form-group">
<label>Lokasi</label>
<textarea name="lokasi" class="form-control" rows="3" placeholder="Alamat" disabled>{{$pekerjaan->lokasi}}</textarea>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="exampleInputEmail1">Nilai Kontrak</label>
<input type="number" step=".01" name="nilai_kontrak" class="form-control" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->nilai_kontrak}}" disabled>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="exampleInputEmail1">HPS</label>
<input type="number" step=".01" name="hps" class="form-control" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->hps}}" disabled>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
</div>
</section>
<section class="content">
<div class="container-fluid">
<form action="/updatenilaipekerjaan/{{$pekerjaan->id}}" method="POST" enctype="multipart/form-data">
@csrf
<div class="card card-default collapsed-card">
<div class="card-header">
<h3 class="card-title"><b>1. Kualitas dan Kuantitas Pekerjaan (30%)</b></h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio1" name="nilai_1" value="0.3">
<label for="customRadio1" class="custom-control-label">>50% hasil pekerjaan memerlukan perbaikan/penggantian agar sesuai dengan ketentuan dalam kontrak. (Skor 1)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio2" name="nilai_1" value="0.6">
<label for="customRadio2" class="custom-control-label">≤50% hasil pekerjaan memerlukan perbaikan/penggantian agar sesuai dengan ketentuan dalam kontrak. (Skor 2)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio3" name="nilai_1" value="0.9">
<label for="customRadio3" class="custom-control-label">100% hasil pekerjaan sesuai dengan ketentuan dalam kontrak. (skor 3)</label>
</div>
</div>
<!-- /.row -->
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<!-- SELECT2 EXAMPLE -->
<div class="card card-default collapsed-card">
<div class="card-header">
<h3 class="card-title"><b>2. Layanan dengan indikator komunikasi dan tingkat respon (20%)</b></h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio4" name="nilai_2" value="0.2">
<label for="customRadio4" class="custom-control-label">a. Penyedia Lambat memberti tanggapan positif atas permintaan PPK; dan <br>
b. Penyedia sulit diajak berdiskusi dalam penyelesaian pelaksanaan pekerjaan. (Skor 1)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio5" name="nilai_2" value="0.4">
<label for="customRadio5" class="custom-control-label">a. Merespon permintaan dengan penyelesaian sesuai dengan yang diminta; atau <br>
b. Penyedia mudah dihubungi dan berdiskusi dalam penyelesaian pelaksanaan pekerjaan. (Skor 2)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio6" name="nilai_2" value="0.6">
<label for="customRadio6" class="custom-control-label">a. Merespon permintaan dengan penyelesaian sesuai dengan yang diminta; dan <br>
b. Penyedia mudah dihubungi dan berdiskusi dalam penyelesaian pelaksanaan pekerjaan. (Skor 3)</label>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div class="card card-default collapsed-card">
<div class="card-header">
<h3 class="card-title"><b>3. Waktu dengan indikator ketepatan (30%)</b></h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio7" name="nilai_3" value="0.3">
<label for="customRadio7" class="custom-control-label">Penyelesaian pekerjaan terlambat melebihi 50 (lima puluh) hari kalender dari waktu yang telah ditetapkan dalam kontrak karena kesalahan penyedia. (Skor 1)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio8" name="nilai_3" value="0.6">
<label for="customRadio8" class="custom-control-label">Penyelesaian pekerjaan terlambat sampai 50 hari dari kontrak kesalahan Penyedia. (Skor 2)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio9" name="nilai_3" value="0.9">
<label for="customRadio9" class="custom-control-label">Penyelesaian pekerjaan sesuai dengan waktu dalam kontrak atau lebih cepat sesuai kebutuhan PPK. (Skor 3)</label>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div class="card card-default collapsed-card">
<div class="card-header">
<h3 class="card-title"><b>4. Biaya dengan indikator kemampuan pengendalian biaya (20%)</b></h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fas fa-plus"></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div class="card-body">
<div class="form-group">
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio10" name="nilai_4" value="0.2">
<label for="customRadio10" class="custom-control-label">a. Tidak menginformasikan sejak awal kondisi/kejadian yang berpotensi menambah biaya; dan <br>
b. Mengajukan perubahan kontrak yang berdampak penambahan total biaya tanpa alasan memadai sehingga di tolak PPK. (Skor 1)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio11" name="nilai_4" value="0.4">
<label for="customRadio11" class="custom-control-label">a. Melakukan salah satu kondisi pada kriteria cukup. (Skor 2)</label>
</div>
<br>
<div class="custom-control custom-radio">
<input class="custom-control-input" type="radio" id="customRadio12" name="nilai_4" value="0.6">
<label for="customRadio12" class="custom-control-label">Telah melakukan pengendalian biaya dengan baik dengan menginformasikan sejak awal atas kondisi yang berpotensi menambah biaya dan perubahan kontrak sudah didasari dengan alasan yang dapat dipertanggungjawabkan. (Skor 3)</label>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div class="card-footer">
<a href="/nilaipekerjaan/{{$pekerjaan->penyedia->id}}" type="button" class="btn btn-outline-secondary">Kembali</a>
<button type="submit" class="btn btn-outline-primary delete">Submit</button>
</div>
</form>
</div>
</section>
model
JavaScript
work.php
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel as Eloquent;
class Pekerjaan extends Eloquent
{
use HasFactory;
protected $guarded = [];
public function penyedia(){
return $this->belongsTo(Penyedia::class, 'penyedia_id');
}
}
vendor.php
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel as Eloquent;
class Penyedia extends Eloquent
{
use HasFactory;
protected $guarded = [];
public $timestamps = false;
public function pekerjaans(){
return $this->hasMany(Pekerjaan::class);
}
}
AdminController
JavaScript
public function update_nilaipekerjaan(Request $request, $id){
$pekerjaan = Pekerjaan::find($id);
//$pekerjaan->update($request->all());
$pekerjaan->nilai_1=$request->nilai_1;
$pekerjaan->nilai_2=$request->nilai_2;
$pekerjaan->nilai_3=$request->nilai_3;
$pekerjaan->nilai_4=$request->nilai_4; //Get the value and save it to database
$pekerjaan->save();
return redirect()->back()->with('message','Nilai Pekerjaan Berhasil diupdate!');
}
Database
https://imgur.com/a/N6NlcwJ
Here is what I want to achieve
https://imgur.com/a/fk4Yq92
Advertisement
Answer
For total score add this code in update_nilaipekerjaan() function befor save function :
JavaScript
$pekerjaan->nilai_total=$request->nilai_1+$request->nilai_2+$request->nilai_3+$request->nilai_4;
and if you want to get the average add this codde :
JavaScript
$pekerjaan->nilai=($request->nilai_1+$request->nilai_2+$request->nilai_3+$request->nilai_4)/4;