Tambah relasi dan optimalkan query pada Permohonan

Tambahkan metode relasi baru untuk `penawaran` dan `tujuan_penilaian_kjpp` di model Permohonan untuk memudahkan akses data terkait. Sesuaikan kembali query di SpkController supaya lebih efisien dengan menggunakan eager loading. Update tampilan di `spk/index.blade.php` untuk menyesuaikan data relasi yang baru ditambahkan di query.
This commit is contained in:
Daeng Deni Mardaeni
2024-11-06 13:27:16 +07:00
parent 019e12535e
commit 474a3041c8
3 changed files with 33 additions and 14 deletions

View File

@@ -34,18 +34,15 @@ use Illuminate\Support\Facades\Auth;
} }
// Retrieve data from the database // Retrieve data from the database
$query =Permohonan::query() $query =Permohonan::query()->with(['penawaran','tujuan_penilaian_kjpp'])
->leftJoin('penawaran', 'penawaran.nomor_registrasi','=','permohonan.nomor_registrasi') ->where('permohonan.status','=','spk');
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->where('permohonan.status','=','spk')
->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', 'permohonan.dokumen as dokumenSPK');
// Apply search filter if provided // Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) { if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search'); $search = $request->get('search');
$query->where(function ($q) use ($search) { $query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); $q->orWhere('penawaran.tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%');
}); });
@@ -76,7 +73,7 @@ use Illuminate\Support\Facades\Auth;
// Get the data for the current page // Get the data for the current page
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->with(['permohonan'])->get(); $data = $query->get();
$i=0; $i=0;
foreach($data as $obj) foreach($data as $obj)

View File

@@ -89,4 +89,12 @@ class Permohonan extends Base
{ {
return $this->belongsTo(Regions::class, 'region_id'); return $this->belongsTo(Regions::class, 'region_id');
} }
public function penawaran(){
return $this->hasMany(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi');
}
public function tujuan_penilaian_kjpp(){
return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id', 'id');
}
} }

View File

@@ -115,25 +115,39 @@
}, },
code: { code: {
title: 'Kode Penawaran', title: 'Kode Penawaran',
render: (item, data) => {
console.log(data);
return `${data.penawaran.code}`;
},
}, },
date_range: { date_range: {
title: 'Tanggal Penawaran', title: 'Tanggal Penawaran',
render: (item, data) => {
return `${data.penawaran.start_date} - ${data.penawaran.end_date}`;
},
}, },
tujuan_penilaian_kjpp_name: { tujuan_penilaian_kjpp_name: {
title: 'Tujuan Penilaian', title: 'Tujuan Penilaian',
render: (item, data) => {
if(data.tujuan_penilaian_kjpp) {
return `${data.tujuan_penilaian_kjpp.name}`;
}
return '-';
},
}, },
nama_kjpp_sebelumnya: { nama_kjpp_sebelumnya: {
title: 'Nama KJPP Terpilih', title: 'Nama KJPP Terpilih',
render: (item, data) => { render: (item, data) => {
return `${data.nama_kjpp_sebelumnya}`+'<br />' return `${data.penawaran.nama_kjpp_sebelumnya}`+'<br />'
+`${data.biaya_kjpp_sebelumnya}`+'<br /> ' +`${data.penawaran.biaya_kjpp_sebelumnya}`+'<br /> '
+`${data.tanggal_penilaian_sebelumnya}`; +`${data.penawaran.tanggal_penilaian_sebelumnya}`;
}, },
}, },
status: { status: {
title: 'Status', title: 'Status',
render: (item, data) => { render: (item, data) => {
return `${data.status}`.toUpperCase(); return `${data.penawaran.status}`.toUpperCase();
}, },
}, },
actions: { actions: {
@@ -143,17 +157,17 @@
var spkCreate=''; var spkCreate='';
if(!data.dokumenSPK) if(!data.dokumenSPK)
{ {
spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" onclick="spkCreate(${data.id})" > spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" onclick="spkCreate(${data.penawaran.id})" >
<i class="ki-outline ki-notepad-edit"></i> <i class="ki-outline ki-notepad-edit"></i>
</a>`; </a>`;
} }
else else
{ {
spkShow =`<div class="flex flex-nowrap justify-center"> spkShow =`<div class="flex flex-nowrap justify-center">
<a href="/spk/${data.permohonan.id}/download" class="btn btn-sm btn-icon btn-clear btn-primary" title="Download SPK"> <a href="/spk/${data.id}/download" class="btn btn-sm btn-icon btn-clear btn-primary" title="Download SPK">
<i class="ki-filled ki-cloud-download"></i> <i class="ki-filled ki-cloud-download"></i>
</a> `; </a> `;
spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Buat SPK" onclick="spkCreate(${data.id})" > spkCreate=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Buat SPK" onclick="spkCreate(${data.penawaran.id})" >
<i class="ki-outline ki-notepad-edit"></i> <i class="ki-outline ki-notepad-edit"></i>
</a>`; </a>`;
} }