Merge branch 'staging' into feature/senior-officer

This commit is contained in:
majid
2024-12-04 13:19:21 +07:00
29 changed files with 876 additions and 222 deletions

View File

@@ -107,24 +107,141 @@
function onLastnumberCodePenawaran() function onLastnumberCodePenawaran()
: string : string
{ {
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC // ambil code terakhir
$maxCode = PenawaranTender::max('code'); $maxCode = PenawaranTender::max('code');
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
// $penawaran = PenawaranTender::latest()->first(); // $penawaran = PenawaranTender::latest()->first();
$penawaran = PenawaranTender::where('code', '=', $maxCode)->first(); $penawaran = PenawaranTender::where('code','=',$maxCode)->first();
$code_penawaran_last = ''; $code_penawaran_last='';
$noUrutAkhirString = sprintf("%04s", 1);
if ($penawaran) { // nomor di set 0001
$code_penawaran_last = substr($maxCode, -4); $noUrutAkhirString = sprintf("%04s", 1);
if($penawaran)
{
$code_penawaran_last = substr ($maxCode, -4);
$year_penawaran_last = Carbon::parse($penawaran->created_at)->year; $year_penawaran_last = Carbon::parse($penawaran->created_at)->year;
$year_now = Carbon::now()->year; $year_now = Carbon::now()->year;
if ($year_now == $year_penawaran_last) { if ($year_now == $year_penawaran_last) {
$noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1));
} }
// jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001
} }
return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString;
} }
// generate last penawaran.no_spk
function onLastnumberCodePenawaranSPK($jenis_laporan_code): string
{
// 20241124_001 ==> spk_no_core
// XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024
// 001 / PJ / JKT / XI / FR / 2024
$maxCode = PenawaranTender::max('spk_no_core');
$penawaran = PenawaranTender::where('spk_no_core','=',$maxCode)->first();
$no_spk_penawaran_last='';
$year_penawaran_last='';
$year_now = Carbon::now()->year;
// nomor di set 001
$noUrutAkhirString = sprintf("%03s", 1);
if($penawaran)
{
$no_spk_penawaran_last = substr ($maxCode, -3);
$year_penawaran_last = substr ($maxCode, 0, 4);
if($year_now == $year_penawaran_last)
{
$noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1));
}
// jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001
}
$month = onRomawi(Carbon::now()->month);
$lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now;
return $lastSPK;
}
function onRomawi(int $bln): string
{
switch ($bln){
case 1:
return "I";
break;
case 2:
return "II";
break;
case 3:
return "III";
break;
case 4:
return "IV";
break;
case 5:
return "V";
break;
case 6:
return "VI";
break;
case 7:
return "VII";
break;
case 8:
return "VIII";
break;
case 9:
return "IX";
break;
case 10:
return "X";
break;
case 11:
return "XI";
break;
case 12:
return "XII";
break;
}
}
function penyebut($nilai) {
$nilai = abs($nilai);
$huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
$temp = "";
if ($nilai < 12) {
$temp = " ". $huruf[$nilai];
} else if ($nilai <20) {
$temp = penyebut($nilai - 10). " belas";
} else if ($nilai < 100) {
$temp = penyebut($nilai/10)." puluh". penyebut($nilai % 10);
} else if ($nilai < 200) {
$temp = " seratus" . penyebut($nilai - 100);
} else if ($nilai < 1000) {
$temp = penyebut($nilai/100) . " ratus" . penyebut($nilai % 100);
} else if ($nilai < 2000) {
$temp = " seribu" . penyebut($nilai - 1000);
} else if ($nilai < 1000000) {
$temp = penyebut($nilai/1000) . " ribu" . penyebut($nilai % 1000);
} else if ($nilai < 1000000000) {
$temp = penyebut($nilai/1000000) . " juta" . penyebut($nilai % 1000000);
} else if ($nilai < 1000000000000) {
$temp = penyebut($nilai/1000000000) . " milyar" . penyebut(fmod($nilai,1000000000));
} else if ($nilai < 1000000000000000) {
$temp = penyebut($nilai/1000000000000) . " trilyun" . penyebut(fmod($nilai,1000000000000));
}
return $temp;
}
function terbilang($nilai) {
if($nilai<0) {
$hasil = "minus ". trim(penyebut($nilai));
} else {
$hasil = trim(penyebut($nilai));
}
return $hasil;
}
// andy add // andy add

View File

