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:
<section >
<div >
<div >
<div >
<div >
<div >
<h3 ><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 >Nilai Total: <b>{{$nilaiPenyedia}}</b></h3> --}}
</div>
<!-- /.card-header -->
<div >
<table id="tabelpekerjaan" >
<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" >Beri Penilaian</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div >
<a href="/datanilai_penyedia" type="button" >Kembali</a>
</div>
</div>
</section>
Here is the form where the user input the data
<section >
<div >
<div >
<!-- left column -->
<div >
<!-- general form elements -->
<div >
<!-- /.card-header -->
<!-- form start -->
<div >
<div >
<label for="exampleInputEmail1">Paket Pekerjaan</label>
<input type="text" name="pekerjaan" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->pekerjaan}}" disabled>
</div>
<div >
<label for="exampleInputPassword1">Nama Perusahaan</label>
<input name="penyedia_id" style="width: 100%;" value="{{$pekerjaan->penyedia->nama}}" disabled>
</div>
<div >
<label>Lokasi</label>
<textarea name="lokasi" rows="3" placeholder="Alamat" disabled>{{$pekerjaan->lokasi}}</textarea>
</div>
<div >
<div >
<div >
<label for="exampleInputEmail1">Nilai Kontrak</label>
<input type="number" step=".01" name="nilai_kontrak" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->nilai_kontrak}}" disabled>
</div>
</div>
<div >
<div >
<label for="exampleInputEmail1">HPS</label>
<input type="number" step=".01" name="hps" id="exampleInputEmail1" placeholder="Pekerjaan" value="{{$pekerjaan->hps}}" disabled>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
</div>
</section>
<section >
<div >
<form action="/updatenilaipekerjaan/{{$pekerjaan->id}}" method="POST" enctype="multipart/form-data">
@csrf
<div >
<div >
<h3 ><b>1. Kualitas dan Kuantitas Pekerjaan (30%)</b></h3>
<div >
<button type="button" data-card-widget="collapse">
<i ></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div >
<div >
<div >
<input type="radio" id="customRadio1" name="nilai_1" value="0.3">
<label for="customRadio1" >>50% hasil pekerjaan memerlukan perbaikan/penggantian agar sesuai dengan ketentuan dalam kontrak. (Skor 1)</label>
</div>
<br>
<div >
<input type="radio" id="customRadio2" name="nilai_1" value="0.6">
<label for="customRadio2" >≤50% hasil pekerjaan memerlukan perbaikan/penggantian agar sesuai dengan ketentuan dalam kontrak. (Skor 2)</label>
</div>
<br>
<div >
<input type="radio" id="customRadio3" name="nilai_1" value="0.9">
<label for="customRadio3" >100% hasil pekerjaan sesuai dengan ketentuan dalam kontrak. (skor 3)</label>
</div>
</div>
<!-- /.row -->
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<!-- SELECT2 EXAMPLE -->
<div >
<div >
<h3 ><b>2. Layanan dengan indikator komunikasi dan tingkat respon (20%)</b></h3>
<div >
<button type="button" data-card-widget="collapse">
<i ></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div >
<div >
<div >
<input type="radio" id="customRadio4" name="nilai_2" value="0.2">
<label for="customRadio4" >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 >
<input type="radio" id="customRadio5" name="nilai_2" value="0.4">
<label for="customRadio5" >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 >
<input type="radio" id="customRadio6" name="nilai_2" value="0.6">
<label for="customRadio6" >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 >
<div >
<h3 ><b>3. Waktu dengan indikator ketepatan (30%)</b></h3>
<div >
<button type="button" data-card-widget="collapse">
<i ></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div >
<div >
<div >
<input type="radio" id="customRadio7" name="nilai_3" value="0.3">
<label for="customRadio7" >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 >
<input type="radio" id="customRadio8" name="nilai_3" value="0.6">
<label for="customRadio8" >Penyelesaian pekerjaan terlambat sampai 50 hari dari kontrak kesalahan Penyedia. (Skor 2)</label>
</div>
<br>
<div >
<input type="radio" id="customRadio9" name="nilai_3" value="0.9">
<label for="customRadio9" >Penyelesaian pekerjaan sesuai dengan waktu dalam kontrak atau lebih cepat sesuai kebutuhan PPK. (Skor 3)</label>
</div>
</div>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<div >
<div >
<h3 ><b>4. Biaya dengan indikator kemampuan pengendalian biaya (20%)</b></h3>
<div >
<button type="button" data-card-widget="collapse">
<i ></i>
</button>
</div>
</div>
<!-- /.card-header -->
<div >
<div >
<div >
<input type="radio" id="customRadio10" name="nilai_4" value="0.2">
<label for="customRadio10" >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 >
<input type="radio" id="customRadio11" name="nilai_4" value="0.4">
<label for="customRadio11" >a. Melakukan salah satu kondisi pada kriteria cukup. (Skor 2)</label>
</div>
<br>
<div >
<input type="radio" id="customRadio12" name="nilai_4" value="0.6">
<label for="customRadio12" >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 >
<a href="/nilaipekerjaan/{{$pekerjaan->penyedia->id}}" type="button" >Kembali</a>
<button type="submit" >Submit</button>
</div>
</form>
</div>
</section>
model
work.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Pekerjaan extends Eloquent
{
use HasFactory;
protected $guarded = [];
public function penyedia(){
return $this->belongsTo(Penyedia::class, 'penyedia_id');
}
}
vendor.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Penyedia extends Eloquent
{
use HasFactory;
protected $guarded = [];
public $timestamps = false;
public function pekerjaans(){
return $this->hasMany(Pekerjaan::class);
}
}
AdminController
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!');
}
Here is what I want to achieve
CodePudding user response:
For total score add this code in update_nilaipekerjaan() function befor save function :
$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 :
$pekerjaan->nilai=($request->nilai_1 $request->nilai_2 $request->nilai_3 $request->nilai_4)/4;