Home > Blockchain >  Totaling the values of columns and get the average to save it on another table
Totaling the values of columns and get the average to save it on another table

Time:06-28

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!');
    }

Database Work Table

Vendor Table

Here is what I want to achieve 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;
  • Related