@@ -120,7 +120,7 @@
} }
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['message_ajax'] = ["no ajax request"]; $data['message']['message_ajax'] = ["no ajax request"];
} }
return response()->json($data); return response()->json($data);
@@ -149,6 +149,7 @@
if ($tindakan == 0) { if ($tindakan == 0) {
$dataku['jenis_penilaian_id'] = $request->jenis_penilaian; $dataku['jenis_penilaian_id'] = $request->jenis_penilaian;
$dataku['region_id'] = $request->region; $dataku['region_id'] = $request->region;
$dataku['sla'] = $request->sla;
$dataku['status'] = 'registered'; $dataku['status'] = 'registered';
if ($request->catatan2) { if ($request->catatan2) {
$dataku['registrasi_catatan'] = $request->catatan2; $dataku['registrasi_catatan'] = $request->catatan2;
@@ -205,6 +206,12 @@
$validateIt['region'] = ['required']; $validateIt['region'] = ['required'];
$messageIt ['region.required'] = 'Silahkan pilih Region'; $messageIt ['region.required'] = 'Silahkan pilih Region';
} }
else
{
$validateIt['sla'] = ['required'];
$messageIt ['sla.required'] = 'Silahkan isi SLA';
}
} elseif ($tindakan == 1) { } elseif ($tindakan == 1) {
$validateIt['catatan'] = ['required']; $validateIt['catatan'] = ['required'];
$messageIt ['catatan.required'] = 'Silahkan isi Catatan'; $messageIt ['catatan.required'] = 'Silahkan isi Catatan';

View File

@@ -84,7 +84,7 @@ use Illuminate\Support\Facades\Auth;
if ($obj->tanggal_permohonan) { if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y'); $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
} }
if($obj->penawaran->tanggal_penilaian_sebelumnya) if($obj->penawaran->tanggal_penilaian_sebelumnya)
{ {
$data[$i]->penawaran->tanggal_penilaian_sebelumnya = Carbon::parse($obj->penawaran->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); $data[$i]->penawaran->tanggal_penilaian_sebelumnya = Carbon::parse($obj->penawaran->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s');
@@ -104,12 +104,11 @@ use Illuminate\Support\Facades\Auth;
} }
// data dokumen_spk // data spk_dokumen_path
if($obj->dokumen) if($obj->penawaran->spk_dokumen_path)
{ {
$spkpenawaran_path = Storage::url($obj->dokumen); $spk_dokumen_path = Storage::url($obj->penawaran->spk_dokumen_path);
// dd($spkpenawaran_path); $data[$i]->penawaran->spk_dokumen_path = $spk_dokumen_path;
$data[$i]->dokumen = $spkpenawaran_path;
} }
$i++; $i++;
@@ -148,9 +147,13 @@ use Illuminate\Support\Facades\Auth;
public function edit($id) public function edit($id)
{ {
// dd(Carbon::now()->addDays(1)->format('d F Y'));
// dd(Carbon::now()->subDays(1)->format('d F Y')); jenis_laporan_name
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi')
->where('detail_penawaran.status','=',1) ->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id) ->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
@@ -159,7 +162,10 @@ use Illuminate\Support\Facades\Auth;
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name', 'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address', 'kjpp.address as kjpp_address',
'jenis_laporan.name as jenis_laporan_name' 'jenis_laporan.name as jenis_laporan_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name',
'jenis_laporan.code as jenis_laporan_code',
'penilaian.waktu_penilaian as penilaian_waktu_penilain'
)->first(); )->first();
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
@@ -168,24 +174,77 @@ use Illuminate\Support\Facades\Auth;
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name',
'dokumen_jaminan.address as dokumen_jaminan_address'); 'dokumen_jaminan.address as dokumen_jaminan_address');
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first();
if($penawaran->detail_penawaran_tgl_proposal) if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y'); $penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
return view('lpj::spk.edit', compact('data', 'penawaran')); // generate no spk
$spk_no_last=$penawaran->spk_no;
if(!$spk_no_last)
{
$spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code);
$penawaran->spk_no = $spk_no_last;
}
// pengecekan perubahan jenis report
$array_no_last = explode("/",$spk_no_last);
$jenis_report_old=trim($array_no_last[4]);
if($jenis_report_old!=$penawaran->jenis_laporan_code)
{
$penawaran->spk_no=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_last);
}
// pengecekan perubahan jenis report
// generate no spk
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu='';
// Jangka Waktu
$persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal;
$persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal;
$persetujuan_sla_resume = '...';
$persetujuan_sla_final = '...';
if(null !==$penawaran->persetujuan)
{
$sla_resume_text = $penawaran->persetujuan->sla_resume;
$sla_final_text = $penawaran->persetujuan->sla_final;
$sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text));
$sla_final_text_terbilang = ucfirst(terbilang($sla_final_text));
$persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran;
$persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y');
$persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')';
$persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')';
if($penawaran->penilaian_waktu_penilain)
{
$jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y');
$jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y');
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end;
// Jangka Waktu
}
}
return view('lpj::spk.edit', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu'));
} }
public function update(Request $request, $id): JsonResponse public function update(Request $request, $id): JsonResponse
{ {
// init // init
$data1 = array(); $data1 = [];
$dataPermohonan = array(); // $dataPermohonan = array();
$dataPenawaran = [];
// data // data
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi')
->where('detail_penawaran.status','=',1) ->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id) ->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
@@ -194,7 +253,9 @@ use Illuminate\Support\Facades\Auth;
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name', 'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address', 'kjpp.address as kjpp_address',
'jenis_laporan.name as jenis_laporan_name' 'jenis_laporan.name as jenis_laporan_name',
'jenis_laporan.code as jenis_laporan_code',
'penilaian.waktu_penilaian as penilaian_waktu_penilain'
)->first(); )->first();
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
@@ -202,8 +263,13 @@ use Illuminate\Support\Facades\Auth;
->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id')
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name'); ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name');
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first();
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu='';
// Jangka Waktu
if($penawaran->detail_penawaran_tgl_proposal) if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y'); $penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
@@ -213,15 +279,78 @@ use Illuminate\Support\Facades\Auth;
$newFileNameWithPath = $folderPath . $newFileName; $newFileNameWithPath = $folderPath . $newFileName;
// update table permohonan // update table permohonan
$dataPermohonan=['dokumen' => $newFileNameWithPath]; // $dataPermohonan=['dokumen' => $newFileNameWithPath];
$data->update($dataPermohonan); // $data->update($dataPermohonan);
// update table permohonan // update table permohonan
// update table penawaran
$dataPenawaran['spk_dokumen_path'] = $newFileNameWithPath;
// $spk_no_last=$penawaran->spk_no;
if(!$penawaran->spk_no)
{
$spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code);
// $penawaran->no_spk = $no_spk_last;
$date_now = Carbon::now()->format('Ymd');// 20240124
$spk_number = substr ($spk_no_last, 0, 3);
$dataPenawaran['spk_no'] = $spk_no_last;
$dataPenawaran['spk_no_core'] = $date_now.'_'.$spk_number;
$penawaran->spk_no = $spk_no_last;
}
// pengecekan perubahan jenis report
$spk_no_old=$penawaran->spk_no;
$array_no_last = explode("/",$spk_no_old);
$jenis_report_old=trim($array_no_last[4]);
if($jenis_report_old!=$penawaran->jenis_laporan_code)
{
$penawaran_spk_no_new=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_old);
$penawaran->spk_no=$penawaran_spk_no_new;
$dataPenawaran['spk_no'] = $penawaran_spk_no_new;
}
// pengecekan perubahan jenis report
$penawaranM = PenawaranTender::find($penawaran->id);
$penawaranM->update($dataPenawaran);
// update table penawaran
// pdf path // pdf path
$spkpenawaran_path = Storage::url($newFileNameWithPath); $spkpenawaran_path = Storage::url($newFileNameWithPath);
$pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran')); $persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal;
$persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal;
$persetujuan_sla_resume = '...';
$persetujuan_sla_final = '...';
if(null !==$penawaran->persetujuan)
{
$sla_resume_text = $penawaran->persetujuan->sla_resume;
$sla_final_text = $penawaran->persetujuan->sla_final;
$sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text));
$sla_final_text_terbilang = ucfirst(terbilang($sla_final_text));
$persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran;
$persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y');
$persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')';
$persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')';
if($penawaran->penilaian_waktu_penilain)
{
$jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y');
$jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y');
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end;
// Jangka Waktu
}
}
$pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu'));
$pdf->setPaper('A4', 'portrait');
$content = $pdf->download()->getOriginalContent(); $content = $pdf->download()->getOriginalContent();
Storage::put('public/'.$newFileNameWithPath,$content); Storage::put('public/'.$newFileNameWithPath,$content);
@@ -260,8 +389,10 @@ use Illuminate\Support\Facades\Auth;
} }
public function download($id) { public function download($id) {
$document = Permohonan::find($id); // dokumen pdf diambil dari penawaran.spk_dokumen_path
$permohonan = Permohonan::find($id);
$document = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first();
return response()->download(storage_path('app/public/' .$document->dokumen)); return response()->download(storage_path('app/public/' .$document->spk_dokumen_path));
} }
} }

