Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender

This commit is contained in:
2024-12-18 17:11:56 +07:00
26 changed files with 1802 additions and 544 deletions

View File

@@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Inspeksi;
use Modules\Lpj\Models\Penilai;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
@@ -15,6 +16,13 @@ class PenilaiController extends Controller
{ {
public $user; public $user;
protected $surveyorController;
public function __construct(SurveyorController $surveyorController)
{
$this->surveyorController = $surveyorController;
}
/** /**
* Display a listing of the resource. * Display a listing of the resource.
*/ */
@@ -30,9 +38,9 @@ class PenilaiController extends Controller
{ {
$permohonan = Permohonan::with('debiture.documents')->find($id); $permohonan = Permohonan::with('debiture.documents')->find($id);
$jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; $documentId = $request->query('documentId');
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $jaminanId)->first();
$formFoto = null; $formFoto = null;
if ($inpeksi) { if ($inpeksi) {
@@ -56,14 +64,20 @@ class PenilaiController extends Controller
// //
} }
public function sederhana($id) public function sederhana(Request $request,$id)
{ {
$data = new SurveyorController();
$basicData = $data->getCommonData();
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); $basicData = $this->surveyorController->getCommonData();
$jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id;
$inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $documentId = $request->query('documentId');
$inspeksiId = $request->query('inspeksiId');
$jaminanId = $request->query('jaminanId');
$permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId);
$inspeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first();
$forminspeksi = null; $forminspeksi = null;
if ($inspeksi) { if ($inspeksi) {
$forminspeksi = json_decode($inspeksi->data_form, true); $forminspeksi = json_decode($inspeksi->data_form, true);
@@ -71,33 +85,55 @@ class PenilaiController extends Controller
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi')); return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi'));
} }
public function standard($id) public function standard(Request $request, $id)
{ {
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id);
$jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; $documentId = $request->query('documentId');
$jaminanId = $request->query('jaminanId');
$inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId);
$basicData = $this->surveyorController->getCommonData();
$inspeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first();
$forminspeksi = null; $forminspeksi = null;
if ($inspeksi) { if ($inspeksi) {
$forminspeksi = json_decode($inspeksi->data_form, true); $forminspeksi = json_decode($inspeksi->data_form, true);
} }
$data = new SurveyorController();
$basicData = $data->getCommonData();
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi')); return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi'));
} }
public function resume($id) public function resume(Request $request)
{ {
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); $permohonanId = $request->query('permohonanId');
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($permohonanId);
return view('lpj::penilai.components.resume', compact('permohonan')); return view('lpj::penilai.components.resume', compact('permohonan'));
} }
public function memo() public function memo(Request $request)
{ {
return view('lpj::resume.index'); $permohonanId = $request->query('permohonanId');
$documentId = $request->query('documentId');
$inspeksiId = $request->query('inspeksiId');
$jaminanId = $request->query('jaminanId');
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
$formFoto = null;
$formPeta = null;
if ($inspeksi) {
$formFoto = json_decode($inspeksi->foto_form, true);
$formPeta = json_decode($inspeksi->data_form, true);
}
return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta'));
} }
@@ -106,7 +142,7 @@ class PenilaiController extends Controller
*/ */
public function show($id) public function show($id)
{ {
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian', 'documents.inspeksi'])->find($id);
// return response()->json(['permohonan' => $permohonan]); // return response()->json(['permohonan' => $permohonan]);
return view('lpj::penilai.show', compact('permohonan')); return view('lpj::penilai.show', compact('permohonan'));
@@ -123,11 +159,20 @@ class PenilaiController extends Controller
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
*/ */
public function update(Request $request, $id) public function paparan(Request $request)
{ {
// $permohonanId = $request->query('permohonanId');
return view('lpj::penilai.components.paparan');
} }
public function rap(Request $request)
{
$permohonanId = $request->query('permohonanId');
return view('lpj::penilai.components.paparan');
}
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
*/ */
@@ -160,7 +205,7 @@ class PenilaiController extends Controller
// Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role
$query->whereHas('penilaian.userPenilai', function ($q) { $query->whereHas('penilaian.userPenilai', function ($q) {
$q->where('role', 'penilai') // Ensure the role is 'penilai' $q->where('role', 'penilai') // Ensure the role is 'penilai'
->where('user_id', 12); // Ganti dengan Auth::user()->id jika dinamis ->where('user_id', Auth::user()->id); // Ganti dengan Auth::user()->id jika dinamis
}); });
// Apply sorting if provided // Apply sorting if provided
@@ -213,9 +258,9 @@ class PenilaiController extends Controller
]); ]);
} }
public function kertas_kerja($id, $jaminanId) public function export_kertas_kerja($id, $jaminanId)
{ {
$data = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $data = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $jaminanId)->first();
// $data = null; // $data = null;
// $headerInfo = [ // $headerInfo = [
@@ -234,5 +279,100 @@ class PenilaiController extends Controller
} }
public function import_kertas_kerja(Request $request)
{
$validatedData = $request->validate([
'permohonan_id' => 'required|integer',
'document_id' => 'required|integer',
'inspeksi_id' => 'required|integer',
'kertas_kerja' => 'required|file|mimes:pdf,doc,docx,xls,xlsx,xlsx',
]);
try {
// Simpan file kertas kerja
if ($request->hasFile('kertas_kerja')) {
$file = $request->file('kertas_kerja');
$filePath = $this->surveyorController->uploadFile($file, 'kertas_kerja');
Penilai::updateOrCreate(
[
'permohonan_id' => $validatedData['permohonan_id'],
'dokument_id' => $validatedData['document_id'],
'inspeksi_id' => $validatedData['inspeksi_id'],
],
[
'kertas_kerja' => $filePath,
]
);
return response()->json(['success' => true, 'message' => 'Kertas kerja berhasil diunggah.']);
}
return response()->json(['success' => false, 'message' => 'File kertas kerja tidak ditemukan.'], 400);
} catch (\Exception $e) {
return response()->json(['success' => false, 'message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500);
}
}
public function status($id)
{
$penilai = Penilai::find($id);
return response()->json(['data' => $penilai]);
}
public function checkStatusLpj(Request $request)
{
$permohonanId = $request->query('permohonanId');
$documentId = $request->query('documentId');
$inspeksiId = $request->query('inspeksiId');
$statusLpj = Penilai::where('permohonan_id', $permohonanId)
->where('dokument_id', $documentId)
->where('inspeksi_id', $inspeksiId)
->first();
return response()->json(['status' => $statusLpj ? $statusLpj->type : null]);
}
public function saveStatusLpj(Request $request)
{
Penilai::updateOrCreate(
[
'permohonan_id' => $request->permohonan_id,
'dokument_id' => $request->document_id,
'inspeksi_id' => $request->inspeksi_id,
],
[
'type' => $request->type,
]
);
return response()->json(['success' => true]);
}
public function storePenilaian($id){
try {
$permohonan = Permohonan::findOrFail($id);
$permohonan->update([
'status' => 'proses-laporan',
]);
return response()->json([
'success' => true,
'message' => 'Berhasil menyimpan penilaian'
], 200);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',
'error' => $e->getMessage()
], 500);
}
}
} }

View File

