Perubahan utama pada PreviewLaporanService.php: - Mengoptimalkan urutan import dengan mengelompokkan berdasarkan namespace - Memperbaiki logika tanggal laporan untuk data migrasi dengan fallback ke tgl_create - Menghapus filter dokument_id pada query LPJ untuk fleksibilitas - Menambahkan penanganan khusus untuk tipe laporan 'memo' pada data migrasi - Menambahkan validasi file path untuk download dokumen memo - Memperbaiki kondisi pengecekan memo untuk non-migrasi data Perubahan pada print-out-standar.blade.php: - Menyembunyikan baris header dokumen yang menyebabkan duplikasi tampilan - Menambahkan fungsi ltrim untuk membersihkan koma di awal nilai data Perubahan ini meningkatkan stabilitas dan akurasi tampilan preview laporan,\nserta memperbaiki penanganan data migrasi dan memo khusus.
639 lines
24 KiB
PHP
639 lines
24 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Services;
|
|
|
|
|
|
use Carbon\Carbon;
|
|
use App\Helpers\Lpj;
|
|
use Modules\Lpj\Models\Denah;
|
|
use Modules\Lpj\Models\Teams;
|
|
use Modules\Lpj\Models\Branch;
|
|
use Modules\Lpj\Models\Lantai;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Modules\Lpj\Models\Analisa;
|
|
use Modules\Lpj\Models\Penilai;
|
|
use Modules\Lpj\Models\Debiture;
|
|
use Modules\Lpj\Models\Inspeksi;
|
|
use Modules\Lpj\Models\Surveyor;
|
|
use Modules\Lpj\Models\ViewUnit;
|
|
use Modules\Location\Models\City;
|
|
use Modules\Lpj\Models\JenisUnit;
|
|
use Modules\Lpj\Models\Penilaian;
|
|
use Modules\Lpj\Models\Perizinan;
|
|
use Modules\Lpj\Models\BentukUnit;
|
|
use Modules\Lpj\Models\JenisKapal;
|
|
use Modules\Lpj\Models\LantaiUnit;
|
|
use Modules\Lpj\Models\Lingkungan;
|
|
use Modules\Lpj\Models\Permohonan;
|
|
use Modules\Lpj\Models\PosisiUnit;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Modules\Lpj\Models\AnalisaUnit;
|
|
use Modules\Lpj\Models\BentukTanah;
|
|
use Modules\Lpj\Models\FotoJaminan;
|
|
use Modules\Lpj\Models\KonturTanah;
|
|
use Modules\Lpj\Models\RuteJaminan;
|
|
use Modules\Location\Models\Village;
|
|
use Modules\Lpj\Models\AnalisaFakta;
|
|
use Modules\Lpj\Models\JenisJaminan;
|
|
use Modules\Lpj\Models\JenisPesawat;
|
|
use Modules\Lpj\Models\ObjekJaminan;
|
|
use Modules\Lpj\Models\SpekBangunan;
|
|
use Modules\Lpj\Models\TerletakArea;
|
|
use Modules\Location\Models\District;
|
|
use Modules\Location\Models\Province;
|
|
use Modules\Lpj\Models\ArahMataAngin;
|
|
use Modules\Lpj\Models\JenisBangunan;
|
|
use Modules\Lpj\Models\PosisiKavling;
|
|
use Modules\Lpj\Models\SifatBangunan;
|
|
use Modules\Lpj\Models\DokumenJaminan;
|
|
use Modules\Lpj\Models\FasilitasObjek;
|
|
use Modules\Lpj\Models\JenisKendaraan;
|
|
use Modules\Lpj\Models\ModelAlatBerat;
|
|
use Modules\Lpj\Models\KetinggianTanah;
|
|
use Modules\Lpj\Models\KondisiBangunan;
|
|
use Modules\Lpj\Models\LaporanExternal;
|
|
use Modules\Lpj\Models\MerupakanDaerah;
|
|
use Modules\Lpj\Models\PerkerasanJalan;
|
|
use Modules\Lpj\Models\SaranaPelengkap;
|
|
use Modules\Lpj\Models\TujuanPenilaian;
|
|
use Modules\Lpj\Models\FotoObjekJaminan;
|
|
use Modules\Lpj\Models\LaluLintasLokasi;
|
|
use Modules\Lpj\Models\TingkatKeramaian;
|
|
use Modules\Lpj\Models\AnalisaLingkungan;
|
|
use Modules\Lpj\Models\KondisiFisikTanah;
|
|
use Modules\Lpj\Models\AnalisaTanahBagunan;
|
|
use Modules\Lpj\Models\GolonganMasySekitar;
|
|
use Modules\Lpj\Models\SpekBangunanAnalisa;
|
|
use Modules\Lpj\Models\DetailDokumenJaminan;
|
|
use Modules\Lpj\Models\SpekKategoritBangunan;
|
|
use Modules\Lpj\Http\Requests\SurveyorRequest;
|
|
use Modules\Lpj\Models\HubunganPemilikJaminan;
|
|
use Modules\Lpj\Models\HubunganPenghuniJaminan;
|
|
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
|
|
use Modules\Lpj\Jobs\SendJadwalKunjunganEmailJob;
|
|
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
|
|
|
class PreviewLaporanService
|
|
{
|
|
public function previewLaporan($permohonan_id, $dokumen_id, $jaminan_id, $back)
|
|
{
|
|
$permohonan = $this->getPermohonanJaminanId(
|
|
$permohonan_id,
|
|
$dokumen_id,
|
|
$jaminan_id
|
|
);
|
|
// $tipeLaporanResponse = $this->checkPrintOutLaporan($permohonan_id, $document_id);
|
|
// $tipeLaporan = $tipeLaporanResponse->getData();
|
|
|
|
// if (!$tipeLaporan->status) {
|
|
// return redirect()->back()->with('error', 'Laporan tidak valid');
|
|
// }
|
|
$basicData = $this->getCommonData();
|
|
|
|
$inspeksi = Inspeksi::where('permohonan_id', $permohonan_id)->where('dokument_id', $dokumen_id)->first();
|
|
$lpj = Penilai::where('permohonan_id', $permohonan_id)->where('dokument_id', $dokumen_id)->first();
|
|
|
|
$mig_permohonan = json_decode($permohonan->mig_permohonan);
|
|
|
|
$nomorLaporan = getNomorLaporan($permohonan_id, $dokumen_id);
|
|
$tanggalLaporan = $permohonan->is_mig
|
|
? ($mig_permohonan->mig_mst_jaminan_tgl_laporan ?? $mig_permohonan->mig_mst_jaminan_tgl_create ?? null)
|
|
: ($lpj->created_at ?? null);
|
|
$forminspeksi = null;
|
|
$lpjData = null;
|
|
$formFoto = null;
|
|
|
|
// if ($inspeksi) {
|
|
$forminspeksi = json_decode($inspeksi?->data_form, true) ?? null;
|
|
|
|
$formFoto = json_decode($inspeksi?->foto_form, true) ?? null;
|
|
// $denahForm = json_decode($data->denah_form, true);
|
|
$dataPembanding = json_decode($inspeksi?->data_pembanding, true) ?? null;
|
|
// }
|
|
|
|
// if ($lpj) {
|
|
$lpjData = json_decode($lpj?->lpj, true) ?? null;
|
|
$memo = json_decode($lpj?->memo, true) ?? null;
|
|
$resumeData = json_decode($lpj?->resume, true) ?? null;
|
|
$rap = json_decode($lpj?->rap, true);
|
|
$report = json_decode($lpj?->call_report, true) ?? null;
|
|
// }
|
|
|
|
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'] ?? [];
|
|
|
|
$alamat = [
|
|
'address' => $inputAddress['address'] ?? null,
|
|
'village_code' => getWilayahName($inputAddress['village_code'] ?? null, 'village'),
|
|
'district_code' => getWilayahName($inputAddress['district_code'] ?? null, 'district'),
|
|
'city_code' => getWilayahName($inputAddress['city_code'] ?? null, 'city'),
|
|
'province_code' => getWilayahName($inputAddress['province_code'] ?? null, 'province')
|
|
];
|
|
|
|
$statusLpj = 0;
|
|
|
|
// $viewLaporan = $this->getViewLaporan($tipeLaporan);
|
|
return view('lpj::component.show-laporan-inspeksi', compact('permohonan', 'basicData', 'forminspeksi', 'alamat', 'lpjData', 'memo', 'resumeData', 'rap', 'report', 'lpj', 'formFoto', 'nomorLaporan', 'tanggalLaporan', 'dataPembanding', 'inspeksi', 'statusLpj', 'permohonan_id', 'back', ));
|
|
}
|
|
|
|
public function printOutLaporan($permohonan_id, $document_id, $jaminan_id)
|
|
{
|
|
$tipeLaporanResponse = $this->checkPrintOutLaporan($permohonan_id, $document_id);
|
|
$tipeLaporan = $tipeLaporanResponse->getData();
|
|
|
|
if (!$tipeLaporan->status) {
|
|
//return redirect()->back()->with('error', 'Laporan tidak valid');
|
|
}
|
|
$permohonan = $this->getPermohonanJaminanId(
|
|
$permohonan_id,
|
|
$document_id,
|
|
$jaminan_id
|
|
);
|
|
|
|
$basicData = $this->getCommonData();
|
|
|
|
$inspeksi = Inspeksi::where('permohonan_id', $permohonan_id)->where('dokument_id', $document_id)->first();
|
|
$lpj = Penilai::where('permohonan_id', $permohonan_id)->first(); //->where('dokument_id', $document_id)->first();
|
|
|
|
$mig_permohonan = json_decode($permohonan->mig_permohonan);
|
|
$nomorLaporan = getNomorLaporan($permohonan_id, $document_id);
|
|
|
|
//Carbon::createFromFormat('d/m/Y H:i:s', $mig_permohonan->mig_mst_jaminan_tgl_laporan)->format('Y-m-d H:i:s');
|
|
|
|
$tanggalLaporan = $permohonan->is_mig
|
|
? ($mig_permohonan->mig_mst_jaminan_tgl_laporan
|
|
? Carbon::createFromFormat('d/m/Y H:i:s', $mig_permohonan->mig_mst_jaminan_tgl_laporan)->format('Y-m-d H:i:s')
|
|
: ($mig_permohonan->mig_mst_jaminan_tgl_oto
|
|
? Carbon::createFromFormat('d/m/Y H:i:s', $mig_permohonan->mig_mst_jaminan_tgl_oto)->format('Y-m-d H:i:s')
|
|
: null))
|
|
: ($lpj->created_at ?? null);
|
|
|
|
|
|
$forminspeksi = null;
|
|
$lpjData = null;
|
|
$formFoto = null;
|
|
|
|
$dataPembanding ='';
|
|
if ($inspeksi) {
|
|
$forminspeksi = json_decode($inspeksi->data_form, true);
|
|
$formFoto = json_decode($inspeksi->foto_form, true);
|
|
// $denahForm = json_decode($data->denah_form, true);
|
|
$dataPembanding = json_decode($inspeksi->data_pembanding, true);
|
|
}
|
|
|
|
|
|
if ($lpj) {
|
|
$lpjData = json_decode($lpj->lpj, true);
|
|
$memo = json_decode($lpj->memo, true);
|
|
$resumeData = json_decode($lpj->resume, true);
|
|
$rap = json_decode($lpj->rap, true);
|
|
$report = json_decode($lpj->call_report, true);
|
|
}
|
|
|
|
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'] ?? [];
|
|
|
|
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'] ?? [];
|
|
$alamat = [
|
|
'address' => $inputAddress['address'] ?? null,
|
|
'village_code' => getWilayahName($inputAddress['village_code'] ?? null, 'village'),
|
|
'district_code' => getWilayahName($inputAddress['district_code'] ?? null, 'district'),
|
|
'city_code' => getWilayahName($inputAddress['city_code'] ?? null, 'city'),
|
|
'province_code' => getWilayahName($inputAddress['province_code'] ?? null, 'province')
|
|
];
|
|
|
|
$viewLaporan = $this->getViewLaporan($tipeLaporan->status);
|
|
|
|
$statusLpj = 1;
|
|
|
|
if($tipeLaporan->status === 'memo' && $permohonan->mig_permohonan){
|
|
$path = $formFoto['upload_foto'][0]['path'] ?? null;
|
|
if (!$path) {
|
|
return response()->json(['error' => 'File path not found'], 404);
|
|
}
|
|
$fullPath = storage_path('app/public/' . $path);
|
|
if (!file_exists($fullPath)) {
|
|
return response()->json(['error' => 'File not found on disk'], 404);
|
|
}
|
|
//surveyor/2025/SEPTEMBER/02092025/252485/252485_148913105540_1.pdf
|
|
return response()->download($fullPath);
|
|
}
|
|
try {
|
|
$pdf = $this->generatePDF($viewLaporan, compact(
|
|
'permohonan',
|
|
'forminspeksi',
|
|
'lpjData',
|
|
'formFoto',
|
|
'basicData',
|
|
'inspeksi',
|
|
'lpj',
|
|
'statusLpj',
|
|
'alamat',
|
|
'dataPembanding',
|
|
'nomorLaporan',
|
|
'memo',
|
|
'resumeData',
|
|
'tanggalLaporan',
|
|
'rap',
|
|
'report'
|
|
));
|
|
|
|
$cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan);
|
|
$filename = 'Laporan_' . $tipeLaporan->status . '_' . $permohonan->debiture->name . '_' . $cleanNomorLaporan;
|
|
|
|
return $pdf->download($filename . '_data.pdf');
|
|
} catch (\Exception $e) {
|
|
Log::error('PDF generation failed: ' . $e->getMessage());
|
|
return response()->json(['error' => 'Failed to generate PDF. Please check the log for details.'], 500);
|
|
}
|
|
}
|
|
|
|
private function generatePDF(string $viewLaporan, array $data)
|
|
{
|
|
$pdf = PDF::loadView('lpj::' . $viewLaporan, $data);
|
|
$pdf->setPaper('A4', 'portrait');
|
|
$pdf->set_option('isHtml5ParserEnabled', true);
|
|
$pdf->set_option('isPhpEnabled', true);
|
|
|
|
return $pdf;
|
|
}
|
|
|
|
|
|
private function getViewLaporan($tipe)
|
|
{
|
|
$viewMap = [
|
|
'sederhana' => 'penilai.components.print-out-sederhana',
|
|
'standar' => 'penilai.components.print-out-standar',
|
|
'resume' => 'penilai.components.print-resume',
|
|
'memo' => 'penilai.components.print-memo',
|
|
'rap' => 'penilai.components.print-out-rap',
|
|
'call-report' => 'penilai.components.print-out-call-report'
|
|
];
|
|
return $viewMap[$tipe] ?? 'penilai.components.print-resume';
|
|
}
|
|
|
|
public function checkPrintOutLaporan($permohonan_id, $dokumen_id)
|
|
{
|
|
|
|
// Ambil data berdasarkan ID
|
|
$statusLpj = Penilai::where('permohonan_id', $permohonan_id)
|
|
//->where('dokument_id', $dokumen_id)
|
|
->first();
|
|
|
|
$permohonan = Permohonan::where('id', $permohonan_id)->first();
|
|
|
|
// Jika data tidak ditemukan, kembalikan status null
|
|
if (!$statusLpj) {
|
|
return response()->json(['status' => null]);
|
|
}
|
|
|
|
// Tentukan tipe berdasarkan kondisi
|
|
$type = $statusLpj->type_penilai ?? null;
|
|
|
|
if ($type === 'memo' && $permohonan->is_mig!=1) {
|
|
return $this->checkDataMemo($type, $statusLpj);
|
|
}
|
|
|
|
if ($type === 'resume') {
|
|
return $this->checkDataResume($type, $statusLpj);
|
|
}
|
|
|
|
|
|
if ($type === 'standar' || $type === 'sederhana') {
|
|
return $this->checkDataLpj($type, $statusLpj);
|
|
}
|
|
|
|
if ($type === 'rap') {
|
|
return $this->checkDataRap($type, $statusLpj);
|
|
}
|
|
|
|
|
|
|
|
// Kembalikan respons dengan tipe yang sesuai
|
|
return response()->json(['status' => $type]);
|
|
}
|
|
|
|
public function checkDataMemo($type, $statusLpj)
|
|
{
|
|
// Ambil data JSON dari statusLpj
|
|
$data = json_decode($statusLpj->memo, true) ?? [];
|
|
|
|
$validationRules = [
|
|
'memo' => [
|
|
'kepada',
|
|
'dari',
|
|
'nomor_memo',
|
|
'tanggal',
|
|
'perihal',
|
|
'jenis_asset_tidak_sesuai',
|
|
'lokasi.lokasi',
|
|
'lokasi.province_code',
|
|
'lokasi.city_code',
|
|
'lokasi.district_code',
|
|
'lokasi.village_code',
|
|
'lokasi.penilai',
|
|
'terlampir',
|
|
'hasil_survey',
|
|
'kesimpulan_saran',
|
|
],
|
|
];
|
|
|
|
// Validasi data JSON
|
|
if (isset($validationRules[$type])) {
|
|
$missingFields = [];
|
|
|
|
foreach ($validationRules[$type] as $field) {
|
|
$keys = explode('.', $field);
|
|
$value = $data;
|
|
|
|
foreach ($keys as $key) {
|
|
if (!isset($value[$key])) {
|
|
$missingFields[] = $field;
|
|
break;
|
|
}
|
|
$value = $value[$key];
|
|
}
|
|
}
|
|
|
|
// Jika ada field yang kosong, kembalikan error
|
|
if (!empty($missingFields)) {
|
|
return response()->json([
|
|
'status' => null,
|
|
'message' => "Silahkan lengkapi data memo terlebih dahulu.",
|
|
'missing_fields' => $missingFields,
|
|
], 400);
|
|
}
|
|
}
|
|
|
|
// Jika data valid
|
|
return response()->json([
|
|
'status' => $type,
|
|
'message' => "Data memo valid.",
|
|
]);
|
|
}
|
|
|
|
|
|
|
|
|
|
public function checkDataResume($type, $statusLpj)
|
|
{
|
|
// Ambil data JSON dari statusLpj
|
|
$data = json_decode($statusLpj->resume, true) ?? [];
|
|
|
|
$validationRules = [
|
|
'resume' => [
|
|
'fisik'
|
|
],
|
|
];
|
|
|
|
// Validasi data JSON
|
|
if (isset($validationRules[$type])) {
|
|
$missingFields = [];
|
|
|
|
foreach ($validationRules[$type] as $field) {
|
|
$keys = explode('.', $field);
|
|
$value = $data;
|
|
|
|
foreach ($keys as $key) {
|
|
if (!isset($value[$key])) {
|
|
$missingFields[] = $field;
|
|
break;
|
|
}
|
|
$value = $value[$key];
|
|
}
|
|
|
|
// Validasi khusus untuk array fisik dan sesuai_imb
|
|
if ($field === 'fisik' || $field === 'sesuai_imb') {
|
|
if (empty($value) || !is_array($value)) {
|
|
$missingFields[] = $field;
|
|
continue;
|
|
}
|
|
|
|
// Validasi struktur data di dalam array
|
|
foreach ($value as $item) {
|
|
$requiredKeys = ['sertifikat', 'luas_tanah', 'nilai'];
|
|
foreach ($requiredKeys as $requiredKey) {
|
|
if (!isset($item[$requiredKey])) {
|
|
$missingFields[] = $field . '.' . $requiredKey;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Jika ada field yang kosong, kembalikan error
|
|
if (!empty($missingFields)) {
|
|
return response()->json([
|
|
'status' => null,
|
|
'message' => "Silahkan lengkapi data resume terlebih dahulu.",
|
|
'missing_fields' => $missingFields,
|
|
], 400);
|
|
}
|
|
}
|
|
|
|
// Jika data valid
|
|
return response()->json([
|
|
'status' => $type,
|
|
'message' => "Data resume valid.",
|
|
]);
|
|
}
|
|
|
|
public function checkDataLpj($type, $statusLpj)
|
|
{
|
|
// Ambil data JSON dari statusLpj
|
|
$data = json_decode($statusLpj->lpj, true) ?? [];
|
|
|
|
$validationRules = [
|
|
'lpj' => [
|
|
'luas_tanah',
|
|
'nilai_tanah_1',
|
|
'nilai_tanah_2',
|
|
'luas_bangunan',
|
|
'nilai_bangunan_1',
|
|
'nilai_bangunan_2',
|
|
'total_nilai_pasar_wajar',
|
|
'likuidasi',
|
|
'likuidasi_nilai_1',
|
|
'likuidasi_nilai_2',
|
|
'asuransi_luas_bangunan',
|
|
'asuransi_nilai_1',
|
|
'asuransi_nilai_2',
|
|
'npw_tambahan'
|
|
],
|
|
];
|
|
|
|
// Validasi data JSON
|
|
if (isset($validationRules[$type])) {
|
|
$missingFields = [];
|
|
|
|
foreach ($validationRules[$type] as $field) {
|
|
// Penanganan khusus untuk field yang boleh null
|
|
if (in_array($field, ['sarana_pelengkap_penilai', 'nilai_sarana_pelengkap_1', 'nilai_sarana_pelengkap_2'])) {
|
|
continue;
|
|
}
|
|
|
|
if (!isset($data[$field])) {
|
|
$missingFields[] = $field;
|
|
continue;
|
|
}
|
|
|
|
// Validasi khusus untuk npw_tambahan
|
|
if ($field === 'npw_tambahan' && is_array($data[$field])) {
|
|
foreach ($data[$field] as $index => $item) {
|
|
$requiredKeys = ['name', 'luas', 'nilai_1', 'nilai_2'];
|
|
foreach ($requiredKeys as $key) {
|
|
if (!isset($item[$key])) {
|
|
$missingFields[] = "npw_tambahan[$index].$key";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Jika ada field yang kosong, kembalikan error
|
|
if (!empty($missingFields)) {
|
|
return response()->json([
|
|
'status' => null,
|
|
'message' => "Silahkan lengkapi data LPJ terlebih dahulu.",
|
|
'missing_fields' => $missingFields,
|
|
], 400);
|
|
}
|
|
}
|
|
|
|
// Jika data valid
|
|
return response()->json([
|
|
'status' => $type,
|
|
'message' => "Data LPJ valid.",
|
|
]);
|
|
}
|
|
|
|
public function checkDataRap($type, $statusLpj)
|
|
{
|
|
// Ambil data JSON dari statusLpj
|
|
$data = json_decode($statusLpj->rap, true) ?? [];
|
|
|
|
$requiredFields = [
|
|
'dari',
|
|
'kepada',
|
|
'perihal',
|
|
'tanggal',
|
|
'nomor_rap'
|
|
];
|
|
|
|
// Cek apakah ada field yang kosong
|
|
$missingFields = [];
|
|
foreach ($requiredFields as $field) {
|
|
if (!isset($data[$field]) || empty($data[$field])) {
|
|
$missingFields[] = $field;
|
|
}
|
|
}
|
|
|
|
// Jika ada field yang kosong, kembalikan error
|
|
if (!empty($missingFields)) {
|
|
return response()->json([
|
|
'status' => null,
|
|
'message' => "Silahkan lengkapi data RAP terlebih dahulu.",
|
|
'missing_fields' => $missingFields
|
|
], 400);
|
|
}
|
|
|
|
// Jika semua data terisi
|
|
return response()->json([
|
|
'status' => $type,
|
|
'message' => "Data RAP valid."
|
|
]);
|
|
}
|
|
private function getPermohonanJaminanId($id, $dokumentId, $jaminanId)
|
|
{
|
|
return Permohonan::with([
|
|
'user',
|
|
'debiture.province',
|
|
'debiture.city',
|
|
'debiture.district',
|
|
'debiture.village',
|
|
'branch',
|
|
'tujuanPenilaian',
|
|
'penilaian',
|
|
'penawaran',
|
|
'debiture.documents' => function ($query) use ($dokumentId, $jaminanId) {
|
|
$query->where('id', $dokumentId)
|
|
->where('jenis_jaminan_id', $jaminanId);
|
|
}
|
|
])->findOrFail($id);
|
|
}
|
|
|
|
public function getCommonData()
|
|
{
|
|
return [
|
|
'branches' => Branch::all(),
|
|
'bentukTanah' => BentukTanah::all(),
|
|
'konturTanah' => KonturTanah::all(),
|
|
'posisiKavling' => PosisiKavling::all(),
|
|
'ketinggianTanah' => KetinggianTanah::all(),
|
|
'kondisiFisikTanah' => KondisiFisikTanah::all(),
|
|
'jenisBangunan' => JenisBangunan::all(),
|
|
'kondisiBangunan' => KondisiBangunan::all(),
|
|
'sifatBangunan' => SifatBangunan::all(),
|
|
'spekKategoriBangunan' => SpekKategoritBangunan::all(),
|
|
'spekBangunan' => SpekBangunan::all(),
|
|
'saranaPelengkap' => SaranaPelengkap::all(),
|
|
'arahMataAngin' => ArahMataAngin::all(),
|
|
'lantai' => Lantai::all(),
|
|
'viewUnit' => ViewUnit::all(),
|
|
'golMasySekitar' => GolonganMasySekitar::all(),
|
|
'tingkatKeramaian' => TingkatKeramaian::all(),
|
|
'laluLintasLokasi' => LaluLintasLokasi::all(),
|
|
'jenisPesawat' => JenisPesawat::all(),
|
|
'modelAlatBerat' => ModelAlatBerat::all(),
|
|
'jenisKapal' => JenisKapal::all(),
|
|
'jenisKendaraan' => JenisKendaraan::all(),
|
|
'terletakArea' => TerletakArea::all(),
|
|
'posisiUnit' => PosisiUnit::all(),
|
|
'bentukUnit' => BentukUnit::all(),
|
|
'fasilitasObjek' => FasilitasObjek::all(),
|
|
'merupakanDaerah' => MerupakanDaerah::all(),
|
|
'jenisUnit' => JenisUnit::all(),
|
|
'jenisJaminan' => JenisJaminan::all(),
|
|
'hubCadeb' => HubunganPemilikJaminan::all(),
|
|
'hubPenghuni' => HubunganPenghuniJaminan::all(),
|
|
'perkerasanJalan' => PerkerasanJalan::all(),
|
|
'terletakDiArea' => TerletakArea::all(),
|
|
'tujuanPenilaian' => TujuanPenilaian::all(),
|
|
'perizinan' => Perizinan::all(),
|
|
'foto' => FotoObjekJaminan::all()
|
|
];
|
|
}
|
|
|
|
private const HEADERS = [
|
|
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
|
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
|
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'],
|
|
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'],
|
|
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'],
|
|
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'],
|
|
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'],
|
|
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'],
|
|
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'],
|
|
'lalu-lintas-lokasi' => ['Lalu Lintas Depan Lokasi', 'lalu-lintas-lokasi'],
|
|
'tingkat-keramaian' => ['Tingkat Keramaian', 'tingkat-keramaian'],
|
|
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar'],
|
|
'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan'],
|
|
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'],
|
|
'lantai-unit' => ['Lantai Unit', 'lantai-unit'],
|
|
'view-unit' => ['View Unit', 'view-unit'],
|
|
'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'],
|
|
'jenis-pesawat' => ['Jenis pesawat', 'jenis-pesawat'],
|
|
'model-alat-berat' => ['Model alat berat', 'model-alat-berat'],
|
|
'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'],
|
|
'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'],
|
|
'jenis-unit' => ['Jenis unit', 'jenis-unit'],
|
|
'terletak-area' => ['Terletak di Area', 'terletak-area'],
|
|
'merupakan-daerah' => ['Merupakan Daerah', 'merupakan-daerah'],
|
|
'posisi-unit' => ['Posisi unit', 'posisi-unit'],
|
|
'bentuk-unit' => ['Bentuk unit', 'bentuk-unit'],
|
|
'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek'],
|
|
'foto-objek-jaminan' => ['Foto Objek Jaminan', 'foto-objek-jaminan'],
|
|
'perizinan' => ['Perizinan', 'perizinan'],
|
|
];
|
|
|
|
}
|