View File

@@ -684,7 +684,12 @@ class TenderController extends Controller
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
} }
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where('status', '=', 1)->pluck('kjpp_rekanan_id')->toArray(); $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)
->where('status', '=', 1)
->pluck('kjpp_rekanan_id')
->toArray();
$kjpps = KJPP::whereIn('id', $detail_penawaran) $kjpps = KJPP::whereIn('id', $detail_penawaran)
->get() ->get()
->map(function ($item) { ->map(function ($item) {
@@ -702,10 +707,11 @@ class TenderController extends Controller
} }
} }
return array_filter($emails); return [
}) 'kjpp' => $item,
->flatten() 'emails' => array_filter($emails)
->toArray(); ];
});
foreach ($permohonan->debiture->documents as $document) { foreach ($permohonan->debiture->documents as $document) {
$village_permohonan = $document->village_code; $village_permohonan = $document->village_code;
@@ -719,9 +725,21 @@ class TenderController extends Controller
$cities = City::where('code', $city_permohonan)->get(); $cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get();
$subject = 'Send Penawaran Email';
$body_pdf = view('lpj::penawaran.kirimEmail', [
'penawaran' => $penawaran,
'permohonan' => $permohonan,
'kjpps' => $kjpps->pluck('emails')->flatten()->toArray(),
'villages' => $villages,
'districts' => $districts,
'cities' => $cities,
'provinces' => $provinces
])->render();
// Dispatch job untuk mengirim email
SendPenawaranTenderJob::dispatch( SendPenawaranTenderJob::dispatch(
$kjpps, $kjpps->pluck('emails')->flatten()->toArray(),
$penawaran, $penawaran,
$permohonan, $permohonan,
$villages, $villages,
@@ -730,7 +748,119 @@ class TenderController extends Controller
$provinces $provinces
); );
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); try {
// Proses log email untuk setiap KJPP
foreach ($kjpps as $kjppData) {
foreach ($kjppData['emails'] as $email) {
// Cek log yang sudah ada
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'failed')
->first();
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'success')
->first();
if ($log) {
// Update log failed menjadi success
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success',
'error_message' => null,
'updated_at' => now(),
]);
} else if ($log1) {
// Update timestamp jika sudah success
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'updated_at' => now(),
]);
} else {
// Buat log baru
PenawaranEmailTenderLog::create([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success',
'error_message' => null,
'created_at' => now(),
'updated_at' => now(),
]);
}
}
}
return redirect()->route('tender.penawaran.ulang.index')
->with('success', 'Email Penawaran Berhasil Terkirim!');
} catch (\Exception $e) {
// Log email gagal untuk setiap KJPP
foreach ($kjpps as $kjppData) {
foreach ($kjppData['emails'] as $email) {
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'success')
->first();
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'failed')
->first();
if ($log) {
// Update log success menjadi failed
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else if ($log1) {
// Update error message jika sudah failed
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else {
// Buat log baru dengan status failed
PenawaranEmailTenderLog::create([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'created_at' => now(),
'updated_at' => now(),
]);
}
}
}
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])
->with('error', 'Email Penawaran Gagal Terkirim!');
}
} }
public function kirimEmailKJPP($noreg, $id) public function kirimEmailKJPP($noreg, $id)
@@ -830,13 +960,23 @@ class TenderController extends Controller
if ($log) { if ($log) {
// Jika log ditemukan dan statusnya 'failed', update status menjadi 'success' // Jika log ditemukan dan statusnya 'failed', update status menjadi 'success'
$log->update([ $log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success', 'status' => 'success',
'error_message' => null, // Reset error_message saat status diubah menjadi success 'error_message' => null, // Reset error_message saat status diubah menjadi success
'updated_at' => now(), 'updated_at' => now(),
]); ]);
} else if ($log1) { } else if ($log1) {
// Jika log ditemukan dan statusnya 'success' biarkan saja // Jika log ditemukan dan statusnya 'success' biarkan saja
$log1->update([ // Reset error_message saat status diubah menjadi success $log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'updated_at' => now(), 'updated_at' => now(),
]); ]);
} else { } else {
@@ -859,18 +999,54 @@ class TenderController extends Controller
} catch (\Exception $e) { } catch (\Exception $e) {
// Log email gagal // Log email gagal
foreach ($kjpps as $email) { foreach ($kjpps as $email) {
PenawaranEmailTenderLog::create([ $log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
'penawaran_id' => $penawaran->id, ->where('to_email', $email)
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name, ->where('status', 'success')
'to_email' => $email, ->first();
'subject' => $subject,
'body_pdf' => $body_pdf, $log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
'status' => 'failed', ->where('to_email', $email)
'error_message' => $e->getMessage(), ->where('status', 'failed')
'created_at' => now(), ->first();
'updated_at' => now(),
]); if ($log) {
// Jika log ditemukan dan statusnya 'success', update status menjadi 'failed'
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else if ($log1) {
// Jika log ditemukan dan statusnya 'failed' biarkan saja
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else {
PenawaranEmailTenderLog::create([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'created_at' => now(),
'updated_at' => now(),
]);
}
} }
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!'); return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!');
} }
} }

View File

@@ -19,7 +19,7 @@
'name' => 'required|max:255', 'name' => 'required|max:255',
'slug' => 'required|max:255', 'slug' => 'required|max:255',
'jenis_legalitas_jaminan_id' => 'nullable', 'jenis_legalitas_jaminan_id' => 'nullable',
'form_kategori.*' => 'required', 'form_kategori' => 'required',
]; ];
} }
@@ -39,13 +39,14 @@
$this->merge([ $this->merge([
'code' => IdGenerator::generate( 'code' => IdGenerator::generate(
['table' => 'jenis_jaminan', 'length' => 5, 'prefix' => 'JJ', 'field' => 'code'], ['table' => 'jenis_jaminan', 'length' => 5, 'prefix' => 'JJ', 'field' => 'code'],
) ),
]); ]);
} }
$this->merge([ $this->merge([
'jenis_legalitas_jaminan_id' => json_encode($this->jenis_legalitas_jaminan_id), 'jenis_legalitas_jaminan_id' => json_encode($this->jenis_legalitas_jaminan_id),
'slug' => Str::slug($this->name), 'form_kategori' => json_encode($this->form_kategori),
'slug' => Str::slug($this->name),
]); ]);
} }
} }