@@ -102,6 +102,7 @@ class SurveyorController extends Controller
'tujuanPenilaian', 'tujuanPenilaian',
'penilaian', 'penilaian',
'documents.jenisJaminan', 'documents.jenisJaminan',
'documents',
])->findOrFail($id); ])->findOrFail($id);
$surveyor = $id; $surveyor = $id;
@@ -112,7 +113,7 @@ class SurveyorController extends Controller
// Get all inspeksi data for this permohonan // Get all inspeksi data for this permohonan
$inspeksiData = Inspeksi::where('permohonan_id', $id) $inspeksiData = Inspeksi::where('permohonan_id', $id)
->get() ->get()
->keyBy('jenis_jaminan_id') ->keyBy('dokument_id')
->map(function ($item) { ->map(function ($item) {
return [ return [
'data_form' => json_decode($item->data_form, true), 'data_form' => json_decode($item->data_form, true),
@@ -153,7 +154,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::updateOrCreate( $inspeksi = Inspeksi::updateOrCreate(
[ [
'permohonan_id' => $request->input('permohonan_id'), 'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id') 'dokument_id' => $request->input('dokument_id')
], ],
[ [
'data_form' => json_encode($processedData), 'data_form' => json_encode($processedData),
@@ -164,6 +165,7 @@ class SurveyorController extends Controller
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => 'Data berhasil disimpan', 'message' => 'Data berhasil disimpan',
'data' => $processedData
], 200); ], 200);
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -195,7 +197,7 @@ class SurveyorController extends Controller
$pisah = array_filter( $pisah = array_filter(
explode(',', $action), explode(',', $action),
function($act) use ($allowedActions) { function ($act) use ($allowedActions) {
return isset($allowedActions[trim($act)]); return isset($allowedActions[trim($act)]);
} }
); );
@@ -227,7 +229,7 @@ class SurveyorController extends Controller
$validationRules = [ $validationRules = [
'luas' => 'required|numeric', 'luas' => 'required|numeric',
'permohonan_id' => 'required', 'permohonan_id' => 'required',
'jenis_jaminan_id' => 'required' 'dokument_id' => 'required'
]; ];
if ($request->hasFile('foto_denah')) { if ($request->hasFile('foto_denah')) {
@@ -247,7 +249,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) ->where('dokument_id', $request->input('dokument_id'))
->first(); ->first();
if ($inspeksi) { if ($inspeksi) {
@@ -261,7 +263,7 @@ class SurveyorController extends Controller
} else { } else {
Inspeksi::create([ Inspeksi::create([
'permohonan_id' => $request->input('permohonan_id'), 'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), 'dokument_id' => $request->input('dokument_id'),
'denah_form' => json_encode($formatJsonDenah) 'denah_form' => json_encode($formatJsonDenah)
]); ]);
} }
@@ -293,7 +295,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::firstOrNew([ $inspeksi = Inspeksi::firstOrNew([
'permohonan_id' => $request->input('permohonan_id'), 'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id') 'dokument_id' => $request->input('dokument_id')
]); ]);
// Get existing foto_form data if it exists // Get existing foto_form data if it exists
@@ -398,24 +400,24 @@ class SurveyorController extends Controller
$maxSize = getMaxFileSize('Foto'); $maxSize = getMaxFileSize('Foto');
return $request->validate([ return $request->validate([
'permohonan_id' => 'required', 'permohonan_id' => 'required',
'jenis_jaminan_id' => 'required', 'dokument_id' => 'required',
'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_objek.*' => 'required|string|max:255', 'name_objek.*' => 'required|string|max:255',
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lingkungan.*' => 'required|string|max:255', 'name_lingkungan.*' => 'required|string|max:255',
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_rute.*' => 'required|string|max:255', 'name_rute.*' => 'required|string|max:255',
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lantai_unit.*' => 'nullable|string|max:255', 'name_lantai_unit.*' => 'nullable|string|max:255',
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_rute_lainnya.*' => 'nullable|string', 'name_rute_lainnya.*' => 'nullable|string',
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lantai_lainnya.*' => 'nullable|string|max:255', 'name_lantai_lainnya.*' => 'nullable|string|max:255',
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_basement.*' => 'nullable|string|max:255', 'name_basement.*' => 'nullable|string|max:255',
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize, 'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_gerbang' => 'nullable|string|max:255', 'name_gerbang' => 'nullable|string|max:255',
]); ]);
} }
@@ -557,7 +559,7 @@ class SurveyorController extends Controller
]); ]);
$data['status'] = 'success'; $data['status'] = 'success';
$data['message']= 'Jadwal '.$request->noReg.' berhasil di aprove'; $data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove';
} catch (\Exception $e) { } catch (\Exception $e) {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage(); $data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
@@ -585,9 +587,9 @@ class SurveyorController extends Controller
$fotoPembanding = $request->file('foto_objek_pembanding') ?? []; $fotoPembanding = $request->file('foto_objek_pembanding') ?? [];
$existingData = null; $existingData = null;
if ($request->has('permohonan_id') && $request->has('jenis_jaminan_id')) { if ($request->has('permohonan_id') && $request->has('dokument_id')) {
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) ->where('dokument_id', $request->input('dokument_id'))
->first(); ->first();
if ($inspeksi) { if ($inspeksi) {
@@ -682,7 +684,7 @@ class SurveyorController extends Controller
]; ];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) ->where('dokument_id', $request->input('dokument_id'))
->first(); ->first();
if ($inspeksi) { if ($inspeksi) {
@@ -699,12 +701,12 @@ class SurveyorController extends Controller
$dataForm = json_decode($inspeksi->data_form, true) ?: []; $dataForm = json_decode($inspeksi->data_form, true) ?: [];
// Inisialisasi struktur data jika belum ada // Inisialisasi struktur data jika belum ada
if(!isset($dataForm['bangunan'])) { if (!isset($dataForm['bangunan'])) {
$dataForm['bangunan'] = []; $dataForm['bangunan'] = [];
$needsSave = true; $needsSave = true;
} }
if(!isset($dataForm['tanah'])) { if (!isset($dataForm['tanah'])) {
$dataForm['tanah'] = []; $dataForm['tanah'] = [];
$needsSave = true; $needsSave = true;
} }
@@ -721,17 +723,35 @@ class SurveyorController extends Controller
// Fields untuk tanah // Fields untuk tanah
if (in_array($field, ['luas_tanah'])) { if (in_array($field, ['luas_tanah'])) {
$cekLuas = $dataForm['tanah']['luas_tanah'] == 'sesuai' ? 'sesuai' : 'tidak sesuai'; // Pastikan struktur array ada sebelum diakses
$dataForm['tanah'][$field][$cekLuas] = $newValue; if (!isset($dataForm['tanah']['luas_tanah'])) {
} $dataForm['tanah']['luas_tanah'] = [];
// Fields untuk bangunan }
else if (in_array($field, ['luas_tanah_bagunan'])) {
$cekBanguan = $dataForm['bangunan']['luas_tanah_bagunan'] == 'sesuai' ? 'sesuai' : 'tidak sesuai'; $cekLuas = isset($dataForm['tanah']['luas_tanah']['sesuai']) && $dataForm['tanah']['luas_tanah']['sesuai'] === 'sesuai'
$dataForm['bangunan'][$field][$cekBanguan] = $newValue; ? 'sesuai'
: 'tidak sesuai';
$dataForm['tanah']['luas_tanah'][$cekLuas] = $newValue;
$needsSave = true;
} }
// Fields untuk bangunan
elseif (in_array($field, ['luas_tanah_bagunan'])) {
if (!isset($dataForm['bangunan']['luas_tanah_bagunan'])) {
$dataForm['bangunan']['luas_tanah_bagunan'] = [];
}
$cekBanguan = isset($dataForm['bangunan']['luas_tanah_bagunan']['sesuai']) && $dataForm['bangunan']['luas_tanah_bagunan']['sesuai'] === 'sesuai'
? 'sesuai'
: 'tidak sesuai';
$dataForm['bangunan']['luas_tanah_bagunan'][$cekBanguan] = $newValue;
$needsSave = true;
}
// Fields untuk alamat dalam asset // Fields untuk alamat dalam asset
else if (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) { elseif (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) {
if (!isset($dataForm['asset']['alamat'])) { if (!isset($dataForm['asset']['alamat'])) {
$dataForm['asset']['alamat'] = []; $dataForm['asset']['alamat'] = [];
@@ -745,7 +765,7 @@ class SurveyorController extends Controller
$dataForm['asset']['alamat'][$alamatStatus][$field] = $newValue; $dataForm['asset']['alamat'][$alamatStatus][$field] = $newValue;
} }
// Jenis asset dalam asset // Jenis asset dalam asset
else if ($field === 'jenis_asset') { elseif ($field === 'jenis_asset') {
$assetStatus = $request->input('asset_status', 'sesuai'); $assetStatus = $request->input('asset_status', 'sesuai');
$dataForm['asset']['jenis_asset'] = [ $dataForm['asset']['jenis_asset'] = [
$assetStatus => $newValue $assetStatus => $newValue
@@ -809,7 +829,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::updateOrCreate( $inspeksi = Inspeksi::updateOrCreate(
[ [
'permohonan_id' => $formattedData['permohonan_id'], 'permohonan_id' => $formattedData['permohonan_id'],
'jenis_jaminan_id' => $formattedData['jenis_jaminan_id'] 'dokument_id' => $formattedData['dokument_id']
], ],
[ [
'data_pembanding' => json_encode($formattedData), 'data_pembanding' => json_encode($formattedData),
@@ -828,7 +848,7 @@ class SurveyorController extends Controller
$validator = $request->validate([ $validator = $request->validate([
'permohonan_id' => 'required|exists:permohonan,id', 'permohonan_id' => 'required|exists:permohonan,id',
'type' => 'required|string', 'type' => 'required|string',
'jenis_jaminan_id' => 'required', 'dokument_id' => 'required',
'foto_objek' => 'nullable|image|max:'.$maxSize, 'foto_objek' => 'nullable|image|max:'.$maxSize,
'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize, 'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize,
]); ]);
@@ -843,7 +863,7 @@ class SurveyorController extends Controller
// Update foto_form // Update foto_form
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) ->where('dokument_id', $request->input('dokument_id'))
->first(); ->first();
if ($inspeksi) { if ($inspeksi) {
@@ -868,7 +888,7 @@ class SurveyorController extends Controller
$formattedData = [ $formattedData = [
'permohonan_id' => $request->input('permohonan_id'), 'permohonan_id' => $request->input('permohonan_id'),
'type' => $request->input('type'), 'type' => $request->input('type'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), 'dokument_id' => $request->input('dokument_id'),
'objek_penilaian' => $objekPenilaian, 'objek_penilaian' => $objekPenilaian,
'data_pembanding' => $this->formatDataPembanding($request) 'data_pembanding' => $this->formatDataPembanding($request)
]; ];
@@ -899,9 +919,21 @@ class SurveyorController extends Controller
* Form inspeksi. * Form inspeksi.
*/ */
public function formInspeksi($id, $jaminanId) public function formInspeksi(Request $request, $id)
{ {
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
$validated = $request->validate([
'form' => 'required|in:create-inspeksi',
'inspeksi' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$link_url_region = Teams::with('regions', 'teamsUsers') $link_url_region = Teams::with('regions', 'teamsUsers')
->whereHas('teamsUsers', function ($query) { ->whereHas('teamsUsers', function ($query) {
$query->where('user_id', Auth::user()->id); $query->where('user_id', Auth::user()->id);
@@ -915,7 +947,7 @@ class SurveyorController extends Controller
$surveyor = $id; $surveyor = $id;
$basicData = $this->getCommonData(); $basicData = $this->getCommonData();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$forminspeksi = null; $forminspeksi = null;
if ($inpeksi) { if ($inpeksi) {
$forminspeksi = json_decode($inpeksi->data_form, true); $forminspeksi = json_decode($inpeksi->data_form, true);
@@ -962,13 +994,23 @@ class SurveyorController extends Controller
* Denah. * Denah.
*/ */
public function denah($id, $jaminanId) public function denah(Request $request, $id)
{ {
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId); $validated = $request->validate([
'form' => 'required|in:create-denah',
'denah' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$denah = null; $denah = null;
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$formDenah = null; $formDenah = null;
if ($inpeksi) { if ($inpeksi) {
$formDenah = json_decode($inpeksi->denah_form, true); $formDenah = json_decode($inpeksi->denah_form, true);
@@ -982,14 +1024,25 @@ class SurveyorController extends Controller
* Foto. * Foto.
*/ */
public function foto($id, $jaminanId) public function foto(Request $request, $id)
{ {
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId); $validated = $request->validate([
'form' => 'required|in:create-foto',
'foto' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$surveyor = $id; $surveyor = $id;
$branches = Branch::all(); $branches = Branch::all();
$provinces = Province::all(); $provinces = Province::all();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$formFoto = null; $formFoto = null;
if ($inpeksi) { if ($inpeksi) {
@@ -1003,25 +1056,28 @@ class SurveyorController extends Controller
* Data pembanding. * Data pembanding.
*/ */
public function dataPembanding($id, $jaminanId) public function dataPembanding(Request $request, $id)
{ {
try { try {
// Ambil data permohonan dengan eager loading // Ambil data permohonan dengan eager loading
$permohonan = Permohonan::with([
'user', $validated = $request->validate([
'debiture.province', 'form' => 'required|in:data-pembanding',
'debiture.city', 'pembanding' => 'required|exists:permohonan,id',
'debiture.district', 'dokument' => 'required',
'debiture.village', 'jenisjaminan' => 'required'
'branch', ]);
'tujuanPenilaian',
'penilaian' $dokumentId = $validated['dokument'];
])->findOrFail($id); $jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
// Ambil data inspeksi // Ambil data inspeksi
$inspeksi = Inspeksi::where([ $inspeksi = Inspeksi::where([
'permohonan_id' => $id, 'permohonan_id' => $id,
'jenis_jaminan_id' => $jaminanId 'dokument_id' => $dokumentId
])->first(); ])->first();
// Inisialisasi variabel // Inisialisasi variabel
@@ -1496,7 +1552,7 @@ class SurveyorController extends Controller
} }
private function getPermohonanJaminanId($id, $jaminanId) public function getPermohonanJaminanId($id, $dokumentId, $jaminanId)
{ {
return Permohonan::with([ return Permohonan::with([
'user', 'user',
@@ -1507,15 +1563,11 @@ class SurveyorController extends Controller
'branch', 'branch',
'tujuanPenilaian', 'tujuanPenilaian',
'penilaian', 'penilaian',
'debiture.documents.jenisJaminan', 'debiture.documents' => function ($query) use ($dokumentId, $jaminanId) {
'debiture.documents' => function ($query) use ($jaminanId) { $query->where('id', $dokumentId)
$query->where('jenis_jaminan_id', $jaminanId); ->where('jenis_jaminan_id', $jaminanId);
} }
]) ])->findOrFail($id);
->whereHas('debiture.documents', function ($query) use ($jaminanId) {
$query->where('jenis_jaminan_id', $jaminanId);
})
->findOrFail($id);
} }
@@ -1763,10 +1815,8 @@ class SurveyorController extends Controller
'sifat_bangunan' => $data['sifat_bangunan'] ?? null, 'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
'spesifikasi_bangunan' => $result ?? null, 'spesifikasi_bangunan' => $result ?? null,
'sarana_pelengkap' => $this->mapArrayWithInputs( 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? null,
$data['sarana_pelengkap'] ?? [], 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
$data['sarana_pelengkap_input'] ?? []
),
], ],
]; ];
} }
@@ -1808,10 +1858,8 @@ class SurveyorController extends Controller
'jarak_tps' => $data['jarak_tps'] ?? null, 'jarak_tps' => $data['jarak_tps'] ?? null,
'nama_tps' => $data['nama_tps'] ?? null, 'nama_tps' => $data['nama_tps'] ?? null,
'merupakan_daerah' => $data['merupakan_daerah'] ?? null, 'merupakan_daerah' => $data['merupakan_daerah'] ?? null,
'fasilitas_dekat_object' => $this->mapArrayWithInputs( 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null,
$data['fasilitas_dekat_object'] ?? [], 'fasilitas_dekat_object_input' => $data['fasilitas_dekat_object_input'] ?? null,
$data['fasilitas_dekat_object_input'] ?? []
),
] ]
]; ];
} }
@@ -1823,10 +1871,8 @@ class SurveyorController extends Controller
'fakta_positif' => $data['fakta_positif'] ?? null, 'fakta_positif' => $data['fakta_positif'] ?? null,
'fakta_negatif' => $data['fakta_negatif'] ?? null, 'fakta_negatif' => $data['fakta_negatif'] ?? null,
'rute_menuju' => $data['rute_menuju'] ?? null, 'rute_menuju' => $data['rute_menuju'] ?? null,
'batas_batas' => $this->mapArrayWithInputs( 'batas_batas' => $data['batas_batas'] ?? null,
$data['batas_batas'] ?? [], 'batas_batas_input' => $data['batas_batas_input'] ?? null,
$data['batas_batas_input'] ?? []
),
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null, 'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null, 'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
'informasi_dokument' => $data['informasi_dokument'] ?? null, 'informasi_dokument' => $data['informasi_dokument'] ?? null,
@@ -1844,7 +1890,7 @@ class SurveyorController extends Controller
]; ];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('dokument_id', $request->input('dokument_id'))->first();
$fotoTypes = [ $fotoTypes = [
@@ -2278,7 +2324,7 @@ class SurveyorController extends Controller
*/ */
private function uploadFile($file, $type) public function uploadFile($file, $type)
{ {
if (!$file->isValid()) { if (!$file->isValid()) {
throw new Exception("Invalid file upload for {$type}"); throw new Exception("Invalid file upload for {$type}");
@@ -2306,8 +2352,10 @@ class SurveyorController extends Controller
{ {
$result = []; $result = [];
foreach ($keys as $index => $key) { foreach ($keys as $key) {
$result[$key] = $values[$index] ?? null; // Jika checkbox dicentang, ambil nilai input yang sesuai
// Gunakan nilai dari $values berdasarkan nama checkbox
$result[$key] = $values[$key] ?? null;
} }
return $result; return $result;
@@ -2315,6 +2363,7 @@ class SurveyorController extends Controller
/** /**
* Helper method generic untuk mengambil data field * Helper method generic untuk mengambil data field
* *

View File

@@ -67,4 +67,8 @@
public function detail(){ public function detail(){
return $this->hasMany(DetailDokumenJaminan::class, 'dokumen_jaminan_id', 'id'); return $this->hasMany(DetailDokumenJaminan::class, 'dokumen_jaminan_id', 'id');
} }
public function inspeksi()
{
return $this->hasMany(Inspeksi::class, 'dokument_id', 'id');
}
} }

42
app/Models/Penilai.php Normal file
View File

@@ -0,0 +1,42 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\PenilaiFactory;
class Penilai extends Model
{
use HasFactory;
protected $table = 'penilai';
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'dokument_id',
'permohonan_id',
'inspeksi_id',
'kertas_kerja',
'resume',
'lpj',
'type',
'memo',
];
// protected static function newFactory(): PenilaiFactory
// {
// // return PenilaiFactory::new();
// }
public function dokument(){
return $this->belongsTo(DokumenJaminan::class);
}
public function permohonan(){
return $this->belongsTo(Permohonan::class);
}
public function inspeksi(){
return $this->belongsTo(Inspeksi::class);
}
}

View File

@@ -0,0 +1,44 @@
<?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('penilai', function (Blueprint $table) {
$table->id();
$table->string('type')->nullable();
$table->json('lpj')->nullable();
$table->json('resume')->nullable();
$table->json('memo')->nullable();
$table->string('kertas_kerja')->nullable();
$table->unsignedBigInteger('dokument_id')->nullable();
$table->unsignedBigInteger('permohonan_id')->nullable();
$table->unsignedBigInteger('inspeksi_id')->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->char('authorized_status', 1)->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->foreign('dokument_id')->references('id')->on('dokumen_jaminan')->onDelete('set null');
$table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('set null');
$table->foreign('inspeksi_id')->references('id')->on('inspeksi')->onDelete('set null');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('penilai');
}
};

View File

@@ -0,0 +1,44 @@
<?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) {
if (Schema::hasColumn('inspeksi', 'jenis_jaminan_id')) {
$table->dropForeign(['jenis_jaminan_id']);
}
if (Schema::hasColumn('inspeksi', 'jenis_jaminan_id')) {
$table->dropColumn('jenis_jaminan_id');
}
$table->unsignedBigInteger('dokument_id')->nullable()->after('permohonan_id');
$table->foreign('dokument_id')->references('id')->on('dokumen_jaminan')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('inspeksi', function (Blueprint $table) {
$table->dropForeign(['dokument_id']);
$table->dropColumn('dokument_id');
$table->unsignedBigInteger('jenis_jaminan_id')->nullable()->after('permohonan_id');
$table->foreign('jenis_jaminan_id')->references('id')->on('jenis_jaminan')->onDelete('cascade');
});
}
};

View File

@@ -364,10 +364,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo",
"admin",
"surveyor"
], ],
"sub": [ "sub": [
{ {
@@ -378,8 +375,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -390,8 +386,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -402,8 +397,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -414,8 +408,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -426,8 +419,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -438,8 +430,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -450,8 +441,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -462,8 +452,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao", "admin"
"pemohon-eo"
] ]
}, },
{ {
@@ -473,7 +462,8 @@
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator" "administrator",
"admin"
] ]
}, },
{ {
@@ -483,7 +473,8 @@
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator" "administrator",
"admin"
] ]
}, },
{ {
@@ -494,8 +485,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin", "admin"
"senior-officer"
] ]
}, },
{ {
@@ -506,7 +496,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"senior-officer" "admin"
] ]
}, },
{ {
@@ -517,8 +507,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin", "admin"
"senior-officer"
] ]
}, },
{ {
@@ -584,7 +573,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -595,7 +584,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -606,7 +595,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -617,7 +606,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -628,7 +617,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -639,7 +628,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -650,7 +639,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -661,7 +650,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -672,52 +661,64 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
]
},
{
"title": "Jenis Unit",
"path": "basicdata.jenis-unit",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
},
{
"title": "Bentuk Unit",
"path": "basicdata.bentuk-unit",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
},
{
"title": "Merupakan Daerah",
"path": "basicdata.merupakan-daerah",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
},
{
"title": "Fasilitas Umum Dekat Objek",
"path": "basicdata.fasilitas-objek",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
},
{
"title": "Posisi Unit",
"path": "basicdata.posisi-unit",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
] ]
}, },
{
"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", "title": "Lalu Lintas Sekitar",
"path": "basicdata.lalu-lintas-lokasi", "path": "basicdata.lalu-lintas-lokasi",
@@ -726,7 +727,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -737,7 +738,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -748,7 +749,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -759,7 +760,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -770,7 +771,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -781,7 +782,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -792,7 +793,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -803,7 +804,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -814,7 +815,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -825,7 +826,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -836,7 +837,7 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
@@ -847,17 +848,20 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "admin"
] ]
}, },
{ {
"title": "Terletak Di Area", "title": "Terletak Di Area",
"path": "basicdata.terletak-area", "path": "basicdata.terletak-area",
"classes": "", "classes": "",
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": ["administrator","surveyor"] "roles": [
} "administrator",
"admin"
]
}
] ]
} }
], ],

View File

@@ -538,8 +538,6 @@
@endforeach @endforeach
</div> </div>
</body> </body>
</html> </html>

View File

@@ -4,68 +4,70 @@
$informasiPembanding = isset($inspeksi->data_pembanding) ? json_decode($inspeksi->data_pembanding, true) : []; $informasiPembanding = isset($inspeksi->data_pembanding) ? json_decode($inspeksi->data_pembanding, true) : [];
@endphp @endphp
@foreach ($informasiPembanding['data_pembanding'] as $key => $item) @if (isset($informasiPembanding['data_pembanding']))
<div class="border border-gray-200"> @foreach ($informasiPembanding['data_pembanding'] as $key => $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-5 p-5"> <div class="border border-gray-200">
<div class="form-label lg:form-label max-w-56 grid gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-5 p-5">
<label class=" ">Pembanding {{ $key + 1 }} <div class="form-label lg:form-label max-w-56 grid gap-2.5">
</label> <label class=" ">Pembanding {{ $key + 1 }}
<img src="{{ isset($item['foto_objek']) ? asset('storage/' . old('foto_objek', $item['foto_objek'])) : '#' }}" </label>
alt="Gambar foto_objek" style="width: 20rem;" class="mx-auto object-cover"> <img src="{{ isset($item['foto_objek']) ? asset('storage/' . old('foto_objek', $item['foto_objek'])) : '#' }}"
alt="Gambar foto_objek" style="width: 20rem;" class="mx-auto object-cover">
</div>
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Properti</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['jenis_aset'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Harga Penawara</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga_diskon'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Penjualan (HP)</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Ditawarkan sejak</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LT</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_tanah'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LB</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_bangunan'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Titik Koordinat</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['kordinat_lat'] }} , {{ $item['kordinat_lng'] }}</span>
</div>
</div>
</div>
</div> </div>
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Properti</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['jenis_aset'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Harga Penawara</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga_diskon'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Penjualan (HP)</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Ditawarkan sejak</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LT</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_tanah'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LB</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_bangunan'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Titik Koordinat</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['kordinat_lat'] }} , {{ $item['kordinat_lng'] }}</span>
</div>
</div>
</div>
</div> </div>
@endforeach
</div> @endif
@endforeach
</div> </div>

View File

@@ -35,7 +35,7 @@
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen) @foreach ($permohonan->debiture->documents as $dokumen)
<span class="text-2sm text-gray-700"> <span class="text-2sm text-gray-700">
{{formatAlamat($dokumen->pemilik)}} {{ formatAlamat($dokumen->pemilik) }}
</span> </span>
@endforeach @endforeach
</div> </div>
@@ -82,7 +82,34 @@
Identitas Cadeb/Debitur Identitas Cadeb/Debitur
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama</label>
<div class="flex flex-wrap items-baseline w-full">
<span>
@if (isset($permohonan->debiture))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perwakilan Cadeb/Debitur Di lokasi</label>
<div class="flex flex-wrap items-baseline w-full">
<span>
{{ $forminspeksi['asset']['debitur_perwakilan'][0] ?? '' }}
</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Pihak Bank Selain Appraisal</label>
<div class="flex flex-wrap items-baseline w-full">
<span></span>
</div>
</div>
</div> </div>
</div> </div>
@@ -94,7 +121,61 @@
Deskripsi dan Alamat Aset Deskripsi dan Alamat Aset
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Asset</label>
@php
$statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedValue = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null;
@endphp
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $selectedValue }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@php
$statusKey = isset($forminspeksi['asset']['alamat']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedValue = $forminspeksi['asset']['alamat'][$statusKey] ?? null;
@endphp
<label class="form-label max-w-56">Terletak di</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $selectedValue['address'] ?? '' }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="form-label max-w-56">Provinsi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="province" class="input w-full cursor-not-allowed" readonly
value="{{ isset($permohonan->debiture->province) ? $permohonan->debiture->province->name : '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="city" class="form-label max-w-56">Kabupaten/Kota</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="city" class="input w-full cursor-not-allowed" readonly
value="{{ isset($permohonan->debiture->city) ? $permohonan->debiture->city->name : '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="district" class="form-label max-w-56">Kecamatan</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="district" class="input w-full cursor-not-allowed" readonly
value="{{ isset($permohonan->debiture->district) ? $permohonan->debiture->district->name : '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="village" class="form-label max-w-56">Desa/Kelurahan</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="village" class="input w-full cursor-not-allowed" readonly
value="{{ isset($permohonan->debiture->village) ? $permohonan->debiture->village->name : '' }}">
</div>
</div>
</div> </div>
</div> </div>
@@ -106,7 +187,98 @@
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<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 Kepemilikan
</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>
@include('lpj::component.pdfviewer')
</div> </div>
</div> </div>
@@ -116,15 +288,38 @@
Hubungan Cadeb/Debitur dengan pemilik dan penghuni Hubungan Cadeb/Debitur dengan pemilik dan penghuni
</h3> </h3>
</div> </div>
@php
$statusKey = isset($forminspeksi['asset']['hub_cadeb']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb'][$statusKey] ?? null;
@endphp
<div class="card-body"> <div class="card-body">
</div> </div>
</div> </div>
@include('lpj::surveyor.components.tanah') @foreach ($permohonan->debiture->documents as $dokumen)
@include('lpj::surveyor.components.bangunan') @if ($dokumen->jenisJaminan)
@include('lpj::surveyor.components.lingkungan') @php
@include('lpj::surveyor.components.fakta') $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@include('lpj::surveyor.components.informasi') @endphp
@if (isset($formKategori) && $formKategori)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
<input type="hidden" name="action" value="{{ implode(',', $kategoriUnik) }}">
<input type="hidden" name="type" value="{{ implode(',', $kategoriUnik) }}">
@foreach ($kategoriUnik as $kategori)
{{-- Tampilkan komponen sesuai kategori --}}
@include('lpj::surveyor.components.' . str_replace('-', '-', $kategori), [
'dokumen' => $dokumen,
])
@endforeach
@endif
@endif
@endforeach
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
@@ -142,17 +337,114 @@
total nilai pasar wajar total nilai pasar wajar
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body gap-5">
<div>
<label for="total_nilai_pasar_wajar" class="form-label">Total Nilai Pasar Wajar</label>
<div class="card-body grid gap-2.5 w-full">
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="form-label max-w-56">Luas Tanah</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
</div>
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="form-label max-w-56">Luas Bangunan</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
</div>
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="form-label max-w-56">Sarana Pelengkap</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
</div>
</div>
</div>
<div>
<label for="total_nilai_pasar_wajar" class="form-label uppercase">TOTAL NILAI LIKUIDASI</label>
<div class="card-body grid gap-2.5 w-full">
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
nilai asuransi nilai asuransi
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div>
<label for="total_nilai_pasar_wajar" class="form-label uppercase">TOTAL NILAI ASURANSI</label>
<div class="card-body grid gap-2.5 w-full">
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="form-label">Luas Bangunan</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">Rp</label>
<input type="text" id="province" class="input w-full" value="">
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px"> <div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
@@ -165,11 +457,4 @@
</button> </button>
</div> </div>
</div> </div>
<div id="loadingOverlay" class="fixed inset-0 bg-black bg-opacity-50 hidden items-center justify-center z-50">
<div class="bg-white p-4 rounded-lg">
<div class="loader"></div>
<p class="mt-2 text-center">Sedang memproses...</p>
</div>
</div>
@endsection @endsection

View File

@@ -0,0 +1,458 @@
@extends('layouts.main')
@section('breadcrumbs')
{{-- {{ Breadcrumbs::render(request()->route()->getName()) }}
--}}
Resume
@endsection
@section('content')
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card">
<div class="card-header">
<h3 class="card-title uppercase">
Memo Antar Kantor
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('penilai.show', ['id' => $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">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kepada</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="kepada" class="input w-full"
placeholder="Masukkan..."
value="">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Dari</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="dari" class="input w-full"
placeholder="Masukkan..."
value="">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Memo</label>
<div class="flex flex-wrap items-base line w-full">
<input type="text" name="nomor_memo" class="input w-full"
placeholder="Masukkan..."
value="">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tanggal" class="input w-full"
placeholder="Masukkan..."
value="">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perihal</label>
<div class="flex flex-wrap items-base line w-full">
<input type="text" name="perihal" class="input w-full"
placeholder="Masukkan..."
value="">
</div>
</div>
</div>
</div>
<div class="card w-full bg-white rounded-lg shadow-md ">
<div class="card-header">
<h1 class="text-md font-medium text-gray-900 uppercase">Sehubungan dengan permintaan BAGI Cabang ............., untuk dilakukan survey untuk penilaian baru/review, calon debitur/debitur an .............,
dengan deskripsi sebagai berikut :
</h1>
</div>
<div class="card-body">
<div class="grid gap-5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Aset</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="jenis_asset_tidak_sesuai" class="input w-full"
name="jenis_asset_tidak_sesuai">
<option value="">Select Jenis asset</option>
</select>
{{-- <button type="button" class="btn btn-md btn-primary"
onclick="updateAnalisa('jenis_asset')">Save</button> --}}
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="address" class="form-label max-w-56">Lokasi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="address" name="address" class="input w-full"
placeholder="Masukkan Jl." value="{{ old('address') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province_code" class="form-label max-w-56">Provinsi</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="province_code" name="province_code" class="input w-full" >
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="city_code" class="form-label max-w-56">Kota/Kabupaten</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="city_code" name="city_code" class="select w-full">
<option value="">Pilih Kota/Kabupaten</option>
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="district_code" class="form-label max-w-56">Kecamatan</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="district_code" name="district_code" class="select w-full" >
<option value="">Pilih Kecamatan</option>
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="village_code" class="form-label max-w-56">Kelurahan</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="village_code" name="village_code" class="select w-full">
<option value="">Pilih Kelurahan</option>
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="address" class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" id="address" name="address" class="input w-full"
placeholder="Masukkan Jl." value="{{ old('address') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="address" class="form-label max-w-56">Penilai</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="address" name="address" class="input w-full"
placeholder="Masukkan Jl." value="{{ old('address') }}">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title uppercase">
Dokument
</h3>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Terlampir</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
<div class="terlampir flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="terlampir[]" rows="3">{{ old('terlampir', '') }}</textarea>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Berdasarkan hasil survey dapat disampaikan sbb:</label>
<div id="hasil_survey" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta']['hasil_survey']))
@foreach ($forminspeksi['fakta']['hasil_survey'] as $index => $positif)
<div class="hasil_survey flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="hasil_survey[]" rows="3">{{ old("hasil_survey.$index", $positif) }}</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="hasil_survey flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="hasil_survey[]" rows="3">{{ old('hasil_survey.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('hasil_survey', 'hasil_survey')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kesimpulan dan saran</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@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>
</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title uppercase">
Peta lokasi
</h3>
</div>
<div class="card-body grid gap-5">
<div class="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Rute Menuju Lokasi
</h3>
</div>
<div class="">
@if (isset($formPeta))
@php
$foto = [
'foto_gistaru',
'foto_bhumi',
'foto_argis_region',
'foto_tempat',
]
@endphp
@foreach ($foto as $item)
@if (isset($formPeta[$item]) && $formPeta[$item])
<div class="flex items-center justify-between mt-5 border-b">
<div class="grid gap-5">
<h2 class="text-gray-600 font-semibold text-xl">
{{ ucwords(str_replace('_', ' ', $item)) }}
</h2>
<div class="flex items-center mt-5">
<img src="{{ Storage::url($formPeta[$item]) }}" alt="{{ $item }}">
</div>
</div>
</div>
@endif
@endforeach
@endif
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title uppercase">
Foto jaminan
</h3>
</div>
<div class="card-body grid gap-5">
<div class="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Rute Menuju Lokasi
</h3>
</div>
<div class="">
@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="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Object Jaminan
</h3>
</div>
<div class="">
@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['name_objek'] }}
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($item['foto_objek']) }}" alt="">
</div>
</div>
</div>
@endforeach
@endif
</div>
</div>
@if (isset($formFoto['foto_basement']))
<div class="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Basement
</h3>
</div>
<div class="">
<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="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Gerbang
</h3>
</div>
<div class="">
<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="border-t mt-5">
<div class="flex card-header justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Pendamping
</h3>
</div>
<div class="">
<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>
</div>
<div class="flex justify-start gap-5">
<a class="btn btn-success" onclick="saveMemo(){
()">
SAVE
</a>
</div>
</div>
@endsection
@include('lpj::surveyor.js.utils')
<script>
function saveMemo(){
const form = document.getElementById('form-resume');
form.submit();
showLoadingSwal('Mengirim data keserver ...');
}
</script>

View File

@@ -109,7 +109,6 @@
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label> <label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full"> <div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@@ -141,54 +140,129 @@
</div> </div>
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
KESIMPULAN NILAI PASAR WAJAR KESIMPULAN NILAI PASAR WAJAR
</h3> </h3>
</div> </div>
<div class="card-body grid gap-5"> <div class="card-body grid gap-5">
<div class="gird gap-5"> <div class="gird gap-5">
<label class="form-label max-w-56">1. SESUAI FISIK</label> <label class="form-label max-w-56">1. SESUAI FISIK</label>
<div class="flex flex-wrap items-baseline w-full mt-5"> <div class="flex flex-wrap items-baseline w-full mt-5">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"> <table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead> <thead>
<tr> <tr>
<th class="text-center">Sertipikat</th> <th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th> <th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th> <th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th> <th class="text-center">Nilai Pasar Wajar</th>
</tr> </tr>
</thead> </thead>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="fisik_sertifikat[]"
class="input number-format"> class="input number-format">
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="fisik_luas_tanah[]"
class="input number-format"> class="input number-format">
</td> </td>
<td class="text-center"> <input type="text" name="luas_bangunan_pembanding[]" <td class="text-center"> <input type="text" name="fisik_luas_bangunan[]"
class="input number-format"></td> class="input number-format"></td>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="fisik_nilai[]"
class="input number-format"> class="input number-format">
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>
</div>
<div class="gird gap-5">
<label class="form-label max-w-56">2. SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
</tr>
</thead>
</thead>
<tbody>
<tr>
<td class="text-center">
<input type="text" name="sesuai_sertifikat[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_tanah[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_bangunan[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_nilai[]"
class="input number-format">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div>
<button type="button" class="btn btn-primary btn-sm mt-5" onclick="tambahKesimpulanNilai()">
<i class="ki-outline ki-plus"></i>
Kesimpulan Nilai
</button>
</div>
<div id="kesimpulan" class="grid gap-5 w-full"></div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg: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> </div>
<div class="gird gap-5"> <div class="card-footer">
<label class="form-label max-w-56">2. SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
</div>
</div>
</div>
@endsection
@include('lpj::surveyor.js.utils')
<script type="text/javascript">
let counter = 1;
function tambahKesimpulanNilai() {
const kesimpulan = document.getElementById('kesimpulan');
kesimpulan.innerHTML += `
<div class="grid gap-5 w-full" id="kesimpulan-${counter}">
<label class="form-label kesimpulan max-w-56">${counter}. SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="tabel-container w-full">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5"> <table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead> <thead>
<tr> <tr>
@@ -196,59 +270,57 @@
<th class="text-center">Luas Tanah</th> <th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th> <th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th> <th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Aksi</th>
</tr> </tr>
</thead> </thead>
</thead>
<tbody> <tbody>
<tr> <tr>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="sertipikat[]"
class="input number-format"> class="input number-format">
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="luas_tanah[]"
class="input number-format"> class="input number-format">
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="luat_bangunan[]"
class="input number-format"> class="input number-format">
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" name="luas_bangunan_pembanding[]" <input type="text" name="nilai_pasar_wajar[]"
class="input number-format"> class="input number-format">
</td>
<td class="text-center">
<button type="button" class="btn btn-danger" onclick="deleteRow(this)">Delete</button>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div >
<button type="button" class="btn btn-primary btn-sm mt-5">
<i class="ki-outline ki-plus"></i>
Kesimpulan Nilai
</button>
</div>
<div id="kesimpulan"></div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg: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>
`;
counter++;
}
<div class="card-footer"> function deleteRow(button) {
const rowContainer = button.closest('.grid');
rowContainer.remove();
updateLabelNumbers();
}
<button type="submit" class="btn btn-success">Save</button> function updateLabelNumbers() {
</div> const labels = document.querySelectorAll('.kesimpulan');
</div> labels.forEach((label, index) => {
// Update setiap label dengan nomor yang benar
label.textContent = `${index + 1}. SESUAI IMB`;
});
}
</div> function saveResume(){
@endsection showLoadingSwal('Mengirim data keserver ...');
@include('lpj::surveyor.js.utils') const form = document.getElementById('form-resume');
form.submit();
}
</script>

View File

@@ -5,6 +5,7 @@
@endsection @endsection
@section('content') @section('content')
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5"> <div class="card pb-2.5">
<div class="card-header" id="basic_settings"> <div class="card-header" id="basic_settings">
@@ -174,8 +175,6 @@
</p> </p>
</div> </div>
</div> </div>
</div> </div>
@@ -188,7 +187,7 @@
<a class="btn btn-primary" data-modal-toggle="#modal_2"> <a class="btn btn-primary" data-modal-toggle="#modal_2">
KERTAS KERJA KERTAS KERJA
</a> </a>
<a class="btn btn-primary" href="#"> <a class="btn btn-primary" href="{{ route('penilai.paparan') }}">
PAPARAN PAPARAN
</a> </a>
@@ -196,10 +195,17 @@
<button class="dropdown-toggle btn btn-primary"> <button class="dropdown-toggle btn btn-primary">
WORKSHEET WORKSHEET
</button> </button>
@php
$inspeksiId = null;
foreach ($dokumen->inspeksi as $item) {
$inspeksiId = $item->id;
}
@endphp
<div class="dropdown-content w-full max-w-56 py-2"> <div class="dropdown-content w-full max-w-56 py-2">
<div class="menu menu-default flex flex-col w-full"> <div class="menu menu-default flex flex-col w-full">
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" href="{{ route('penilai.memo', $permohonan->id) }}"> <a class="menu-link"
onclick="memo('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-badge"> <i class="ki-outline ki-badge">
</i> </i>
@@ -210,7 +216,8 @@
</a> </a>
</div> </div>
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" href="{{ route('penilai.resume', $permohonan->id) }}"> <a class="menu-link"
onclick="resume('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-profile-circle"> <i class="ki-outline ki-profile-circle">
</i> </i>
@@ -220,20 +227,21 @@
</span> </span>
</a> </a>
</div> </div>
<div class="menu-item">
<a class="menu-link" onclick="seletSederhanaStandart()">
<span class="menu-icon">
<i class="ki-outline ki-setting-2">
</i>
</span>
<span class="menu-title">
LPJ
</span>
<div class="menu-item">
<a class="menu-link"
onclick="seletSederhanaStandart('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon">
<i class="ki-outline ki-setting-2"></i>
</span>
<span class="menu-title">LPJ</span>
</a> </a>
</div> </div>
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" href="#"> <a class="menu-link"
onclick="rap('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-message-programming"> <i class="ki-outline ki-message-programming">
</i> </i>
@@ -249,15 +257,10 @@
</div> </div>
<div class="flex justify-end gap-5"> <div class="flex justify-end gap-5">
<a class="btn btn-success" href="#">
SAVE
</a>
<a class="btn btn-success" href="#"> <a class="btn btn-success" href="#">
REPORT REPORT
</a> </a>
<a class="btn btn-success" href="#"> <a class="btn btn-success" href="#">
PRINT OUT PRINT OUT
</a> </a>
@@ -265,9 +268,14 @@
</div> </div>
</div> </div>
@endforeach @endforeach
<div class="flex justify-start gap-5">
<a class="btn btn-success" onclick="savePenilai()">
SAVE
</a>
</div>
</div> </div>
@@ -285,26 +293,35 @@
</button> </button>
</div> </div>
<div class="modal-body grid gap-5"> <div class="modal-body grid gap-5">
@php
$jenisJaminanId = null;
$inspeksiId = null;
$documentId = null;
foreach ($permohonan->debiture->documents as $item) {
$documentId = $item->id;
}
foreach ($dokumen->inspeksi as $item) {
$inspeksiId = $item->id;
}
@endphp
@foreach ($permohonan->debiture->documents as $document)
@if ($document->jenisjaminan)
@php
$jenisJaminanId = $document->jenisjaminan->id;
@endphp
@endif
@endforeach
<div class="flex items-baseline w-full"> <div class="flex items-baseline w-full">
<label for="" class="form-label max-w-56">Import Kertas Kerja</label> <label for="" class="form-label max-w-56">Import Kertas Kerja</label>
<div class="flex justify-center items-center gap-2"> <div class="flex justify-center items-center gap-2">
<input type="file" name="" id="" class="file-input"> <input type="file" id="kertas_kerja" class="file-input">
<button type="button" class="btn btn-outline btn-success" <button type="button" class="btn btn-outline btn-success"
onclick="uploadKertasKerja()">Upload</button> onclick="uploadKertasKerja({{ $permohonan->id }}, '{{ $documentId }}', '{{ $inspeksiId }}', '{{ $jenisJaminanId }}')">Upload</button>
</div> </div>
</div> </div>
<div class="form-group flex items-baseline flex-wrap"> <div class="form-group flex items-baseline flex-wrap">
@php
$jenisJaminanId = null;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@if ($document->jenisjaminan)
@php
$jenisJaminanId = $document->jenisjaminan->id;
@endphp
@endif
@endforeach
@if ($jenisJaminanId) @if ($jenisJaminanId)
<a class="btn btn-outline btn-primary w-full" <a class="btn btn-outline btn-primary w-full"
href="{{ route('penilai.export.kertas-kerja', ['id' => $permohonan->id, 'jaminanId' => $jenisJaminanId]) }}"> href="{{ route('penilai.export.kertas-kerja', ['id' => $permohonan->id, 'jaminanId' => $jenisJaminanId]) }}">
@@ -325,42 +342,184 @@
<script> <script>
function seletSederhanaStandart() { function seletSederhanaStandart(permohonanId, documentId, inspeksiId, jaminanId) {
Swal.fire({ fetch(
title: 'Apakah kamu akan memilih lpj standar?', `{{ url('/penilai/check-status-lpj') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
icon: 'warning', )
showDenyButton: true, .then(response => response.json())
showCancelButton: false, .then(data => {
confirmButtonText: 'Yes', if (data.status) {
denyButtonText: 'No', // Jika status LPJ sudah ada, arahkan langsung ke halaman
}).then((result) => { if (data.status === 'standar') {
if (result.isConfirmed) { showLoadingSwal('Tunggu ...');
window.location.href = "{{ route('penilai.standard', $permohonan->id) }}"; window.location.href =
} else if (result.isDenied) { `{{ route('penilai.standard', $permohonan->id) }}?documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
window.location.href = "{{ route('penilai.sederhana', $permohonan->id) }}"; } else if (data.status === 'sederhana') {
} showLoadingSwal('Tunggu ...');
}) window.location.href =
`{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
} else {
Swal.fire({
title: 'Pilih Jenis LPJ',
text: 'Apakah kamu akan memilih LPJ Standar?',
icon: 'question',
showCloseButton: true,
showDenyButton: true,
confirmButtonText: 'LPJ Standar',
denyButtonText: 'LPJ Sederhana',
confirmButtonColor: '#3085d6',
denyButtonColor: '#d33',
}).then((result) => {
if (result.isConfirmed) {
saveStatusLpj(permohonanId, documentId, inspeksiId, 'standar', jaminanId);
} else if (result.isDenied) {
saveStatusLpj(permohonanId, documentId, inspeksiId, 'sederhana', jaminanId);
}
});
}
console.log(data);
});
}
function saveStatusLpj(permohonanId, documentId, inspeksiId, type, jaminanId) {
fetch(`{{ url('/penilai/save-status-lpj') }}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}',
},
body: JSON.stringify({
permohonan_id: permohonanId,
document_id: documentId,
inspeksi_id: inspeksiId,
type: type
}),
}).then(response => response.json())
.then(data => {
if (data.success) {
if (type === 'standar') {
window.location.href =
`{{ route('penilai.standard', $permohonan->id) }}?documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
} else if (type === 'sederhana') {
window.location.href =
`{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
}
});
} }
function uploadKertasKerja() { function uploadKertasKerja(permohonanId, documentId, inspeksiId, jaminanId) {
showLoadingSwal('Mengirim data ke server...'); const kertasKerjaInput = document.getElementById('kertas_kerja');
if (!kertasKerjaInput.files.length) {
Swal.fire({ Swal.fire({
title: 'Berhasil!', title: 'Error!',
text: response.message, text: 'Silakan pilih file sebelum mengupload.',
icon: 'success', icon: 'error',
timer: 2000, confirmButtonText: 'OK'
timerProgressBar: true, });
didOpen: () => { return;
Swal.showLoading()
},
willClose: () => {
hideLoadingSwal();
} }
});
}
const kertasKerja = kertasKerjaInput.files[0];
const formData = new FormData();
formData.append('permohonan_id', permohonanId);
formData.append('document_id', documentId);
formData.append('inspeksi_id', inspeksiId);
formData.append('jenis_jaminan_id', jaminanId);
formData.append('kertas_kerja', kertasKerja);
fetch(`{{ url('/penilai/import/kertas-kerja') }}`, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}',
},
body: formData,
})
.then(response => response.json()) // Pastikan respons diurai menjadi JSON
.then(data => {
if (data.success) {
Swal.fire({
title: 'Berhasil!',
text: data.message || 'Kertas kerja berhasil diunggah.',
icon: 'success',
confirmButtonText: 'OK'
}).then(result => {
if (result.isConfirmed) {
window.location.reload();
}
});
} else {
Swal.fire({
title: 'Error!',
text: data.message || 'Terjadi kesalahan.',
icon: 'error',
confirmButtonText: 'OK'
});
}
})
.catch(error => {
Swal.fire({
title: 'Error!',
text: 'Terjadi kesalahan saat mengunggah file.',
icon: 'error',
confirmButtonText: 'OK'
});
console.error('Error:', error); // Debug error di konsol
});
}
function resume(permohonanId, documentId, inspeksiId, jaminanId) {
showLoadingSwal('Tunggu ...');
window.location.href =
`{{ route('penilai.resume') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
function memo(permohonanId, documentId, inspeksiId, jaminanId) {
showLoadingSwal('Tunggu ...');
window.location.href =
`{{ route('penilai.memo') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
function rap(permohonanId, documentId, inspeksiId, jaminanId) {
showLoadingSwal('Tunggu ...');
window.location.href =
`{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
function savePenilai() {
showLoadingSwal('Mengirim data keserver ...');
$.ajax({
url: "{{ route('penilai.proses.laporan', ['id' => $permohonan->id]) }}",
type: "POST",
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
// window.location.reload();
hideLoadingSwal();
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.log('Error checking button status:', error, status, xhr);
if (xhr.responseJSON.message) {
// window.location.reload();
toastrErrorBuild(xhr.responseJSON.message);
} else {
// window.location.reload();
toastrErrorBuild('Terjadi kesalahan');
}
hideLoadingSwal();
}
});
}
</script> </script>
@include('lpj::surveyor.js.utils') @include('lpj::surveyor.js.utils')

View File

@@ -15,10 +15,10 @@
@php @php
$luas = $item->detail; $luas = $item->detail;
$details = json_decode($luas[0]->details, true); $details = json_decode($luas[0]->details, true);
$luas_unit = isset($details['luas_unit']) ? $details['luas_unit'] : 'N/A'; $luas_units = isset($details['luas_unit']) ? $details['luas_unit'] : 'N/A';
@endphp @endphp
<input type="hidden" name="luas_unit_sesuai" class="input" value="{{ $luas_unit }}"> <input type="hidden" name="luas_unit_sesuai" class="input" value="{{ $luas_units }}">
<p class="text-2sm text-gray-700">{{ $luas_unit }} m<sup>2</sup></p> <p class="text-2sm text-gray-700">{{ $luas_units }} m<sup>2</sup></p>
@endforeach @endforeach
@endif @endif
@@ -29,19 +29,19 @@
<input <input
onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])" onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="luas_unit" value="sesuai" type="radio" class="radio" name="luas_unit" value="sesuai"
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'sesuai' ? 'checked' : '' }}> {{ old('luas_unit', isset($forminspeksi['luas_unit']['sesuai'])) ? 'checked' : ''}}>
<span class="ml-2">Sesuai</span> <span class="ml-2">Sesuai</span>
</label> </label>
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input <input
onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])" onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="luas_unit" value="tidak sesuai" type="radio" class="radio" name="luas_unit" value="tidak sesuai"
{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}> {{ old('luas_unit', isset($forminspeksi['luas_unit']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span> <span class="ml-2">Tidak Sesuai</span>
</label> </label>
<div id="luas_unit_tidak_sesuai" class="flex items-baseline gap-2" <div id="luas_unit_tidak_sesuai" class="flex items-baseline gap-2"
style="{{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}"> style="{{ old('luas_unit', isset($forminspeksi['luas_unit']['tidak sesuai'])) ? '' : 'display: none;' }}">
<input id="analisa_luas_unit_tidak_sesuai" type="text" name="luas_unit_tidak_sesuai" <input id="analisa_luas_unit_tidak_sesuai" type="text" name="luas_unit_tidak_sesuai"
class="input w-full" placeholder="Masukan Luas Tanah" class="input w-full" placeholder="Masukan Luas Tanah"
value="{{ old('luas_unit_tidak_sesuai', $forminspeksi['luas_unit_tidak_sesuai'] ?? '') }}"> value="{{ old('luas_unit_tidak_sesuai', $forminspeksi['luas_unit_tidak_sesuai'] ?? '') }}">

View File

@@ -258,33 +258,21 @@
<!-- Sarana pelengkap --> <!-- Sarana pelengkap -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Sarana pelengkap</label> <label class="form-label max-w-56">Sarana Pelengkap</label>
<div class="flex-wrap items-stretch"> <div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4"> <div class="flex flex-col items-start gap-4">
@if (isset($basicData['saranaPelengkap'])) @if (isset($basicData['saranaPelengkap']))
@foreach ($basicData['saranaPelengkap'] as $item) @foreach ($basicData['saranaPelengkap'] as $item)
@php
$isChecked = false;
$inputValue = '';
if (isset($forminspeksi['bangunan']['sarana_pelengkap'])) {
foreach ($forminspeksi['bangunan']['sarana_pelengkap'] as $key => $value) {
if ($key === $item->name) {
$isChecked = true;
$inputValue = $value;
break;
}
}
}
@endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <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"> <label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="sarana_pelengkap[]" type="checkbox" <input class="checkbox" name="sarana_pelengkap[]" type="checkbox"
value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} /> value="{{ $item->name }}"
{{ in_array($item->name, old('sarana_pelengkap', $forminspeksi['bangunan']['sarana_pelengkap'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
<input type="text" name="sarana_pelengkap_input[]" class="input w-full" <input type="text" name="sarana_pelengkap_input[]" class="input w-full"
placeholder="Masukkan {{ $item->name }}..." value="{{ $inputValue }}"> placeholder="Masukkan {{ $item->name }}..."
value="{{ old('sarana_pelengkap_input.' . $loop->index, $forminspeksi['bangunan']['sarana_pelengkap_input'][$loop->index] ?? '') }}">
</div> </div>
@endforeach @endforeach
@endif @endif
@@ -293,6 +281,7 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,7 +1,7 @@
<div class="grid grid-cols-1 lg:grid-cols-2 gap-5 lg:gap-7.5"> <div class="grid grid-cols-1 lg:grid-cols-2 gap-5 lg:gap-7.5">
@foreach ($permohonan->debiture->documents as $dokumen) @foreach ($permohonan->debiture->documents as $dokumen)
@php @php
$jaminanId = $dokumen->jenisJaminan->id; $jaminanId = $dokumen->id;
$currentInspeksi = $inspeksiData[$jaminanId] ?? null; $currentInspeksi = $inspeksiData[$jaminanId] ?? null;
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT']; $tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT'];
@@ -11,8 +11,7 @@
'label' => 'form inspeksi', 'label' => 'form inspeksi',
'url' => route('surveyor.inspeksi', [ 'url' => route('surveyor.inspeksi', [
'id' => $permohonan->id, 'id' => $permohonan->id,
'jaminanId' => $jaminanId, ]) . "?form=create-inspeksi&inspeksi={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
]) . "?form=create-inspeksi&inspeksi={$permohonan->id}&jenis_jaminan={$jaminanId}",
'show' => true, 'show' => true,
'icon' => !empty($currentInspeksi['data_form']), 'icon' => !empty($currentInspeksi['data_form']),
], ],
@@ -22,9 +21,8 @@
$href[] = [ $href[] = [
'label' => 'denah tanah dan bangunan', 'label' => 'denah tanah dan bangunan',
'url' => route('surveyor.denah', [ 'url' => route('surveyor.denah', [
'id' => $permohonan->id, 'id' => $permohonan->id
'jaminanId' => $jaminanId, ]) . "?form=create-denah&denah={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
]) . "?form=create-denah&denah={$permohonan->id}&jenis_jaminan={$jaminanId}",
'show' => true, 'show' => true,
'icon' => !empty($currentInspeksi['denah_form']), 'icon' => !empty($currentInspeksi['denah_form']),
]; ];
@@ -34,18 +32,16 @@
[ [
'label' => 'foto', 'label' => 'foto',
'url' => route('surveyor.foto', [ 'url' => route('surveyor.foto', [
'id' => $permohonan->id, 'id' => $permohonan->id
'jaminanId' => $jaminanId, ]) . "?form=create-foto&foto={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
]) . "?form=create-foto&foto={$permohonan->id}&jenis_jaminan={$jaminanId}",
'show' => true, 'show' => true,
'icon' => !empty($currentInspeksi['foto_form']), 'icon' => !empty($currentInspeksi['foto_form']),
], ],
[ [
'label' => 'data pembanding', 'label' => 'data pembanding',
'url' => route('surveyor.data-pembanding', [ 'url' => route('surveyor.data-pembanding', [
'id' => $permohonan->id, 'id' => $permohonan->id
'jaminanId' => $jaminanId, ]) . "?form=data-pembanding&pembanding={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
]) . "?form=data-pembanding&pembanding={$permohonan->id}&jenis_jaminan={$jaminanId}",
'show' => true, 'show' => true,
'icon' => !empty($currentInspeksi['data_pembanding']), 'icon' => !empty($currentInspeksi['data_pembanding']),
], ],

View File

@@ -14,7 +14,7 @@
@csrf @csrf
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}"> <input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="type" value="tanah"> <input type="hidden" name="type" value="tanah">
<input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}"> <input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
@@ -111,16 +111,6 @@
</td> </td>
</tr> </tr>
@php
$apartemenKantorData = explode(',', $inspeksi->name);
$isApartemenKantor = array_intersect($apartemenKantorData, [
'tanah',
'bangunan',
]);
@endphp
@if ($isApartemenKantor)
<tr> <tr>
<td class="px-4 py-2">Luas Tanah ()</td> <td class="px-4 py-2">Luas Tanah ()</td>
@php @php
@@ -153,19 +143,6 @@
class="input number-format"> class="input number-format">
</td> </td>
</tr> </tr>
@else
<tr>
<td class="px-4 py-2">Luas Unit ()</td>
<td class="px-4 py-2">
<input type="text" name="luas_unit" class="input number-format"
value="{{ $inspectionData['unit']['luas_unit']['sesuai'] ?? ($inspectionData['unit']['luas_unit']['tidak sesuai'] ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_unit_pembanding[]"
class="input number-format">
</td>
</tr>
@endif
<!-- Informasi Harga --> <!-- Informasi Harga -->

View File

@@ -137,7 +137,7 @@
@csrf @csrf
<input type="hidden" value="{{ $permohonan->id }}" name="permohonan_id"> <input type="hidden" value="{{ $permohonan->id }}" name="permohonan_id">
<input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}"> <input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<div class="mt-2"> <div class="mt-2">
<div class=" mx-auto overflow-hidden"> <div class=" mx-auto overflow-hidden">
<div class="flex flex-wrap gap-4" style="margin-top: 20px"> <div class="flex flex-wrap gap-4" style="margin-top: 20px">

View File

@@ -16,9 +16,9 @@
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group 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.$index", $positif) }}</textarea> <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" <button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;"> style="display: none;">
<i class="ki-outline ki-trash"></i> <i class="ki-outline ki-trash"></i>
</button> </button>
</div> </div>
@endforeach @endforeach
@else @else
@@ -77,24 +77,20 @@
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Batas batas</label> <label class="form-label max-w-56">Batas Batas</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-1 gap-4 items-center w-full"> <div class="grid grid-cols-1 gap-4 items-center w-full">
@if (isset($basicData['arahMataAngin'])) @if (isset($basicData['arahMataAngin']))
@foreach ($basicData['arahMataAngin'] as $item) @foreach ($basicData['arahMataAngin'] as $item)
@php @php
$isChecked = false; $isChecked = in_array(
$inputValue = ''; $item->name,
old('batas_batas', $forminspeksi['fakta']['batas_batas'] ?? []),
if (isset($forminspeksi['fakta']['batas_batas'])) { );
foreach ($forminspeksi['fakta']['batas_batas'] as $key => $value) { $inputValue = old(
if ($key === $item->name) { 'batas_batas_input.' . $item->name,
$isChecked = true; $forminspeksi['fakta']['batas_batas_input'][$item->name] ?? '',
$inputValue = $value; );
break;
}
}
}
@endphp @endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <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"> <label class="form-label max-w-56 gap-2.5" style="width: 500px">
@@ -102,8 +98,8 @@
value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} /> value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
<input type="text" name="batas_batas_input[]" class="input w-full" <input type="text" name="batas_batas_input[{{ $item->name }}]"
placeholder="Masukkan Batas {{ $item->name }}..." class="input w-full" placeholder="Masukkan Batas {{ $item->name }}..."
value="{{ $inputValue }}"> value="{{ $inputValue }}">
</div> </div>
@endforeach @endforeach

View File

@@ -76,7 +76,7 @@
<form id="formFoto" method="POST" class="grid gap-5" enctype="multipart/form-data"> <form id="formFoto" method="POST" class="grid gap-5" enctype="multipart/form-data">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}"> <input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}"> <input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<div class="card bg-white rounded-lg shadow-md"> <div class="card bg-white rounded-lg shadow-md">
<div class="card-body"> <div class="card-body">

View File

@@ -128,9 +128,9 @@
<img id="gistaru-preview" <img id="gistaru-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_gistaru']) ? $forminspeksi['foto_gistaru'] : '')) }}" src="{{ asset('storage/' . (isset($forminspeksi['foto_gistaru']) ? $forminspeksi['foto_gistaru'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto" alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }}" /> style="{{ isset($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 30rem;" />
</div> </div>
<a href="https://gistaru.atrbpn.go.id/rtronline" type="button" class="btn btn-light" <a href="https://gistaru.atrbpn.go.id/rtronline" type="button" class="btn btn-light"
target="_blank"> target="_blank">
@@ -154,7 +154,7 @@
<img id="bhumi-preview" <img id="bhumi-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_bhumi']) ? $forminspeksi['foto_bhumi'] : '')) }}" src="{{ asset('storage/' . (isset($forminspeksi['foto_bhumi']) ? $forminspeksi['foto_bhumi'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto" alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_bhumi']) ? '' : 'display: none;' }}" /> style="{{ isset($forminspeksi['foto_bhumi']) ? ' ' : 'display: none;' }} max-width: 30rem;" />
</div> </div>
<a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light" target="_blank"> <a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light" target="_blank">
<i class="ki-filled ki-map"></i> Bhumi <i class="ki-filled ki-map"></i> Bhumi
@@ -176,7 +176,7 @@
<img id="argis-region-preview" <img id="argis-region-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_argis_region']) ? $forminspeksi['foto_argis_region'] : '')) }}" src="{{ asset('storage/' . (isset($forminspeksi['foto_argis_region']) ? $forminspeksi['foto_argis_region'] : '')) }}"
alt="Foto Argis Region" class="mt-2 max-w-full h-auto" alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_argis_region']) ? '' : 'display: none;' }}"> style="{{ isset($forminspeksi['foto_argis_region']) ? '' : 'display: none;' }} max-width: 30rem;">
</div> </div>
<a href="{{ $link_url_region->regions->url }}" type="button" class="btn btn-light" <a href="{{ $link_url_region->regions->url }}" type="button" class="btn btn-light"
target="_blank"> target="_blank">
@@ -205,7 +205,7 @@
<img id="foto_tempat-preview" <img id="foto_tempat-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'] : '')) }}" src="{{ asset('storage/' . (isset($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'] : '')) }}"
alt="Foto Argis Region" class="mt-2 max-w-full h-auto" alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }}"> style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }} max-width: 30rem;">
</div> </div>
</div> </div>

View File

@@ -10,7 +10,7 @@
<form id="formInspeksi" method="POST" enctype="multipart/form-data" class="grid gap-5"> <form id="formInspeksi" method="POST" enctype="multipart/form-data" class="grid gap-5">
@csrf @csrf
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}"> <input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}"> <input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
@foreach ($permohonan->debiture->documents as $dokumen) @foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan) @if ($dokumen->jenisJaminan)
@php @php

View File

@@ -369,35 +369,27 @@
@if (isset($basicData['fasilitasObjek'])) @if (isset($basicData['fasilitasObjek']))
@foreach ($basicData['fasilitasObjek'] as $item) @foreach ($basicData['fasilitasObjek'] as $item)
@php @php
$isChecked = false; $isChecked = in_array(
$inputValue = ''; $item->name,
old(
// Cek old input terlebih dahulu 'fasilitas_dekat_object',
if (old('fasilitas_dekat_object') && in_array($item->name, old('fasilitas_dekat_object'))) { $forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? [],
$isChecked = true; ),
$oldInputIndex = array_search($item->name, old('fasilitas_dekat_object')); );
$inputValue = old('fasilitas_dekat_object_input')[$oldInputIndex] ?? ''; $inputValue = old(
} 'fasilitas_dekat_object_input.' . $item->name,
elseif (isset($forminspeksi['lingkungan']['fasilitas_dekat_object'])) { $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] ?? '',
foreach ($forminspeksi['lingkungan']['fasilitas_dekat_object'] as $key => $value) { );
if ($key === $item->name) {
$isChecked = true;
$inputValue = $value;
break;
}
}
}
@endphp @endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <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"> <label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="fasilitas_dekat_object[]" type="checkbox" <input class="checkbox" name="fasilitas_dekat_object[]" type="checkbox"
value="{{ $item->name }}" value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} />
{{ $isChecked ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
<input type="text" name="fasilitas_dekat_object_input[]" class="input w-full" <input type="text" name="fasilitas_dekat_object_input[{{ $item->name }}]"
placeholder="Masukkan fasilitas {{ $item->name }}..." class="input w-full" placeholder="Masukkan fasilitas {{ $item->name }}..."
value="{{ $inputValue }}"> value="{{ $inputValue }}">
</div> </div>
@endforeach @endforeach

View File

@@ -86,7 +86,7 @@
}, },
success: function(response) { success: function(response) {
if (response.success) { if (response.success) {
// window.location.href = "{{ route('surveyor.index') }}"; window.location.href = "{{ route('surveyor.index') }}";
toastrSuccessBuild(response.message); toastrSuccessBuild(response.message);
} }
}, },
@@ -98,7 +98,7 @@
toastrErrorBuild('Terjadi kesalahan'); toastrErrorBuild('Terjadi kesalahan');
} }
} }
}); });
} }

View File

@@ -525,10 +525,10 @@ Route::middleware(['auth'])->group(function () {
Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus'); Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus');
Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables'); Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables');
Route::get('inspeksi/{id}/{jaminanId}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi'); Route::get('inspeksi/{id}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi');
Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah'); Route::get('denah/{id}', [SurveyorController::class, 'denah'])->name('denah');
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto'); Route::get('foto/{id}', [SurveyorController::class, 'foto'])->name('foto');
Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding'); Route::get('data-pembanding/{id}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor'); Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
Route::post('update_analisa/{id}', [SurveyorController::class, 'update_analisa'])->name('update_analisa'); Route::post('update_analisa/{id}', [SurveyorController::class, 'update_analisa'])->name('update_analisa');
@@ -540,12 +540,19 @@ Route::middleware(['auth'])->group(function () {
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran'); Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran');
Route::get('export/kertas-kerja/{id}/{jaminanId}', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja'); Route::get('export/kertas-kerja/{id}/{jaminanId}', [PenilaiController::class, 'export_kertas_kerja'])->name('export.kertas-kerja');
Route::post('import/kertas-kerja', [PenilaiController::class, 'import_kertas_kerja'])->name('import.kertas-kerja');
Route::get('sederhana/{id}', [PenilaiController::class, 'sederhana'])->name('sederhana'); Route::get('sederhana/{id}', [PenilaiController::class, 'sederhana'])->name('sederhana');
Route::get('standard/{id}', [PenilaiController::class, 'standard'])->name('standard'); Route::get('standard/{id}', [PenilaiController::class, 'standard'])->name('standard');
Route::get('resume/{id}', [PenilaiController::class, 'resume'])->name('resume'); Route::get('resume', [PenilaiController::class, 'resume'])->name('resume');
Route::get('memo/{id}', [PenilaiController::class, 'standard'])->name('memo'); Route::get('memo', [PenilaiController::class, 'memo'])->name('memo');
Route::get('paparan', [PenilaiController::class, 'paparan'])->name('paparan');
Route::get('rap', [PenilaiController::class, 'rap'])->name('rap');
Route::get('/check-status-lpj', [PenilaiController::class, 'checkStatusLpj'])->name('check.status.lpj');
Route::post('/save-status-lpj', [PenilaiController::class, 'saveStatusLpj'])->name('save.status.lpj');
Route::post('/preoses-laporan/{id}', [PenilaiController::class, 'storePenilaian'])->name('proses.laporan');
}); });