Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender
This commit is contained in:
@@ -107,24 +107,141 @@
|
||||
function onLastnumberCodePenawaran()
|
||||
: string
|
||||
{
|
||||
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
|
||||
// ambil code terakhir
|
||||
$maxCode = PenawaranTender::max('code');
|
||||
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
|
||||
// $penawaran = PenawaranTender::latest()->first();
|
||||
$penawaran = PenawaranTender::where('code', '=', $maxCode)->first();
|
||||
$code_penawaran_last = '';
|
||||
$noUrutAkhirString = sprintf("%04s", 1);
|
||||
if ($penawaran) {
|
||||
$code_penawaran_last = substr($maxCode, -4);
|
||||
$penawaran = PenawaranTender::where('code','=',$maxCode)->first();
|
||||
$code_penawaran_last='';
|
||||
|
||||
// nomor di set 0001
|
||||
$noUrutAkhirString = sprintf("%04s", 1);
|
||||
if($penawaran)
|
||||
{
|
||||
$code_penawaran_last = substr ($maxCode, -4);
|
||||
$year_penawaran_last = Carbon::parse($penawaran->created_at)->year;
|
||||
$year_now = Carbon::now()->year;
|
||||
if ($year_now == $year_penawaran_last) {
|
||||
$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;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ use Illuminate\Http\Request;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Lpj\Models\PenilaianTeam;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Exports\PermohonanExport;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
@@ -65,10 +66,33 @@ class ActivityController extends Controller
|
||||
})
|
||||
->get();
|
||||
|
||||
|
||||
|
||||
|
||||
return view('lpj::activity.progres_activity.index', compact('teamsActivity'));
|
||||
}
|
||||
|
||||
|
||||
function updateTeamAssingment(Request $request) {
|
||||
|
||||
try {
|
||||
$id = $request->input('id');
|
||||
$user = PenilaianTeam::where('penilaian_id', $id)->get();
|
||||
if ($user) {
|
||||
foreach ($user as $item) {
|
||||
if($item->role == 'surveyor') {
|
||||
$item->update(['user_id' => $request->surveyor_id]);
|
||||
}
|
||||
}
|
||||
return redirect()->route('activity.progres.index')->with('success', 'Surveyor berhasil diganti');
|
||||
}
|
||||
|
||||
} catch (\Throwable $th) {
|
||||
return redirect()->route('activity.progres.index')->with('success', $th->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function senior()
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Inspeksi;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class PenilaiController extends Controller
|
||||
@@ -21,6 +22,22 @@ class PenilaiController extends Controller
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function lampiran($id){
|
||||
$permohonan = Permohonan::with('debiture.documents')->find($id);
|
||||
|
||||
$jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id;
|
||||
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
|
||||
$formFoto = null;
|
||||
if ($inpeksi) {
|
||||
$formFoto = json_decode($inpeksi->foto_form, true);
|
||||
}
|
||||
|
||||
|
||||
return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('lpj::create');
|
||||
|
||||
@@ -116,7 +116,7 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') {
|
||||
$status = 'registered';
|
||||
$status = $permohonan->status;
|
||||
} else {
|
||||
$status = 'assign';
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
}
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message'] ['message_ajax'] = ["no ajax request"];
|
||||
$data['message']['message_ajax'] = ["no ajax request"];
|
||||
}
|
||||
|
||||
return response()->json($data);
|
||||
@@ -149,6 +149,7 @@
|
||||
if ($tindakan == 0) {
|
||||
$dataku['jenis_penilaian_id'] = $request->jenis_penilaian;
|
||||
$dataku['region_id'] = $request->region;
|
||||
$dataku['sla'] = $request->sla;
|
||||
$dataku['status'] = 'registered';
|
||||
if ($request->catatan2) {
|
||||
$dataku['registrasi_catatan'] = $request->catatan2;
|
||||
@@ -205,6 +206,12 @@
|
||||
$validateIt['region'] = ['required'];
|
||||
$messageIt ['region.required'] = 'Silahkan pilih Region';
|
||||
}
|
||||
else
|
||||
{
|
||||
$validateIt['sla'] = ['required'];
|
||||
$messageIt ['sla.required'] = 'Silahkan isi SLA';
|
||||
}
|
||||
|
||||
} elseif ($tindakan == 1) {
|
||||
$validateIt['catatan'] = ['required'];
|
||||
$messageIt ['catatan.required'] = 'Silahkan isi Catatan';
|
||||
|
||||
@@ -104,12 +104,11 @@ use Illuminate\Support\Facades\Auth;
|
||||
|
||||
}
|
||||
|
||||
// data dokumen_spk
|
||||
if($obj->dokumen)
|
||||
// data spk_dokumen_path
|
||||
if($obj->penawaran->spk_dokumen_path)
|
||||
{
|
||||
$spkpenawaran_path = Storage::url($obj->dokumen);
|
||||
// dd($spkpenawaran_path);
|
||||
$data[$i]->dokumen = $spkpenawaran_path;
|
||||
$spk_dokumen_path = Storage::url($obj->penawaran->spk_dokumen_path);
|
||||
$data[$i]->penawaran->spk_dokumen_path = $spk_dokumen_path;
|
||||
}
|
||||
|
||||
$i++;
|
||||
@@ -147,10 +146,14 @@ use Illuminate\Support\Facades\Auth;
|
||||
}
|
||||
|
||||
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')
|
||||
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_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('penawaran.id','=', $id)
|
||||
->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',
|
||||
'kjpp.name as kjpp_name',
|
||||
'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();
|
||||
|
||||
$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',
|
||||
'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)
|
||||
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
return view('lpj::spk.edit', compact('data', 'penawaran'));
|
||||
// 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 = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume);
|
||||
$sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$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
|
||||
{
|
||||
// init
|
||||
$data1 = array();
|
||||
$dataPermohonan = array();
|
||||
$data1 = [];
|
||||
// $dataPermohonan = array();
|
||||
$dataPenawaran = [];
|
||||
// data
|
||||
|
||||
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
|
||||
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
|
||||
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
|
||||
->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi')
|
||||
->where('detail_penawaran.status','=',1)
|
||||
->where('penawaran.id','=', $id)
|
||||
->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',
|
||||
'kjpp.name as kjpp_name',
|
||||
'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();
|
||||
|
||||
$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')
|
||||
->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)
|
||||
$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;
|
||||
|
||||
// update table permohonan
|
||||
$dataPermohonan=['dokumen' => $newFileNameWithPath];
|
||||
$data->update($dataPermohonan);
|
||||
// $dataPermohonan=['dokumen' => $newFileNameWithPath];
|
||||
// $data->update($dataPermohonan);
|
||||
// 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
|
||||
$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 = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume);
|
||||
$sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$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();
|
||||
Storage::put('public/'.$newFileNameWithPath,$content);
|
||||
|
||||
@@ -260,8 +389,10 @@ use Illuminate\Support\Facades\Auth;
|
||||
}
|
||||
|
||||
public function download($id) {
|
||||
$document = Permohonan::find($id);
|
||||
|
||||
return response()->download(storage_path('app/public/' .$document->dokumen));
|
||||
// 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->spk_dokumen_path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,12 +39,23 @@ use Modules\Lpj\Models\Teams;
|
||||
use Modules\Lpj\Models\Lantai;
|
||||
use Modules\Lpj\Models\Inspeksi;
|
||||
use Modules\Lpj\Models\ViewUnit;
|
||||
use Modules\Lpj\Models\JenisUnit;
|
||||
use Modules\Lpj\Models\BentukUnit;
|
||||
use Modules\Lpj\Models\PosisiUnit;
|
||||
use Modules\Lpj\Models\TerletakArea;
|
||||
use Modules\Lpj\Models\FasilitasObjek;
|
||||
use Modules\Lpj\Models\MerupakanDaerah;
|
||||
use Modules\Lpj\Models\ObjekJaminan;
|
||||
use Modules\Lpj\Models\ModelAlatBerat;
|
||||
use Modules\Lpj\Models\JenisPesawat;
|
||||
use Modules\Lpj\Models\DokumenJaminan;
|
||||
use Modules\Lpj\Models\DetailDokumenJaminan;
|
||||
use Modules\Lpj\Models\JenisKapal;
|
||||
use Modules\Lpj\Models\JenisKendaraan;
|
||||
use Modules\Lpj\Models\RuteJaminan;
|
||||
use Modules\Lpj\Models\JenisJaminan;
|
||||
use Modules\Lpj\Models\HubunganPemilikJaminan;
|
||||
use Modules\Lpj\Models\HubunganPenghuniJaminan;
|
||||
use Modules\Lpj\Models\AnalisaUnit;
|
||||
use Modules\Lpj\Models\GolonganMasySekitar;
|
||||
use Modules\Lpj\Models\TingkatKeramaian;
|
||||
@@ -105,8 +116,6 @@ class SurveyorController extends Controller
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
|
||||
|
||||
|
||||
|
||||
$denah = Denah::where('permohonan_id', $id)->get();
|
||||
$fotojaminan = FotoJaminan::where('permohonan_id', $id)->get();
|
||||
$analisa = Analisa::with('analisaUnit', 'analisaTanahBangunan', 'analisaLingkungan', 'analisaFakta', 'jenisJaminan')
|
||||
@@ -170,6 +179,8 @@ class SurveyorController extends Controller
|
||||
{
|
||||
$data = $request->validated();
|
||||
|
||||
|
||||
|
||||
if (!$data) {
|
||||
return response()->json(['success' => false, 'message' => 'Invalid data'], 400);
|
||||
}
|
||||
@@ -181,20 +192,21 @@ class SurveyorController extends Controller
|
||||
$rules = $this->getActionSpecificRules($data, $action, $request);
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
if ($inspeksi) {
|
||||
$inspeksi->update(['data_form' => json_encode($rules)]);
|
||||
} else {
|
||||
|
||||
if (!$inspeksi) {
|
||||
Inspeksi::create([
|
||||
'permohonan_id' => $request->permohonan_id,
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'data_form' => json_encode($rules),
|
||||
'name' => $request->type,
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
'name' => $request->input('type'),
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
]);
|
||||
} else {
|
||||
$inspeksi->update(['data_form' => json_encode($rules)]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $rules], 200);
|
||||
return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $data], 200);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500);
|
||||
@@ -415,11 +427,11 @@ class SurveyorController extends Controller
|
||||
try {
|
||||
// $cekButton = $this->checkButtonStatus($id);
|
||||
// if (!$cekButton->buttonDisable) {
|
||||
$permohonan = Permohonan::find($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
]);
|
||||
return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200);
|
||||
$permohonan = Permohonan::find($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
]);
|
||||
return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200);
|
||||
// } else {
|
||||
// return response()->json(['error' => 'Something went wrong'], 400);
|
||||
// }
|
||||
@@ -522,6 +534,43 @@ class SurveyorController extends Controller
|
||||
->with('error', 'Gagal membuat jadwal: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function storeDataPembanding(Request $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
if (!$data) {
|
||||
return response()->json(['success' => false, 'message' => 'Invalid data'], 400);
|
||||
}
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
// $action = $request->input('type');
|
||||
// $rules = $this->getActionSpecificRules($data, $action, $request);
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
|
||||
if (!$inspeksi) {
|
||||
Inspeksi::create([
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'data_pembanding' => json_encode($data),
|
||||
'name' => $request->input('type'),
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
]);
|
||||
} else {
|
||||
$inspeksi->update(['data_pembanding' => json_encode($data)]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => json_encode($data)], 200);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Form inspeksi.
|
||||
*/
|
||||
@@ -566,11 +615,14 @@ class SurveyorController extends Controller
|
||||
$jenisKapal = JenisKapal::all();
|
||||
$jenisPesawat = JenisPesawat::all();
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
|
||||
// return response()->json([
|
||||
// 'per'=>
|
||||
// $permohonan]);
|
||||
|
||||
$hubCadeb = HubunganPemilikJaminan::all();
|
||||
$hubPenghuni = HubunganPenghuniJaminan::all();
|
||||
$jenisJaminan = JenisJaminan::all();
|
||||
$fasilitasObjek = FasilitasObjek::all();
|
||||
$merupakanDaerah = MerupakanDaerah::all();
|
||||
$terletakDiArea = TerletakArea::all();
|
||||
$posisiUnit = PosisiUnit::all();
|
||||
$bentukUnit = BentukUnit::all();
|
||||
|
||||
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
@@ -606,7 +658,15 @@ class SurveyorController extends Controller
|
||||
'jenisKendaraan',
|
||||
'jenisKapal',
|
||||
'jenisPesawat',
|
||||
'modelAlatBerat'
|
||||
'modelAlatBerat',
|
||||
'hubCadeb',
|
||||
'jenisJaminan',
|
||||
'fasilitasObjek',
|
||||
'merupakanDaerah',
|
||||
'terletakDiArea',
|
||||
'posisiUnit',
|
||||
'bentukUnit',
|
||||
'hubPenghuni'
|
||||
));
|
||||
}
|
||||
|
||||
@@ -681,6 +741,7 @@ class SurveyorController extends Controller
|
||||
$branches = Branch::all();
|
||||
$provinces = Province::all();
|
||||
|
||||
$data = $this->getCommonData();
|
||||
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
$forminspeksi = null;
|
||||
@@ -690,7 +751,7 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
// return response()->json($forminspeksi);
|
||||
return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces','forminspeksi'));
|
||||
return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces', 'forminspeksi', 'data'));
|
||||
}
|
||||
|
||||
|
||||
@@ -779,6 +840,12 @@ class SurveyorController extends Controller
|
||||
'model-alat-berat' => ['Model Alat Berat', 'model-alat-berat', ModelAlatBerat::class],
|
||||
'jenis-kapal' => ['Jenis Kapal', 'jenis-kapal', JenisKapal::class],
|
||||
'jenis-kendaraan' => ['Jenis Kendaraan', 'jenis-kendaraan', JenisKendaraan::class],
|
||||
'jenis-unit' => ['Jenis unit', 'jenis-unit', JenisUnit::class],
|
||||
'terletak-area' => ['Terletak di Area', 'terletak-area', TerletakArea::class],
|
||||
'merupakan-daerah' => ['Merupakan Daerah', 'merupakan-daerah', MerupakanDaerah::class],
|
||||
'posisi-unit' => ['Posisi unit', 'posisi-unit', PosisiUnit::class],
|
||||
'bentuk-unit' => ['Bentuk unit', 'bentuk-unit', BentukUnit::class],
|
||||
'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek', FasilitasObjek::class],
|
||||
];
|
||||
|
||||
|
||||
@@ -830,8 +897,92 @@ class SurveyorController extends Controller
|
||||
->route('basicdata.' . $type . '.index')
|
||||
->with('success', 'Updated successfully');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function update_analisa($id, Request $request)
|
||||
{
|
||||
try {
|
||||
$permohonan = Permohonan::with([
|
||||
'user',
|
||||
'debiture.province',
|
||||
'debiture.city',
|
||||
'debiture.district',
|
||||
'debiture.village',
|
||||
'branch',
|
||||
'tujuanPenilaian',
|
||||
'penilaian',
|
||||
'documents',
|
||||
])->findOrFail($id);
|
||||
|
||||
$jenisAssetUpdated = false;
|
||||
if ($request->input('types') == 'jenis_asset') {
|
||||
$this->updateJenisAsset($permohonan, $request);
|
||||
$jenisAssetUpdated = true;
|
||||
}
|
||||
|
||||
if (in_array($request->input('types'), ['analisa_tanah', 'analisa_bangunan', 'analisa_unit'])) {
|
||||
$key = match ($request->input('types')) {
|
||||
'analisa_tanah' => 'luas_tanah',
|
||||
'analisa_bangunan' => 'luas_bangunan',
|
||||
'analisa_unit' => 'luas_unit',
|
||||
};
|
||||
|
||||
$this->updateDetails($permohonan, $key, $request->input($key));
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data berhasil disimpan',
|
||||
'jenis_asset' => $jenisAssetUpdated,
|
||||
], 200);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function updateJenisAsset($permohonan, $request)
|
||||
{
|
||||
$jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id;
|
||||
DokumenJaminan::where('permohonan_id', $permohonan->id)
|
||||
->where('jenis_jaminan_id', $jenis_jaminan_id)
|
||||
->update([
|
||||
'jenis_jaminan_id' => $request->input('jenis_asset'),
|
||||
]);
|
||||
}
|
||||
|
||||
private function updateDetails($permohonan, $key, $newValue)
|
||||
{
|
||||
$document = $permohonan->debiture->documents->first();
|
||||
|
||||
if (!$document) {
|
||||
throw new \Exception("Document not found");
|
||||
}
|
||||
|
||||
$detailsUpdate = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->first();
|
||||
|
||||
if (!$detailsUpdate) {
|
||||
throw new \Exception("DetailDokumenJaminan not found");
|
||||
}
|
||||
|
||||
$datas = json_decode($detailsUpdate->details, true) ?? [];
|
||||
|
||||
if (is_numeric($newValue)) {
|
||||
$newValue = [$key => $newValue];
|
||||
}
|
||||
|
||||
if (!is_array($newValue)) {
|
||||
throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string");
|
||||
}
|
||||
|
||||
foreach ($newValue as $subKey => $value) {
|
||||
$datas[$subKey] = $value; // Update atau tambahkan key baru
|
||||
}
|
||||
|
||||
$detailsUpdate->update([
|
||||
'details' => json_encode($datas),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -931,6 +1082,12 @@ class SurveyorController extends Controller
|
||||
'Model alat berat' => ModelAlatBerat::class,
|
||||
'Jenis kapal' => JenisKapal::class,
|
||||
'Jenis kendaraan' => JenisKendaraan::class,
|
||||
'Terletak di Area' => TerletakArea::class,
|
||||
'Posisi unit' => PosisiUnit::class,
|
||||
'Bentuk unit' => BentukUnit::class,
|
||||
'Fasilitas Umum Dekat Objek' => FasilitasObjek::class,
|
||||
'Merupakan Daerah' => MerupakanDaerah::class,
|
||||
'Jenis unit' => JenisUnit::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -1067,6 +1224,12 @@ class SurveyorController extends Controller
|
||||
'model-alat-berat' => ModelAlatBerat::class,
|
||||
'jenis-kapal' => JenisKapal::class,
|
||||
'jenis-kendaraan' => JenisKendaraan::class,
|
||||
'terletak-area' => TerletakArea::class,
|
||||
'posisi-unit' => PosisiUnit::class,
|
||||
'bentuk-unit' => BentukUnit::class,
|
||||
'fasilitas-objek' => FasilitasObjek::class,
|
||||
'merupakan-daerah' => MerupakanDaerah::class,
|
||||
'jenis-unit' => JenisUnit::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -1098,6 +1261,13 @@ class SurveyorController extends Controller
|
||||
'modelAlatBerat' => ModelAlatBerat::all(),
|
||||
'jenisKapal' => JenisKapal::all(),
|
||||
'jenisKendaraan' => JenisKendaraan::all(),
|
||||
'terletakArea' => TerletakArea::all(),
|
||||
'posisiUnit' => PosisiUnit::all(),
|
||||
'bentukUnit' => BentukUnit::all(),
|
||||
'fasilitasObjek' => FasilitasObjek::all(),
|
||||
'merupakanDaerah' => MerupakanDaerah::all(),
|
||||
'jenisUnit' => JenisUnit::all(),
|
||||
|
||||
|
||||
];
|
||||
}
|
||||
@@ -1125,11 +1295,18 @@ class SurveyorController extends Controller
|
||||
'model-alat-berat' => ['Model alat berat', 'model-alat-berat'],
|
||||
'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'],
|
||||
'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'],
|
||||
'jenis-unit' => ['Jenis unit', 'jenis-unit'],
|
||||
'terletak-area' => ['Terletak di Area', 'terletak-area'],
|
||||
'merupakan-daerah' => ['Merupakan Daerah', 'merupakan-daerah'],
|
||||
'posisi-unit' => ['Posisi unit', 'posisi-unit'],
|
||||
'bentuk-unit' => ['Bentuk unit', 'bentuk-unit'],
|
||||
'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek'],
|
||||
];
|
||||
|
||||
private function getAssetData($data)
|
||||
{
|
||||
return [
|
||||
'asset' =>[
|
||||
'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [],
|
||||
'jenis_asset' => $data['jenis_asset'] ?? null,
|
||||
'jenis_asset_tidak_sesuai' => $data['jenis_asset_tidak_sesuai'] ?? null,
|
||||
@@ -1142,13 +1319,15 @@ class SurveyorController extends Controller
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'kordinat_lng' => $data['kordinat_lng'] ?? null,
|
||||
'kordinat_lat' => $data['kordinat_lat'] ?? null,
|
||||
];
|
||||
]];
|
||||
}
|
||||
|
||||
|
||||
private function getTanahData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'tanah' => [
|
||||
|
||||
'luas_tanah' => $data['luas_tanah'] ?? null,
|
||||
'luas_tanah_tidak_sesuai' => $data['luas_tanah_tidak_sesuai'] ?? null,
|
||||
'hadap_mata_angin' => $data['hadap_mata_angin'] ?? null,
|
||||
@@ -1166,38 +1345,52 @@ class SurveyorController extends Controller
|
||||
'lockland' => $data['lockland'] ?? null,
|
||||
'kondisi_fisik_tanah' => $data['kondisi_fisik_tanah'] ?? [],
|
||||
'kondisi_fisik_tanah_lainnya' => $data['kondisi_fisik_tanah_lainnya'] ?? null,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
private function getBangunanData($data, $request): array
|
||||
{
|
||||
// $kategori_bangunan = [];
|
||||
// if ($request->has('spek_kategori_bagunan')) {
|
||||
// foreach ($request->input('spek_kategori_bagunan', []) as $value) {
|
||||
// $kategori_bangunan[] = [
|
||||
// 'value' => [
|
||||
// 'data' => $data['spek_bangunan'] ?? [],
|
||||
// ],
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
$data = $request->all();
|
||||
$result = [];
|
||||
|
||||
// foreach ($data['nama_bagunan'] as $index => $bangunan) {
|
||||
// $bangunanData = [
|
||||
// 'bangunan' => $bangunan,
|
||||
// 'kategori' => []
|
||||
// ];
|
||||
|
||||
// foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) {
|
||||
// if (isset($data['spek_bangunan'][$kategori])) {
|
||||
// $bangunanData['kategori'][] = [
|
||||
// 'kategori' => $kategori,
|
||||
// 'spesifikasi' => $data['spek_bangunan'][$kategori]
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
|
||||
// $result[] = $bangunanData;
|
||||
// }
|
||||
|
||||
return [
|
||||
'bangunan' => [
|
||||
'luas_tanah_bagunan' => $data['luas_tanah_bagunan'] ?? null,
|
||||
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
|
||||
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
|
||||
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
||||
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
|
||||
'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null,
|
||||
'spek_bangunan' => $data['spek_bangunan'] ?? [],
|
||||
'spesifikasi_bangunan' => $result ?? null,
|
||||
// 'spek_bangunan' => $data['spek_bangunan'] ?? [],
|
||||
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [],
|
||||
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
private function getLingkunganData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'lingkungan' => [
|
||||
'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null,
|
||||
'jalan_linkungan' => $data['jalan_linkungan'] ?? null,
|
||||
'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null,
|
||||
@@ -1219,12 +1412,14 @@ class SurveyorController extends Controller
|
||||
'nama_tps' => $data['nama_tps'] ?? null,
|
||||
'merupakan_daerah' => $data['merupakan_daerah'] ?? null,
|
||||
'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
private function getFactData($data, $request): array
|
||||
{
|
||||
$factData = [
|
||||
'fakta' => [
|
||||
'fakta_positif' => $data['fakta_positif'] ?? null,
|
||||
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
||||
'rute_menuju' => $data['rute_menuju'] ?? null,
|
||||
@@ -1242,16 +1437,36 @@ class SurveyorController extends Controller
|
||||
'gss' => $data['gss'] ?? null,
|
||||
'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null,
|
||||
'nama_petugas' => $data['nama_petugas'] ?? null,
|
||||
'lat' => $data['lat'] ?? null,
|
||||
'lng' => $data['lng'] ?? null,
|
||||
'keterangan' => $data['keterangan'] ?? null,
|
||||
]
|
||||
];
|
||||
|
||||
$factData['foto_gistaru'] = $this->updateOrDeleteFile($data, $request, 'foto_gistaru');
|
||||
$factData['foto_bhumi'] = $this->updateOrDeleteFile($data, $request, 'foto_bhumi');
|
||||
$factData['foto_argis_region'] = $this->updateOrDeleteFile($data, $request, 'foto_argis_region');
|
||||
$factData['foto_tempat'] = $this->updateOrDeleteFile($data, $request, 'foto_tempat');
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
|
||||
|
||||
$fotoTypes = [
|
||||
'foto_gistaru',
|
||||
'foto_bhumi',
|
||||
'foto_argis_region',
|
||||
'foto_tempat'
|
||||
];
|
||||
|
||||
if ($inspeksi) {
|
||||
$dataForm = json_decode($inspeksi->data_form, true);
|
||||
foreach ($fotoTypes as $fotoType) {
|
||||
// Jika ada file baru diupload
|
||||
if ($request->hasFile($fotoType)) {
|
||||
$factData[$fotoType] = $this->updateOrDeleteFile($dataForm, $request, $fotoType);
|
||||
} else {
|
||||
$factData[$fotoType] = $dataForm[$fotoType] ?? null;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
foreach ($fotoTypes as $fotoType) {
|
||||
$factData[$fotoType] = $this->updateOrDeleteFile($data, $request, $fotoType);
|
||||
}
|
||||
}
|
||||
return $factData;
|
||||
}
|
||||
|
||||
@@ -1262,6 +1477,7 @@ class SurveyorController extends Controller
|
||||
if ($file->isValid()) {
|
||||
$fileName = time() . '_' . $file->getClientOriginalName();
|
||||
$path = $file->storeAs("public/surveyor/{$request->type}", $fileName);
|
||||
|
||||
if ($path === false) {
|
||||
throw new Exception("Failed to store file for {$fileKey}");
|
||||
}
|
||||
@@ -1291,6 +1507,7 @@ class SurveyorController extends Controller
|
||||
private function getKapalData($data, $request): array
|
||||
{
|
||||
return [
|
||||
|
||||
'action' => $data['action'] ?? null,
|
||||
'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
@@ -1324,6 +1541,7 @@ class SurveyorController extends Controller
|
||||
'depth' => $data['depth'] ?? null,
|
||||
'draft' => $data['draft'] ?? null,
|
||||
|
||||
|
||||
'lambung_kapal' => $data['lambung_kapal'] ?? null,
|
||||
'dek' => $data['dek'] ?? null,
|
||||
'struktur_rangka' => $data['struktur_rangka'] ?? null,
|
||||
@@ -1377,6 +1595,7 @@ class SurveyorController extends Controller
|
||||
'analisa_makro' => $data['analisa_makro'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
|
||||
];
|
||||
}
|
||||
public function getKendaraanData($data, $request): array
|
||||
@@ -1666,3 +1885,4 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -100,9 +100,9 @@ class FormSurveyorRequest extends FormRequest
|
||||
'kondisi_bangunan' => 'nullable',
|
||||
'sifat_bangunan' => 'required|array',
|
||||
'sifat_bangunan_input' => 'nullable|array',
|
||||
'nama_bagunan' => 'required|array',
|
||||
'spek_kategori_bangunan' => 'required|array',
|
||||
'spek_kategori_bangunan.*' => 'required|string',
|
||||
'nama_bagunan' => 'required',
|
||||
'spek_kategori_bangunan.*' => 'required',
|
||||
'spek_bangunan.*' => 'required',
|
||||
'sarana_pelengkap' => 'required',
|
||||
'sarana_pelengkap_input' => 'nullable|array',
|
||||
];
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace Modules\Lpj\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class SurveyorRequest extends FormRequest
|
||||
@@ -32,6 +31,12 @@ class SurveyorRequest extends FormRequest
|
||||
'model-alat-berat' => 'model_alat_berat',
|
||||
'jenis-kapal' => 'jenis_kapal',
|
||||
'jenis-kendaraan' => 'jenis_kendaraan',
|
||||
'jenis-unit' => 'jenis_unit',
|
||||
'terletak-area' => 'terletak_area',
|
||||
'merupakan-daerah' => 'merupakan_daerah',
|
||||
'posisi-unit' => 'posisi_unit',
|
||||
'bentuk-unit' => 'bentuk_unit',
|
||||
'fasilitas-objek' => 'fasilitas_objek',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
24
app/Models/BentukUnit.php
Normal file
24
app/Models/BentukUnit.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\BentukUnitFactory;
|
||||
|
||||
class BentukUnit extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'bentuk_unit';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): BentukUnitFactory
|
||||
// {
|
||||
// // return BentukUnitFactory::new();
|
||||
// }
|
||||
}
|
||||
23
app/Models/FasilitasObjek.php
Normal file
23
app/Models/FasilitasObjek.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\FasilitasObjekFactory;
|
||||
|
||||
class FasilitasObjek extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'fasilitas_objek';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): FasilitasObjekFactory
|
||||
// {
|
||||
// // return FasilitasObjekFactory::new();
|
||||
// }
|
||||
}
|
||||
24
app/Models/JenisUnit.php
Normal file
24
app/Models/JenisUnit.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
// use Modules\Lpj\Database\Factories\JenisUnitFactory;
|
||||
|
||||
class JenisUnit extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'jenis_unit';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): JenisUnitFactory
|
||||
// {
|
||||
// // return JenisUnitFactory::new();
|
||||
// }
|
||||
}
|
||||
24
app/Models/MerupakanDaerah.php
Normal file
24
app/Models/MerupakanDaerah.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
// use Modules\Lpj\Database\Factories\MerupakanDaerahFactory;
|
||||
|
||||
class MerupakanDaerah extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'merupakan_daerah';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): MerupakanDaerahFactory
|
||||
// {
|
||||
// // return MerupakanDaerahFactory::new();
|
||||
// }
|
||||
}
|
||||
@@ -40,6 +40,7 @@
|
||||
'registrasi_at',
|
||||
'jenis_penilaian_id',
|
||||
'region_id',
|
||||
'sla'
|
||||
];
|
||||
|
||||
protected static function boot()
|
||||
@@ -153,4 +154,9 @@
|
||||
{
|
||||
return $this->hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc');
|
||||
}
|
||||
|
||||
public function dokumenjaminan()
|
||||
{
|
||||
return $this->hasMany(DokumenJaminan::class);
|
||||
}
|
||||
}
|
||||
|
||||
24
app/Models/PosisiUnit.php
Normal file
24
app/Models/PosisiUnit.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
// use Modules\Lpj\Database\Factories\PosisiUnitFactory;
|
||||
|
||||
class PosisiUnit extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'posisi_unit';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): PosisiUnitFactory
|
||||
// {
|
||||
// // return PosisiUnitFactory::new();
|
||||
// }
|
||||
}
|
||||
25
app/Models/TerletakArea.php
Normal file
25
app/Models/TerletakArea.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
// use Modules\Lpj\Database\Factories\TerletakAreaFactory;
|
||||
|
||||
class TerletakArea extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'terletak_area';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
// protected static function newFactory(): TerletakAreaFactory
|
||||
// {
|
||||
// // return TerletakAreaFactory::new();
|
||||
// }
|
||||
}
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('terletak_area', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('terletak_area');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('merupakan_daerah', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('merupakan_daerah');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('fasilitas_objek', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('fasilitas_objek');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('posisi_unit', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('posisi_unit');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('jenis_unit', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('jenis_unit');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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::create('bentuk_unit', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code')->unique()->index();
|
||||
$table->string('name');
|
||||
$table->boolean('status')->default(true);
|
||||
$table->char('authorized_status', 1)->nullable();
|
||||
$table->timestamps();
|
||||
$table->timestamp('authorized_at')->nullable();
|
||||
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->unsignedBigInteger('created_by')->nullable();
|
||||
$table->unsignedBigInteger('updated_by')->nullable();
|
||||
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('bentuk_unit');
|
||||
}
|
||||
};
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -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('inspeksi', function (Blueprint $table) {
|
||||
$table->json('data_pembanding')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('inspeksi', function (Blueprint $table) {
|
||||
$table->dropColumn('data_pembanding');
|
||||
});
|
||||
}
|
||||
};
|
||||
53
module.json
53
module.json
@@ -675,6 +675,49 @@
|
||||
"surveyor"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "Jenis Unit",
|
||||
"path": "basicdata.jenis-unit",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
},
|
||||
{
|
||||
"title": "Bentuk Unit",
|
||||
"path": "basicdata.bentuk-unit",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
},
|
||||
{
|
||||
"title": "Merupakan Daerah",
|
||||
"path": "basicdata.merupakan-daerah",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "Fasilitas Umum Dekat Objek",
|
||||
"path": "basicdata.fasilitas-objek",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "Posisi Unit",
|
||||
"path": "basicdata.posisi-unit",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
},
|
||||
{
|
||||
"title": "Lalu Lintas Sekitar",
|
||||
"path": "basicdata.lalu-lintas-lokasi",
|
||||
@@ -806,7 +849,15 @@
|
||||
"administrator",
|
||||
"surveyor"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Terletak Di Area",
|
||||
"path": "basicdata.terletak-area",
|
||||
"classes": "",
|
||||
"attributes": [],
|
||||
"permission": "",
|
||||
"roles": ["administrator","surveyor"]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@@ -118,12 +118,11 @@
|
||||
<th class="min-w-[100px]">Paparan</th>
|
||||
<th class="min-w-[100px]">Approve</th>
|
||||
<th class="min-w-[50px] text-center">Keterangan</th>
|
||||
<th class="min-w-[50px] text-center">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="12" class="text-center">No data available</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -151,6 +150,13 @@
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function jadwal(id) {
|
||||
document.getElementById('ids').value = id;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<script type="module">
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const accordions = document.querySelectorAll('[data-accordion-item]');
|
||||
@@ -224,10 +230,17 @@
|
||||
title: 'Approve',
|
||||
render: (item, data) => `${data.approve || ''}`,
|
||||
},
|
||||
actions: {
|
||||
keterangan: {
|
||||
title: 'Keterangan',
|
||||
render: (item, data) => `${data.keterangan || ''}`,
|
||||
},
|
||||
actions: {
|
||||
title: 'Action',
|
||||
render: (item, data) => `
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-primary" data-modal-toggle="#modal_jadwal" onclick="jadwal(${data.user_penilai[0].penilaian_id})">
|
||||
<i class="ki-filled ki-calendar-edit"></i>
|
||||
</a>`,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -241,10 +254,6 @@
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function formatDateFromISO(isoDateString) {
|
||||
const date = new Date(isoDateString);
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
@@ -254,3 +263,46 @@
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
<div class="modal" data-modal="true" id="modal_jadwal">
|
||||
<div class="modal-content max-w-[600px] top-[10%]">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">Pilih</h3>
|
||||
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
|
||||
<i class="ki-outline ki-cross"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('activity.update-team') }}" method="POST" enctype="multipart/form-data"
|
||||
id="revisiForm">
|
||||
@method('put')
|
||||
@csrf
|
||||
<input id="ids" type="hidden" name="id">
|
||||
<div class="pl-1 grid gap-2.5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Pilih Team</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="input-group w-full">
|
||||
<select id="surveyor_id" name="surveyor_id" class="input tomselect">
|
||||
<option value="">Pilih Team</option>
|
||||
@foreach ($teamsActivity as $item)
|
||||
<option value="{{ $item->user->id }}">{{ $item->user->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-surveyor_id" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer justify-end mt-2">
|
||||
<div class="flex gap-4">
|
||||
<button type="button" class="btn btn-light" data-modal-dismiss="true">Cancel</button>
|
||||
<button id="btnSubmit" type="submit" class="btn btn-primary">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
259
resources/views/penilai/lampiran.blade.php
Normal file
259
resources/views/penilai/lampiran.blade.php
Normal file
@@ -0,0 +1,259 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('breadcrumbs')
|
||||
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card pb-2.5">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Lampiran foto dan dokument
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info"><i
|
||||
class="ki-filled ki-exit-left"></i>
|
||||
Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body grid gap-5">
|
||||
@if (isset($permohonan))
|
||||
<div data-accordion="true">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
<div class="accordion-item [&:not(:last-child)]:border-b border-b-gray-200"
|
||||
data-accordion-item="true" id="accordion_detail_jaminan">
|
||||
<button class="accordion-toggle py-4 group "
|
||||
data-accordion-toggle="#accordion_detail_jaminan_{{ $loop->index }}">
|
||||
<span class="text-base text-gray-900 font-medium">
|
||||
Dokument
|
||||
</span>
|
||||
<i class="ki-outline ki-plus text-gray-600 text-2sm accordion-active:hidden block">
|
||||
</i>
|
||||
<i class="ki-outline ki-minus text-gray-600 text-2sm accordion-active:block hidden">
|
||||
</i>
|
||||
</button>
|
||||
|
||||
<div class="accordion-content hidden" id="accordion_detail_jaminan_{{ $loop->index }}">
|
||||
<div class="card-table scrollable-x-auto pb-3">
|
||||
<a href="{{ route('debitur.jaminan.bulk.download', ['id' => $permohonan->debiture->id, 'jaminan' => $dokumen->id]) }}"
|
||||
class="ml-6 btn btn-dark dark:btn-light">
|
||||
<i class="ki-outline ki-cloud-download"></i> Download Semua Dokumen
|
||||
</a>
|
||||
<table class="table align-middle text-sm text-gray-500">
|
||||
@foreach ($dokumen->detail as $detail)
|
||||
<tr>
|
||||
<td class="py-2 text-gray-600 font-normal max-w-[100px]">
|
||||
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
||||
</td>
|
||||
<td class="py-2 text-gray-800 font-normaltext-sm">
|
||||
{{ $detail->name ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-3 max-w-[100px] align-top">
|
||||
Dokumen Jaminan
|
||||
</td>
|
||||
<td class="py-3 text-gray-700 text-2sm font-normal">
|
||||
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
@php
|
||||
$dokumen_jaminan = is_array(
|
||||
json_decode($detail->dokumen_jaminan),
|
||||
)
|
||||
? json_decode($detail->dokumen_jaminan)
|
||||
: [$detail->dokumen_jaminan];
|
||||
$dokumen_nomor = is_array(
|
||||
json_decode($detail->dokumen_nomor),
|
||||
)
|
||||
? json_decode($detail->dokumen_nomor)
|
||||
: ($detail->dokumen_nomor
|
||||
? [$detail->dokumen_nomor]
|
||||
: []);
|
||||
@endphp
|
||||
@foreach ($dokumen_jaminan as $index => $dokumen)
|
||||
<div class="flex w-full lg:w-[30%]">
|
||||
@if (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo']))
|
||||
@if (!empty($dokumen_nomor))
|
||||
<span class="flex-1 mt-2 text-info">Nomor
|
||||
Dokumen :
|
||||
{{ $dokumen_nomor[$index] }}</span>
|
||||
@endif
|
||||
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||
{{ basename($dokumen) }}
|
||||
<i class="ki-filled ki-cloud-download"></i>
|
||||
</a>
|
||||
@endif
|
||||
<span
|
||||
class="flex-none badge badge-sm badge-outline badge-warning mt-2"
|
||||
onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')"><i
|
||||
class="ki-filled ki-eye mr-2"></i>Preview</span>
|
||||
</div>
|
||||
<br>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-3 max-w-[100px]">
|
||||
Keterangan
|
||||
</td>
|
||||
<td class="py-3 text-gray-700 text-2sm font-normal">
|
||||
{{ $detail->keterangan ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Rute Menuju Lokasi
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto))
|
||||
@foreach ($formFoto['rute_menuju_lokasi'] as $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $item['name_rute'] . ' ' . $loop->index + 1 }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($item['foto_rute']) }}" alt="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Object Jaminan
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['object_jaminan']))
|
||||
@foreach ($formFoto['object_jaminan'] as $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
{{ $item['nama_objek'] }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($item['foto_object']) }}" alt="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (isset($formFoto['foto_basement']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Basement
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Basemnt
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['foto_basement']) }}" alt="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['foto_gerbang']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Gerbang
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Gerbang
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['foto_gerbang']) }}" alt="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@if (isset($formFoto['pendamping']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Pendamping
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Pendamping
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['pendamping']) }}" alt="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
@@ -91,120 +91,154 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@foreach($permohonan->debiture->documents as $dokumen)
|
||||
<div class="card">
|
||||
<div class="card-body grid gap-5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
@php
|
||||
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
<div class="card">
|
||||
<div class="card-body grid gap-5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
@php
|
||||
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
|
||||
@endphp
|
||||
<label class="form-label max-w-56">
|
||||
Surveyor
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@endphp
|
||||
<label class="form-label max-w-56">
|
||||
Surveyor
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $surveyor->userPenilaiTeam->name }}</p>
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $surveyor->userPenilaiTeam->name }}
|
||||
</p>
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->region->name }}</p>
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->region->name }}</p>
|
||||
</div>
|
||||
<label class="form-label max-w-56">
|
||||
Penilai
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $penilai->userPenilaiTeam->name }}
|
||||
</p>
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ $permohonan->region->name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<label class="form-label max-w-56">
|
||||
Penilai
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $penilai->userPenilaiTeam->name }}</p>
|
||||
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ $permohonan->region->name }}
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tujuan Penilaian
|
||||
</label>
|
||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||
{{ $permohonan->tujuanPenilaian->name }}</p>
|
||||
<label class="form-label max-w-56">
|
||||
Jenis Jaminan
|
||||
</label>
|
||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||
@foreach ($permohonan->debiture->documents as $document)
|
||||
{{ $document->jenisjaminan->name }}
|
||||
@endforeach
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tujuan Penilaian
|
||||
</label>
|
||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||
{{ $permohonan->tujuanPenilaian->name }}</p>
|
||||
<label class="form-label max-w-56">
|
||||
Jenis Jaminan
|
||||
</label>
|
||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||
@foreach ($permohonan->debiture->documents as $document)
|
||||
{{ $document->jenisjaminan->name }}
|
||||
@endforeach
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tanggal Survei
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tanggal Survei
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tanggal Laporan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Tanggal Laporan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
No. Laporan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
PJ/001/001</p>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
No. Laporan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||
PJ/001/001</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
|
||||
<div class="flex gap-5">
|
||||
<a class="btn btn-primary" href="{{ route('penilai.lampiran', $permohonan->id) }}">
|
||||
LAMPIRAN FOTO DAN DOKUMEN
|
||||
</a>
|
||||
|
||||
<a class="btn btn-primary" data-modal-toggle="#modal_2">
|
||||
KERTAS KERJA
|
||||
</a>
|
||||
<a class="btn btn-primary" href="#">
|
||||
PAPARAN
|
||||
</a>
|
||||
|
||||
<a class="btn btn-primary" href="#">
|
||||
WORKSHEET
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end gap-5">
|
||||
<a class="btn btn-success" href="#">
|
||||
SAVE
|
||||
</a>
|
||||
|
||||
<a class="btn btn-success" href="#">
|
||||
REPORT
|
||||
</a>
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
|
||||
<div class="flex gap-5">
|
||||
<a class="btn btn-primary" href="">
|
||||
LAMPIRAN FOTO DAN DOKUMEN
|
||||
</a>
|
||||
<a class="btn btn-success" href="#">
|
||||
PRINT OUT
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a class="btn btn-primary" href="">
|
||||
KERTAS KERJA
|
||||
</a>
|
||||
<a class="btn btn-primary" href="">
|
||||
PAPARAN
|
||||
</a>
|
||||
|
||||
<a class="btn btn-primary" href="">
|
||||
WORKSHEET
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end gap-5">
|
||||
<a class="btn btn-success" href="">
|
||||
SAVE
|
||||
</a>
|
||||
|
||||
<a class="btn btn-success" href="">
|
||||
REPORT
|
||||
</a>
|
||||
|
||||
|
||||
<a class="btn btn-success" href="">
|
||||
PRINT OUT
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="modal" data-modal="true" id="modal_2">
|
||||
<div class="modal-content modal-center-y max-w-[600px]">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">
|
||||
Kertas Kerja
|
||||
</h3>
|
||||
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
|
||||
<i class="ki-outline ki-cross">
|
||||
</i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body grid gap-5">
|
||||
<div class="flex items-baseline w-full">
|
||||
<label for="" class="form-label max-w-56">Import Kertas Kerja</label>
|
||||
|
||||
<div class="flex justify-center items-center gap-2">
|
||||
<input type="file" name="" id="" class="file-input">
|
||||
<button class="btn btn-outline btn-success">Upload</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group flex items-baseline flex-wrap">
|
||||
|
||||
<a class="btn btn-outline btn-primary w-full" href="#">Export Kertas Kerja</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
<h3 class="card-title">
|
||||
Form Assignment
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@@ -449,7 +448,7 @@
|
||||
|
||||
const urlAssignment =
|
||||
"{{ isset($penilaian->nomor_registrasi) ? route('penilaian.update', $permohonan) : route('penilaian.store') }}";
|
||||
|
||||
|
||||
$.ajax({
|
||||
url: urlAssignment,
|
||||
type: 'POST',
|
||||
|
||||
@@ -72,6 +72,15 @@
|
||||
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em>
|
||||
</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">
|
||||
<label class="form-label max-w-56">
|
||||
Region
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
$("#{{ $route[0] }}_div_jenis_pilihan").show();
|
||||
$("#{{ $route[0] }}_div_catatan").hide();
|
||||
$("#{{ $route[0] }}_div_region").hide();
|
||||
$("#{{ $route[0] }}_div_sla").hide();
|
||||
$("#{{ $route[0] }}_div_catatan2").show();
|
||||
// prepare data
|
||||
setData();
|
||||
@@ -95,6 +96,7 @@
|
||||
$("#{{ $route[0] }}_div_jenis_pilihan").show();
|
||||
$("#{{ $route[0] }}_catatan").val('');
|
||||
$("#{{ $route[0] }}_div_catatan").hide();
|
||||
|
||||
$("#{{ $route[0] }}_div_catatan2").show();
|
||||
}
|
||||
else
|
||||
@@ -103,6 +105,7 @@
|
||||
$("#{{ $route[0] }}_div_jenis_pilihan").hide();
|
||||
$("#{{ $route[0] }}_div_catatan").show();
|
||||
$("#{{ $route[0] }}_div_catatan2").hide();
|
||||
$("#{{ $route[0] }}_div_sla").hide();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -119,6 +122,7 @@
|
||||
let region = $("#{{$route[0]}}_region").val();
|
||||
let catatan = $("#{{$route[0]}}_catatan").val();
|
||||
let catatan2 = $("#{{$route[0]}}_catatan2").val();
|
||||
let sla = $("#{{$route[0]}}_sla").val();
|
||||
|
||||
if(jenis_penilaian==0)
|
||||
jenis_penilaian='';
|
||||
@@ -134,6 +138,7 @@
|
||||
input_data.region= region;
|
||||
input_data.catatan = catatan;
|
||||
input_data.catatan2 = catatan2;
|
||||
input_data.sla = sla;
|
||||
|
||||
let useURL= '{{ route($route[0].'.update', $id) }}';
|
||||
$.ajax({
|
||||
@@ -164,6 +169,11 @@
|
||||
$("#{{$route[0]}}_region").addClass(" border-danger");
|
||||
$("#{{$route[0]}}_region_msg").text(value);
|
||||
}
|
||||
|
||||
if ("sla" === index) {
|
||||
$("#{{$route[0]}}_sla").addClass(" border-danger");
|
||||
$("#{{$route[0]}}_sla_msg").text(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
@@ -204,11 +214,18 @@
|
||||
{
|
||||
// INTERNAL, show region
|
||||
$("#{{ $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
|
||||
$("#{{ $route[0] }}_div_region").hide();
|
||||
$("#{{ $route[0] }}_div_sla").hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -60,6 +60,15 @@
|
||||
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em>
|
||||
</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">
|
||||
<label class="form-label max-w-56">
|
||||
Region
|
||||
|
||||
@@ -52,8 +52,7 @@
|
||||
<center>
|
||||
<h2 style="text-decoration: underline;">SURAT PERINTAH KERJA</h2>
|
||||
<p>
|
||||
No. XXX / PJ / JKT / <?php echo date('M'); ?>
|
||||
/ FR / <?php echo date('Y'); ?>
|
||||
No. {{ $penawaran->spk_no }}
|
||||
<data id="date"></data>
|
||||
</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>
|
||||
<br/>
|
||||
<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>
|
||||
<br/>
|
||||
<h3>Rincian Penilaian</h3>
|
||||
<table border="2" width="100%">
|
||||
<tr>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tujuan Penilaian</td>
|
||||
<td width="25%">Tujuan Penilaian</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
<td width="75%">
|
||||
<span style="color: red;">{{ $data->tujuanPenilaian->name }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jenis Laporan</td>
|
||||
<td width="20%">Jenis Laporan</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
<span style="color: red;">{{ $penawaran->jenis_laporan_name }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data Jaminan</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
<span style="color: red;">{{ $data->jenis_jaminan_name }}, {{ $data->dokumen_jaminan_address }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
@php $i=1; @endphp
|
||||
@foreach ($data->debiture->documents as $dokumen)
|
||||
<tr valign="top">
|
||||
<td width="25%">Lokasi Jaminan {{ $i }}</td>
|
||||
<td>:</td>
|
||||
<td width="75%">
|
||||
<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>
|
||||
<td>Fee / Harga Penilaian</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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jangka Waktu</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>
|
||||
<td colspan="2" style="text-align: center;">i</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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">ii</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>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<h3>Dengan ketentuan dalam melaksanakan pekerjaan sebagai berikut:</h3>
|
||||
<table border="0" width="100%">
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>1.</td>
|
||||
<td>
|
||||
Pembayaran sebesar 100% dari total jasa dibayarkan setelah Bank menerima buku laporan dan bukti penagihan asli (invoice / kwitansi dan faktur pajak).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>2.</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.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>3.</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.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>4.</td>
|
||||
<td>
|
||||
Apabila diperlukan surat representasi wajib diberikan bersamaan dengan dikembalikannya SPK kepada kami.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>5.</td>
|
||||
<td>
|
||||
Ketentuan lain mengacu pada perjanjian kerjasama yang telah disepakati.
|
||||
|
||||
@@ -43,7 +43,8 @@
|
||||
<h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3>
|
||||
<br/>
|
||||
<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>
|
||||
<br/>
|
||||
<h3>Rincian Penilaian</h3>
|
||||
@@ -87,13 +88,15 @@
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">i</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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">ii</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>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,165 +1,153 @@
|
||||
|
||||
|
||||
@include('lpj::surveyor.components.header')
|
||||
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class=" py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisa Unit</h1>
|
||||
</div>
|
||||
<div class="grid gap-5">
|
||||
<div class=" py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisa Unit</h1>
|
||||
</div>
|
||||
<div class="grid gap-5">
|
||||
|
||||
<!-- Luas tanah -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Luas Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_unit" value="sesuai"
|
||||
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Sesuai</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_unit" value="tidak sesuai"
|
||||
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak Sesuai</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- Luas tanah -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Luas Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])" type="radio" class="radio" name="luas_unit" value="sesuai"
|
||||
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Sesuai</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])" type="radio" class="radio" name="luas_unit" value="tidak sesuai"
|
||||
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak Sesuai</span>
|
||||
</label>
|
||||
|
||||
<div id="luas_unit_tidak_sesuai" class="flex items-baseline gap-2"
|
||||
style="{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<input id="analisa_luas_unit_tidak_sesuai" type="text" name="luas_unit_tidak_sesuai" class="input w-full"
|
||||
placeholder="Masukan Luas Tanah"
|
||||
value="{{ old('luas_unit_tidak_sesuai', $forminspeksi['luas_unit_tidak_sesuai'] ?? '') }}">
|
||||
<button type="button" class="btn btn-md btn-primary" onclick="updateAnalisa('analisa_unit')">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-luas_unit" class="alert text-danger text-sm"></em>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Jenis Unit -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Jenis Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($jenisBangunan))
|
||||
@foreach ($jenisBangunan as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="jenis_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('jenis_unit', $forminspeksi['jenis_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-jenis_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kondisi Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($kondisiBangunan))
|
||||
@foreach ($kondisiBangunan as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('kondisi_unit', $forminspeksi['kondisi_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-kondisi_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Posisi Unit -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Posisi Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($ketinggianTanah))
|
||||
@foreach ($ketinggianTanah as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('posisi_unit', $forminspeksi['posisi_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-posisi_unit" class="alert text-danger text-sm"></em>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kondisi Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($kondisiBangunan))
|
||||
@foreach ($kondisiBangunan as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('kondisi_unit', $forminspeksi['kondisi_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-kondisi_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Lantai</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($lantai))
|
||||
@foreach ($lantai as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="lantai[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('lantai', $forminspeksi['lantai'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
<!-- Posisi Unit -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Posisi Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($posisiUnit))
|
||||
@foreach ($posisiUnit as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('posisi_unit', $forminspeksi['posisi_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-posisi_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-lantai" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Kondisi Fisik Tanah -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Lantai</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">View</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($viewUnit))
|
||||
@foreach ($viewUnit as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="view[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('view', $forminspeksi['view'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($lantai))
|
||||
@foreach ($lantai as $item)
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="lantai[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('lantai', $forminspeksi['lantai'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="lantai_input[]" class="input w-full"
|
||||
id="lantaiInput" placeholder="Masukkan {{ $item->name }}..."
|
||||
value="{{ old('lantai_input.' . $loop->index, $forminspeksi['lantai_input'][$loop->index] ?? '') }}">
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-lantai" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
<em id="error-view" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Bentuk Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($bentukTanah))
|
||||
@foreach ($bentukTanah as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}" {{ in_array($item->name, old('bentuk_unit', $forminspeksi['bentuk_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
<!-- Kondisi Fisik Tanah -->
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">View</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($viewUnit))
|
||||
@foreach ($viewUnit as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="view[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('view', $forminspeksi['view'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-view" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-bentuk_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Bentuk Unit</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($bentukUnit))
|
||||
@foreach ($bentukUnit as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('bentuk_unit', $forminspeksi['bentuk_unit'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<em id="error-bentuk_unit" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,23 +5,49 @@
|
||||
</div>
|
||||
<div class="grid gap-5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Luas Tanah</label>
|
||||
<label class="form-label max-w-56">Luas Bagunan</label>
|
||||
<div class="mt-2">
|
||||
|
||||
@if (isset($permohonan->debiture->documents))
|
||||
@foreach ($permohonan->debiture->documents as $item)
|
||||
@php
|
||||
$luas = $item->detail;
|
||||
$details = json_decode($luas[0]->details, true);
|
||||
$luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 'N/A';
|
||||
@endphp
|
||||
<p class="text-2sm text-gray-700">{{ $luas_bangunan }} m<sup>2</sup></p>
|
||||
@endforeach
|
||||
|
||||
@endif
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_tanah_bagunan" value="sesuai"
|
||||
{{ old('luas_tanah_bagunan', $forminspeksi['luas_tanah_bagunan'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<input type="radio"
|
||||
onclick="toggleFieldVisibility('luas_tanah_bagunan', 'luas_tanah_bagunan_tidak_sesuai', ['tidak sesuai'])"
|
||||
class="radio" name="luas_tanah_bagunan" value="sesuai"
|
||||
{{ old('luas_tanah_bagunan', $forminspeksi['bangunan']['luas_tanah_bagunan'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Sesuai</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_tanah_bagunan" value="tidak sesuai"
|
||||
{{ old('luas_tanah_bagunan', $forminspeksi['luas_tanah_bagunan'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<input type="radio" class="radio" name="luas_tanah_bagunan"
|
||||
onclick="toggleFieldVisibility('luas_tanah_bagunan', 'luas_tanah_bagunan_tidak_sesuai', ['tidak sesuai'])"
|
||||
value="tidak sesuai"
|
||||
{{ old('luas_tanah_bagunan', $forminspeksi['bangunan']['luas_tanah_bagunan'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak Sesuai</span>
|
||||
</label>
|
||||
|
||||
<div id="luas_tanah_bagunan_tidak_sesuai" class="flex items-baseline gap-2"
|
||||
style="{{ old('luas_tanah_bagunan_bagunan', $forminspeksi['bangunan']['luas_tanah_bagunan_bagunan'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<input type="text"id="analisa_bangunan_tidak_sesuai" name="luas_tanah_bagunan_tidak_sesuai" class="input w-full"
|
||||
placeholder="Masukan Luas Bangunan Tidak Sesuai..."
|
||||
value="{{ old('luas_tanah_bagunan_tidak_sesuai', $forminspeksi['bangunan']['luas_tanah_bagunan_tidak_sesuai'] ?? '') }}">
|
||||
<button type="button" class="btn btn-md btn-primary" onclick="updateAnalisa('analisa_bangunan')">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-luas_tanah_bagunan" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Jenis Bangunan -->
|
||||
@@ -34,7 +60,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="jenis_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ old('jenis_bangunan') == $item->name || isset($forminspeksi['jenis_bangunan']) == $item->name ? 'checked' : '' }} />
|
||||
{{ old('jenis_bangunan') == $item->name || isset($forminspeksi['bangunan']['jenis_bangunan']) == $item->name ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@if (strcasecmp($item->name, 'lainnya') == 0)
|
||||
@@ -67,7 +93,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['bangunan']['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@if (strcasecmp($item->name, 'lainnya') == 0)
|
||||
@@ -75,12 +101,12 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['bangunan']['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="kondisi_bangunan_lainnya" class="input mt-2"
|
||||
id="bentukTanahInput" placeholder="Masukkan Kondisi Bangunan..."
|
||||
value="{{ old('kondisi_bangunan_lainnya', $forminspeksi['kondisi_bangunan_lainnya'] ?? '') }}">
|
||||
value="{{ old('kondisi_bangunan_lainnya', $forminspeksi['bangunan']['kondisi_bangunan_lainnya'] ?? '') }}">
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@@ -101,12 +127,12 @@
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="sifat_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('sifat_bangunan', $forminspeksi['sifat_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, old('sifat_bangunan', $forminspeksi['bangunan']['sifat_bangunan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="sifat_bangunan_input[]" class="input w-full"
|
||||
id="sifat_bangunan" placeholder="Masukkan {{ $item->name }}..."
|
||||
value="{{ old('sifat_bangunan_input.' . $loop->index, $forminspeksi['sifat_bangunan_input'][$loop->index] ?? '') }}">
|
||||
value="{{ old('sifat_bangunan_input.' . $loop->index, $forminspeksi['bangunan']['sifat_bangunan_input'][$loop->index] ?? '') }}">
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -120,13 +146,14 @@
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Spek Bangunan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full" id="spek-bangunan-container">
|
||||
<div class="spek-bangunan w-full gap-4">
|
||||
<div class="spek-bangunan w-full gap-4 mt-5">
|
||||
<input type="hidden" name="nama_bagunan[]" value="Bangunan">
|
||||
<label class="building-label form-label">Bangunan 1</label>
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2 w-full">
|
||||
@if (@isset($spekKategoriBagunan))
|
||||
@foreach ($spekKategoriBagunan as $item)
|
||||
<div>
|
||||
<input type="hidden" name="spek_kategori_bangunan[]"
|
||||
<input type="hidden" name="spek_kategori_bangunan.[]"
|
||||
value="{{ $item->name }}">
|
||||
<label
|
||||
class="form-label flex items-center gap-3 text-nowrap">{{ $item->name }}</label>
|
||||
@@ -136,7 +163,7 @@
|
||||
@if ($spek->spek_kategori_bangunan_id == $item->id)
|
||||
<label class="form-label flex items-center gap-2.5">
|
||||
<input class="checkbox"
|
||||
name="spek_bangunan_{{ $item->name }}[]"
|
||||
name="spek_bangunan[{{ $item->name }}][]"
|
||||
type="checkbox" value="{{ $spek->name }}" />
|
||||
{{ $spek->name }}
|
||||
</label>
|
||||
@@ -150,14 +177,14 @@
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<button type="button"
|
||||
class="mt-2 btn btn-danger btn-outline btn-xs remove-btn" style="display: none;">Hapus</button>
|
||||
<button type="button" class="mt-2 btn btn-danger btn-outline btn-xs delete-button"
|
||||
style="display: none;">Hapus</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<button class="btn btn-xs btn-primary" type="button" onclick="addClonableItem('spek-bangunan-container', 'spek-bangunan')">
|
||||
<button class="btn btn-xs btn-primary" type="button" id="addBagunan">
|
||||
tambah bangunan
|
||||
<i class="ki-filled ki-plus"></i>
|
||||
</button>
|
||||
@@ -176,12 +203,12 @@
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="sarana_pelengkap[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('sarana_pelengkap', $forminspeksi['sarana_pelengkap'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, old('sarana_pelengkap', $forminspeksi['bangunan']['sarana_pelengkap'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="sarana_pelengkap_input[]" class="input w-full"
|
||||
id="bentukTanahInput" placeholder="Masukkan {{ $item->name }}..."
|
||||
value="{{ old('sarana_pelengkap_input.' . $loop->index, $forminspeksi['sarana_pelengkap_input'][$loop->index] ?? '') }}">
|
||||
value="{{ old('sarana_pelengkap_input.' . $loop->index, $forminspeksi['bangunan']['sarana_pelengkap_input'][$loop->index] ?? '') }}">
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -192,13 +219,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
const spekBangunanContainer = document.getElementById('spek-bangunan-container');
|
||||
|
||||
function updateDeleteButtonsVisibility() {
|
||||
const allDeleteButtons = spekBangunanContainer.querySelectorAll('.delete-button');
|
||||
// Only show the delete buttons if there are more than one form
|
||||
allDeleteButtons.forEach(button => {
|
||||
if (spekBangunanContainer.querySelectorAll('.spek-bangunan').length > 1) {
|
||||
button.style.display = 'inline-block';
|
||||
@@ -208,29 +237,56 @@
|
||||
});
|
||||
}
|
||||
|
||||
function updateBuildingLabels() {
|
||||
const allSpekBangunan = spekBangunanContainer.querySelectorAll('.spek-bangunan');
|
||||
allSpekBangunan.forEach((div, index) => {
|
||||
const label = div.querySelector('.building-label');
|
||||
if (label) {
|
||||
label.textContent = `Bangunan ${index + 1}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById('addBagunan').addEventListener('click', function() {
|
||||
const newDiv = spekBangunanContainer.querySelector('.spek-bangunan').cloneNode(true);
|
||||
|
||||
// Clear the selected values of the cloned input fields
|
||||
newDiv.querySelectorAll('select').forEach(select => {
|
||||
select.value = '';
|
||||
// Update input fields
|
||||
newDiv.querySelectorAll('select, input').forEach((input, index) => {
|
||||
if (input.type === 'checkbox' || input.type === 'radio') {
|
||||
input.checked = false;
|
||||
} else {
|
||||
input.value = '';
|
||||
}
|
||||
|
||||
// Update name attribute
|
||||
if (input.name) {
|
||||
const baseName = input.name.split('[')[0]; // Get the base name
|
||||
const count = spekBangunanContainer.querySelectorAll('.spek-bangunan').length + 1;
|
||||
input.name = `${baseName}[${count}]`;
|
||||
}
|
||||
});
|
||||
|
||||
// Append the cloned div to the container
|
||||
// Append the cloned div
|
||||
spekBangunanContainer.appendChild(newDiv);
|
||||
|
||||
// Add event listener to the delete button in the cloned div
|
||||
newDiv.querySelector('.delete-button').addEventListener('click', function() {
|
||||
spekBangunanContainer.removeChild(newDiv);
|
||||
updateDeleteButtonsVisibility();
|
||||
updateBuildingLabels();
|
||||
});
|
||||
|
||||
// Update delete buttons visibility
|
||||
// Update UI
|
||||
updateDeleteButtonsVisibility();
|
||||
updateBuildingLabels();
|
||||
});
|
||||
|
||||
// Initial delete button visibility
|
||||
updateDeleteButtonsVisibility();
|
||||
|
||||
// Initial setup: Ensure "Bangunan 1" is labeled
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
updateDeleteButtonsVisibility();
|
||||
updateBuildingLabels(); // Ensure the first label is set
|
||||
});
|
||||
|
||||
// Add delete functionality to the initial form
|
||||
spekBangunanContainer.querySelectorAll('.delete-button').forEach(button => {
|
||||
@@ -241,6 +297,7 @@
|
||||
if (spekBangunanContainer.querySelectorAll('.spek-bangunan').length > 1) {
|
||||
spekBangunan.remove();
|
||||
updateDeleteButtonsVisibility();
|
||||
updateBuildingLabels(); // Update the labels after removing
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,7 @@
|
||||
@endsection --}}
|
||||
|
||||
@section('content')
|
||||
@include('lpj::assetsku.includenya')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card min-w-full">
|
||||
<div class="card min-w-full">
|
||||
@@ -234,6 +235,7 @@
|
||||
if (response.success) {
|
||||
window.location.href =
|
||||
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=denah';
|
||||
toastrSuccessBuild(response.message);
|
||||
}
|
||||
console.log(response);
|
||||
},
|
||||
@@ -249,6 +251,8 @@
|
||||
console.log('Status:', status);
|
||||
console.log('Response:', xhr.responseText);
|
||||
console.log(errors);
|
||||
toastrErrorBuild(error);
|
||||
|
||||
},
|
||||
complete: function() {
|
||||
// Re-enable the button and hide the spinner
|
||||
|
||||
@@ -8,13 +8,23 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Faktor Positif</label>
|
||||
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
|
||||
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old('fakta_positif.0', $forminspeksi['fakta_positif'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-fakta_positif" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@if (!empty($forminspeksi['fakta']['fakta_positif']))
|
||||
@foreach ($forminspeksi['fakta']['fakta_positif'] as $index => $positif)
|
||||
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old("fakta_positif.$index", $positif) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old('fakta_positif.0', '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endif
|
||||
<button type="button" class="btn btn-primary btn-sm mt-5"
|
||||
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
@@ -22,16 +32,30 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Faktor Negatif</label>
|
||||
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
|
||||
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['fakta_negatif']))
|
||||
@foreach ($forminspeksi['fakta']['fakta_negatif'] as $index => $negatif)
|
||||
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old("fakta_negatif.$index", $negatif) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $forminspeksi['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@endif
|
||||
<button type="button" class="btn btn-primary btn-sm mt-5"
|
||||
onclick="addClonableItem('fakta-negatif-container', 'fakta_negatif')">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
@@ -43,7 +67,7 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Rute Menuju</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<textarea class="textarea mt-2" name="rute_menuju" rows="3">{{ old('rute_menuju.0', $forminspeksi['rute_menuju'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="rute_menuju" rows="3">{{ old('rute_menuju.0', $forminspeksi['fakta']['rute_menuju'][0] ?? '') }}</textarea>
|
||||
<em id="error-rute_menuju" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,12 +83,12 @@
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="batas_batas[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('batas_batas', $forminspeksi['batas_batas'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, old('batas_batas', $forminspeksi['fakta']['batas_batas'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="batas_batas_input[]" class="input w-full"
|
||||
id="bentukTanahInput" placeholder="Masukkan Batas {{ $item->name }}..."
|
||||
value="{{ old('batas_batas_input.' . $loop->index, $forminspeksi['batas_batas_input'][$loop->index] ?? '') }}">
|
||||
value="{{ old('batas_batas_input.' . $loop->index, $forminspeksi['fakta']['batas_batas_input'][$loop->index] ?? '') }}">
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -77,14 +101,29 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kondisi lain terkait lingkungan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full" id="kondisi-lingkungan-container">
|
||||
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="3" placeholder="Tambahkan keterangan"></textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-kondisi_lingkungan" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['kondisi_lingkungan']))
|
||||
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] as $index => $kondisi_lingkungan)
|
||||
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="3">{{ old("kondisi_lingkungan.$index", $kondisi_lingkungan) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="3" placeholder="Tambahkan keterangan">
|
||||
{{ old('kondisi_lingkungan.0', $forminspeksi['fakta']['kondisi_lingkungan'][0] ?? '') }}
|
||||
</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-kondisi_lingkungan" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@endif
|
||||
<button class="btn btn-primary btn-sm mt-5" type="button"
|
||||
onclick="addClonableItem('kondisi-lingkungan-container', 'kondisi_lingkungan')">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
@@ -97,14 +136,26 @@
|
||||
<label class="form-label max-w-56">Kondisi lain terkait Bangunan</label>
|
||||
<div id="kondisi-lain-bangunan-container" class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
|
||||
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="3">{{ old('kondisi_lain_bangunan.0', $forminspeksi['kondisi_lain_bangunan'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-kondisi_lain_bangunan" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@if (!empty($forminspeksi['fakta']['kondisi_lain_bangunan']))
|
||||
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] as $index => $kondisi_lain_bangunan)
|
||||
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="3">{{ old("kondisi_lain_bangunan.$index", $kondisi_lain_bangunan) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="3">{{ old('kondisi_lain_bangunan.0', $forminspeksi['fakta']['kondisi_lain_bangunan'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-kondisi_lain_bangunan" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@endif
|
||||
<button type="button"
|
||||
onclick="addClonableItem('kondisi-lain-bangunan-container', 'kondisi_lain_bangunan')"
|
||||
class="btn btn-primary btn-sm mt-5 ">
|
||||
@@ -117,24 +168,37 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Informasi Terkait Dokumen</label>
|
||||
<div id="informasi-dokument-container" class="flex flex-wrap items-baseline w-full">
|
||||
@php
|
||||
// Ensure $forminspeksi['fakta']['informasi_dokument'] is an array
|
||||
$informasi_dokument = isset($forminspeksi['fakta']['informasi_dokument']) ? (array) $forminspeksi['fakta']['informasi_dokument'] : [];
|
||||
@endphp
|
||||
|
||||
@foreach ($informasi_dokument as $index => $document)
|
||||
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="3">{{ old("informasi_dokument.$index", $document) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="informasi_dokument" rows="3">{{ old('informasi_dokument.0', $forminspeksi['informasi_dokument'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="informasi_dokument" rows="3">
|
||||
{{ old('informasi_dokument.0', isset($forminspeksi['fakta']['informasi_dokument'][0]) ? $forminspeksi['fakta']['informasi_dokument'][0] : '') }}
|
||||
</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
<em id="error-informasi_dokument" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
<button class="btn btn-primary btn-sm mt-5 " type="button"
|
||||
onclick="addClonableItem('informasi-dokument-container', 'informasi_dokument')">
|
||||
|
||||
<button class="btn btn-primary btn-sm mt-5" type="button" onclick="addClonableItem('informasi-dokument-container', 'informasi_dokument')">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
@endsection --}}
|
||||
|
||||
@section('content')
|
||||
@include('lpj::assetsku.includenya')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card min-w-full">
|
||||
<div class="card min-w-full">
|
||||
@@ -588,104 +589,14 @@
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Modal Kamera -->
|
||||
<div class="modal fade" data-modal="true" id="cameraModal" data-backdrop="" data-keyboard="false">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">Ambil Foto</h3>
|
||||
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true" id="closeModal">
|
||||
<i class="ki-outline ki-cross"></i>
|
||||
</button>
|
||||
</div>
|
||||
<!-- Camera Interface -->
|
||||
<div class="modal-body">
|
||||
<div class="camera-container relative">
|
||||
<video id="video" class="w-full h-auto" autoplay playsinline></video>
|
||||
<canvas id="canvas" class="hidden w-full h-auto"></canvas>
|
||||
<canvas id="drawingCanvas" class="hidden absolute top-0 left-0 w-full h-full"></canvas>
|
||||
<div id="textOverlay" class="position-absolute top-0 left-0 w-100 h-100 pointer-events-none">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer mt-2">
|
||||
<div id="cameraControls" class="flex justify-center gap-2 mt-4">
|
||||
<button id="startButton" class="btn btn-primary">
|
||||
<i class="ki-outline ki-camera"></i> Start Camera
|
||||
</button>
|
||||
<button id="takePhotoButton" class="btn btn-success" disabled>
|
||||
<i class="ki-outline ki-photograph"></i> Ambil Foto
|
||||
</button>
|
||||
<button id="switchButton" class="btn btn-info" disabled>
|
||||
<i class="ki-outline ki-arrows-circle"></i> Switch Camera
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Editor Controls -->
|
||||
<div id="editorControls" class=" flex flex-wrap gap-2 mt-4">
|
||||
<div class="drawing-tools flex gap-2">
|
||||
|
||||
<button class="tool-btn btn btn-sm" data-tool="brush">
|
||||
<i class="ki-filled ki-brush"></i>
|
||||
</button>
|
||||
<button class="tool-btn btn btn-sm" data-tool="rectangle">
|
||||
<i class="ki-filled ki-frame"></i>
|
||||
</button>
|
||||
<button class="btn btn-light btn-sm tool-btn" data-tool="arrow">
|
||||
<i class="ki-duotone ki-arrow-right fs-2"></i>
|
||||
</button>
|
||||
<button class="tool-btn btn btn-sm" data-tool="circle">
|
||||
<i class="ki-filled ki-mouse-circle"></i>
|
||||
</button>
|
||||
<button class="tool-btn btn btn-sm" data-tool="text">
|
||||
<i class="ki-filled ki-text"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="drawing-settings flex gap-2">
|
||||
<input type="color" id="colorPicker" class="w-8 h-8 rounded">
|
||||
<div class="flex items-center gap-2">
|
||||
<input type="range" id="brushSize" min="1" max="20" value="5"
|
||||
class="range range-sm">
|
||||
<span id="brushSizeValue" class="text-sm">5px</span>
|
||||
</div>
|
||||
<input type="text" id="textInput" class="input" placeholder="Enter text">
|
||||
<button type="button" class="btn btn-primary" id="confirmTextBtn">Add Text</button>
|
||||
</div>
|
||||
|
||||
<div class="history-controls flex gap-2">
|
||||
<button id="undoButton" class="btn btn-sm">
|
||||
<i class="ki-filled ki-arrows-loop"></i>
|
||||
</button>
|
||||
<button id="resetButton" class="btn btn-sm">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="final-controls flex gap-2">
|
||||
<button type="button" class="btn btn-light btn-sm" data-modal-dismiss="true">Cancel</button>
|
||||
<button id="backButton" class="btn btn-warning btn-sm">
|
||||
<i class="ki-outline ki-arrow-left"></i> Kembali
|
||||
</button>
|
||||
<button id="saveButton" class="btn btn-success btn-sm" data-modal-dismiss="true">
|
||||
<i class="ki-outline ki-check"></i> Simpan
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('lpj::surveyor.components.modal-kamera')
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
|
||||
|
||||
function submitFoto() {
|
||||
const formElement = $('#formFoto')[0];
|
||||
const formData = new FormData(formElement);
|
||||
@@ -712,6 +623,7 @@
|
||||
if (response.success) {
|
||||
window.location.href =
|
||||
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=foto';
|
||||
toastrSuccessBuild(response.message);
|
||||
}
|
||||
|
||||
},
|
||||
@@ -727,6 +639,7 @@
|
||||
console.log('Status:', status);
|
||||
console.log('Response:', xhr.responseText);
|
||||
console.log(errors);
|
||||
toastrErrorBuild(error);
|
||||
},
|
||||
complete: function() {
|
||||
// Re-enable the button and hide the spinner
|
||||
@@ -738,307 +651,6 @@
|
||||
}
|
||||
</script>
|
||||
@include('lpj::surveyor.js.camera-editor')
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
const ruteLainnyaDiv = document.getElementById("ruteLainnya");
|
||||
const lantaiLainnyaDiv = document.getElementById("lantaiLainnya");
|
||||
|
||||
// Function to add delete event listeners to existing buttons
|
||||
function addDeleteListeners(container) {
|
||||
container.querySelectorAll(".delete-button").forEach(button => {
|
||||
button.addEventListener("click", function() {
|
||||
this.closest(
|
||||
".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5"
|
||||
).remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Add delete listeners to existing buttons
|
||||
addDeleteListeners(ruteLainnyaDiv);
|
||||
addDeleteListeners(lantaiLainnyaDiv);
|
||||
|
||||
function createNewDiv(container, inputName) {
|
||||
const newDiv = document.createElement("div");
|
||||
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
|
||||
newDiv.innerHTML = `
|
||||
<label class="flex flex-col form-label max-w-56">
|
||||
Masukkan nama ${inputName}
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
||||
<div class="flex flex-wrap items-baseline px-2">
|
||||
<input class="input" type="text" name="name_${inputName}[]">
|
||||
</div>
|
||||
<div class=" w-full flex flex-col gap-2">
|
||||
<img id="foto_${inputName}-preview"
|
||||
src="{{ isset($formFoto['gerbang']) ? asset('storage/' . $formFoto['gerbang']) : '' }}"
|
||||
alt="Foto Gerbong" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($formFoto['gerbang']) ? '' : 'display: none;' }} width: 30rem;">
|
||||
|
||||
|
||||
<div class="input-group w-full flex gap-2">
|
||||
<input id="inputLainnya" type="file" name="foto_${inputName}[]"
|
||||
class="file-input file-input-bordered w-full" accept="image/*" capture="camera"
|
||||
onchange="previewImage(this, 'foto_${inputName}-preview')"
|
||||
>
|
||||
<button type="button" id="btnCamera" class="btn btn-light"
|
||||
data-modal-toggle="#cameraModal">
|
||||
<i class="ki-outline ki-abstract-33"></i> Camera
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<button type="button" class="btn btn-danger btn-sm delete-button">
|
||||
<i class="ki-filled ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
container.appendChild(newDiv);
|
||||
addDeleteListeners(container);
|
||||
}
|
||||
|
||||
document.getElementById("btnAddMore").addEventListener("click", function() {
|
||||
createNewDiv(ruteLainnyaDiv, "rute_lainnya");
|
||||
});
|
||||
|
||||
document.getElementById("btnAddMoreObject").addEventListener("click", function() {
|
||||
createNewDiv(lantaiLainnyaDiv, "lantai_lainnya");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
.draggable-text {
|
||||
z-index: 1000;
|
||||
}
|
||||
.draggable-text:hover {
|
||||
outline: 1px dashed #666;
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const editor = new UniversalCameraEditor();
|
||||
const cameraButtons = document.querySelectorAll('#btnCamera');
|
||||
const modal = document.getElementById('cameraModal');
|
||||
const closeModal = document.getElementById('closeModal');
|
||||
|
||||
// Current input field to update
|
||||
let currentInputField = null;
|
||||
|
||||
// Handle camera button click
|
||||
cameraButtons.forEach(button => {
|
||||
button.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
const inputContainer = this.closest('.input-group');
|
||||
currentInputField = inputContainer.querySelector('input[type="file"]');
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('modal-open');
|
||||
editor.startCamera();
|
||||
});
|
||||
});
|
||||
|
||||
closeModal.addEventListener('click', function() {
|
||||
modal.classList.add('hidden');
|
||||
editor.closeCamera();
|
||||
});
|
||||
// Override save function
|
||||
editor.saveAndUpload = async function() {
|
||||
try {
|
||||
// Create final canvas
|
||||
const finalCanvas = document.createElement('canvas');
|
||||
finalCanvas.width = this.canvas.width;
|
||||
finalCanvas.height = this.canvas.height;
|
||||
const ctx = finalCanvas.getContext('2d');
|
||||
|
||||
// Draw original photo and edited result on final canvas
|
||||
ctx.drawImage(this.canvas, 0, 0);
|
||||
ctx.drawImage(this.drawingCanvas, 0, 0);
|
||||
|
||||
// Convert canvas to Blob and create file
|
||||
finalCanvas.toBlob(async (blob) => {
|
||||
const file = new File([blob], `camera_photo_${Date.now()}.jpg`, {
|
||||
type: "image/jpeg"
|
||||
});
|
||||
|
||||
// Create FileList and update input field
|
||||
const dataTransfer = new DataTransfer();
|
||||
dataTransfer.items.add(file);
|
||||
|
||||
if (currentInputField) {
|
||||
currentInputField.files = dataTransfer.files;
|
||||
|
||||
const event = new Event('change', {
|
||||
bubbles: true
|
||||
});
|
||||
currentInputField.dispatchEvent(event);
|
||||
const previewContainer = currentInputField.closest('.input-group')
|
||||
.querySelector('.preview-container');
|
||||
if (previewContainer) {
|
||||
const img = document.createElement('img');
|
||||
img.src = URL.createObjectURL(file);
|
||||
img.className = 'w-full h-32 object-cover rounded-lg';
|
||||
previewContainer.innerHTML = '';
|
||||
previewContainer.appendChild(img);
|
||||
}
|
||||
}
|
||||
|
||||
// Close modal
|
||||
|
||||
modal.classList.remove('show');
|
||||
modal.style.display = 'none';
|
||||
modal.setAttribute('aria-hidden', 'true');
|
||||
// document.body.classList.remove('modal-open');
|
||||
|
||||
|
||||
// Remove modal backdrop if exists
|
||||
const backdrop = document.querySelector('.modal-backdrop');
|
||||
if (backdrop) {
|
||||
backdrop.remove();
|
||||
}
|
||||
|
||||
// Stop camera stream
|
||||
if (editor.stream) {
|
||||
editor.stream.getTracks().forEach(track => track.stop());
|
||||
editor.stream = null;
|
||||
}
|
||||
|
||||
// Reset camera to initial state
|
||||
editor.closeCamera();
|
||||
|
||||
// Reset scroll if needed
|
||||
window.scrollTo(0, 0); // Adjust as necessary
|
||||
}, 'image/jpeg', 0.8);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error saving photo:', error);
|
||||
alert('Error saving photo. Please try again.');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Handle escape key
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape') {
|
||||
const modal = document.getElementById('cameraModal');
|
||||
if (modal.classList.contains('modal-open')) {
|
||||
modal.classList.remove('modal-open');
|
||||
modal.classList.add('hidden');
|
||||
if (editor.stream) {
|
||||
editor.stream.getTracks().forEach(track => track.stop());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
function setupInputHandlers(containerId, buttonId, labelText, inputDataClass, buttonDeleteClass) {
|
||||
const inputContainer = document.getElementById(containerId);
|
||||
const addButton = document.getElementById(buttonId);
|
||||
|
||||
function updateLabels() {
|
||||
const labels = inputContainer.querySelectorAll('.form-label span');
|
||||
labels.forEach((label, index) => {
|
||||
label.textContent = `${labelText} ${index + 1}`;
|
||||
});
|
||||
}
|
||||
|
||||
function handleDeleteButtons() {
|
||||
const deleteBtns = inputContainer.querySelectorAll(`.${buttonDeleteClass}`);
|
||||
deleteBtns.forEach(btn => {
|
||||
btn.style.display = inputContainer.children.length > 1 ? 'block' : 'none';
|
||||
});
|
||||
}
|
||||
|
||||
function createNewInput() {
|
||||
const newDiv = inputContainer.children[0].cloneNode(true);
|
||||
const inputFile = newDiv.querySelector(`.${inputDataClass}`);
|
||||
inputFile.id = `inputRute-${inputContainer.children.length}`;
|
||||
|
||||
// Reset input file value
|
||||
if (inputFile) {
|
||||
inputFile.value = '';
|
||||
}
|
||||
|
||||
// Update the camera button to set currentInputField
|
||||
const cameraButton = newDiv.querySelector('#btnCamera');
|
||||
if (cameraButton) {
|
||||
cameraButton.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
currentInputField = inputFile; // Set current input field to the new input
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('modal-open');
|
||||
editor.startCamera();
|
||||
});
|
||||
}
|
||||
|
||||
// Add delete button functionality
|
||||
const deleteBtn = newDiv.querySelector(`.${buttonDeleteClass}`);
|
||||
if (deleteBtn) {
|
||||
deleteBtn.addEventListener('click', function() {
|
||||
inputContainer.removeChild(newDiv);
|
||||
handleDeleteButtons();
|
||||
updateLabels();
|
||||
});
|
||||
}
|
||||
|
||||
// Update preview container
|
||||
const previewContainer = document.createElement('div');
|
||||
previewContainer.className = 'preview-container';
|
||||
|
||||
const img = document.createElement('img');
|
||||
img.id = `foto_rute-preview-${inputFile.id}`;
|
||||
img.src = '';
|
||||
img.className = 'mt-2 h-auto';
|
||||
img.style.display = 'none';
|
||||
img.style.width = '30rem';
|
||||
previewContainer.appendChild(img);
|
||||
|
||||
// Append preview container to the new input group
|
||||
const inputGroup = newDiv.querySelector('.input-group');
|
||||
inputGroup.appendChild(previewContainer);
|
||||
|
||||
newDiv.style.marginTop = '10px';
|
||||
inputContainer.appendChild(newDiv);
|
||||
updateLabels();
|
||||
handleDeleteButtons();
|
||||
}
|
||||
|
||||
if (addButton) {
|
||||
addButton.addEventListener('click', createNewInput);
|
||||
}
|
||||
|
||||
const firstDeleteBtn = inputContainer.children[0].querySelector(`.${buttonDeleteClass}`);
|
||||
if (firstDeleteBtn) {
|
||||
firstDeleteBtn.addEventListener('click', function() {
|
||||
if (inputContainer.children.length > 1) {
|
||||
inputContainer.removeChild(this.closest('.flex'));
|
||||
handleDeleteButtons();
|
||||
updateLabels();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateLabels();
|
||||
}
|
||||
|
||||
setupInputHandlers('inputContainerRute', 'btnRute', 'Foto Rute Menuju Lokasi', 'file-input',
|
||||
'delete-btn');
|
||||
setupInputHandlers('inputContainerLantai', 'btnLantai', 'Foto Lantai', 'file-input', 'delete-btn');
|
||||
setupInputHandlers('inputContainerLingkungan', 'btnLingkungan', 'Lingkungan', 'file-input',
|
||||
'delete-btn');
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class=" card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class=" card w-full bg-white rounded-lg shadow-md ">
|
||||
<div class="card-body">
|
||||
<div class="py-4">
|
||||
<h1 class="text-md font-medium text-gray-900">Order Penilaian</h1>
|
||||
@@ -43,7 +43,7 @@
|
||||
<div id="perwakilan" class="flex flex-wrap items-baseline w-full gap-5">
|
||||
<div class="perwakilan flex flex-wrap w-full items-baseline gap-2 ">
|
||||
<input type="text" class="input form-control" name="debitur_perwakilan[]"
|
||||
value="{{ old('debitur_perwakilan', isset($forminspeksi['debitur_perwakilan']) ? implode(', ', $forminspeksi['debitur_perwakilan']) : '') }}"
|
||||
value="{{ old('debitur_perwakilan', isset($forminspeksi['asset']['debitur_perwakilan']) ? implode(', ', $forminspeksi['asset']['debitur_perwakilan']) : '') }}"
|
||||
placeholder="Masukkan Debitur/Perwakilan" />
|
||||
<button type="button" class="btn btn-danger btn-outline btn-xs remove-btn"
|
||||
style="display: none">Hapus</button>
|
||||
@@ -61,7 +61,7 @@
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
|
||||
<div class="card-body">
|
||||
<div class="py-4 px-6">
|
||||
<div class="py-4">
|
||||
<h1 class="text-md font-medium text-gray-900">Nama Cadeb/Debitur</h1>
|
||||
</div>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class="card w-full bg-white rounded-lg shadow-md ">
|
||||
<div class="card-body">
|
||||
<div class="py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Deskripsi Aset jaminan</h1>
|
||||
@@ -99,32 +99,37 @@
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio"
|
||||
name="jenis_asset" value="sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<input onclick="toggleFieldVisibility('jenis_asset', 'jenis_asset', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="jenis_asset" value="sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['asset']['jenis_asset'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio"
|
||||
name="jenis_asset" value="tidak sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<input onclick="toggleFieldVisibility('jenis_asset', 'jenis_asset', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="jenis_asset" value="tidak sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['asset']['jenis_asset'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
<!-- Select dropdown untuk "Tidak Sesuai" -->
|
||||
<select id="jenis_asset"
|
||||
class="input w-full @error('jenis_asset_tidak_sesuai') border-danger bg-danger-light @enderror"
|
||||
name="jenis_asset_tidak_sesuai"
|
||||
style="{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<option value="">Select Jenis asset</option>
|
||||
@if (isset($arahMataAngin))
|
||||
@foreach ($arahMataAngin as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('jenis_asset_tidak_sesuai', $forminspeksi['jenis_asset_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
|
||||
<div id="jenis_asset" class="flex items-baseline gap-2"
|
||||
style="{{ old('jenis_asset', $forminspeksi['asset']['jenis_asset'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<select id="jenis_asset_tidak_sesuai" class="input w-full"
|
||||
name="jenis_asset_tidak_sesuai">
|
||||
<option value="">Select Jenis asset</option>
|
||||
@if (isset($jenisJaminan))
|
||||
@foreach ($jenisJaminan as $item)
|
||||
<option value="{{ $item->id }}"
|
||||
{{ old('jenis_asset_tidak_sesuai', $forminspeksi['asset']['jenis_asset_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
<button type="button" class="btn btn-md btn-primary"
|
||||
onclick="updateAnalisa('jenis_asset')">Save</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<em id="error-jenis_asset" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@@ -134,7 +139,6 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Alamat</label>
|
||||
<div>
|
||||
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
<span class="text-2sm text-gray-700">
|
||||
{{ formatAlamat($dokumen) }}
|
||||
@@ -143,101 +147,136 @@
|
||||
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio"
|
||||
class="radio" name="alamat_sesuai" value="sesuai"
|
||||
{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio"
|
||||
class="radio" name="alamat_sesuai" value="tidak sesuai"
|
||||
{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input
|
||||
onclick="toggleAlamatVisibility('alamat_sesuai', 'alamat_tidak_sesuai', 'sesuai')"
|
||||
type="radio" class="radio" name="alamat_sesuai" value="sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['asset']['jenis_asset'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input
|
||||
onclick="toggleAlamatVisibility('alamat_sesuai', 'alamat_tidak_sesuai', 'tidak sesuai')"
|
||||
type="radio" class="radio" name="alamat_sesuai" value="tidak sesuai"
|
||||
{{ old('jenis_asset', $forminspeksi['asset']['jenis_asset'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<input type="text" name="alamat_tidak_sesuai" id="alamat_tidak_sesuai"
|
||||
class="input w-full" placeholder="Masukan jenis asset Tanah"
|
||||
value="{{ old('alamat_tidak_sesuai', $forminspeksi['alamat_tidak_sesuai'] ?? '') }}"
|
||||
style="{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
</div>
|
||||
<em id="error-alamat" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
<div class="grid gap-2 mt-5">
|
||||
@php
|
||||
|
||||
$inputDataLoaksi = [];
|
||||
$inputDataLoaksi = [
|
||||
[
|
||||
'label' => 'Jl.',
|
||||
'index' => 0,
|
||||
'name' => 'nama_jalan',
|
||||
'value' => old(
|
||||
'nama_jalan',
|
||||
isset($forminspeksi['nama_jalan']) ? $forminspeksi['nama_jalan'] : '',
|
||||
),
|
||||
],
|
||||
|
||||
[
|
||||
'label' => 'Desa/Kelurahan',
|
||||
'index' => 3,
|
||||
'name' => 'desa_kelurahan',
|
||||
'value' => old(
|
||||
'desa_kelurahan',
|
||||
isset($forminspeksi['desa_kelurahan']) ? $forminspeksi['desa_kelurahan'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
'label' => 'Kecamatan',
|
||||
'index' => 4,
|
||||
'name' => 'kecamatan',
|
||||
'value' => old(
|
||||
'kecamatan',
|
||||
isset($forminspeksi['kecamatan']) ? $forminspeksi['kecamatan'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
'label' => 'Kota/Kabupaten',
|
||||
'index' => 5,
|
||||
'name' => 'kota_kabupaten',
|
||||
'value' => old(
|
||||
'kota_kabupaten',
|
||||
isset($forminspeksi['kota_kabupaten']) ? $forminspeksi['kota_kabupaten'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
'label' => 'Provinsi',
|
||||
'index' => 6,
|
||||
'name' => 'provinsi',
|
||||
'value' => old(
|
||||
'provinsi',
|
||||
isset($forminspeksi['provinsi']) ? $forminspeksi['provinsi'] : '',
|
||||
),
|
||||
],
|
||||
];
|
||||
|
||||
@endphp
|
||||
|
||||
@if (count($inputDataLoaksi) > 0)
|
||||
@foreach ($inputDataLoaksi as $item)
|
||||
<!-- Nomor Lambung -->
|
||||
{{-- Alamat Sesuai --}}
|
||||
<div id="alamat_sesuai" class="grid gap-2 mt-5" style="display: none;">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
@php
|
||||
$fields = [
|
||||
[
|
||||
'label' => 'Jl.',
|
||||
'value' => $dokumen->address ?? '',
|
||||
'name' => 'nama_jalan',
|
||||
'readonly' => false,
|
||||
],
|
||||
[
|
||||
'label' => 'Provinsi',
|
||||
'value' => $dokumen->province->name ?? '',
|
||||
'name' => 'provinsi',
|
||||
'readonly' => true,
|
||||
],
|
||||
[
|
||||
'label' => 'Kota/Kabupaten',
|
||||
'value' => $dokumen->city->name ?? '',
|
||||
'name' => 'kota_kabupaten',
|
||||
'readonly' => true,
|
||||
],
|
||||
[
|
||||
'label' => 'Kecamatan',
|
||||
'value' => $dokumen->district->name ?? '',
|
||||
'name' => 'kecamatan',
|
||||
'readonly' => true,
|
||||
],
|
||||
[
|
||||
'label' => 'Kelurahan',
|
||||
'value' => $dokumen->village->name ?? '',
|
||||
'name' => 'desa_kelurahan',
|
||||
'readonly' => true,
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
@foreach ($fields as $field)
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">{{ $item['label'] }}</label>
|
||||
<label class="form-label max-w-56">{{ $field['label'] }}</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="{{ $item['name'] }}" class="input"
|
||||
placeholder="Masukkan {{ $item['label'] }}"
|
||||
value="{{ $item['value'] }}">
|
||||
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
|
||||
<input type="text" class="input" name="{{ $field['name'] }}"
|
||||
value="{{ $field['value'] }}" {{ $field['readonly'] ? 'readonly' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
{{-- Alamat Tidak Sesuai --}}
|
||||
<div id="alamat_tidak_sesuai" class="grid gap-2 mt-5" style="display: none;">
|
||||
@php
|
||||
$inputDataLokasi = [
|
||||
['label' => 'Jl.', 'id' => 'address', 'name' => 'address', 'type' => 'text'],
|
||||
[
|
||||
'label' => 'Provinsi',
|
||||
'id' => 'province_code',
|
||||
'name' => 'provinsi',
|
||||
'type' => 'select',
|
||||
'options' => $provinces,
|
||||
],
|
||||
[
|
||||
'label' => 'Kota/Kabupaten',
|
||||
'id' => 'city_code',
|
||||
'name' => 'kota_kabupaten',
|
||||
'type' => 'select',
|
||||
'options' => $provinces,
|
||||
],
|
||||
[
|
||||
'label' => 'Kecamatan',
|
||||
'id' => 'district_code',
|
||||
'name' => 'kecamatan',
|
||||
'type' => 'select',
|
||||
'options' => $provinces,
|
||||
],
|
||||
[
|
||||
'label' => 'Desa/Kelurahan',
|
||||
'id' => 'village_code',
|
||||
'name' => 'desa_kelurahan',
|
||||
'type' => 'select',
|
||||
'options' => $provinces,
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
|
||||
|
||||
@foreach ($inputDataLokasi as $item)
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">{{ $item['label'] }}</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@if ($item['type'] === 'text')
|
||||
<input id="{{ $item['id'] }}" name="{{ $item['name'] }}" class="input">
|
||||
@else
|
||||
<select id="{{ $item['id'] }}" name="{{ $item['name'] }}"
|
||||
class="select w-full">
|
||||
<option value="">{{ $item['label'] }}</option>
|
||||
@if ($item['id'] === 'province_code')
|
||||
@foreach ($item['options'] as $option)
|
||||
<option value="{{ $option->code }}">{{ $option->name }}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -249,16 +288,20 @@
|
||||
<h1 class="text-md font-medium text-gray-900">Titik Koordinat Google Maps</h1>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Koordinat</label>
|
||||
<div id="perwakilan" class="flex flex-wrap items-baseline w-full gap-5">
|
||||
<label class="form-label max-w-56">Kordinat</label>
|
||||
<div id="perwakilan" class="flex items-baseline w-full gap-5">
|
||||
<div class="grid grid-cols-2 gap-4 items-center w-full">
|
||||
<input class="input" type="text" name="kordinat_lat" id="lat"
|
||||
value="{{ old('kordinat_lat') }}" @readonly(true)>
|
||||
<input class="input" type="text" name="kordinat_lng" id="lng"
|
||||
value="{{ old('kordinat_lng') }}" @readonly(true)>
|
||||
<input class="input" type="text" placeholder="Masukan Koordinat Latitude" type="text"
|
||||
name="kordinat_lat" id="lat"
|
||||
value="{{ old('kordinat_lat', isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '') }}">
|
||||
<input class="input" type="text" placeholder="Masukan Koordinat Longitude"
|
||||
name="kordinat_lng" id="lng"
|
||||
value="{{ old('kordinat_lng', isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '') }}">
|
||||
</div>
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="getUserLocation()">Ambil
|
||||
Kordinat</button>
|
||||
<a target="_blank" href="https://www.google.com/maps"type="button"
|
||||
class="btn btn-md btn-outline btn-primary">
|
||||
<i class="ki-filled ki-map"></i>Ambil
|
||||
Kordinat</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -362,10 +405,47 @@
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Pemilik Jaminan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
{{ $dokumen->pemilik->hubungan_pemilik->name?? "" }}
|
||||
@endforeach
|
||||
<div>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
{{ $dokumen->pemilik->hubungan_pemilik->name ?? '' }}
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('hub_cadeb','hub_cadeb_tidak_sesuai', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="hub_cadeb" value="sesuai"
|
||||
{{ old('hub_cadeb', $forminspeksi['asset']['hub_cadeb'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('hub_cadeb','hub_cadeb_tidak_sesuai', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="hub_cadeb" value="tidak sesuai"
|
||||
{{ old('hub_cadeb', $forminspeksi['asset']['hub_cadeb'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
<!-- Select dropdown untuk "Tidak Sesuai" -->
|
||||
<select id="hub_cadeb_tidak_sesuai"
|
||||
class="input w-full
|
||||
name="hub_cadeb_tidak_sesuai"
|
||||
style="{{ old('hub_cadeb', $forminspeksi['asset']['hub_cadeb'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<option value="">Select Hubungan Cadeb</option>
|
||||
@if (isset($hubCadeb))
|
||||
@foreach ($hubCadeb as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('hub_cadeb_tidak_sesuai', $forminspeksi['asset']['hub_cadeb_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
<em id="error-hub_cadeb" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -376,10 +456,48 @@
|
||||
<h1 class="text-md font-medium text-gray-900">Hubungan Cadeb/Debitur dengan Penghuni Jaminan</h1>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Penghuni Jaminan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
{{ $dokumen->penghuni->hubungan_penghuni->name?? "" }}
|
||||
@endforeach
|
||||
|
||||
<div class="mt-2">
|
||||
<div class="flex flex-wrap items-baseline w-full text-sm">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
{{ $dokumen->penghuni->hubungan_penghuni->name ?? 'N/A' }}
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('hub_cadeb_penghuni','hub_cadeb_Penghuni_tidak_sesuai', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="hub_cadeb_penghuni" value="sesuai"
|
||||
{{ old('hub_cadeb_penghuni', $forminspeksi['asset']['hub_cadeb_penghuni'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('hub_cadeb_penghuni', 'hub_cadeb_Penghuni_tidak_sesuai', ['tidak sesuai'])"
|
||||
type="radio" class="radio" name="hub_cadeb_penghuni" value="tidak sesuai"
|
||||
{{ old('hub_cadeb_penghuni', $forminspeksi['asset']['hub_cadeb_penghuni'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
<!-- Select dropdown untuk "Tidak Sesuai" -->
|
||||
<select id="hub_cadeb_Penghuni_tidak_sesuai"
|
||||
class="input w-full
|
||||
name="hub_cadeb_Penghuni_tidak_sesuai"
|
||||
style="{{ old('hub_cadeb', $forminspeksi['asset']['hub_cadeb'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<option value="">Select Hubungan Cadeb</option>
|
||||
@if (isset($hubPenghuni))
|
||||
@foreach ($hubPenghuni as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('hub_cadeb_Penghuni_tidak_sesuai', $forminspeksi['asset']['hub_cadeb_Penghuni_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
<em id="error-hub_cadeb" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,26 +16,26 @@
|
||||
'index' => 0,
|
||||
'value' => old(
|
||||
'peruntukan',
|
||||
isset($forminspeksi['peruntukan']) ? $forminspeksi['peruntukan'] : '',
|
||||
isset($forminspeksi['fakta']['peruntukan']) ? $forminspeksi['fakta']['peruntukan'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
'label' => 'KDB',
|
||||
'name' => 'kdb',
|
||||
'index' => 1,
|
||||
'value' => old('kdb', isset($forminspeksi['kdb']) ? $forminspeksi['kdb'] : ''),
|
||||
'value' => old('kdb', isset($forminspeksi['fakta']['kdb']) ? $forminspeksi['fakta']['kdb'] : ''),
|
||||
],
|
||||
[
|
||||
'label' => 'KDH',
|
||||
'name' => 'kdh',
|
||||
'index' => 2,
|
||||
'value' => old('kdh', isset($forminspeksi['kdh']) ? $forminspeksi['kdh'] : ''),
|
||||
'value' => old('kdh', isset($forminspeksi['fakta']['kdh']) ? $forminspeksi['fakta']['kdh'] : ''),
|
||||
],
|
||||
[
|
||||
'label' => 'gsb',
|
||||
'label' => 'GSB',
|
||||
'name' => 'gsb',
|
||||
'index' => 3,
|
||||
'value' => old('gsb', isset($forminspeksi['gsb']) ? $forminspeksi['gsb'] : ''),
|
||||
'value' => old('gsb', isset($forminspeksi['fakta']['gsb']) ? $forminspeksi['fakta']['gsb'] : ''),
|
||||
],
|
||||
[
|
||||
'label' => 'Max Lantai',
|
||||
@@ -43,20 +43,20 @@
|
||||
'index' => 4,
|
||||
'value' => old(
|
||||
'max_lantai',
|
||||
isset($forminspeksi['max_lantai']) ? $forminspeksi['max_lantai'] : '',
|
||||
isset($forminspeksi['fakta']['max_lantai']) ? $forminspeksi['fakta']['max_lantai'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
'label' => 'KLB',
|
||||
'name' => 'klb',
|
||||
'index' => 5,
|
||||
'value' => old('klb', isset($forminspeksi['klb']) ? $forminspeksi['klb'] : ''),
|
||||
'value' => old('klb', isset($forminspeksi['fakta']['klb']) ? $forminspeksi['fakta']['klb'] : ''),
|
||||
],
|
||||
[
|
||||
'label' => 'GSS',
|
||||
'name' => 'gss',
|
||||
'index' => 6,
|
||||
'value' => old('gss', isset($forminspeksi['gss']) ? $forminspeksi['gss'] : ''),
|
||||
'value' => old('gss', isset($forminspeksi['fakta']['gss']) ? $forminspeksi['fakta']['gss'] : ''),
|
||||
],
|
||||
[
|
||||
'label' => 'Pelebaran Jalan',
|
||||
@@ -64,7 +64,7 @@
|
||||
'index' => 7,
|
||||
'value' => old(
|
||||
'pelebaran_jalan',
|
||||
isset($forminspeksi['pelebaran_jalan']) ? $forminspeksi['pelebaran_jalan'] : '',
|
||||
isset($forminspeksi['fakta']['pelebaran_jalan']) ? $forminspeksi['fakta']['pelebaran_jalan'] : '',
|
||||
),
|
||||
],
|
||||
[
|
||||
@@ -73,7 +73,7 @@
|
||||
'index' => 8,
|
||||
'value' => old(
|
||||
'nama_petugas',
|
||||
isset($forminspeksi['nama_petugas']) ? $forminspeksi['nama_petugas'] : '',
|
||||
isset($forminspeksi['fakta']['nama_petugas']) ? $forminspeksi['fakta']['nama_petugas'] : '',
|
||||
),
|
||||
],
|
||||
];
|
||||
@@ -112,7 +112,7 @@
|
||||
</div>
|
||||
<a href="https://gistaru.atrbpn.go.id/rtronline" type="button" class="btn btn-light"
|
||||
target="_blank">
|
||||
<i class="ki-outline ki-abstract-33"></i> Gistaru
|
||||
<i class="ki-filled ki-map"></i> Gistaru
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -134,7 +134,7 @@
|
||||
</div>
|
||||
<a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light"
|
||||
target="_blank">
|
||||
<i class="ki-outline ki-abstract-33"></i> Bhumi
|
||||
<i class="ki-filled ki-map"></i> Bhumi
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -157,53 +157,52 @@
|
||||
</div>
|
||||
<a href="{{ $link_url_region->regions->url }}" type="button" class="btn btn-light"
|
||||
target="_blank">
|
||||
<i class="ki-outline ki-abstract-33"></i>
|
||||
<i class="ki-filled ki-map"></i>
|
||||
{{ $link_url_region->regions->name_url }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<!-- Peta Section -->
|
||||
|
||||
<div class="mt-2" style="margin-top: 20px">
|
||||
<input type="hidden" name="lat" id="lat"
|
||||
value="{{ old('lat', isset($analisa->analisaFakta) ? $analisa->analisaFakta->lat : '') }}">
|
||||
<input type="hidden" name="lng" id="lng"
|
||||
value="{{ old('lng', isset($analisa->analisaFakta) ? $analisa->analisaFakta->lng : '') }}">
|
||||
<div class=" border p-6 rounded-lg shadow-lg flex items-center justify-center"
|
||||
style="height: 300px">
|
||||
<iframe id="mapFrame" frameborder="0" style="width: 100%; height: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Upload Photo Button -->
|
||||
<div class=" flex w-full mt-2" style="margin-top: 20px">
|
||||
<div class="flex flex-col input-group w-full">
|
||||
<label for="" class="block text-sm font-medium text-gray-700">Upload Photo</label>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
<label for="" class="form-label max-w-56 text-sm font-medium text-gray-700">Upload Photo</label>
|
||||
|
||||
<div class="w-full">
|
||||
<div class="w-full grid gap-5">
|
||||
<div class="input-group w-full flex gap-2">
|
||||
<input id="foto_tempat" type="file" name="foto_tempat"
|
||||
|
||||
class="file-input file-input-bordered w-full" accept="image/*"
|
||||
onchange="previewImage(this, 'foto_tempat-preview')">
|
||||
<button type="button" id="btnCamera" class="btn btn-light"
|
||||
data-modal-toggle="#cameraModal">
|
||||
<i class="ki-outline ki-abstract-33"></i> Camera
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<img id="foto_tempat-preview"
|
||||
<img id="foto_tempat-preview"
|
||||
src="{{ asset('storage/' . (isset($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'] : '')) }}"
|
||||
alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Notes Section -->
|
||||
<div class="mt-2" style="margin-top: 20px">
|
||||
<div class="bg-white p-6 rounded-lg">
|
||||
<h4 class="block text-sm font-medium text-gray-700 mt-2">Catatan yang Perlu Diperhatikan
|
||||
</h4>
|
||||
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old('keterangan', $forminspeksi['keterangan'] ?? '') }}</textarea>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
|
||||
<label class="form-label max-w-56">Catatan yang Perlu Diperhatikan
|
||||
</label>
|
||||
<div class="input-group w-full flex gap-2">
|
||||
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old('keterangan', $forminspeksi['fakta']['keterangan'] ?? '') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('lpj::surveyor.components.modal-kamera')
|
||||
|
||||
@push('scripts')
|
||||
@include('lpj::surveyor.js.camera-editor')
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
@endsection --}}
|
||||
|
||||
@section('content')
|
||||
@include('lpj::assetsku.includenya')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card min-w-full">
|
||||
<div class="card min-w-full">
|
||||
@@ -69,59 +70,78 @@
|
||||
</div>
|
||||
@endsection
|
||||
@push('scripts')
|
||||
<script>
|
||||
// Fungsi untuk mengambil lokasi pengguna
|
||||
function getUserLocation() {
|
||||
if (navigator.geolocation) {
|
||||
navigator.geolocation.getCurrentPosition(showPosition, showError);
|
||||
} else {
|
||||
alert("Geolocation tidak didukung oleh browser ini.");
|
||||
}
|
||||
}
|
||||
|
||||
// Fungsi untuk menampilkan posisi
|
||||
function showPosition(position) {
|
||||
var lat = position.coords.latitude;
|
||||
var lng = position.coords.longitude;
|
||||
document.getElementById('lat').value = lat;
|
||||
document.getElementById('lng').value = lng;
|
||||
var mapUrl = `https://www.google.com/maps?q=${lat},${lng}&z=15&output=embed`;
|
||||
document.getElementById('mapFrame').src = mapUrl;
|
||||
}
|
||||
|
||||
// Fungsi untuk menangani error jika lokasi tidak bisa diambil
|
||||
function showError(error) {
|
||||
switch (error.code) {
|
||||
case error.PERMISSION_DENIED:
|
||||
alert("Pengguna menolak permintaan geolokasi.");
|
||||
break;
|
||||
case error.POSITION_UNAVAILABLE:
|
||||
alert("Informasi lokasi tidak tersedia.");
|
||||
break;
|
||||
case error.TIMEOUT:
|
||||
alert("Permintaan lokasi pengguna berakhir.");
|
||||
break;
|
||||
case error.UNKNOWN_ERROR:
|
||||
alert("Terjadi kesalahan yang tidak diketahui.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
window.onload = getUserLocation;
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
function toggleTidakSesuai(field, inputId) {
|
||||
const selectedValue = $(`[name="${field}"]:checked, [name="${field}"]:checked`).val();
|
||||
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
|
||||
const selectedValue = $(`[name="${fieldName}"]:checked`).val();
|
||||
const inputField = $(`#${inputId}`);
|
||||
|
||||
if (selectedValue === 'tidak sesuai' || selectedValue === 'lainnya') {
|
||||
if (visibleValues.includes(selectedValue)) {
|
||||
inputField.show();
|
||||
} else {
|
||||
inputField.hide().val('');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleCheckboxVisibility(fieldName, inputId, visibleValues = []) {
|
||||
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
|
||||
.map(function() {
|
||||
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
|
||||
})
|
||||
.get();
|
||||
|
||||
const inputField = $(`#${inputId}`);
|
||||
|
||||
// Cek apakah salah satu nilai yang dipilih cocok dengan visibleValues
|
||||
const shouldShow = visibleValues.some(value => selectedValues.includes(value.toLowerCase()));
|
||||
|
||||
if (shouldShow) {
|
||||
inputField.show();
|
||||
} else {
|
||||
inputField.hide().val('');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleMultipleFields(fieldName, mappings) {
|
||||
// Ambil semua nilai checkbox yang dicentang
|
||||
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
|
||||
.map(function() {
|
||||
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
|
||||
})
|
||||
.get();
|
||||
|
||||
// Iterasi melalui setiap mapping
|
||||
for (const [key, inputId] of Object.entries(mappings)) {
|
||||
const inputField = $(`#${inputId}`);
|
||||
|
||||
// Tampilkan input jika nilai yang relevan dipilih
|
||||
if (selectedValues.includes(key.toLowerCase())) {
|
||||
inputField.show();
|
||||
} else {
|
||||
inputField.hide().val(''); // Sembunyikan dan reset nilai
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleAlamatVisibility(idSesuai, idTidakSesuai, selectedValue) {
|
||||
// Ambil elemen berdasarkan ID
|
||||
const alamatSesuai = document.getElementById(idSesuai);
|
||||
const alamatTidakSesuai = document.getElementById(idTidakSesuai);
|
||||
|
||||
// Periksa nilai yang dipilih dan tampilkan elemen yang sesuai
|
||||
if (selectedValue === 'sesuai') {
|
||||
alamatSesuai.style.display = 'grid'; // Tampilkan "Alamat Sesuai"
|
||||
alamatTidakSesuai.style.display = 'none'; // Sembunyikan "Alamat Tidak Sesuai"
|
||||
} else if (selectedValue === 'tidak sesuai') {
|
||||
alamatSesuai.style.display = 'none'; // Sembunyikan "Alamat Sesuai"
|
||||
alamatTidakSesuai.style.display = 'grid'; // Tampilkan "Alamat Tidak Sesuai"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function submitData() {
|
||||
const formElement = $('#formInspeksi')[0];
|
||||
const formData = new FormData(formElement);
|
||||
@@ -141,10 +161,12 @@
|
||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||
},
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
window.location.href =
|
||||
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=inspeksi';
|
||||
}
|
||||
// if (response.success) {
|
||||
// toastrSuccessBuild(response.message)
|
||||
// window.location.href =
|
||||
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=inspeksi';
|
||||
// }
|
||||
|
||||
console.log(response);
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
@@ -159,6 +181,7 @@
|
||||
console.log('Status:', status);
|
||||
console.log('Response:', xhr.responseText);
|
||||
console.log(errors);
|
||||
toastrErrorBuild(error);
|
||||
},
|
||||
complete: function() {
|
||||
// Re-enable the button and hide the spinner
|
||||
@@ -168,9 +191,7 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function previewImage(input, previewId) {
|
||||
if (input.files && input.files[0]) {
|
||||
var reader = new FileReader();
|
||||
@@ -197,8 +218,10 @@
|
||||
}
|
||||
|
||||
const newElement = template.cloneNode(true);
|
||||
const inputs = newElement.querySelectorAll('input, textarea');
|
||||
inputs.forEach(input => (input.value = ''));
|
||||
const textarea = newElement.querySelector('textarea');
|
||||
if (textarea) {
|
||||
textarea.value = '';
|
||||
}
|
||||
|
||||
const deleteButton = newElement.querySelector('.remove-btn');
|
||||
if (deleteButton) {
|
||||
@@ -208,5 +231,53 @@
|
||||
|
||||
container.appendChild(newElement);
|
||||
}
|
||||
|
||||
|
||||
function updateAnalisa(params) {
|
||||
const inputMap = {
|
||||
jenis_asset: 'jenis_asset_tidak_sesuai',
|
||||
analisa_tanah: 'analisa_tanah_tidak_sesuai',
|
||||
analisa_unit: 'analisa_luas_unit_tidak_sesuai',
|
||||
analisa_bangunan: 'analisa_bangunan_tidak_sesuai',
|
||||
};
|
||||
|
||||
// Pastikan elemen ID ada di inputMap
|
||||
if (!inputMap[params]) {
|
||||
console.error('Parameter tidak valid:', params);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ambil nilai berdasarkan parameter
|
||||
const inputValue = document.getElementById(inputMap[params]).value;
|
||||
const data = {
|
||||
[params === 'jenis_asset' ? 'jenis_asset' : params.replace('analisa_', 'luas_')]: inputValue,
|
||||
types: params
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: '{{ route('surveyor.update_analisa', ['id' => $permohonan->id]) }}',
|
||||
type: 'POST',
|
||||
data: data,
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||
},
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
if (response.success) {
|
||||
if (response.jenis_asset) {
|
||||
window.location.href =
|
||||
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=inspeksi';
|
||||
}
|
||||
toastrSuccessBuild(response.message);
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('Terjadi error:', error);
|
||||
console.log('Status:', status);
|
||||
console.log('Response:', xhr.responseText);
|
||||
toastrErrorBuild(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -14,43 +14,43 @@
|
||||
<label class="block text-sm font-medium text-gray-700">Jarak Dari Jalan
|
||||
Utama</label>
|
||||
<input type="text" class="input mt-2" name="jarak_jalan_utama" placeholder="Km"
|
||||
value="{{ old('jarak_jalan_utama', isset($forminspeksi['jarak_jalan_utama']) ? $forminspeksi['jarak_jalan_utama'] : '') }}">
|
||||
value="{{ old('jarak_jalan_utama', isset($forminspeksi['lingkungan']['jarak_jalan_utama']) ? $forminspeksi['lingkungan']['jarak_jalan_utama'] : '') }}">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700">Jalan</label>
|
||||
<input type="text" name="jalan_linkungan" class="input mt-2"
|
||||
placeholder="Masukkan Nama Jalan"
|
||||
value="{{ old('jalan_linkungan', isset($forminspeksi['jalan_linkungan']) ? $forminspeksi['jalan_linkungan'] : '') }}">
|
||||
value="{{ old('jalan_linkungan', isset($forminspeksi['lingkungan']['jalan_linkungan']) ? $forminspeksi['lingkungan']['jalan_linkungan'] : '') }}">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700">Jarak ke CBD Point</label>
|
||||
<input type="text" class="input mt-2" name="jarak_cbd_point" placeholder="Km"
|
||||
value="{{ old('jarak_cbd_point', isset($forminspeksi['jarak_cbd_point']) ? $forminspeksi['jarak_cbd_point'] : '') }}">
|
||||
value="{{ old('jarak_cbd_point', isset($forminspeksi['lingkungan']['jarak_cbd_point']) ? $forminspeksi['lingkungan']['jarak_cbd_point'] : '') }}">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700">Nama CBD Point</label>
|
||||
<input type="text" class="input mt-2" name="nama_cbd_point" placeholder="Km"
|
||||
value="{{ old('nama_cbd_point', isset($forminspeksi['nama_cbd_point']) ? $forminspeksi['nama_cbd_point'] : '') }}">
|
||||
value="{{ old('nama_cbd_point', isset($forminspeksi['lingkungan']['nama_cbd_point']) ? $forminspeksi['lingkungan']['nama_cbd_point'] : '') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-full mt-4">
|
||||
<label class="block text-sm font-medium text-gray-700">Lebar Perkerasan Jalan Depan
|
||||
objek</label>
|
||||
<input type="text" name="lebar_perkerasan_jalan" class="input mt-2" placeholder="Meter"
|
||||
value="{{ old('lebar_perkerasan_jalan', isset($forminspeksi['lebar_perkerasan_jalan']) ? $forminspeksi['lebar_perkerasan_jalan'] : '') }}">
|
||||
value="{{ old('lebar_perkerasan_jalan', isset($forminspeksi['lingkungan']['lebar_perkerasan_jalan']) ? $forminspeksi['lingkungan']['lebar_perkerasan_jalan'] : '') }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Perkerasan Jalan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex gap-12">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($perkerasanJalan))
|
||||
@foreach ($perkerasanJalan as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="perkerasan_jalan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, isset($forminspeksi['perkerasan_jalan']) ? $forminspeksi['perkerasan_jalan'] : []) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, isset($forminspeksi['lingkungan']['perkerasan_jalan']) ? $forminspeksi['lingkungan']['perkerasan_jalan'] : []) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@@ -70,7 +70,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="lalu_lintas[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ isset($forminspeksi['lalu_lintas']) && in_array($item->name, explode(',', is_array(old('lalu_lintas', $forminspeksi['lalu_lintas'] ?? '')) ? implode(',', old('lalu_lintas', $forminspeksi['lalu_lintas'] ?? '')) : old('lalu_lintas', $forminspeksi['lalu_lintas'] ?? ''))) ? 'checked' : '' }} />
|
||||
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, explode(',', is_array(old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? '')) ? implode(',', old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? '')) : old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? ''))) ? 'checked' : '' }} />
|
||||
|
||||
|
||||
{{ $item->name }}
|
||||
@@ -91,7 +91,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="gol_mas_sekitar[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ isset($forminspeksi['gol_mas_sekitar']) && in_array($item->name, explode(',', is_array(old('gol_mas_sekitar', $forminspeksi['gol_mas_sekitar'] ?? '')) ? implode(',', old('gol_mas_sekitar', $forminspeksi['gol_mas_sekitar'] ?? '')) : old('gol_mas_sekitar', $forminspeksi['gol_mas_sekitar'] ?? ''))) ? 'checked' : '' }} />
|
||||
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, explode(',', is_array(old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? '')) ? implode(',', old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? '')) : old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? ''))) ? 'checked' : '' }} />
|
||||
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@@ -112,7 +112,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="tingkat_keramaian[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ isset($forminspeksi['tingkat_keramaian']) && in_array($item->name, explode(',', is_array(old('tingkat_keramaian', $forminspeksi['tingkat_keramaian'] ?? '')) ? implode(',', old('tingkat_keramaian', $forminspeksi['tingkat_keramaian'] ?? '')) : old('tingkat_keramaian', $forminspeksi['tingkat_keramaian'] ?? ''))) ? 'checked' : '' }} />
|
||||
{{ isset($forminspeksi['lingkungan']['tingkat_keramaian']) && in_array($item->name, explode(',', is_array(old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? '')) ? implode(',', old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? '')) : old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? ''))) ? 'checked' : '' }} />
|
||||
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@@ -128,12 +128,12 @@
|
||||
<label class="form-label max-w-56">Terletak Di Area</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($konturTanah))
|
||||
@foreach ($konturTanah as $item)
|
||||
@if (isset($terletakDiArea))
|
||||
@foreach ($terletakDiArea as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="terletak_diarea[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ isset($forminspeksi['terletak_diarea']) && in_array($item->name, explode(',', is_array(old('terletak_diarea', $forminspeksi['terletak_diarea'] ?? '')) ? implode(',', old('terletak_diarea', $forminspeksi['terletak_diarea'] ?? '')) : old('terletak_diarea', $forminspeksi['terletak_diarea'] ?? ''))) ? 'checked' : '' }} />
|
||||
{{ isset($forminspeksi['lingkungan']['terletak_diarea']) && in_array($item->name, explode(',', is_array(old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea'] ?? '')) ? implode(',', old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea'] ?? '')) : old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea'] ?? ''))) ? 'checked' : '' }} />
|
||||
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@@ -143,36 +143,93 @@
|
||||
<em id="error-terletak_diarea" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Disekitar Lokasi -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Disekitar Lokasi</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col gap-2 mt-2">
|
||||
<label class="text-sm flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('disekitar_lokasi', 'disekitar_lokasi_sesuai', ['ya'])"
|
||||
type="radio" class="radio" name="disekitar_lokasi" value="ya"
|
||||
{{ old('disekitar_lokasi', $forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }} />
|
||||
<span class="ml-2">Telah ada bangunan</span>
|
||||
</label>
|
||||
<div class="flex w-full items-center gap-4">
|
||||
|
||||
<div id="disekitar_lokasi_sesuai" class="grid grid-cols-2 gap-4 mt-5 mb-5"
|
||||
style="display: none;">
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="" class="text-sm text-gray-700">Kondisi bangunan</label>
|
||||
<select class="select" name="kondisi_bagunan_disekitar_lokasi" id="">
|
||||
<option value="">pilih kondisi</option>
|
||||
<option value="Cukup">Cukup</option>
|
||||
<option value="Baik">Baik</option>
|
||||
<option value="Kurang">Kurang</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="" class="text-sm text-gray-700">Sifat bangunan</label>
|
||||
<select class="select" name="sifat_bagunan_disekitar_lokasi" id="">
|
||||
<option value="">pilih sifat bagunan</option>
|
||||
<option value="Permanen">Permanen</option>
|
||||
<option value="Semi Permanen">Semi Permanen</option>
|
||||
<option value="Tidak Permanen">Tidak Permanen</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('disekitar_lokasi', 'disekitar_lokasi_sesuai', ['ya'])"
|
||||
type="radio" class="radio" name="disekitar_lokasi" value="tidak sesuai"
|
||||
{{ old('disekitar_lokasi', $forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak sesuai' ? 'checked' : '' }} />
|
||||
<span class="ml-2">Belum ada bangunan</span>
|
||||
</label>
|
||||
</div>
|
||||
<em id="error-terletak_diarea" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Dekat Makam -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Dekat Makam</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col gap-2 mt-2">
|
||||
<!-- Opsi Ya -->
|
||||
<div class="flex w-full items-center gap-4">
|
||||
<label class="text-sm flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggledekatMakam(true)" type="radio" class="radio"
|
||||
name="dekat_makam" value="ya"
|
||||
{{ old('dekat_makam', $forminspeksi['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }} />
|
||||
<input onclick="toggleFieldVisibility('dekat_makam', 'dekat-makam', ['ya'])"
|
||||
type="radio" class="radio" name="dekat_makam" value="ya"
|
||||
{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }} />
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<div id="dekat-makam" class="grid grid-cols-2 gap-4"
|
||||
style="{{ old('dekat_makam', $forminspeksi['dekat_makam'] ?? '') == 'ya' ? 'visibility: visible; height: auto;' : 'visibility: hidden; height: 0;' }}">
|
||||
<div id="dekat-makam" class="flex items-baseline gap-4 w-full"
|
||||
style="{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'display:block;' : 'display:none;' }}">
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="">Jarak</label>
|
||||
<input type="text" class="input mt-2" name="jarak_makam"
|
||||
value="{{ old('jarak_makam', $forminspeksi['jarak_makam'] ?? '') }}"
|
||||
placeholder="Km">
|
||||
<label for="jarak_makam" class="form-label max-w-56">Jarak</label>
|
||||
<input type="number" class="input mt-2" name="jarak_makam"
|
||||
value="{{ old('jarak_makam', $forminspeksi['lingkungan']['jarak_makam'] ?? '') }}"
|
||||
placeholder="Km" />
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="nama_makam" class="form-label max-w-56">Nama TPU</label>
|
||||
<input type="text" class="input mt-2 w-full" name="nama_makam"
|
||||
value="{{ old('nama_makam', $forminspeksi['lingkungan']['nama_makam'] ?? '') }}"
|
||||
placeholder="Nama TPU" />
|
||||
</div>
|
||||
<input type="text" class="input mt-2" name="nama_makam"
|
||||
value="{{ old('nama_makam', $forminspeksi['nama_makam'] ?? '') }}"
|
||||
placeholder="Nama TPU">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Opsi Tidak -->
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggledekatMakam(false)" type="radio" class="radio"
|
||||
name="dekat_makam" value="tidak"
|
||||
{{ old('dekat_makam', $forminspeksi['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }} />
|
||||
<input onclick="toggleFieldVisibility('dekat_makam', 'dekat-makam', ['ya'])"
|
||||
type="radio" class="radio" name="dekat_makam" value="tidak"
|
||||
{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }} />
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -180,36 +237,62 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Dekat Tps -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Dekat Tps</label>
|
||||
<label class="form-label max-w-56">Dekat TPS</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col gap-2 mt-2">
|
||||
<!-- Opsi Ya -->
|
||||
<div class="flex w-full items-center gap-4">
|
||||
<label onclick="toggledekatTps(true)"
|
||||
class="text-sm flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="dekat_tps" value="ya"
|
||||
{{ old('dekat_tps', $forminspeksi['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }} />
|
||||
<label class="text-sm flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
onclick="toggleFieldVisibility('dekat_tps', 'dekat-tps', ['ya'])"
|
||||
type="radio" class="radio" name="dekat_tps" value="ya"
|
||||
{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }}
|
||||
/>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<div id="dekat-tps" class="grid grid-cols-2 gap-4"
|
||||
style="{{ old('dekat_tps', $forminspeksi['dekat_tps'] ?? '') == 'ya' ? 'visibility: visible; height: auto;' : 'visibility: hidden; height: 0;' }}">
|
||||
<div
|
||||
id="dekat-tps"
|
||||
class="flex flex-wrap gap-4 w-full"
|
||||
style="{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'display:flex;' : 'display:none;' }}"
|
||||
>
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="">Jarak</label>
|
||||
<input type="text" class="input mt-2" name="jarak_tps"
|
||||
value="{{ old('jarak_tps', $forminspeksi['jarak_tps'] ?? '') }}"
|
||||
placeholder="Km">
|
||||
<label for="jarak_tps" class="form-label max-w-56">Jarak</label>
|
||||
<input
|
||||
type="number"
|
||||
id="jarak_tps"
|
||||
class="input mt-2"
|
||||
name="jarak_tps"
|
||||
value="{{ old('jarak_tps', $forminspeksi['lingkungan']['jarak_tps'] ?? '') }}"
|
||||
placeholder="Km"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="nama_tps" class="form-label max-w-56">Nama TPS</label>
|
||||
<input
|
||||
type="text"
|
||||
id="nama_tps"
|
||||
class="input mt-2"
|
||||
name="nama_tps"
|
||||
value="{{ old('nama_tps', $forminspeksi['lingkungan']['nama_tps'] ?? '') }}"
|
||||
placeholder="Nama TPS"
|
||||
/>
|
||||
</div>
|
||||
<input type="text" class="input mt-2" name="nama_tps"
|
||||
value="{{ old('nama_tps', $forminspeksi['nama_tps'] ?? '') }}"
|
||||
placeholder="Nama TPS">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Opsi Tidak -->
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input onclick="toggledekatTps(false)" type="radio" class="radio" name="dekat_tps"
|
||||
<input
|
||||
onclick="toggleFieldVisibility('dekat_tps', 'dekat-tps', ['ya'])"
|
||||
type="radio" class="radio"
|
||||
name="dekat_tps"
|
||||
value="tidak"
|
||||
{{ old('dekat_tps', $forminspeksi['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }} />
|
||||
{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }}
|
||||
/>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -217,17 +300,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Merupakan daerah -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Merupakan daerah</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($konturTanah))
|
||||
@foreach ($konturTanah as $item)
|
||||
@if (isset($merupakanDaerah))
|
||||
@foreach ($merupakanDaerah as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="merupakan_daerah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, isset($forminspeksi['merupakan_daerah']) ? $forminspeksi['merupakan_daerah'] : []) ? 'checked' : '' }} />
|
||||
{{ in_array($item->name, isset($forminspeksi['lingkungan']['merupakan_daerah']) ? $forminspeksi['lingkungan']['merupakan_daerah'] : []) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@@ -238,24 +322,24 @@
|
||||
</div>
|
||||
|
||||
<!-- Fasilitas Umum Sekitar -->
|
||||
<!-- Fasilitas Umum Sekitar -->
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Fasilitas Umum dekat Object</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($konturTanah))
|
||||
@foreach ($konturTanah as $item)
|
||||
@if (isset($fasilitasObjek))
|
||||
@foreach ($fasilitasObjek as $item)
|
||||
@php
|
||||
|
||||
$selectedFasilitas = is_array(
|
||||
old('fasilitas_dekat_object', $forminspeksi['fasilitas_dekat_object'] ?? []),
|
||||
old('fasilitas_dekat_object', $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? []),
|
||||
)
|
||||
? old('fasilitas_dekat_object', $forminspeksi['fasilitas_dekat_object'] ?? [])
|
||||
? old('fasilitas_dekat_object', $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? [])
|
||||
: explode(
|
||||
',',
|
||||
old(
|
||||
'fasilitas_dekat_object',
|
||||
$forminspeksi['fasilitas_dekat_object'] ?? '',
|
||||
$forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? '',
|
||||
),
|
||||
);
|
||||
@endphp
|
||||
@@ -264,9 +348,9 @@
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array(
|
||||
$item->name,
|
||||
is_array(old('fasilitas_dekat_object', $forminspeksi['fasilitas_dekat_object'] ?? ''))
|
||||
? old('fasilitas_dekat_object', $forminspeksi['fasilitas_dekat_object'] ?? [])
|
||||
: explode(',', old('fasilitas_dekat_object', $forminspeksi['fasilitas_dekat_object'] ?? '')),
|
||||
is_array(old('fasilitas_dekat_object', $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? ''))
|
||||
? old('fasilitas_dekat_object', $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? [])
|
||||
: explode(',', old('fasilitas_dekat_object', $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? '')),
|
||||
)
|
||||
? 'checked'
|
||||
: '' }} />
|
||||
@@ -284,40 +368,3 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function toggledekatMakam(value) {
|
||||
const selectElement = document.getElementById('dekat-makam');
|
||||
if (value) {
|
||||
selectElement.style.visibility = 'visible';
|
||||
selectElement.style.height = 'auto';
|
||||
} else {
|
||||
selectElement.style.visibility = 'hidden';
|
||||
selectElement.style.height = '0';
|
||||
}
|
||||
}
|
||||
|
||||
function toggledekatTps(value) {
|
||||
const selectElement = document.getElementById('dekat-tps');
|
||||
if (value) {
|
||||
selectElement.style.visibility = 'visible';
|
||||
selectElement.style.height = 'auto';
|
||||
} else {
|
||||
selectElement.style.visibility = 'hidden';
|
||||
selectElement.style.height = '0';
|
||||
}
|
||||
}
|
||||
|
||||
function toggledisekitarLokasi(value) {
|
||||
const selectElement = document.getElementById('disekitarLokasi');
|
||||
if (value) {
|
||||
selectElement.style.visibility = 'visible';
|
||||
selectElement.style.height = 'auto';
|
||||
} else {
|
||||
selectElement.style.visibility = 'hidden';
|
||||
selectElement.style.height = '0';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
88
resources/views/surveyor/components/modal-kamera.blade.php
Normal file
88
resources/views/surveyor/components/modal-kamera.blade.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<div class="modal fade" data-modal="true" id="cameraModal" data-backdrop="" data-keyboard="false">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">Ambil Foto</h3>
|
||||
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true" id="closeModal">
|
||||
<i class="ki-outline ki-cross"></i>
|
||||
</button>
|
||||
</div>
|
||||
<!-- Camera Interface -->
|
||||
<div class="modal-body">
|
||||
<div class="camera-container relative">
|
||||
<video id="video" class="w-full h-auto" autoplay playsinline></video>
|
||||
<canvas id="canvas" class="hidden w-full h-auto"></canvas>
|
||||
<canvas id="drawingCanvas" class="hidden absolute top-0 left-0 w-full h-full"></canvas>
|
||||
<div id="textOverlay" class="position-absolute top-0 left-0 w-100 h-100 pointer-events-none">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer mt-2">
|
||||
<div id="cameraControls" class="flex justify-center gap-2 mt-4">
|
||||
<button type="button" id="startButton" class="btn btn-primary">
|
||||
<i class="ki-outline ki-camera"></i> Start Camera
|
||||
</button>
|
||||
<button type="button" id="takePhotoButton" class="btn btn-success" disabled>
|
||||
<i class="ki-outline ki-photograph"></i> Ambil Foto
|
||||
</button>
|
||||
<button type="button" id="switchButton" class="btn btn-info" disabled>
|
||||
<i class="ki-outline ki-arrows-circle"></i> Switch Camera
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Editor Controls -->
|
||||
<div id="editorControls" class=" flex flex-wrap gap-2 mt-4">
|
||||
<div class="drawing-tools flex gap-2">
|
||||
|
||||
<button type="button" class="tool-btn btn btn-sm" data-tool="brush">
|
||||
<i class="ki-filled ki-brush"></i>
|
||||
</button>
|
||||
<button type="button" class="tool-btn btn btn-sm" data-tool="rectangle">
|
||||
<i class="ki-filled ki-frame"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-light btn-sm tool-btn" data-tool="arrow">
|
||||
<i class="ki-duotone ki-arrow-right fs-2"></i>
|
||||
</button>
|
||||
<button type="button" class="tool-btn btn btn-sm" data-tool="circle">
|
||||
<i class="ki-filled ki-mouse-circle"></i>
|
||||
</button>
|
||||
<button type="button" class="tool-btn btn btn-sm" data-tool="text">
|
||||
<i class="ki-filled ki-text"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="drawing-settings flex gap-2">
|
||||
<input type="color" id="colorPicker" class="w-8 h-8 rounded">
|
||||
<div class="flex items-center gap-2">
|
||||
<input type="range" id="brushSize" min="1" max="20" value="5"
|
||||
class="range range-sm">
|
||||
<span id="brushSizeValue" class="text-sm">5px</span>
|
||||
</div>
|
||||
<input type="text" id="textInput" class="input" placeholder="Enter text">
|
||||
<button type="button" class="btn btn-primary" id="confirmTextBtn">Add Text</button>
|
||||
</div>
|
||||
|
||||
<div class="history-controls flex gap-2">
|
||||
<button type="button" id="undoButton" class="btn btn-sm">
|
||||
<i class="ki-filled ki-arrows-loop"></i>
|
||||
</button>
|
||||
<button type="button" id="resetButton" class="btn btn-sm">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="final-controls flex gap-2">
|
||||
<button type="button" class="btn btn-light btn-sm" data-modal-dismiss="true">Cancel</button>
|
||||
<button id="backButton" class="btn btn-warning btn-sm">
|
||||
<i class="ki-outline ki-arrow-left"></i> Kembali
|
||||
</button>
|
||||
<button type="button" id="saveButton" class="btn btn-success btn-sm" data-modal-dismiss="true">
|
||||
<i class="ki-outline ki-check"></i> Simpan
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -13,33 +13,38 @@
|
||||
<label class="form-label max-w-56">Luas Tanah</label>
|
||||
<div class="mt-2">
|
||||
@if (isset($permohonan->debiture->documents))
|
||||
@foreach ($permohonan->debiture->documents as $item)
|
||||
@php
|
||||
$details = json_decode($item->detail);
|
||||
$luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 'N/A';
|
||||
@endphp
|
||||
<p class="text-2sm text-gray-700">{{ $luas_tanah }} m2</p>
|
||||
@endforeach
|
||||
@foreach ($permohonan->debiture->documents as $item)
|
||||
@php
|
||||
$luas = $item->detail;
|
||||
$details = json_decode($luas[0]->details, true);
|
||||
$luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 'N/A';
|
||||
@endphp
|
||||
<p class="text-2sm text-gray-700">{{ $luas_tanah }} m<sup>2</sup></p>
|
||||
@endforeach
|
||||
|
||||
@endif
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_tanah" value="sesuai"
|
||||
onclick="toggleTidakSesuai('luas_tanah', 'luas_tanah_tidak_sesuai')"
|
||||
{{ old('luas_tanah', $forminspeksi['luas_tanah'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
onclick="toggleFieldVisibility('luas_tanah', 'luas_tanah_tidak_sesuai', ['tidak sesuai'])"
|
||||
{{ old('luas_tanah', $forminspeksi['tanah']['luas_tanah'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Sesuai</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="luas_tanah" value="tidak sesuai"
|
||||
onclick="toggleTidakSesuai('luas_tanah', 'luas_tanah_tidak_sesuai')"
|
||||
{{ old('luas_tanah', $forminspeksi['luas_tanah'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
onclick="toggleFieldVisibility('luas_tanah', 'luas_tanah_tidak_sesuai', ['tidak sesuai'])"
|
||||
{{ old('luas_tanah', $forminspeksi['tanah']['luas_tanah'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak Sesuai</span>
|
||||
</label>
|
||||
<input type="text" name="luas_tanah_tidak_sesuai" id="luas_tanah_tidak_sesuai"
|
||||
class="input w-full" placeholder="Masukan Luas Tanah"
|
||||
value="{{ old('luas_tanah_tidak_sesuai', $forminspeksi['luas_tanah_tidak_sesuai'] ?? '') }}"
|
||||
style="{{ old('luas_tanah', $forminspeksi['luas_tanah'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<div id="luas_tanah_tidak_sesuai" class="flex items-baseline gap-2"
|
||||
style="{{ old('luas_tanah', $forminspeksi['tanah']['luas_tanah'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<input id="analisa_tanah_tidak_sesuai" type="text" name="luas_tanah_tidak_sesuai" class="input w-full"
|
||||
placeholder="Masukan Luas Tanah"
|
||||
value="{{ old('luas_tanah_tidak_sesuai', $forminspeksi['tanah']['luas_tanah_tidak_sesuai'] ?? '') }}">
|
||||
<button type="button" class="btn btn-md btn-primary" onclick="updateAnalisa('analisa_tanah')">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-luas_tanah" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@@ -54,33 +59,37 @@
|
||||
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-3 text-nowrap">
|
||||
<input type="radio" class="radio" name="hadap_mata_angin" value="sesuai"
|
||||
onclick="toggleTidakSesuai('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai')"
|
||||
{{ old('hadap_mata_angin', $forminspeksi['hadap_mata_angin'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
onclick="toggleFieldVisibility('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai' ,['tidak sesuai'])"
|
||||
{{ old('hadap_mata_angin', $forminspeksi['tanah']['hadap_mata_angin'] ?? '') == 'sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Sesuai</span>
|
||||
</label>
|
||||
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="hadap_mata_angin" value="tidak sesuai"
|
||||
onclick="toggleTidakSesuai('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai')"
|
||||
{{ old('hadap_mata_angin', $forminspeksi['hadap_mata_angin'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<input type="radio" class="radio" name="hadap_mata_angin" value="tidak sesuai"
|
||||
onclick="toggleFieldVisibility('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai' ,['tidak sesuai'])"
|
||||
{{ old('hadap_mata_angin', $forminspeksi['tanah']['hadap_mata_angin'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak Sesuai</span>
|
||||
</label>
|
||||
|
||||
<!-- Select dropdown untuk "Tidak Sesuai" -->
|
||||
<select id="hadap_mata_angin_tidak_sesuai"
|
||||
class="input w-full @error('hadap_mata_angin_tidak_sesuai') border-danger bg-danger-light @enderror"
|
||||
name="hadap_mata_angin_tidak_sesuai"
|
||||
style="{{ old('hadap_mata_angin', $forminspeksi['hadap_mata_angin'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<option value="">Select Hadap Mata Angin</option>
|
||||
@if (isset($arahMataAngin))
|
||||
@foreach ($arahMataAngin as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('hadap_mata_angin_tidak_sesuai', $forminspeksi['hadap_mata_angin_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
<div id="hadap_mata_angin_tidak_sesuai" class="flex items-baseline gap-2"
|
||||
style="{{ old('hadap_mata_angin', $forminspeksi['tanah']['hadap_mata_angin'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
|
||||
<select
|
||||
class="input w-full
|
||||
id="hadap_matangin_tidak_sesuai"
|
||||
name="analisa_tanah_hadap_mata_angin_tidak_sesuai">
|
||||
<option value="">Select Hadap Mata Angin</option>
|
||||
@if (isset($arahMataAngin))
|
||||
@foreach ($arahMataAngin as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('hadap_mata_angin_tidak_sesuai', $forminspeksi['tanah']['hadap_mata_angin_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
{{-- <button type="button" class="btn btn-md btn-primary" onclick="updateAnalisa('hadap_mata_angin')">Save</button> --}}
|
||||
</div>
|
||||
</div>
|
||||
<em id="error-hadap_mata_angin" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
@@ -88,34 +97,44 @@
|
||||
|
||||
|
||||
<!-- Bentuk Tanah -->
|
||||
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Bentuk Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($bentukTanah))
|
||||
@foreach ($bentukTanah as $item)
|
||||
@if (strcasecmp($item->name, 'lainnya') == 0)
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_tanah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('bentuk_tanah', [])) || (isset($forminspeksi['bentuk_tanah']) && in_array($item->name, $forminspeksi['bentuk_tanah'])) ? 'checked' : '' }}
|
||||
onclick="toggleTidakSesuai('bentuk_tanah', 'bentuk_tanah_lainnya')" />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input id="bentuk_tanah_lainnya" type="text" name="bentuk_tanah_lainnya"
|
||||
class="input w-full mt-2" placeholder="Masukkan bentuk tanah..."
|
||||
onclick="toggleTidakSesuai('bentuk_tanah', 'bentuk_tanah_lainnya')">
|
||||
</div>
|
||||
@else
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_tanah[]" type="checkbox"
|
||||
<input
|
||||
class="checkbox"
|
||||
name="bentuk_tanah[]"
|
||||
type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('bentuk_tanah', [])) || (isset($forminspeksi['bentuk_tanah']) && in_array($item->name, $forminspeksi['bentuk_tanah'])) ? 'checked' : '' }}
|
||||
onclick="toggleTidakSesuai('bentuk_tanah', 'bentuk_tanah_lainnya')" />
|
||||
{{
|
||||
in_array($item->name, old('bentuk_tanah', [])) ||
|
||||
(isset($forminspeksi['tanah']['bentuk_tanah']) &&
|
||||
is_array($forminspeksi['tanah']['bentuk_tanah']) &&
|
||||
in_array($item->name, $forminspeksi['tanah']['bentuk_tanah']))
|
||||
? 'checked'
|
||||
: ''
|
||||
}}
|
||||
onclick="toggleCheckboxVisibility('bentuk_tanah', 'bentuk_tanah_lainnya', ['lainnya'])"
|
||||
/>
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endif
|
||||
@if (strcasecmp($item->name, 'lainnya') == 0)
|
||||
<input
|
||||
id="bentuk_tanah_lainnya"
|
||||
type="text"
|
||||
style="display: none;"
|
||||
name="bentuk_tanah_lainnya"
|
||||
class="input w-full mt-2"
|
||||
placeholder="Masukkan bentuk tanah..."
|
||||
value="{{ old('bentuk_tanah_lainnya', $forminspeksi['tanah']['bentuk_tanah_lainnya'] ?? '') }}"
|
||||
/>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
@@ -123,19 +142,27 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kontur Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($konturTanah))
|
||||
@foreach ($konturTanah as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kontur_tanah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('kontur_tanah', isset($forminspeksi['kontur_tanah']) ? $forminspeksi['kontur_tanah'] : [])) ? 'checked' : '' }} />
|
||||
<input
|
||||
class="checkbox"
|
||||
name="kontur_tanah[]"
|
||||
type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{
|
||||
in_array(
|
||||
$item->name,
|
||||
old('kontur_tanah', $forminspeksi['tanah']['kontur_tanah'] ?? [])
|
||||
)
|
||||
? 'checked'
|
||||
: ''
|
||||
}}
|
||||
/>
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
@@ -146,22 +173,34 @@
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Beda Ketinggian Dengan Jalan -->
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Beda Ketinggian Dengan Jalan</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
|
||||
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($ketinggianTanah))
|
||||
@foreach ($ketinggianTanah as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="ketinggian_jalan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('ketinggian_jalan', $forminspeksi['ketinggian_jalan'] ?? [])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<div class="flex flex-col gap-2">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="ketinggian_jalan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('ketinggian_jalan', $forminspeksi['tanah']['ketinggian_jalan'] ?? [])) ? 'checked' : '' }}
|
||||
onclick="toggleMultipleFields('ketinggian_jalan', {
|
||||
'Lebih Tinggi': 'input-lebih-tinggi',
|
||||
'Lebih Rendah': 'input-lebih-rendah'
|
||||
})" />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@if (strcasecmp($item->name, 'Lebih Tinggi') == 0)
|
||||
<input id="input-lebih-tinggi" type="text" style="display: none;"
|
||||
name="ketinggian_lebih_tinggi" class="input w-full mt-2"
|
||||
placeholder="m2" />
|
||||
@elseif (strcasecmp($item->name, 'Lebih Rendah') == 0)
|
||||
<input id="input-lebih-rendah" type="text" style="display: none;"
|
||||
name="ketinggian_lebih_rendah" class="input w-full mt-2"
|
||||
placeholder="m2" />
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
@@ -170,6 +209,8 @@
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Kontur Jalan Depan Objek -->
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kontur Jalan Depan Objek</label>
|
||||
@@ -177,12 +218,12 @@
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="kontur_jalan" value="menurun"
|
||||
{{ old('kontur_jalan', $forminspeksi['kontur_jalan'] ?? '') == 'menurun' ? 'checked' : '' }}>
|
||||
{{ old('kontur_jalan', $forminspeksi['tanah']['kontur_jalan'] ?? '') == 'menurun' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Menurun</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="kontur_jalan" value="rata"
|
||||
{{ old('kontur_jalan', $forminspeksi['kontur_jalan'] ?? '') == 'rata' ? 'checked' : '' }}>
|
||||
{{ old('kontur_jalan', $forminspeksi['tanah']['kontur_jalan'] ?? '') == 'rata' ? 'checked' : '' }}>
|
||||
<span class="ml-2">Rata</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -190,29 +231,36 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Posisi Kavling</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($posisiKavling))
|
||||
@foreach ($posisiKavling as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_kavling[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('posisi_kavling', [])) || (isset($forminspeksi['posisi_kavling']) && in_array($item->name, $forminspeksi['posisi_kavling'])) ? 'checked' : '' }} />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@if (strcasecmp($item->name, 'lainnya') == 0)
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_kavling[]" type="checkbox"
|
||||
value="{{ $item->name }}" />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
<input type="text" name="posisi_kavling_lainnya" class="input mt-2"
|
||||
id="bentukTanahInput" placeholder="Masukkan Posisi Kavling">
|
||||
</div>
|
||||
@endif
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input
|
||||
class="checkbox"
|
||||
name="posisi_kavling[]"
|
||||
type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('posisi_kavling', $forminspeksi['tanah']['posisi_kavling'] ?? [])) ? 'checked' : '' }}
|
||||
onclick="toggleCheckboxVisibility('posisi_kavling', 'posisi_kavling_lainnya', ['Lainnya'])"
|
||||
/>
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@if (strcasecmp($item->name, 'Lainnya') == 0)
|
||||
<input
|
||||
id="posisi_kavling_lainnya"
|
||||
type="text"
|
||||
style="display: none;"
|
||||
name="posisi_kavling_lainnya"
|
||||
class="input w-full mt-2"
|
||||
placeholder="Masukkan Posisi Kavling lainnya..."
|
||||
/>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
@@ -228,12 +276,12 @@
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="tusuk_sate" value="yes"
|
||||
{{ old('tusuk_sate') == 'yes' || (isset($forminspeksi['tusuk_sate']) && $forminspeksi['tusuk_sate'] == 'yes') ? 'checked' : '' }}>
|
||||
{{ old('tusuk_sate') == 'yes' || (isset($forminspeksi['tanah']['tusuk_sate']) && $forminspeksi['tanah']['tusuk_sate'] == 'yes') ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="tusuk_sate" value="no"
|
||||
{{ old('tusuk_sate') == 'no' || (isset($forminspeksi['tusuk_sate']) && $forminspeksi['tusuk_sate'] == 'no') ? 'checked' : '' }}>
|
||||
{{ old('tusuk_sate') == 'no' || (isset($forminspeksi['tanah']['tusuk_sate']) && $forminspeksi['tanah']['tusuk_sate'] == 'no') ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -248,12 +296,12 @@
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="lockland" value="yes"
|
||||
{{ old('lockland') == 'yes' || (isset($forminspeksi['lockland']) && $forminspeksi['lockland'] == 'yes') ? 'checked' : '' }}>
|
||||
{{ old('lockland') == 'yes' || (isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'yes') ? 'checked' : '' }}>
|
||||
<span class="ml-2">Ya</span>
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input type="radio" class="radio" name="lockland" value="no"
|
||||
{{ old('lockland') == 'no' || (isset($forminspeksi['lockland']) && $forminspeksi['lockland'] == 'no') ? 'checked' : '' }}>
|
||||
{{ old('lockland') == 'no' || (isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'no') ? 'checked' : '' }}>
|
||||
<span class="ml-2">Tidak</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -262,7 +310,6 @@
|
||||
</div>
|
||||
|
||||
<!-- Kondisi Fisik Tanah -->
|
||||
|
||||
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Kondisi Fisik Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
@@ -272,7 +319,7 @@
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_fisik_tanah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
{{ in_array($item->name, old('kondisi_fisik_tanah', [])) || (isset($forminspeksi['kondisi_fisik_tanah']) && in_array($item->name, $forminspeksi['kondisi_fisik_tanah'])) ? 'checked' : '' }}
|
||||
{{ in_array($item->name, old('kondisi_fisik_tanah', [])) || (isset($forminspeksi['tanah']['kondisi_fisik_tanah']) && in_array($item->name, $forminspeksi['tanah']['kondisi_fisik_tanah'])) ? 'checked' : '' }}
|
||||
onclick="toggleInputLainnya(this, 'kondisi_fisik_tanah_lainnya', '{{ $item->name }}')" />
|
||||
{{ $item->name }}
|
||||
</label>
|
||||
@@ -295,54 +342,3 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function handleSelectionChange() {
|
||||
const select = document.getElementById('bentukTanahSelect');
|
||||
const input = document.getElementById('bentukTanahInput');
|
||||
|
||||
if (select.value === 'lainnya') {
|
||||
input.style.display = 'block';
|
||||
input.value = ''; // Kosongkan input
|
||||
input.focus(); // Fokus pada input
|
||||
} else {
|
||||
input.style.display = 'none';
|
||||
input.value = select.value; // Isi input dengan nilai yang dipilih
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function toggleJenisAsset(params) {
|
||||
const inputData = document.querySelector(`input[name="${params}"]:checked`);
|
||||
const luasTanah = document.getElementById('jenis_asset');
|
||||
|
||||
if (inputData && inputData.value === 'tidak sesuai') {
|
||||
luasTanah.style.display = 'block';
|
||||
} else {
|
||||
luasTanah.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleAlamat(params) {
|
||||
const inputData = document.querySelector(`input[name="${params}"]:checked`);
|
||||
const luasTanah = document.getElementById('alamat');
|
||||
|
||||
if (inputData && inputData.value === 'tidak sesuai') {
|
||||
luasTanah.style.display = 'block';
|
||||
} else {
|
||||
luasTanah.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleTidakSesuaiHadap(showSelect) {
|
||||
const selectElement = document.getElementById('selectTidakSesuai');
|
||||
selectElement.style.display = showSelect ? 'block' : 'none';
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -200,8 +200,6 @@ function jadwal(id){
|
||||
return `${day}-${month}-${year}`;
|
||||
}
|
||||
|
||||
ihfdksfjhjfjbkdfkdsfdsjkjdjdsgjjgdgjhgdgjkhdshggkhgkhdghskghkjkhjsdgjkgdjhg
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -1,4 +1,304 @@
|
||||
@push('scripts')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
const ruteLainnyaDiv = document.getElementById("ruteLainnya");
|
||||
const lantaiLainnyaDiv = document.getElementById("lantaiLainnya");
|
||||
|
||||
// Function to add delete event listeners to existing buttons
|
||||
function addDeleteListeners(container) {
|
||||
container.querySelectorAll(".delete-button").forEach(button => {
|
||||
button.addEventListener("click", function() {
|
||||
this.closest(
|
||||
".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5"
|
||||
).remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Add delete listeners to existing buttons
|
||||
addDeleteListeners(ruteLainnyaDiv);
|
||||
addDeleteListeners(lantaiLainnyaDiv);
|
||||
|
||||
function createNewDiv(container, inputName) {
|
||||
const newDiv = document.createElement("div");
|
||||
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
|
||||
newDiv.innerHTML = `
|
||||
<label class="flex flex-col form-label max-w-56">
|
||||
Masukkan nama ${inputName}
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
||||
<div class="flex flex-wrap items-baseline px-2">
|
||||
<input class="input" type="text" name="name_${inputName}[]">
|
||||
</div>
|
||||
<div class=" w-full flex flex-col gap-2">
|
||||
<img id="foto_${inputName}-preview"
|
||||
src="{{ isset($formFoto['gerbang']) ? asset('storage/' . $formFoto['gerbang']) : '' }}"
|
||||
alt="Foto Gerbong" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($formFoto['gerbang']) ? '' : 'display: none;' }} width: 30rem;">
|
||||
|
||||
|
||||
<div class="input-group w-full flex gap-2">
|
||||
<input id="inputLainnya" type="file" name="foto_${inputName}[]"
|
||||
class="file-input file-input-bordered w-full" accept="image/*" capture="camera"
|
||||
onchange="previewImage(this, 'foto_${inputName}-preview')"
|
||||
>
|
||||
<button type="button" id="btnCamera" class="btn btn-light"
|
||||
data-modal-toggle="#cameraModal">
|
||||
<i class="ki-outline ki-abstract-33"></i> Camera
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<button type="button" class="btn btn-danger btn-sm delete-button">
|
||||
<i class="ki-filled ki-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
container.appendChild(newDiv);
|
||||
addDeleteListeners(container);
|
||||
}
|
||||
|
||||
document.getElementById("btnAddMore").addEventListener("click", function() {
|
||||
createNewDiv(ruteLainnyaDiv, "rute_lainnya");
|
||||
});
|
||||
|
||||
document.getElementById("btnAddMoreObject").addEventListener("click", function() {
|
||||
createNewDiv(lantaiLainnyaDiv, "lantai_lainnya");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
.draggable-text {
|
||||
z-index: 1000;
|
||||
}
|
||||
.draggable-text:hover {
|
||||
outline: 1px dashed #666;
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const editor = new UniversalCameraEditor();
|
||||
const cameraButtons = document.querySelectorAll('#btnCamera');
|
||||
const modal = document.getElementById('cameraModal');
|
||||
const closeModal = document.getElementById('closeModal');
|
||||
|
||||
// Current input field to update
|
||||
let currentInputField = null;
|
||||
|
||||
// Handle camera button click
|
||||
cameraButtons.forEach(button => {
|
||||
button.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
const inputContainer = this.closest('.input-group');
|
||||
currentInputField = inputContainer.querySelector('input[type="file"]');
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('modal-open');
|
||||
editor.startCamera();
|
||||
});
|
||||
});
|
||||
|
||||
closeModal.addEventListener('click', function() {
|
||||
modal.classList.add('hidden');
|
||||
editor.closeCamera();
|
||||
});
|
||||
// Override save function
|
||||
editor.saveAndUpload = async function() {
|
||||
try {
|
||||
// Create final canvas
|
||||
const finalCanvas = document.createElement('canvas');
|
||||
finalCanvas.width = this.canvas.width;
|
||||
finalCanvas.height = this.canvas.height;
|
||||
const ctx = finalCanvas.getContext('2d');
|
||||
|
||||
// Draw original photo and edited result on final canvas
|
||||
ctx.drawImage(this.canvas, 0, 0);
|
||||
ctx.drawImage(this.drawingCanvas, 0, 0);
|
||||
|
||||
// Convert canvas to Blob and create file
|
||||
finalCanvas.toBlob(async (blob) => {
|
||||
const file = new File([blob], `camera_photo_${Date.now()}.jpg`, {
|
||||
type: "image/jpeg"
|
||||
});
|
||||
|
||||
// Create FileList and update input field
|
||||
const dataTransfer = new DataTransfer();
|
||||
dataTransfer.items.add(file);
|
||||
|
||||
if (currentInputField) {
|
||||
currentInputField.files = dataTransfer.files;
|
||||
|
||||
const event = new Event('change', {
|
||||
bubbles: true
|
||||
});
|
||||
currentInputField.dispatchEvent(event);
|
||||
const previewContainer = currentInputField.closest('.input-group')
|
||||
.querySelector('.preview-container');
|
||||
if (previewContainer) {
|
||||
const img = document.createElement('img');
|
||||
img.src = URL.createObjectURL(file);
|
||||
img.className = 'w-full h-32 object-cover rounded-lg';
|
||||
previewContainer.innerHTML = '';
|
||||
previewContainer.appendChild(img);
|
||||
}
|
||||
}
|
||||
|
||||
// Close modal
|
||||
|
||||
modal.classList.remove('show');
|
||||
modal.style.display = 'none';
|
||||
modal.setAttribute('aria-hidden', 'true');
|
||||
// document.body.classList.remove('modal-open');
|
||||
|
||||
|
||||
// Remove modal backdrop if exists
|
||||
const backdrop = document.querySelector('.modal-backdrop');
|
||||
if (backdrop) {
|
||||
backdrop.remove();
|
||||
}
|
||||
|
||||
// Stop camera stream
|
||||
if (editor.stream) {
|
||||
editor.stream.getTracks().forEach(track => track.stop());
|
||||
editor.stream = null;
|
||||
}
|
||||
|
||||
// Reset camera to initial state
|
||||
editor.closeCamera();
|
||||
|
||||
// Reset scroll if needed
|
||||
window.scrollTo(0, 0); // Adjust as necessary
|
||||
}, 'image/jpeg', 0.8);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error saving photo:', error);
|
||||
alert('Error saving photo. Please try again.');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Handle escape key
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape') {
|
||||
const modal = document.getElementById('cameraModal');
|
||||
if (modal.classList.contains('modal-open')) {
|
||||
modal.classList.remove('modal-open');
|
||||
modal.classList.add('hidden');
|
||||
if (editor.stream) {
|
||||
editor.stream.getTracks().forEach(track => track.stop());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
function setupInputHandlers(containerId, buttonId, labelText, inputDataClass, buttonDeleteClass) {
|
||||
const inputContainer = document.getElementById(containerId);
|
||||
const addButton = document.getElementById(buttonId);
|
||||
|
||||
function updateLabels() {
|
||||
const labels = inputContainer.querySelectorAll('.form-label span');
|
||||
labels.forEach((label, index) => {
|
||||
label.textContent = `${labelText} ${index + 1}`;
|
||||
});
|
||||
}
|
||||
|
||||
function handleDeleteButtons() {
|
||||
const deleteBtns = inputContainer.querySelectorAll(`.${buttonDeleteClass}`);
|
||||
deleteBtns.forEach(btn => {
|
||||
btn.style.display = inputContainer.children.length > 1 ? 'block' : 'none';
|
||||
});
|
||||
}
|
||||
|
||||
function createNewInput() {
|
||||
const newDiv = inputContainer.children[0].cloneNode(true);
|
||||
const inputFile = newDiv.querySelector(`.${inputDataClass}`);
|
||||
inputFile.id = `inputRute-${inputContainer.children.length}`;
|
||||
|
||||
// Reset input file value
|
||||
if (inputFile) {
|
||||
inputFile.value = '';
|
||||
}
|
||||
|
||||
// Update the camera button to set currentInputField
|
||||
const cameraButton = newDiv.querySelector('#btnCamera');
|
||||
if (cameraButton) {
|
||||
cameraButton.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
currentInputField = inputFile; // Set current input field to the new input
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('modal-open');
|
||||
editor.startCamera();
|
||||
});
|
||||
}
|
||||
|
||||
// Add delete button functionality
|
||||
const deleteBtn = newDiv.querySelector(`.${buttonDeleteClass}`);
|
||||
if (deleteBtn) {
|
||||
deleteBtn.addEventListener('click', function() {
|
||||
inputContainer.removeChild(newDiv);
|
||||
handleDeleteButtons();
|
||||
updateLabels();
|
||||
});
|
||||
}
|
||||
|
||||
// Update preview container
|
||||
const previewContainer = document.createElement('div');
|
||||
previewContainer.className = 'preview-container';
|
||||
|
||||
const img = document.createElement('img');
|
||||
img.id = `foto_rute-preview-${inputFile.id}`;
|
||||
img.src = '';
|
||||
img.className = 'mt-2 h-auto';
|
||||
img.style.display = 'none';
|
||||
img.style.width = '30rem';
|
||||
previewContainer.appendChild(img);
|
||||
|
||||
// Append preview container to the new input group
|
||||
const inputGroup = newDiv.querySelector('.input-group');
|
||||
inputGroup.appendChild(previewContainer);
|
||||
|
||||
newDiv.style.marginTop = '10px';
|
||||
inputContainer.appendChild(newDiv);
|
||||
updateLabels();
|
||||
handleDeleteButtons();
|
||||
}
|
||||
|
||||
if (addButton) {
|
||||
addButton.addEventListener('click', createNewInput);
|
||||
}
|
||||
|
||||
const firstDeleteBtn = inputContainer.children[0].querySelector(`.${buttonDeleteClass}`);
|
||||
if (firstDeleteBtn) {
|
||||
firstDeleteBtn.addEventListener('click', function() {
|
||||
if (inputContainer.children.length > 1) {
|
||||
inputContainer.removeChild(this.closest('.flex'));
|
||||
handleDeleteButtons();
|
||||
updateLabels();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateLabels();
|
||||
}
|
||||
|
||||
setupInputHandlers('inputContainerRute', 'btnRute', 'Foto Rute Menuju Lokasi', 'file-input',
|
||||
'delete-btn');
|
||||
setupInputHandlers('inputContainerLantai', 'btnLantai', 'Foto Lantai', 'file-input', 'delete-btn');
|
||||
setupInputHandlers('inputContainerLingkungan', 'btnLingkungan', 'Lingkungan', 'file-input',
|
||||
'delete-btn');
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
class UniversalCameraEditor {
|
||||
constructor() {
|
||||
|
||||
@@ -100,6 +100,6 @@ Breadcrumbs::for('registrasifinal.show', function (BreadcrumbTrail $trail) {
|
||||
});
|
||||
Breadcrumbs::for('registrasifinal.edit', function (BreadcrumbTrail $trail) {
|
||||
$trail->parent('registrasifinal');
|
||||
$trail->push('Tambah registrasifinal');
|
||||
$trail->push('Tambah Registrasi Final');
|
||||
});
|
||||
// registrasi final
|
||||
|
||||
@@ -304,7 +304,14 @@
|
||||
'model-alat-berat' => 'Model Alat Berat',
|
||||
'jenis-kapal' => 'Jenis kapal',
|
||||
'jenis-kendaraan' => 'Jenis kendaraan',
|
||||
];
|
||||
'jenis-unit' => 'Jenis unit',
|
||||
'terletak-area' => 'Terletak di Area',
|
||||
'merupakan-daerah' => 'Merupakan Daerah',
|
||||
'posisi-unit' => 'Posisi unit',
|
||||
'bentuk-unit' => 'Bentuk unit',
|
||||
'fasilitas-objek' => 'Fasilitas Umum Dekat Objek',
|
||||
|
||||
];
|
||||
|
||||
foreach ($headers as $type => $header) {
|
||||
Route::get($type, [SurveyorController::class, 'data'])->name($type . '.index')->defaults('type', $type);
|
||||
@@ -457,11 +464,11 @@
|
||||
Route::get('datatables', [ActivityController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('export', [ActivityController::class, 'export'])->name('export');
|
||||
|
||||
Route::get('/', [ActivityController::class, 'index'])->name('index');
|
||||
|
||||
Route::get('/{id}/show', [ActivityController::class, 'show'])->name('show');
|
||||
Route::get('download/{id}', [ActivityController::class, 'download'])->name('download');
|
||||
Route::get('senior', [ActivityController::class, 'senior'])->name('senior');
|
||||
Route::get('/', [ActivityController::class, 'index'])->name('index');
|
||||
Route::put('update-team', [ActivityController::class, 'updateTeamAssingment'])->name('update-team');
|
||||
Route::get('/{id}/show', [ActivityController::class, 'show'])->name('show');
|
||||
Route::get('download/{id}', [ActivityController::class, 'download'])->name('download');
|
||||
Route::get('senior', [ActivityController::class, 'senior'])->name('senior');
|
||||
|
||||
Route::name('progres.')->prefix('progres')->group(function () {
|
||||
Route::get('/', [ActivityController::class, 'progres_activity'])->name('index');
|
||||
@@ -499,33 +506,37 @@
|
||||
});
|
||||
|
||||
|
||||
Route::name('surveyor.')->prefix('surveyor')->group(function () {
|
||||
Route::get('/', [SurveyorController::class, 'index'])->name('index');
|
||||
Route::get('{id}/show', [SurveyorController::class, 'show'])->name('show');
|
||||
Route::post('store', [SurveyorController::class, 'store'])->name('store');
|
||||
Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah');
|
||||
Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal');
|
||||
Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
|
||||
Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto');
|
||||
Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name(
|
||||
'checkButtonStatus',
|
||||
);
|
||||
Route::name('surveyor.')->prefix('surveyor')->group(function () {
|
||||
Route::get('/', [SurveyorController::class, 'index'])->name('index');
|
||||
Route::get('{id}/show', [SurveyorController::class, 'show'])->name('show');
|
||||
Route::post('store', [SurveyorController::class, 'store'])->name('store');
|
||||
Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah');
|
||||
Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal');
|
||||
Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
|
||||
Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto');
|
||||
Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding');
|
||||
Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus');
|
||||
|
||||
Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('inspeksi/{id}/{jaminanId}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi');
|
||||
Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah');
|
||||
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto');
|
||||
Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name(
|
||||
'data-pembanding',
|
||||
);
|
||||
Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
|
||||
});
|
||||
Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('inspeksi/{id}/{jaminanId}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi');
|
||||
Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah');
|
||||
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto');
|
||||
Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
|
||||
Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
|
||||
Route::post('update_analisa/{id}', [SurveyorController::class, 'update_analisa'])->name('update_analisa');
|
||||
|
||||
});
|
||||
|
||||
Route::name('penilai.')->prefix('penilai')->group(function () {
|
||||
Route::get('/', [PenilaiController::class, 'index'])->name('index');
|
||||
Route::get('/{id}/show', [PenilaiController::class, 'show'])->name('show');
|
||||
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
|
||||
});
|
||||
|
||||
Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran');
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
Route::get('persetujuan-penawaran/datatables', [PersetujuanPenawaranController::class, 'dataForDatatables'])
|
||||
->name('persetujuan-penawaran.datatables');
|
||||
|
||||
Reference in New Issue
Block a user