View File

@@ -18,8 +18,8 @@
'nomor_proposal_penawaran' => 'nullable|string|max:255', 'nomor_proposal_penawaran' => 'nullable|string|max:255',
'tanggal_proposal_penawaran' => 'nullable|date', 'tanggal_proposal_penawaran' => 'nullable|date',
'biaya_final' => 'nullable|numeric|min:0', 'biaya_final' => 'nullable|numeric|min:0',
'sla_resume' => 'nullable|date', 'sla_resume' => 'nullable|numeric|min:0',
'sla_final' => 'nullable|date|after_or_equal:sla_resume', 'sla_final' => 'nullable|numeric|min:0',
'file_persetujuan_penawaran' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'file_persetujuan_penawaran' => 'nullable|file|mimes:pdf,doc,docx|max:10240',
'surat_representasi' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'surat_representasi' => 'nullable|file|mimes:pdf,doc,docx|max:10240',
'bukti_bayar' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240', 'bukti_bayar' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240',
@@ -43,10 +43,7 @@
'biaya_final.numeric' => 'Biaya final harus berupa angka.', 'biaya_final.numeric' => 'Biaya final harus berupa angka.',
'biaya_final.min' => 'Biaya final tidak boleh kurang dari 0.', 'biaya_final.min' => 'Biaya final tidak boleh kurang dari 0.',
'sla_resume.required' => 'SLA Resume wajib diisi.', 'sla_resume.required' => 'SLA Resume wajib diisi.',
'sla_resume.date' => 'SLA Resume harus berupa tanggal yang valid.',
'sla_final.required' => 'SLA Final wajib diisi.', 'sla_final.required' => 'SLA Final wajib diisi.',
'sla_final.date' => 'SLA Final harus berupa tanggal yang valid.',
'sla_final.after_or_equal' => 'SLA Final harus sama dengan atau setelah SLA Resume.',
'file_persetujuan_penawaran.file' => 'File Persetujuan Penawaran harus berupa file.', 'file_persetujuan_penawaran.file' => 'File Persetujuan Penawaran harus berupa file.',
'file_persetujuan_penawaran.mimes' => 'File Persetujuan Penawaran harus berupa file PDF, DOC, atau DOCX.', 'file_persetujuan_penawaran.mimes' => 'File Persetujuan Penawaran harus berupa file PDF, DOC, atau DOCX.',
'file_persetujuan_penawaran.max' => 'Ukuran File Persetujuan Penawaran tidak boleh lebih dari 10MB.', 'file_persetujuan_penawaran.max' => 'Ukuran File Persetujuan Penawaran tidak boleh lebih dari 10MB.',

View File

@@ -40,6 +40,7 @@
'registrasi_at', 'registrasi_at',
'jenis_penilaian_id', 'jenis_penilaian_id',
'region_id', 'region_id',
'sla'
]; ];
protected static function boot() protected static function boot()
@@ -153,4 +154,9 @@
{ {
return $this->hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc'); return $this->hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc');
} }
public function dokumenjaminan()
{
return $this->hasMany(DokumenJaminan::class);
}
} }

View File

@@ -29,8 +29,6 @@
protected $casts = [ protected $casts = [
'tanggal_proposal_penawaran' => 'date', 'tanggal_proposal_penawaran' => 'date',
'sla_resume' => 'date',
'sla_final' => 'date',
'biaya_final' => 'decimal:2', 'biaya_final' => 'decimal:2',
'status' => 'boolean', 'status' => 'boolean',
'authorized_status' => 'boolean', 'authorized_status' => 'boolean',

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('permohonan', function (Blueprint $table) {
$table->integer('sla')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('permohonan', function (Blueprint $table) {
$table->dropColumn('sla');
});
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('penawaran', function (Blueprint $table) {
$table->string('spk_no')->nullable()->after('status');
$table->string('spk_no_core')->nullable()->after('spk_no');
$table->string('spk_dokumen_path')->nullable()->after('spk_no_core');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('penawaran', function (Blueprint $table) {
$table->dropColumn('spk_no');
$table->dropColumn('spk_no_core');
$table->dropColumn('spk_dokumen_path');
});
}
};

View File

@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('persetujuan_penawaran', function (Blueprint $table) {
$table->string('sla_resume')->nullable()->change();
$table->string('sla_final')->nullable()->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('persetujuan_penawaran', function (Blueprint $table) {
$table->datetime('sls_resume')->nullable(false)->change();
$table->datetime('sla_final')->nullable(false)->change();
});
}
};

View File

@@ -131,12 +131,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach

View File

@@ -133,12 +133,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach

View File

@@ -68,18 +68,10 @@
</span> </span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="email_kantor"> <th class="min-w-[150px]" data-datatable-column="email_kantor">
<span class="sort"> Email Kantor
<span class="sort-label">
Email Kantor
</span>
</span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="status"> <th class="min-w-[150px]" data-datatable-column="status">
<span class="sort"> Status Kirim
<span class="sort-label">
Status Kirim
</span>
</span>
</th> </th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action <th class="min-w-[50px] text-center" data-datatable-column="actions">Action
</th> </th>

View File

@@ -13,7 +13,7 @@
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('tender.penawaran.downloadSuratTender', $noreg) }}" class="btn btn-xs btn-light"> <a href="{{ route('tender.penawaran.downloadSuratTender', $noreg) }}" class="btn btn-xs btn-light">
<img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf"></img>Download <img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf" class="pdf"></img>Download
</span> </span>
@if (isset($penawaran->nomor_registrasi)) @if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i <a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
@@ -24,7 +24,7 @@
@endif @endif
</div> </div>
</div> </div>
<div class="card-body grid gap-5"> <div class="card-body grid gap-5 text-gray-900">
<p>Dear <p>Dear
<span class="font-bold"> <span class="font-bold">
@php @php
@@ -116,12 +116,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach
@@ -139,12 +149,12 @@
</ul> </ul>
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p> <p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
<p>Mohon proposal dapat saya terima segera, sebelum <p>Mohon proposal dapat saya terima segera, sebelum
<span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date,true) }}</span> <span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date, true) }}</span>
</p> </p>
<p>Best Regards, <p>Best Regards,
<div class="font-bold"> <div class="font-bold">
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}" <img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200"> alt="{{ $permohonan->user->name }}" width="200" class="signature">
<p> <p>
{{ $permohonan->user->name }} {{ $permohonan->user->name }}
</p> </p>
@@ -159,3 +169,16 @@
</div> </div>
</div> </div>
@endsection @endsection
@push('styles')
<style>
.dark img.signature {
filter: invert(1) brightness(2);
}
.dark img.pdf {
filter: invert(1) brightness(1);
mix-blend-mode: screen;
}
</style>
@endpush

View File

@@ -131,12 +131,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach
@@ -154,7 +164,7 @@
<div class="content"> <div class="content">
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. <br /> Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. <br />
Mohon proposal dapat saya terima segera, sebelum <span Mohon proposal dapat saya terima segera, sebelum <span
class="important">{{ formatTanggalIndonesia($penawaran->end_date,true) }}</span> class="important">{{ formatTanggalIndonesia($penawaran->end_date, true) }}</span>
</div> </div>
<div class="signature"> <div class="signature">

View File

@@ -14,13 +14,13 @@
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('tender.penawaran.downloadSuratTenderKJPP', ['noreg' => $noreg, 'id' => $id]) }}" <a href="{{ route('tender.penawaran.downloadSuratTenderKJPP', ['noreg' => $noreg, 'id' => $id]) }}"
class="btn btn-xs btn-light"> class="btn btn-xs btn-light">
<img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf"></img>Download <img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf" class="pdf"></img>Download
</a> </a>
<a href="{{ route('tender.penawaran.showKirimEmail', $noreg) }}" class="btn btn-xs btn-info"><i <a href="{{ route('tender.penawaran.showKirimEmail', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a> class="ki-filled ki-exit-left"></i> Back</a>
</div> </div>
</div> </div>
<div class="card-body grid gap-5"> <div class="card-body grid gap-5 text-gray-900">
<p>Dear <p>Dear
<span class="font-bold"> <span class="font-bold">
@php @php
@@ -114,12 +114,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach
@@ -142,7 +152,7 @@
<p>Best Regards, <p>Best Regards,
<div class="font-bold"> <div class="font-bold">
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}" <img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200"> alt="{{ $permohonan->user->name }}" width="200" class="signature">
<p> <p>
{{ $permohonan->user->name }} {{ $permohonan->user->name }}
</p> </p>
@@ -157,3 +167,16 @@
</div> </div>
</div> </div>
@endsection @endsection
@push('styles')
<style>
.dark img.signature {
filter: invert(1) brightness(2);
}
.dark img.pdf {
filter: invert(1) brightness(1);
mix-blend-mode: screen;
}
</style>
@endpush

View File

@@ -133,12 +133,22 @@
@endphp @endphp
@if (is_object($details)) @if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) @if (
@php $luas_tanah = $details->luas_tanah; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
isset($details->{'Luas Tanah'}) &&
is_numeric($details->{'Luas Tanah'}))
@php
$luas_tanah = $details->{'Luas Tanah'};
@endphp
@endif @endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) @if (
@php $luas_bangunan = $details->luas_bangunan; @endphp $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
isset($details->{'Luas Bangunan'}) &&
is_numeric($details->{'Luas Bangunan'}))
@php
$luas_bangunan = $details->{'Luas Bangunan'};
@endphp
@endif @endif
@endif @endif
@endforeach @endforeach

View File

@@ -46,7 +46,7 @@
SLA Resume SLA Resume
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="date" name="sla_resume" id="sla_resume" class="input w-full @error('sla_resume') border-danger bg-danger-light @enderror" value="{{ old('sla_resume', $persetujuanPenawaran->sla_resume ?? '') }}"> <input type="number" name="sla_resume" id="sla_resume" class="input w-full @error('sla_resume') border-danger bg-danger-light @enderror" value="{{ old('sla_resume', $persetujuanPenawaran->sla_resume ?? '') }}">
@error('sla_resume') @error('sla_resume')
<em class="alert text-danger text-sm">{{ $message }}</em> <em class="alert text-danger text-sm">{{ $message }}</em>
@enderror @enderror
@@ -58,7 +58,7 @@
SLA Final SLA Final
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="date" name="sla_final" id="sla_final" class="input w-full @error('sla_final') border-danger bg-danger-light @enderror" value="{{ old('sla_final', $persetujuanPenawaran->sla_final ?? '') }}"> <input type="number" name="sla_final" id="sla_final" class="input w-full @error('sla_final') border-danger bg-danger-light @enderror" value="{{ old('sla_final', $persetujuanPenawaran->sla_final ?? '') }}">
@error('sla_final') @error('sla_final')
<em class="alert text-danger text-sm">{{ $message }}</em> <em class="alert text-danger text-sm">{{ $message }}</em>
@enderror @enderror

View File

@@ -176,26 +176,10 @@
}, },
}, },
sla_resume: { sla_resume: {
title: 'SLA Resume', title: 'SLA Resume'
render: (item, data) => {
if(data.penawaran_tender.persetujuan) {
if (data.penawaran_tender.persetujuan.sla_resume) {
return window.formatTanggalIndonesia(`${data.penawaran_tender.persetujuan.sla_resume}`);
}
}
return '-';
},
}, },
sla_final: { sla_final: {
title: 'SLA Final', title: 'SLA Final'
render: (item, data) => {
if(data.penawaran_tender.persetujuan) {
if (data.penawaran_tender.persetujuan.sla_final) {
return window.formatTanggalIndonesia(`${data.penawaran_tender.persetujuan.sla_final}`);
}
}
return '-';
}
}, },
catatan: { catatan: {
title: 'Catatan', title: 'Catatan',

View File

@@ -72,6 +72,15 @@
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em> <em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div id="{{ $route[0] }}_div_sla" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
SLA (dalam satuan hari)
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="inputku input" name="{{$route[0]}}_sla" id="{{$route[0]}}_sla" placeholder="dalam satuan hari" type="text" />
<em id="{{$route[0]}}_sla_msg" class="alert text-danger text-sm"></em>
</div>
</div>
<div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Region Region

View File

@@ -13,6 +13,7 @@
$("#{{ $route[0] }}_div_jenis_pilihan").show(); $("#{{ $route[0] }}_div_jenis_pilihan").show();
$("#{{ $route[0] }}_div_catatan").hide(); $("#{{ $route[0] }}_div_catatan").hide();
$("#{{ $route[0] }}_div_region").hide(); $("#{{ $route[0] }}_div_region").hide();
$("#{{ $route[0] }}_div_sla").hide();
$("#{{ $route[0] }}_div_catatan2").show(); $("#{{ $route[0] }}_div_catatan2").show();
// prepare data // prepare data
setData(); setData();
@@ -95,6 +96,7 @@
$("#{{ $route[0] }}_div_jenis_pilihan").show(); $("#{{ $route[0] }}_div_jenis_pilihan").show();
$("#{{ $route[0] }}_catatan").val(''); $("#{{ $route[0] }}_catatan").val('');
$("#{{ $route[0] }}_div_catatan").hide(); $("#{{ $route[0] }}_div_catatan").hide();
$("#{{ $route[0] }}_div_catatan2").show(); $("#{{ $route[0] }}_div_catatan2").show();
} }
else else
@@ -103,6 +105,7 @@
$("#{{ $route[0] }}_div_jenis_pilihan").hide(); $("#{{ $route[0] }}_div_jenis_pilihan").hide();
$("#{{ $route[0] }}_div_catatan").show(); $("#{{ $route[0] }}_div_catatan").show();
$("#{{ $route[0] }}_div_catatan2").hide(); $("#{{ $route[0] }}_div_catatan2").hide();
$("#{{ $route[0] }}_div_sla").hide();
} }
}); });
@@ -119,6 +122,7 @@
let region = $("#{{$route[0]}}_region").val(); let region = $("#{{$route[0]}}_region").val();
let catatan = $("#{{$route[0]}}_catatan").val(); let catatan = $("#{{$route[0]}}_catatan").val();
let catatan2 = $("#{{$route[0]}}_catatan2").val(); let catatan2 = $("#{{$route[0]}}_catatan2").val();
let sla = $("#{{$route[0]}}_sla").val();
if(jenis_penilaian==0) if(jenis_penilaian==0)
jenis_penilaian=''; jenis_penilaian='';
@@ -134,6 +138,7 @@
input_data.region= region; input_data.region= region;
input_data.catatan = catatan; input_data.catatan = catatan;
input_data.catatan2 = catatan2; input_data.catatan2 = catatan2;
input_data.sla = sla;
let useURL= '{{ route($route[0].'.update', $id) }}'; let useURL= '{{ route($route[0].'.update', $id) }}';
$.ajax({ $.ajax({
@@ -164,6 +169,11 @@
$("#{{$route[0]}}_region").addClass(" border-danger"); $("#{{$route[0]}}_region").addClass(" border-danger");
$("#{{$route[0]}}_region_msg").text(value); $("#{{$route[0]}}_region_msg").text(value);
} }
if ("sla" === index) {
$("#{{$route[0]}}_sla").addClass(" border-danger");
$("#{{$route[0]}}_sla_msg").text(value);
}
}); });
} }
else else
@@ -204,11 +214,18 @@
{ {
// INTERNAL, show region // INTERNAL, show region
$("#{{ $route[0] }}_div_region").show(); $("#{{ $route[0] }}_div_region").show();
$("#{{ $route[0] }}_div_sla").hide();
} }
else else if('2' == idNya)
{
$("#{{ $route[0] }}_div_sla").show();
$("#{{ $route[0] }}_div_region").hide();
}
else if('0' == idNya)
{ {
// selain INTERNAL, hide region // selain INTERNAL, hide region
$("#{{ $route[0] }}_div_region").hide(); $("#{{ $route[0] }}_div_region").hide();
$("#{{ $route[0] }}_div_sla").hide();
} }
}); });

View File

@@ -60,6 +60,15 @@
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em> <em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div id="{{ $route[0] }}_div_sla" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
SLA (dalam satuan hari)
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="inputku input" name="{{$route[0]}}_sla" id="{{$route[0]}}_sla" placeholder="dalam satuan hari" type="text" />
<em id="{{$route[0]}}_sla_msg" class="alert text-danger text-sm"></em>
</div>
</div>
<div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Region Region

View File

@@ -52,8 +52,7 @@
<center> <center>
<h2 style="text-decoration: underline;">SURAT PERINTAH KERJA</h2> <h2 style="text-decoration: underline;">SURAT PERINTAH KERJA</h2>
<p> <p>
No. XXX / PJ / JKT / <?php echo date('M'); ?> No. {{ $penawaran->spk_no }}
/ FR / <?php echo date('Y'); ?>
<data id="date"></data> <data id="date"></data>
</p> </p>
<p>Tanggal: <?php echo date('d F Y'); ?></p> <p>Tanggal: <?php echo date('d F Y'); ?></p>
@@ -66,88 +65,105 @@
<h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3> <h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3>
<br/> <br/>
<p style="text-align: justify;"> <p style="text-align: justify;">
Berdasarkan surat penawaran Saudara <span style="color: red;">[{{$penawaran->persetujuan->nomor_proposal_penawaran}}]</span> tanggal <span style="color: red;">[{{ formatTanggalIndonesia($penawaran->persetujuan->tanggal_proposal_penawaran) }}]</span> atas nama <span style="color: red;">{{ $data->debiture->name }}</span>, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini. Berdasarkan surat penawaran Saudara <span style="color: red;">{{ $persetujuan_no_proposal }}</span> tanggal <span style="color: red;">{{ $persetujuan_tgl_proposal }}</span> atas nama <span style="color: red;">{{ $data->debiture->name }}</span>, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini.
</p> </p>
<br/> <br/>
<h3>Rincian Penilaian</h3> <h3>Rincian Penilaian</h3>
<table border="2" width="100%"> <table border="2" width="100%">
<tr> <tr>
<td></td> <td width="25%">Tujuan Penilaian</td>
</tr>
<tr>
<td>Tujuan Penilaian</td>
<td>:</td> <td>:</td>
<td> <td width="75%">
<span style="color: red;">{{ $data->tujuanPenilaian->name }}</span> <span style="color: red;">{{ $data->tujuanPenilaian->name }}</span>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>Jenis Laporan</td> <td width="20%">Jenis Laporan</td>
<td>:</td> <td>:</td>
<td> <td>
<span style="color: red;">{{ $penawaran->jenis_laporan_name }}</span> <span style="color: red;">{{ $penawaran->jenis_laporan_name }}</span>
</td> </td>
</tr> </tr>
<tr> @php $i=1; @endphp
<td>Data Jaminan</td> @foreach ($data->debiture->documents as $dokumen)
<td>:</td> <tr valign="top">
<td> <td width="25%">Lokasi Jaminan {{ $i }}</td>
<span style="color: red;">{{ $data->jenis_jaminan_name }}, {{ $data->dokumen_jaminan_address }}</span> <td>:</td>
</td> <td width="75%">
</tr> <span style="color: red;">{{ formatAlamat($dokumen) }}</span>
</td>
</tr>
<tr valign="top">
<td>Dokumen Jaminan {{ $i }}</td>
<td>:</td>
<td>
<span style="color: red;">
@foreach ($data->dokumenjaminan as $dokumen_jaminans)
@if ($dokumen->id== $dokumen_jaminans->id)
@php $details = $dokumen_jaminans->detail; @endphp
@foreach ($details as $index => $detailku)
{{ $detailku->name }}{{ $index === count($details) - 1 ? '' : ', ' }}
@endforeach
@endif
@endforeach
</span>
</td>
</tr>
@php $i++; @endphp
@endforeach
<tr> <tr>
<td>Fee / Harga Penilaian</td> <td>Fee / Harga Penilaian</td>
<td>:</td> <td>:</td>
<td> <td>
<span style="color: red;">{{ formatRupiah($penawaran->detail_penawaran_biaya_penawaran) }}</span> <span style="color: red;">{{ formatRupiah($penawaran->detail_penawaran_biaya_penawaran) }}</span> (include ppn 11%)
</td> </td>
</tr> </tr>
<tr> <tr>
<td>Jangka Waktu</td> <td>Jangka Waktu</td>
<td>:</td> <td>:</td>
<td><span style="color: red;"> {{ formatTanggalIndonesia($penawaran->start_date) }} - {{ formatTanggalIndonesia($penawaran->end_date) }}</span></td> <td><span style="color: red;"> {{ $jangka_waktu }}</span></td>
</tr> </tr>
<tr> <tr>
<td colspan="2" style="text-align: center;">i</td> <td colspan="2" style="text-align: center;">i</td>
<td> <td>
Resume akan disampaikan dalam <span style="color: red;">[{{ hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume) }}]</span> hari kerja terhitung setelah proses inspeksi dilaksanakan serta data yang diperlukan diterima dan lengkap, kecuali terdapat kesepakatan lain antara kedua belah pihak. Resume akan disampaikan dalam <span style="color: red;">{{ $persetujuan_sla_resume }}</span> hari kerja terhitung setelah proses inspeksi dilaksanakan serta data yang diperlukan diterima dan lengkap, kecuali terdapat kesepakatan lain antara kedua belah pihak.
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" style="text-align: center;">ii</td> <td colspan="2" style="text-align: center;">ii</td>
<td> <td>
Laporan penilaian lengkap akan disampaikan dalam <span style="color: red;">[{{ hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_final) }}]</span> hari kerja sesuai proposal penawaran. Laporan penilaian lengkap akan disampaikan dalam <span style="color: red;">{{ $persetujuan_sla_final }}</span> hari kerja sesuai proposal penawaran.
</td> </td>
</tr> </tr>
</table> </table>
<br/> <br/>
<h3>Dengan ketentuan dalam melaksanakan pekerjaan sebagai berikut:</h3> <h3>Dengan ketentuan dalam melaksanakan pekerjaan sebagai berikut:</h3>
<table border="0" width="100%"> <table border="0" width="100%">
<tr> <tr valign="top">
<td>1.</td> <td>1.</td>
<td> <td>
Pembayaran sebesar 100% dari total jasa dibayarkan setelah Bank menerima buku laporan dan bukti penagihan asli (invoice / kwitansi dan faktur pajak). Pembayaran sebesar 100% dari total jasa dibayarkan setelah Bank menerima buku laporan dan bukti penagihan asli (invoice / kwitansi dan faktur pajak).
</td> </td>
</tr> </tr>
<tr> <tr valign="top">
<td>2.</td> <td>2.</td>
<td> <td>
Segala bentuk aktivitas komunikasi lisan atau tertulis antara lain kelengkapan dokumen, imbalan jasa, laporan penilaian dan lainnya baik dari Nasabah atau KJPP harus melalui Bank. Segala bentuk aktivitas komunikasi lisan atau tertulis antara lain kelengkapan dokumen, imbalan jasa, laporan penilaian dan lainnya baik dari Nasabah atau KJPP harus melalui Bank.
</td> </td>
</tr> </tr>
<tr> <tr valign="top">
<td>3.</td> <td>3.</td>
<td> <td>
Selanjutnya sebagai tanda persetujuan, setelah saudara tandatangani di atas materai Rp 10.000,- (materai sesuai ketentuan yang berlaku) agar dikembalikan kepada kami selambat-lambatnya 1 (satu) hari kerja setelah tanggal surat ini. Selanjutnya sebagai tanda persetujuan, setelah saudara tandatangani di atas materai Rp 10.000,- (materai sesuai ketentuan yang berlaku) agar dikembalikan kepada kami selambat-lambatnya 1 (satu) hari kerja setelah tanggal surat ini.
</td> </td>
</tr> </tr>
<tr> <tr valign="top">
<td>4.</td> <td>4.</td>
<td> <td>
Apabila diperlukan surat representasi wajib diberikan bersamaan dengan dikembalikannya SPK kepada kami. Apabila diperlukan surat representasi wajib diberikan bersamaan dengan dikembalikannya SPK kepada kami.
</td> </td>
</tr> </tr>
<tr> <tr valign="top">
<td>5.</td> <td>5.</td>
<td> <td>
Ketentuan lain mengacu pada perjanjian kerjasama yang telah disepakati. Ketentuan lain mengacu pada perjanjian kerjasama yang telah disepakati.

View File

@@ -43,7 +43,8 @@
<h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3> <h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3>
<br/> <br/>
<p style="text-align: justify;"> <p style="text-align: justify;">
Berdasarkan surat penawaran Saudara <span style="color: red;">[No proposal penawaran sesuai data pemeriksaan persetujuan penawaran]</span> tanggal <span style="color: red;">[Tgl proposal penawaran sesuai data pemeriksaan persetujuan penawaran]</span> atas nama <span style="color: red;">[Nama Debitur sesuai data register]</span>, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini. Berdasarkan surat penawaran Saudara <span style="color: red;">
[No proposal penawaran sesuai data pemeriksaan persetujuan penawaran]</span> tanggal <span style="color: red;">[Tgl proposal penawaran sesuai data pemeriksaan persetujuan penawaran]</span> atas nama <span style="color: red;">[Nama Debitur sesuai data register]</span>, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini.
</p> </p>
<br/> <br/>
<h3>Rincian Penilaian</h3> <h3>Rincian Penilaian</h3>
@@ -87,13 +88,15 @@
<tr> <tr>
<td colspan="2" style="text-align: center;">i</td> <td colspan="2" style="text-align: center;">i</td>
<td> <td>
Resume akan disampaikan dalam <span style="color: red;">[SLA Resume - Data Pemeriksaan Persetujuan Penawaran]</span> hari kerja terhitung setelah proses inspeksi dilaksanakan serta data yang diperlukan diterima dan lengkap, kecuali terdapat kesepakatan lain antara kedua belah pihak. Resume akan disampaikan dalam <span style="color: red;">
[SLA Resume - Data Pemeriksaan Persetujuan Penawaran]</span> hari kerja terhitung setelah proses inspeksi dilaksanakan serta data yang diperlukan diterima dan lengkap, kecuali terdapat kesepakatan lain antara kedua belah pihak.
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="2" style="text-align: center;">ii</td> <td colspan="2" style="text-align: center;">ii</td>
<td> <td>
Laporan penilaian lengkap akan disampaikan dalam <span style="color: red;">[SLA Final - Data Pemeriksaan Persetujuan Penawaran]</span> hari kerja sesuai proposal penawaran. Laporan penilaian lengkap akan disampaikan dalam <span style="color: red;">
[SLA Final - Data Pemeriksaan Persetujuan Penawaran]</span> hari kerja sesuai proposal penawaran.
</td> </td>
</tr> </tr>
</table> </table>

File diff suppressed because one or more lines are too long

View File

@@ -454,37 +454,37 @@
}); });
// basic data surveyor // basic data surveyor
$basicDataRoutes = [ $basicDataRoutes = [
'bentuk-tanah' => 'Bentuk Tanah', 'bentuk-tanah' => 'Bentuk Tanah',
'kontur-tanah' => 'Kontur Tanah', 'kontur-tanah' => 'Kontur Tanah',
'posisi-kavling' => 'Posisi Kavling', 'posisi-kavling' => 'Posisi Kavling',
'ketinggian-tanah' => 'Ketinggian Tanah', 'ketinggian-tanah' => 'Ketinggian Tanah',
'kondisi-fisik-tanah' => 'Kondisi Fisik Tanah', 'kondisi-fisik-tanah' => 'Kondisi Fisik Tanah',
'jenis-bangunan' => 'Jenis Bangunan', 'jenis-bangunan' => 'Jenis Bangunan',
'kondisi-bangunan' => 'Kondisi Bangunan', 'kondisi-bangunan' => 'Kondisi Bangunan',
'sifat-bangunan' => 'Sifat Bangunan', 'sifat-bangunan' => 'Sifat Bangunan',
'spek-bangunan' => 'Speksifikasi Bangunan', 'spek-bangunan' => 'Speksifikasi Bangunan',
'spek-kategori-bangunan' => 'Speksifikasi Kategori Bangunan', 'spek-kategori-bangunan' => 'Speksifikasi Kategori Bangunan',
'sarana-pelengkap' => 'Sarana Pelengkap', 'sarana-pelengkap' => 'Sarana Pelengkap',
'lalu-lintas-lokasi' => 'Lalu Lintas', 'lalu-lintas-lokasi' => 'Lalu Lintas',
'tingkat-keramaian' => 'Tingkat Keramaian', 'tingkat-keramaian' => 'Tingkat Keramaian',
'gol-mas-sekitar' => 'Golongan Masyarakat Sekitar', 'gol-mas-sekitar' => 'Golongan Masyarakat Sekitar',
'lantai-unit' => 'Lantai Unit', 'lantai-unit' => 'Lantai Unit',
'view-unit' => 'View Unit', 'view-unit' => 'View Unit',
'bentuk-unit' => 'Bentuk unit', 'bentuk-unit' => 'Bentuk unit',
'perkerasan-jalan' => 'Perkerasan jalan', 'perkerasan-jalan' => 'Perkerasan jalan',
'jenis-pesawat' => 'Jenis pesawat', 'jenis-pesawat' => 'Jenis pesawat',
'model-alat-berat' => 'Model Alat Berat', 'model-alat-berat' => 'Model Alat Berat',
'jenis-kapal' => 'Jenis kapal', 'jenis-kapal' => 'Jenis kapal',
'jenis-kendaraan' => 'Jenis kendaraan', 'jenis-kendaraan' => 'Jenis kendaraan',
'jenis-unit' => 'Jenis unit', 'jenis-unit' => 'Jenis unit',
'terletak-area' => 'Terletak di Area', 'terletak-area' => 'Terletak di Area',
'merupakan-daerah' => 'Merupakan Daerah', 'merupakan-daerah' => 'Merupakan Daerah',
'posisi-unit' => 'Posisi unit', 'posisi-unit' => 'Posisi unit',
'bentuk-unit' => 'Bentuk unit', 'bentuk-unit' => 'Bentuk unit',
'fasilitas-objek' => 'Fasilitas Umum Dekat Objek', 'fasilitas-objek' => 'Fasilitas Umum Dekat Objek',
]; ];
foreach ($basicDataRoutes as $route => $title) { foreach ($basicDataRoutes as $route => $title) {
@@ -560,15 +560,15 @@ $basicDataRoutes = [
$trail->push('Penilai', route('penilai.index')); $trail->push('Penilai', route('penilai.index'));
}); });
Breadcrumbs::for('penilai.show', function (BreadcrumbTrail $trail) { Breadcrumbs::for('penilai.show', function (BreadcrumbTrail $trail) {
$trail->parent('penilai'); $trail->parent('penilai');
$trail->push('Detail Penilai'); $trail->push('Detail Penilai');
}); });
Breadcrumbs::for('penilai.lampiran', function (BreadcrumbTrail $trail) { Breadcrumbs::for('penilai.lampiran', function (BreadcrumbTrail $trail) {
$trail->parent('penilai'); $trail->parent('penilai');
$trail->push('Lampiran Foto dan Dokument'); $trail->push('Lampiran Foto dan Dokument');
}); });
Breadcrumbs::for('sla', function (BreadcrumbTrail $trail) { Breadcrumbs::for('sla', function (BreadcrumbTrail $trail) {

View File

@@ -100,6 +100,6 @@ Breadcrumbs::for('registrasifinal.show', function (BreadcrumbTrail $trail) {
}); });
Breadcrumbs::for('registrasifinal.edit', function (BreadcrumbTrail $trail) { Breadcrumbs::for('registrasifinal.edit', function (BreadcrumbTrail $trail) {
$trail->parent('registrasifinal'); $trail->parent('registrasifinal');
$trail->push('Tambah registrasifinal'); $trail->push('Tambah Registrasi Final');
}); });
// registrasi final // registrasi final

View File

@@ -514,7 +514,7 @@ Route::middleware(['auth'])->group(function () {
Route::post('store', [SurveyorController::class, 'store'])->name('store'); Route::post('store', [SurveyorController::class, 'store'])->name('store');
Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah'); Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah');
Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal'); Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal');
Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); Route::get('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
Route::put('storeFreeze', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze'); Route::put('storeFreeze', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze');
Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto'); Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto');
Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding'); Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding');