Initial Commit

This commit is contained in:
2025-05-06 15:05:09 +07:00
commit 7b885d7d45
695 changed files with 119779 additions and 0 deletions

View File

@@ -0,0 +1,488 @@
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
<div class="flex items-center gap-2">
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
</div>
</div>
<div class="card-body">
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tujuan Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->tujuanPenilaian))
<p class="text-2sm text-gray-700">{{ $permohonan->tujuanPenilaian->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->created_at->format('d/m/Y') }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->name))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Wakil Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nama_wakil" class="input"
placeholder="Masukkan Hubungan Calon Debitur" value="{{ $forminspeksi['nama_wakil'] ?? '' }}">
<em id="error-nama_wakil" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Hubungan Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="hub_calon_debitur" class="input"
placeholder="Masukkan Hubungan Calon Debitur" value="{{$forminspeksi['hub_calon_debitur'] ?? ''}}">
<em id="error-hub_calon_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- lokasi jaminan --}}
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Data Jaminan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Model</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['modelAlatBerat']))
@foreach ($basicData['modelAlatBerat'] as $item)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="jenis_model[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('jenis_model', [])) ||
(isset($forminspeksi['jenis_model']) &&
is_array($forminspeksi['jenis_model']) &&
in_array($item->name, $forminspeksi['jenis_model']))
? 'checked'
: '' }}
onclick="toggleCheckboxVisibility('jenis_model', 'jenis_model_lainnya', ['lainnya'])"/>
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'lainnya') == 0)
<input id="jenis_model_lainnya" type="text"
style="{{ isset($forminspeksi['jenis_model']['lainnya']) && $forminspeksi['jenis_model']['lainnya'] ? '' : 'display: none;' }}"
name="jenis_model_lainnya" class="input w-full mt-2"
placeholder="Masukkan bentuk tanah..."
value="{{ old('jenis_model_lainnya', $forminspeksi['jenis_model']['lainnya'] ?? '') }}"/>
@endif
</div>
@endforeach
@endif
</div>
<em id="error-jenis_model" class="alert text-danger text-sm"></em>
</div>
</div>
@php
$inputDataJaminan = [
[
'label' => 'Nomor Lambung',
'name' => 'nomor_lambung',
'index' => 0,
'value' => old('nomor_lambung', $forminspeksi['nomor_lambung'] ?? ''),
],
[
'label' => 'Model Unit',
'name' => 'model_unit',
'index' => 1,
'value' => old('model_unit', $forminspeksi['model_unit'] ?? ''),
],
[
'label' => 'Tahun Pembuatan',
'name' => 'tahun_pembuatan',
'index' => 2,
'value' => old('tahun_pembuatan', $forminspeksi['tahun_pembuatan'] ?? ''),
],
[
'label' => 'Merk',
'name' => 'merk',
'index' => 3,
'value' => old('merk', $forminspeksi['merk'] ?? ''),
],
[
'label' => 'Negara Pembuat',
'name' => 'negara_pembuat',
'index' => 4,
'value' => old('negara_pembuat', $forminspeksi['negara_pembuat'] ?? ''),
],
[
'label' => 'Tahun Pembelian',
'name' => 'tahun_pembelian',
'index' => 5,
'value' => old('tahun_pembelian', $forminspeksi['tahun_pembelian'] ?? ''),
],
[
'label' => 'Nomor Faktur/Invoice',
'name' => 'nomor_faktur',
'index' => 6,
'value' => old('nomor_faktur', $forminspeksi['nomor_faktur'] ?? '' ),
],
[
'label' => 'Nomor Kontrak Pembelian',
'name' => 'nomor_kontrak',
'index' => 7,
'value' => old('nomor_kontrak', $forminspeksi['nomor_kontrak'] ?? ''),
],
[
'label' => 'Nama Pemilik',
'name' => 'nama_pemilik',
'index' => 8,
'value' => old('nama_pemilik', $forminspeksi['nama_pemilik'] ?? ''),
],
[
'label' => 'Alamaat Pemilik',
'name' => 'alamat_pemilik',
'index' => 9,
'value' => old('alamat_pemilik', $forminspeksi['alamat_pemilik'] ?? ''),
],
[
'label' => 'Nomor Asuransi',
'name' => 'nomor_asuransi',
'index' => 10,
'value' => old('nomor_asuransi', $forminspeksi['nomor_asuransi'] ?? ''),
],
[
'label' => 'Nomor Rangka',
'name' => 'nomor_rangka',
'index' => 11,
'value' => old('nomor_rangka', $forminspeksi['nomor_rangka'] ?? ''),
],
[
'label' => 'Nomor Mesin',
'name' => 'nomor_mesin',
'index' => 12,
'value' => old('nomor_mesin', $forminspeksi['nomor_mesin'] ?? ''),
],
[
'label' => 'Hour Meters',
'name' => 'hour_mesters',
'index' => 13,
'value' => old('hour_mesters', $forminspeksi['hour_mesters'] ?? ''),
],
[
'label' => 'Overhaul Mesin',
'name' => 'overhaul_mesin',
'index' => 14,
'value' => old('overhaul_mesin', $forminspeksi['overhaul_mesin'] ?? ""),
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{$item['value'] ?? ''}}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Kondisi Objek Jaminan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
@php
$kondisiObjeck = [
[
'label' => 'Mesin dan Panel Instrument',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'mesin_panel',
'index' => 0,
],
[
'label' => 'Fungsi mesin dan panel instrument',
'value' => ['Berfungsi', 'Rusak'],
'name' => 'fungsi_panel',
'index' => 1,
],
[
'label' => 'Interior (jok, dll)',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'interior',
'index' => 2,
],
[
'label' => 'Rangka dan Karoseri',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'rangka_Karoseri',
'index' => 3,
],
[
'label' => 'Ban',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'ban',
'index' => 4,
],
[
'label' => 'Velg',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'velg',
'index' => 5,
],
[
'label' => 'Air Conditioner',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'air_conditioner',
'index' => 6,
],
[
'label' => 'Aksesoris Tambahan lainnya',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'aksesoris',
'index' => 7,
],
[
'label' => 'LCD',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'lcd',
'index' => 8,
],
[
'label' => 'Perlengkapan Keamanan',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'perlengkapan',
'index' => 9,
],
[
'label' => 'Asuransi',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'asuransi',
'index' => 10,
],
];
@endphp
@if (count($kondisiObjeck) > 0)
@foreach ($kondisiObjeck as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($item['value']))
@foreach ($item['value'] as $value)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="{{ $item['name'] }}[]" type="checkbox"
value="{{ $value }}"
{{ in_array($value, old($item['name'], $forminspeksi[$item['name']] ?? [])) ? 'checked' : '' }} />
{{ $value }}
</label>
<input type="text" name="{{ $item['name'] }}_input[]"
class="input w-full"
id="bentukTanahInput-{{ $loop->parent->index }}-{{ $loop->index }}"
placeholder="Masukkan {{ $value }}..."
value="{{ old($item['name'] . '_input.' . $loop->index, $forminspeksi[$item['name'] . '_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<div class="w-full">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
<em id="error-{{ $item['name'] }}-input-{{ $loop->index }}"
class="alert text-danger text-sm"></em>
</div>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perusahaan Asuransi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="perusahaan_asuransi" class="input"
placeholder="Pesurahaan Asuransi" value={{$forminspeksi['perusahaan_asuransi'] ?? ''}}>
<em class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tahun Berakhir</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tahun_berakhir" class="input" placeholder="Tahun berakhir" value={{$forminspeksi['tahun_berakhir'] ?? ''}}>
<em class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_positif']))
@foreach ($forminspeksi['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old("fakta_positif.$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="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_negatif']))
@foreach ($forminspeksi['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="10">{{ 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="10">{{ old('fakta_negatif.0', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan Yang Perlu Diperhatikan</label>
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">
<div class="catatan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old('catatan.0', $forminspeksi['catatan'][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-catatan" class="alert text-danger text-sm"></em>
</div>
<button type="button"
onclick="addClonableItem('catatan-container', 'catatan')"
class="btn btn-primary btn-sm mt-5 ">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,176 @@
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisa Unit
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<!-- Luas tanah -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Luas Unit</label>
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$total_luas_unit = 0;
$jenis_legalitas_jaminan_id = 0;
if (isset($item->detail)) {
$total_luas_unit = calculateTotalLuas($item->detail, 'luas_bangunan', 1, 27, 3);
}
@endphp
<input type="hidden" id="jenis_legalistas_jaminan_unit_id" name="jenis_legalistas_jaminan_unit_id"
class="input" value="{{ $jenis_legalitas_jaminan_id }}">
<input type="hidden" name="luas_unit_sesuai" class="input" value="{{ $total_luas_unit }}">
<p class="text-2sm text-gray-700">{{ $total_luas_unit }} m<sup>2</sup></p>
@endforeach
@endif
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input
onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="luas_unit" value="sesuai"
{{ old('luas_unit', isset($forminspeksi['luas_unit']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input
onclick="toggleFieldVisibility('luas_unit','luas_unit_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="luas_unit" value="tidak sesuai"
{{ old('luas_unit', isset($forminspeksi['luas_unit']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<div id="luas_unit_tidak_sesuai" class="flex items-baseline gap-2"
style="{{ old('luas_unit', isset($forminspeksi['luas_unit']['tidak sesuai'])) ? '' : 'display: none;' }}">
<div class="input">
<input id="analisa_luas_unit_tidak_sesuai" type="text" name="luas_unit_tidak_sesuai"
class="number-format w-full" placeholder="Masukan Luas Tanah"
value="{{ old('luas_unit_tidak_sesuai', $forminspeksi['luas_unit_tidak_sesuai'] ?? '') }}">
<i>M<sup>2</sup></i>
</div>
{{-- <button type="button" class="btn btn-md btn-primary"
onclick="updateAnalisa('analisa_unit')">Save</button> --}}
</div>
</div>
<em id="error-luas_unit" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi Unit</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-2">
@if (isset($basicData['kondisiBangunan']))
@foreach ($basicData['kondisiBangunan'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kondisi_unit[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kondisi_unit', $forminspeksi['kondisi_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-kondisi_unit" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<!-- Posisi Unit -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Posisi Unit</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-2">
@if (isset($basicData['posisiUnit']))
@foreach ($basicData['posisiUnit'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="posisi_unit[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('posisi_unit', $forminspeksi['posisi_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-posisi_unit" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lantai</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['lantai']))
@foreach ($basicData['lantai'] as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="lantai[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('lantai', $forminspeksi['lantai'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="lantai_input[]" class="input w-full" id="lantaiInput"
placeholder="Masukkan {{ $item->name }}..."
value="{{ old('lantai_input.' . $loop->index, $forminspeksi['lantai_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<em id="error-lantai" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Kondisi Fisik Tanah -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">View</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-2">
@if (isset($basicData['viewUnit']))
@foreach ($basicData['viewUnit'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="view[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('view', $forminspeksi['view'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-view" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Bentuk Unit</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-2">
@if (isset($basicData['bentukUnit']))
@foreach ($basicData['bentukUnit'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="bentuk_unit[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('bentuk_unit', $forminspeksi['bentuk_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-bentuk_unit" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,405 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
Analisa Bangunan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Luas Bangunan(IMB)</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$total_luas_bangunan = 0;
$jenis_legalitas_jaminan_id = 0;
if (isset($item->detail)) {
$total_luas_bangunan = calculateTotalLuas($item->detail, 'luas_bangunan', 10, 27, 3);
}
@endphp
<input type="hidden" id="jenis_legalistas_jaminan_bangunan_id"
name="jenis_legalistas_jaminan_bangunan_id" class="input"
value="{{ $jenis_legalitas_jaminan_id }}">
<input type="hidden" name="luas_bangunan_sesuai" class="input"
value="{{ $total_luas_bangunan }}">
<p class="text-2sm text-gray-700">{{ $total_luas_bangunan }} m<sup>2</sup></p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio"
onclick="toggleFieldVisibility('luas_tanah_bagunan', 'luas_tanah_bagunan_tidak_sesuai', ['tidak sesuai'])"
class="radio" name="luas_tanah_bagunan" value="sesuai"
{{ old('luas_tanah_bagunan', isset($forminspeksi['bangunan']['luas_tanah_bagunan']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="luas_tanah_bagunan"
onclick="toggleFieldVisibility('luas_tanah_bagunan', 'luas_tanah_bagunan_tidak_sesuai', ['tidak sesuai'])"
value="tidak sesuai"
{{ old('luas_tanah_bagunan', isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
@php
$statusKey = isset($forminspeksi['bangunan']['luas_tanah_bagunan']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedData = $forminspeksi['bangunan']['luas_tanah_bagunan'][$statusKey] ?? null;
@endphp
<div id="luas_tanah_bagunan_tidak_sesuai" class="flex items-baseline gap-2"
style="{{ old('luas_tanah_bagunan_tidak_sesuai', $selectedData) ? '' : 'display: none' }}">
<div class="input">
<input type="text" id="analisa_bangunan_tidak_sesuai"
name="luas_tanah_bagunan_tidak_sesuai" class="w-full number-format"
placeholder="Masukan Luas Bangunan Tidak Sesuai..."
value="{{ old('luas_tanah_bagunan_tidak_sesuai', $forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'] ?? '') }}">
</div>
{{-- <button type="button" class="btn btn-md btn-primary"
onclick="updateAnalisa('analisa_bangunan')">
Save
</button> --}}
</div>
</div>
<em id="error-luas_tanah_bagunan" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<!-- Jenis Bangunan -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Bangunan</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['jenisBangunan']))
@foreach ($basicData['jenisBangunan'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="jenis_bangunan[]" type="checkbox"
value="{{ $item->name }}"
{{ (is_array(old('jenis_bangunan')) && in_array($item->name, old('jenis_bangunan'))) ||
(isset($forminspeksi['bangunan']['jenis_bangunan']) &&
(is_array($forminspeksi['bangunan']['jenis_bangunan']) &&
in_array($item->name, $forminspeksi['bangunan']['jenis_bangunan'])))
? 'checked'
: '' }}
onclick="toggleCheckboxVisibility('jenis_bangunan', 'jenis_bangunan_lainnya', ['lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'Lainnya') == 0)
<input id="jenis_bangunan_lainnya" type="text" style="display: none;"
name="jenis_bangunan_lainnya" class="input w-full mt-2"
placeholder="Masukkan lainnya..." />
@endif
@endforeach
@endif
</div>
<em id="error-jenis_bangunan" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Kondisi Bangunan -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi Bangunan</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['kondisiBangunan']))
@foreach ($basicData['kondisiBangunan'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kondisi_bangunan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['bangunan']['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'lainnya') == 0)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kondisi_bangunan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kondisi_bangunan', $forminspeksi['bangunan']['kondisi_bangunan'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="kondisi_bangunan_lainnya" class="input mt-2"
id="bentukTanahInput" placeholder="Masukkan Kondisi Bangunan..."
value="{{ old('kondisi_bangunan_lainnya', $forminspeksi['bangunan']['kondisi_bangunan_lainnya'] ?? '') }}">
</div>
@endif
@endforeach
@endif
</div>
<em id="error-kondisi_bangunan" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Sifat Bangunan -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Sifat Bangunan</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['sifatBangunan']))
@foreach ($basicData['sifatBangunan'] as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="sifat_bangunan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('sifat_bangunan', $forminspeksi['bangunan']['sifat_bangunan'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="sifat_bangunan_input[]" class="input w-full"
id="sifat_bangunan" placeholder="Masukkan {{ $item->name }}..."
value="{{ old('sifat_bangunan_input.' . $loop->index, $forminspeksi['bangunan']['sifat_bangunan_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<em id="error-sifat_bangunan" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Spek Bangunan -->
<div class="gap-2.5">
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Spek Bangunan</label>
<div class="flex flex-wrap items-baseline w-full" id="spek-bangunan-container">
@if (isset($forminspeksi['bangunan']) && is_array($forminspeksi['bangunan']))
@foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $index => $bangunan)
<div class="spek-bangunan w-full gap-4 mt-5">
<input type="hidden" name="nama_bangunan[]"
value="{{ isset($bangunan['bagunan']) ? $bangunan['bagunan'] : 'Bangunan ' . ($index + 1) }}"
required>
<label
class="building-label form-label">{{ isset($bangunan['bagunan']) ? $bangunan['bagunan'] : 'Bangunan ' . ($index + 1) }}</label>
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2 w-full">
@if (@isset($basicData['spekKategoriBangunan']))
@foreach ($basicData['spekKategoriBangunan'] as $item)
<div>
<input type="hidden" name="spek_kategori_bangunan[]"
value="{{ $item->name }}">
<label
class="form-label flex items-center gap-3 text-nowrap">{{ $item->name }}</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4"
style="margin-top: 10px">
@foreach ($basicData['spekBangunan'] as $spek)
@if ($spek->spek_kategori_bangunan_id == $item->id)
<label
class="form-label flex items-center gap-2.5">
<input class="checkbox"
name="spek_bangunan[{{ $index }}][{{ $item->name }}][]"
type="checkbox"
value="{{ $spek->name }}"
{{ isset($bangunan['spek_kategori_bangunan'][$item->name]) &&
in_array($spek->name, $bangunan['spek_kategori_bangunan'][$item->name])
? 'checked'
: '' }} />
{{ $spek->name }}
</label>
@endif
@endforeach
<label class="form-label flex items-center gap-2.5 mt-2">
<input class="input" type="text"
name="spek_bangunan[{{ $index }}][{{ $item->name }}][lainnya]"
placeholder="Lainnya (sebutkan)"
value="{{ isset($bangunan['spek_kategori_bangunan'][$item->name]['lainnya']) ? $bangunan['spek_kategori_bangunan'][$item->name]['lainnya'] : '' }}">
</label>
</div>
<em id="error-spek_bangunan_{{ $item->name }}"
class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
</div>
<button type="button"
class="mt-2 btn btn-danger btn-outline btn-xs delete-button"
style="display: none;">Hapus</button>
</div>
@endforeach
@else
<div class="spek-bangunan w-full gap-4 mt-5">
<input type="hidden" name="nama_bangunan[]" value="Bangunan 1" required>
<label class="building-label form-label">Bangunan 1</label>
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2 w-full">
@if (@isset($basicData['spekKategoriBangunan']))
@foreach ($basicData['spekKategoriBangunan'] as $item)
<div>
<input type="hidden" name="spek_kategori_bangunan[]"
value="{{ $item->name }}">
<label
class="form-label flex items-center gap-3 text-nowrap">{{ $item->name }}</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4"
style="margin-top: 10px">
@foreach ($basicData['spekBangunan'] as $spek)
@if ($spek->spek_kategori_bangunan_id == $item->id)
<label class="form-label flex items-center gap-2.5">
<input class="checkbox"
name="spek_bangunan[0][{{ $item->name }}][]"
type="checkbox"
value="{{ $spek->name }}" />
{{ $spek->name }}
</label>
@endif
@endforeach
<label class="form-label flex items-center gap-2.5 mt-2">
<input class=input" type="text"
name="spek_bangunan[0][{{ $item->name }}][lainnya]"
placeholder="Lainnya (sebutkan)">
</label>
</div>
<em id="error-spek_bangunan_{{ $item->name }}"
class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
</div>
<button type="button" class="mt-2 btn btn-danger btn-outline btn-xs delete-button"
style="display: none;">Hapus</button>
</div>
@endif
</div>
</div>
<div class="flex justify-end">
<button class="btn btn-xs btn-primary" type="button" id="addBagunan">
tambah bangunan
<i class="ki-filled ki-plus"></i>
</button>
</div>
</div>
<!-- Sarana pelengkap -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Sarana Pelengkap</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['saranaPelengkap']))
@foreach ($basicData['saranaPelengkap'] as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="sarana_pelengkap[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, (array) old('sarana_pelengkap', $forminspeksi['bangunan']['sarana_pelengkap'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="sarana_pelengkap_input[]" class="input w-full"
placeholder="Masukkan {{ $item->name }}..."
value="{{ old('sarana_pelengkap_input.' . $loop->index, $forminspeksi['bangunan']['sarana_pelengkap_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<em id="error-sarana_pelengkap" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script>
const spekBangunanContainer = document.getElementById('spek-bangunan-container');
function updateDeleteButtonsVisibility() {
const allDeleteButtons = spekBangunanContainer.querySelectorAll('.delete-button');
allDeleteButtons.forEach(button => {
button.style.display = spekBangunanContainer.querySelectorAll('.spek-bangunan').length > 1 ?
'inline-block' : 'none';
});
}
function updateBuildingLabels() {
const allSpekBangunan = spekBangunanContainer.querySelectorAll('.spek-bangunan');
allSpekBangunan.forEach((div, index) => {
const label = div.querySelector('.building-label');
const nameInput = div.querySelector('input[name^="nama_bangunan"]');
if (label) {
const buildingName = `Bangunan ${index + 1}`;
label.textContent = buildingName;
if (nameInput) {
nameInput.value = buildingName;
}
}
});
}
function updateInputNames(container, index) {
container.querySelectorAll('input').forEach(input => {
if (input.name) {
if (input.name.includes('[')) {
if (input.name.startsWith('spek_bangunan')) {
// Handle spek_bangunan inputs
const matches = input.name.match(/spek_bangunan\[\d+\]\[(.*?)\]/);
if (matches) {
input.name = `spek_bangunan[${index}][${matches[1]}][]`;
}
} else {
// Handle lainnya array inputs
input.name = input.name.replace(/\[\d*\]/, `[${index}]`);
}
}
}
});
}
document.getElementById('addBagunan').addEventListener('click', function() {
const newDiv = spekBangunanContainer.querySelector('.spek-bangunan').cloneNode(true);
const newIndex = spekBangunanContainer.querySelectorAll('.spek-bangunan').length;
// Reset and update inputs
newDiv.querySelectorAll('input').forEach(input => {
if (input.type === 'checkbox') {
input.checked = false;
} else {
input.value = '';
}
});
// Update input names
updateInputNames(newDiv, newIndex);
// Add delete button handler
const deleteButton = newDiv.querySelector('.delete-button');
deleteButton.addEventListener('click', function() {
newDiv.remove();
updateDeleteButtonsVisibility();
updateBuildingLabels();
});
// Append and update UI
spekBangunanContainer.appendChild(newDiv);
updateDeleteButtonsVisibility();
updateBuildingLabels();
});
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
updateDeleteButtonsVisibility();
updateBuildingLabels();
// Add delete handlers to existing buttons
spekBangunanContainer.querySelectorAll('.delete-button').forEach(button => {
button.addEventListener('click', function() {
if (spekBangunanContainer.querySelectorAll('.spek-bangunan').length > 1) {
this.closest('.spek-bangunan').remove();
updateDeleteButtonsVisibility();
updateBuildingLabels();
}
});
});
});
</script>
@endpush

View File

@@ -0,0 +1,159 @@
<div class="grid grid-cols-1 lg:grid-cols-2 gap-5 lg:gap-7.5">
@foreach ($permohonan->documents as $dokumen)
@php
$jaminanId = $dokumen->id;
$currentInspeksi = $inspeksiData[$jaminanId] ?? null;
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
$href = [
[
'label' => 'form inspeksi',
'url' =>
route('surveyor.inspeksi', [
'id' => $permohonan->id,
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['data_form']),
],
];
if (!in_array(strtoupper($dokumen->jenisJaminan->name), $tanahBangunanTypes)) {
$denahLabel = strtoupper($dokumen->jenisJaminan->name);
$href[] = [
'label' => 'denah ' . $denahLabel,
'url' =>
route('surveyor.denah', [
'id' => $permohonan->id,
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['denah_form']),
];
}
$href = array_merge($href, [
[
'label' => 'foto',
'url' =>
route('surveyor.foto', [
'id' => $permohonan->id,
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['foto_form']),
],
[
'label' => 'data pembanding',
'url' =>
route('surveyor.data-pembanding', [
'id' => $permohonan->id,
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['data_pembanding']),
],
]);
@endphp
<div class="card border border-agi-100 border-2 border-dashed border-brand-clarity bg-center bg-[length:600px] bg-no-repeat add-new-bg grid gap-5"
style="padding: 20px">
<div class="card-group flex items-center flex-wrap sm:flex-nowrap justify-between py-4 gap-2.5">
<div class="flex items-center gap-3.5">
<div class="relative size-[50px] shrink-0">
<svg class="w-full h-full stroke-brand-clarity fill-light" fill="none" height="48"
viewBox="0 0 44 48" width="44" xmlns="http://www.w3.org/2000/svg">
<path
d="M16 2.4641C19.7128 0.320509 24.2872 0.320508 28 2.4641L37.6506 8.0359C41.3634 10.1795 43.6506 14.141 43.6506 18.4282V29.5718C43.6506 33.859 41.3634 37.8205 37.6506 39.9641L28 45.5359C24.2872 47.6795 19.7128 47.6795 16 45.5359L6.34937 39.9641C2.63655 37.8205 0.349365 33.859 0.349365 29.5718V18.4282C0.349365 14.141 2.63655 10.1795 6.34937 8.0359L16 2.4641Z"
fill=""></path>
<path
d="M16.25 2.89711C19.8081 0.842838 24.1919 0.842837 27.75 2.89711L37.4006 8.46891C40.9587 10.5232 43.1506 14.3196 43.1506 18.4282V29.5718C43.1506 33.6804 40.9587 37.4768 37.4006 39.5311L27.75 45.1029C24.1919 47.1572 19.8081 47.1572 16.25 45.1029L6.59937 39.5311C3.04125 37.4768 0.849365 33.6803 0.849365 29.5718V18.4282C0.849365 14.3196 3.04125 10.5232 6.59937 8.46891L16.25 2.89711Z"
stroke=""></path>
</svg>
<div class="absolute leading-none left-2/4 top-2/4 -translate-y-2/4 -translate-x-2/4">
<i class="ki-filled ki-additem text-2xl text-brand"></i>
</div>
</div>
</div>
<div class="flex items-center gap-2.5">
<span class="flex items-center gap-1.5 leading-none font-medium text-sm text-gray-900">
{{ $dokumen->jenisJaminan->name ?? '' }}
</span>
</div>
</div>
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
<a href="{{ route('surveyor.inspeksi', ['id' => $permohonan->id]) .
'?' .
http_build_query([
'dokument' => $jaminanId,
'jenis_jaminan' => $dokumen->jenisJaminan->id,
]) }}"
class="flex items-center justify-between border border-gray-200 rounded-xl gap-2 px-4 py-4 btn-outline {{ !empty($currentInspeksi['data_form']) ? 'btn-success' : 'btn-primary' }} hover:btn-light">
<div class="flex items-center gap-3.5">
<div class="flex flex-col">
<h1 class="text-sm font-medium text-gray-900 mb-px uppercase">
Form Inspeksi RAP
</h1>
</div>
</div>
<div class="flex items-center gap-5">
<div class="flex gap-0.5">
<div
class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['data_form']) ? '' : 'btn-light' }}">
<i
class="ki-filled {{ !empty($currentInspeksi['data_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
</div>
</div>
</div>
</a>
<a href="{{ route('surveyor.foto', ['id' => $permohonan->id]) .
'?' .
http_build_query([
'dokument' => $jaminanId,
'jenis_jaminan' => $dokumen->jenisJaminan->id,
]) }}"
class="flex items-center justify-between border border-gray-200 rounded-xl gap-2 px-4 py-4 btn-outline {{ !empty($currentInspeksi['foto_form']) ? 'btn-success' : 'btn-primary' }} hover:btn-light">
<div class="flex items-center gap-3.5">
<div class="flex flex-col">
<h1 class="text-sm font-medium text-gray-900 mb-px uppercase">
Foto
</h1>
</div>
</div>
<div class="flex items-center gap-5">
<div class="flex gap-0.5">
<div
class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['foto_form']) ? '' : 'btn-light' }}">
<i
class="ki-filled {{ !empty($currentInspeksi['foto_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
</div>
</div>
</div>
</a>
@else
@foreach ($href as $item)
@if ($item['show'])
<a href="{{ $item['url'] }}"
class="flex items-center justify-between border border-gray-200 rounded-xl gap-2 px-4 py-4 btn-outline {{ $item['icon'] ? 'btn-success' : 'btn-primary' }} hover:btn-light">
<div class="flex items-center gap-3.5">
<div class="flex flex-col">
<h1 class="text-sm font-medium text-gray-900 mb-px uppercase">
{{ $item['label'] }}
</h1>
</div>
</div>
<div class="flex items-center gap-5">
<div class="flex gap-0.5">
<div class="btn btn-sm btn-icon btn-clear {{ $item['icon'] ? '' : 'btn-light' }}">
<i
class="ki-filled {{ $item['icon'] ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
</div>
</div>
</div>
</a>
@endif
@endforeach
@endif
</div>
@endforeach
</div>

View File

@@ -0,0 +1,821 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5">
<div class="grid gap-5">
<div class="card-grid min-w-full" data-datatable="false" data-datatable-page-size="10"
data-datatable-state-save="false" id="data-table" data-api-url="">
@php
$processedCategories = [];
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
$dokumentName = null;
@endphp
<form id="dataPembandingForm" method="POST" enctype="multipart/form-data" class="grid gap-5">
@csrf
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<div class="card">
<div class="card-body">
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$dokumentName = $dokumen->jenisJaminan->name;
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
<input type="hidden" name="action"
value="{{ is_array($formKategori) ? implode(',', $formKategori) : $formKategori }}">
<input type="hidden" name="type" value="{{ implode(',', $kategoriUnik) }}">
@if (!in_array(strtoupper($dokumentName), $tanahBangunanTypes))
@include('lpj::surveyor.components.pembanding-tanah-bangunan-unit')
@else
@include('lpj::surveyor.components.pembanding-kendaraan')
@endif
@endif
@endforeach
</div>
</div>
<div class="card">
<div class="card-body ">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin: 20px">
<label class="form-label lg:form-label max-w-56 ">Catatan yang Perlu Diperhatikan
</label>
<div class="w-full">
<div id="keterangan-container" class="flex items-baseline flex-wrap gap-2.5 w-full">
<div class="keterangan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="10">{{ $comparisons['keterangan'] ?? old('keterangan') }}</textarea>
<em id="error-keterangan" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<div class="flex justify-end gap-2">
<button type="button" onclick="submitData()" class="btn btn-primary">
<i class="ki-duotone ki-save-2 fs-2"></i>
Simpan
</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
@include('lpj::surveyor.js.utils')
<script>
let columnCount = 1;
// Fungsi calculate prices yang diperbaiki
function calculatePrices(type = 'main', index = null) {
let hargaInput, diskonInput, totalInput, hargaDiskonInput;
// Tentukan input berdasarkan tipe (main atau pembanding)
if (type === 'main') {
// hargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
hargaInput = document.querySelector('input[name="harga"]');
diskonInput = document.querySelector('input[name="diskon"]');
totalInput = document.querySelector('input[name="total"]');
} else {
const hargaInputs = document.getElementsByName('harga_pembanding[]');
const diskonInputs = document.getElementsByName('diskon_pembanding[]');
const totalInputs = document.getElementsByName('total_pembanding[]');
// Pastikan index valid
if (index !== null && index < hargaInputs.length) {
// hargaPenawaranInput = hargaPenawarans[index]
hargaInput = hargaInputs[index];
diskonInput = diskonInputs[index];
totalInput = totalInputs[index];
// hargaDiskonInput = hargaDiskonInputs[index];
} else {
return; // Keluar jika index tidak valid
}
}
// Validasi input
if (!hargaInput || !diskonInput || !totalInput) {
return;
}
const harga = parseFloat(hargaInput.value.replace(/[^\d]/g, '') || '0');
let diskonInput_value = diskonInput.value.replace(',', '.');
let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0');
// Batasi diskon maksimal 100%
diskon = Math.min(diskon, 100);
const total = harga;
const hargaPermeterSetelahDiskon = harga - (harga * (diskon / 100))
console.log(hargaPermeterSetelahDiskon);
// Update nilai dengan format currency
totalInput.value = formatCurrency(hargaPermeterSetelahDiskon.toString());
}
// Update fungsi fillPembandingData
function fillPembandingData(data, index) {
if (!data) return;
function setArrayInputValue(name, value, index) {
const element = document.getElementsByName(name)[index];
if (element) {
if (element.tagName === "SELECT") {
const options = Array.from(element.options);
const optionToSelect = options.find(option => option.value === value);
if (optionToSelect) {
optionToSelect.selected = true;
} else {
element.selectedIndex = 0;
}
} else {
// Format currency untuk input harga
if (name.includes('diskon')) {
element.value = value || '0';
} else {
element.value = value || '';
}
}
}
}
const arrayData = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
const dk = @json($dokumentName);
const normalizedDk = dk.replace(/-/g, ' ').toUpperCase();
// Cek apakah arrayData berisi normalizedDk
const useFirstInputs = arrayData.includes(normalizedDk);
const currentData = Array.isArray(data) ? data[index] : data;
const inputs = useFirstInputs ? {
'nama_pembanding[]': currentData.nama,
'type_pembanding[]': currentData.type,
'warna_pembanding[]': currentData.warna,
'lokasi_pembanding[]': currentData.lokasi,
'sumber_data_pembanding[]': currentData.sumber_data,
'tahun_pembanding[]': currentData.tahun,
'transmisi_pembanding[]': currentData.transmisi,
'tahun_pembuatan_pembanding[]': currentData.tahun_pembuatan,
'merek_buatan_pembanding[]': currentData.merek_buatan,
'kapasitas_pembanding[]': currentData.kapasitas,
'power_pembanding[]': currentData.power,
'kondisi_pembanding[]': currentData.kondisi,
'kordinat_lat_pembanding[]': currentData.kordinat_lat,
'kordinat_lng_pembanding[]': currentData.kordinat_lng,
'address_pembanding[]': currentData.address,
'village_code_pembanding[]': currentData.village_code,
'district_code_pembanding[]': currentData.district_code,
'city_code_pembanding[]': currentData.city_code,
'province_code_pembanding[]': currentData.province_code,
'harga_pembanding[]': currentData.harga,
'harga_diskon_pembanding[]': currentData.harga_diskon,
'total_pembanding[]': currentData.total,
'diskon_pembanding[]': currentData.diskon,
'telepon_pembanding[]': currentData.telepon,
// 'penawaran_pembanding[]': currentData.penawaran
} : {
'jenis_aset_pembanding[]': currentData.jenis_aset,
'luas_tanah_pembanding[]': currentData.luas_tanah,
'luas_bangunan_pembanding[]': currentData.luas_bangunan,
'status_nara_sumber_pembanding[]': currentData.status_nara_sumber,
'nama_nara_sumber_pembanding[]': currentData.nama_nara_sumber,
'kordinat_lat_pembanding[]': currentData.kordinat_lat,
'kordinat_lng_pembanding[]': currentData.kordinat_lng,
'address_pembanding[]': currentData.address,
'village_code_pembanding[]': currentData.village_code,
'district_code_pembanding[]': currentData.district_code,
'city_code_pembanding[]': currentData.city_code,
'province_code_pembanding[]': currentData.province_code,
'harga_pembanding[]': currentData.harga,
'harga_diskon_pembanding[]': currentData.harga_diskon,
'total_pembanding[]': currentData.total,
'diskon_pembanding[]': currentData.diskon,
'hak_properti_pembanding[]': currentData.hak_properti,
'telepon_pembanding[]': currentData.telepon,
// 'penawaran_pembanding[]': currentData.penawaran,
'tanggal_pembanding[]': currentData.tanggal,
// 'harga_penawaran_pembanding[]':currentData.harga_penawaran
};
Object.entries(inputs).forEach(([name, value]) => {
setArrayInputValue(name, value, index);
});
// Handle foto objek
if (data.foto_objek) {
const imageId = `uploadedImage${index + 2}`;
const preview = document.getElementById(imageId);
if (preview) {
preview.src = `/storage/${data.foto_objek}`;
preview.classList.remove('hidden');
}
}
// Handle lokasi secara berurutan
if (data.province_code) {
setTimeout(() => {
getCity(data.province_code, index + 1).then(() => {
if (data.city_code) {
setArrayInputValue('city_code_pembanding[]', data.city_code, index);
getDistrict(data.city_code, index + 1).then(() => {
if (data.district_code) {
setArrayInputValue('district_code_pembanding[]', data
.district_code, index);
getVillage(data.district_code, index + 1).then(() => {
if (data.village_code) {
setArrayInputValue('village_code_pembanding[]',
data.village_code, index);
}
});
}
});
}
});
}, 100);
}
// Hitung harga setelah data terisi
setTimeout(() => calculatePrices(index), 200);
}
// Update event listener untuk input harga dan diskon
function initializePriceCalculation() {
// Event listener untuk input utama
const mainHargaInput = document.querySelector('input[name="harga"]');
// const mainHargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
const mainDiskonInput = document.querySelector('input[name="diskon"]');
if (mainHargaInput) {
mainHargaInput.addEventListener('input', () => calculatePrices('main'));
}
// if (mainHargaPenawaranInput) {
// mainHargaPenawaranInput.addEventListener('input', () => calculatePrices('main'));
// }
if (mainDiskonInput) {
mainDiskonInput.addEventListener('input', () => calculatePrices('main'));
}
// Event listener untuk input pembanding
const pembandingHargaInputs = document.getElementsByName('harga_pembanding[]');
// const pembandingHargaPenawaranInput = document.getElementsByName('harga_penawaran_pembanding[]');
const pembandingDiskonInputs = document.getElementsByName('diskon_pembanding[]');
pembandingHargaInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));
});
// pembandingHargaPenawaranInput.forEach((input, index) => {
// input.addEventListener('input', () => calculatePrices('pembanding', index));
// });
pembandingDiskonInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));
});
}
document.addEventListener('DOMContentLoaded', function() {
try {
const inspectionData = {!! isset($inspectionData) ? json_encode($inspectionData) : 'null' !!};
const comparisons = {!! isset($comparisons) ? json_encode($comparisons) : 'null' !!};
console.log('inspectionData:', inspectionData);
console.log('comparisons:', comparisons);
initializeFirstPembandingListeners();
ensureLocationEventListeners();
initializePriceCalculation();
if (comparisons) {
comparisons.data_pembanding.forEach((comparison, index) => {
if (index > 0) {
addColumn();
}
fillPembandingData(comparison, index);
});
}
updateRemoveButtonVisibility();
initializeEventListeners();
} catch (error) {
console.error('Error initializing form:', error);
}
});
function addColumn() {
columnCount++;
const table = document.getElementById('dataTable');
const headerRow = table.querySelector('thead tr');
const bodyRows = table.querySelectorAll('tbody tr');
const newHeader = document.createElement('th');
newHeader.className = 'px-4 py-3 min-w-[250px]';
newHeader.textContent = `Data Pembanding ${columnCount}`;
headerRow.appendChild(newHeader);
bodyRows.forEach(row => {
const newCell = document.createElement('td');
newCell.className = 'px-4 py-2';
const firstInputCell = row.querySelector('td:last-child');
if (firstInputCell) {
const clonedContent = firstInputCell.innerHTML;
newCell.innerHTML = clonedContent;
const inputs = newCell.querySelectorAll('input, select, textarea');
inputs.forEach((input) => {
if (input.type === 'file') {
const newImageId = `uploadedImage${columnCount + 1}`;
const preview = newCell.querySelector('img');
if (preview) {
preview.id = newImageId;
preview.classList.add('hidden');
input.onchange = function() {
const file = this.files[0];
if (file) {
const validExtensions = ['image/jpeg', 'image/png', 'image/gif',
'image/webp'
];
if (validExtensions.includes(file.type)) {
previewImage(this, newImageId);
} else {
Swal.fire({
icon: 'error',
title: 'Format Tidak Didukung',
text: 'Hanya file gambar dengan format JPG, PNG, GIF, atau WEBP yang diperbolehkan.',
position: 'top-end',
toast: true,
showConfirmButton: false,
timer: 3000,
timerProgressBar: true
});
this.value = '';
}
}
};
}
}
if (input.tagName === 'SELECT') {
const baseId = input.id.replace(/_\d+$/, '').replace('_pembanding', '');
const newId = `${baseId}_pembanding_${columnCount}`;
input.id = newId;
if (input.name.includes('jenis_aset')) {
const originalOptions = document.querySelector(
'select[name="jenis_aset_pembanding[]"]').innerHTML;
input.innerHTML = originalOptions;
} else if (!input.id.includes('province')) {
// Reset opsi untuk select lokasi
input.innerHTML = `<option value="">Pilih ${
input.id.includes('city') ? 'Kota/Kabupaten' :
input.id.includes('district') ? 'Kecamatan' :
'Desa/Kelurahan'
}</option>`;
}
if (input.id.includes('province')) {
input.onchange = function() {
handleProvinceChange(this);
};
} else if (input.id.includes('city')) {
input.onchange = function() {
handleCityChange(this);
};
} else if (input.id.includes('district')) {
input.onchange = function() {
handleDistrictChange(this);
};
}
}
if (input.type !== 'file' && input.tagName !== 'SELECT') {
input.value = '';
}
if (input.classList.contains('currency-format')) {
input.addEventListener('input', function() {
handleCurrencyInput(this);
// Calculate prices if needed
if (input.name.includes('harga_pembanding') ||
input.name.includes('diskon_pembanding')) {
const inputs = document.getElementsByName(input.name);
const index = Array.from(inputs).indexOf(this);
calculatePrices('pembanding', index);
}
});
}
// Specific handling for discount to limit to 100%
if (input.name.includes('diskon_pembanding')) {
input.addEventListener('input', function() {
let value =
this.value = value.toString();
});
}
});
}
row.appendChild(newCell);
});
initializePriceCalculation();
updateRemoveButtonVisibility();
}
function handleCurrencyInput(input) {
const value = input.value.replace(/[^\d]/g, '');
input.value = formatCurrency(value);
}
function removeColumn() {
if (columnCount > 1) {
const table = document.getElementById('dataTable');
const rows = table.querySelectorAll('tr');
rows.forEach(row => {
row.deleteCell(-1);
});
columnCount--;
updateRemoveButtonVisibility();
}
}
function updateRemoveButtonVisibility() {
const removeBtn = document.getElementById('removeColumnBtn');
if (removeBtn) {
removeBtn.style.display = columnCount > 1 ? 'inline-flex' : 'none';
}
}
function initializeEventListeners() {
document.getElementById('addColumnBtn').addEventListener('click', addColumn);
document.getElementById('removeColumnBtn').addEventListener('click', removeColumn);
reinitializeEventListeners();
}
function reinitializeEventListeners() {
// Event listener yang sudah ada
document.querySelectorAll('.currency-format').forEach(input => {
input.addEventListener('input', function() {
formatCurrency(this);
});
});
document.querySelectorAll('.number-format').forEach(input => {
input.addEventListener('input', function() {
formatNumber(this);
});
});
// Tambahkan kalkulasi harga
initializePriceCalculation();
// Location event listeners
ensureLocationEventListeners();
}
function initializeCurrencyFormat() {
document.querySelectorAll('.currency-format').forEach(input => {
input.addEventListener('input', function() {
formatCurrency(this);
});
});
}
function initializeFirstPembandingListeners() {
const firstProvinceSelect = document.getElementById('province_code_pembanding');
if (firstProvinceSelect) {
firstProvinceSelect.addEventListener('change', function() {
const provinceId = this.value;
if (provinceId) {
getCity(provinceId, 1);
}
});
}
const firstCitySelect = document.getElementById('city_code_pembanding');
if (firstCitySelect) {
firstCitySelect.addEventListener('change', function() {
const cityId = this.value;
if (cityId) {
getDistrict(cityId, 1);
}
});
}
const firstDistrictSelect = document.getElementById('district_code_pembanding');
if (firstDistrictSelect) {
firstDistrictSelect.addEventListener('change', function() {
const districtId = this.value;
if (districtId) {
getVillage(districtId, 1);
}
});
}
}
function ensureLocationEventListeners() {
document.querySelectorAll('[id^="province_code_pembanding"]').forEach(select => {
select.onchange = function() {
handleProvinceChange(this);
};
});
document.querySelectorAll('[id^="city_code_pembanding"]').forEach(select => {
select.onchange = function() {
handleCityChange(this);
};
});
document.querySelectorAll('[id^="district_code_pembanding"]').forEach(select => {
select.onchange = function() {
handleDistrictChange(this);
};
});
}
function handleProvinceChange(provinceSelect) {
const provinceId = provinceSelect.value;
let columnIndex;
if (provinceSelect.id === 'province_code_pembanding') {
columnIndex = 1;
} else {
columnIndex = provinceSelect.id.split('_').pop();
}
if (provinceId) {
getCity(provinceId, columnIndex);
}
}
function handleCityChange(citySelect) {
const cityId = citySelect.value;
let columnIndex;
if (citySelect.id === 'city_code_pembanding') {
columnIndex = 1;
} else {
columnIndex = citySelect.id.split('_').pop();
}
if (cityId) {
getDistrict(cityId, columnIndex);
}
}
function handleDistrictChange(districtSelect) {
const districtId = districtSelect.value;
let columnIndex;
if (districtSelect.id === 'district_code_pembanding') {
columnIndex = 1;
} else {
columnIndex = districtSelect.id.split('_').pop();
}
if (districtId) {
getVillage(districtId, columnIndex);
}
}
async function getCity(provinceId, columnIndex) {
try {
const response = await fetch(`/locations/cities/province/${provinceId}`);
const data = await response.json();
const cityDropdown = columnIndex === 1 ?
document.getElementById('city_code_pembanding') :
document.getElementById(`city_code_pembanding_${columnIndex}`);
if (cityDropdown) {
cityDropdown.innerHTML = '<option value="">Pilih Kota/Kabupaten</option>';
data.forEach(city => {
cityDropdown.innerHTML += `<option value="${city.code}">${city.name}</option>`;
});
}
} catch (error) {
console.error('Error fetching cities:', error);
}
}
async function getDistrict(cityId, columnIndex) {
try {
const response = await fetch(`/locations/districts/city/${cityId}`);
const data = await response.json();
const districtDropdown = columnIndex === 1 ?
document.getElementById('district_code_pembanding') :
document.getElementById(`district_code_pembanding_${columnIndex}`);
if (districtDropdown) {
districtDropdown.innerHTML = '<option value="">Pilih Kecamatan</option>';
data.forEach(district => {
districtDropdown.innerHTML +=
`<option value="${district.code}">${district.name}</option>`;
});
}
} catch (error) {
console.error('Error fetching districts:', error);
}
}
async function getVillage(districtId, columnIndex) {
try {
const response = await fetch(`/locations/villages/district/${districtId}`);
const data = await response.json();
const villageDropdown = columnIndex === 1 ?
document.getElementById('village_code_pembanding') :
document.getElementById(`village_code_pembanding_${columnIndex}`);
if (villageDropdown) {
villageDropdown.innerHTML = '<option value="">Pilih Desa/Kelurahan</option>';
data.forEach(village => {
villageDropdown.innerHTML += `<option value="${village.code}">${village.name}</option>`;
});
}
} catch (error) {
console.error('Error fetching villages:', error);
}
}
function submitData() {
showLoadingSwal('Mengirim data ke server...');
const form = document.querySelector('form');
const formData = new FormData(form);
console.log('Form data entries:', Array.from(formData.entries()));
$.ajax({
url: '{{ route('surveyor.storeDataPembanding') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(result) {
hideLoadingSwal();
console.log(result);
if (result.success) {
Swal.fire({
title: 'Berhasil!',
text: result.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
if ("{{ Request::is('penilai/show-data-pembanding/*/edit') }}") {
console.log(
'Current route matches');
} else {
// window.location.href =
// "{{ route('surveyor.show', ['id' => $permohonan->id]) }}";
}
}
});
} else {
Swal.fire({
title: 'Error!',
text: result.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
},
error: function(xhr, status, error) {
hideLoadingSwal();
const response = JSON.parse(xhr.responseText);
console.error('Error:', response.message);
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
});
}
document.addEventListener('DOMContentLoaded', function() {
// Initialize currency format for existing inputs
document.querySelectorAll('.currency-format').forEach(input => {
input.addEventListener('input', function() {
handleCurrencyInput(this);
});
// Format initial values if they exist
if (input.value) {
input.value = formatCurrency(input.value);
}
});
// hide the "Lihat Objek Penilaian" toggle
const tableContainer = document.querySelector('.scrollable-x-auto');
const toggleContainer = document.createElement('div');
toggleContainer.className = 'flex items-center gap-4 mb-4 p-3 bg-gray-50 rounded';
const objekToggle = createCustomSwitch('Lihat Objek Penilaian', false, function(checked) {
toggleColumn(1, checked);
});
toggleContainer.appendChild(objekToggle);
tableContainer.parentNode.insertBefore(toggleContainer, tableContainer);
function createCustomSwitch(label, initialState, onChangeCallback) {
const container = document.createElement('div');
const switchLabel = document.createElement('label');
switchLabel.className = 'switch';
const input = document.createElement('input');
input.name = "check";
input.type = "checkbox";
input.value = "1";
input.checked = initialState;
const span = document.createElement('span');
span.className = 'switch-label';
span.textContent = label;
switchLabel.appendChild(input);
switchLabel.appendChild(span);
container.appendChild(switchLabel);
input.addEventListener('change', function() {
onChangeCallback(this.checked);
});
return container;
}
function toggleColumn(columnIndex, show) {
const table = document.getElementById('dataTable');
const rows = table.querySelectorAll('tr');
rows.forEach(row => {
const cells = row.querySelectorAll('td, th');
if (cells.length === 1 && cells[0].hasAttribute('colspan')) {
return;
}
if (cells[columnIndex]) {
cells[columnIndex].style.display = show ? '' : 'none';
}
});
const headerRow = table.querySelector('thead tr');
const headerCells = headerRow.querySelectorAll('th');
if (headerCells[columnIndex]) {
headerCells[columnIndex].style.display = show ? '' : 'none';
}
}
toggleColumn(1, false);
});
</script>
@endpush

View File

@@ -0,0 +1,418 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<style>
.pdf-preview {
width: 100%;
max-width: 100%;
border: 1px solid #ddd;
margin-top: 10px;
}
</style>
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50">
<h3 class="card-title">Denah</h3>
<div class="flex items-center gap-2">
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=denah" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
</div>
</div>
<div class="mx-8">
@include('lpj::component.detail-jaminan', ['status' => true])
</div>
</div>
<div class="card">
<div class="card-body">
<form id="formDenah" method="POST" enctype="multipart/form-data" class="w-full">
@csrf
<input type="hidden" value="{{ $permohonan->id }}" name="permohonan_id">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<!-- Container untuk daftar denah -->
<div id="denah-container">
@if (isset($formDenah['denahs']) && is_array($formDenah['denahs']) && count($formDenah['denahs']) > 0)
@foreach ($formDenah['denahs'] as $index => $denah)
<div class="denah-item grid gap-5 mb-5 border p-4 rounded">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-baseline flex-wrap lg:flex-nowrap gap-4">
<label class="form-label max-w-56">
<span class="form-label">Upload Denah (Foto/PDF)</span>
</label>
<div class="w-full grid gap-5">
<!-- Preview Container -->
<div class="preview-container-{{ $index }}">
@if (isset($denah['foto_denah']))
@php
$fileExtension = pathinfo(
$denah['foto_denah'],
PATHINFO_EXTENSION,
);
@endphp
@if (in_array($fileExtension, ['jpg', 'jpeg', 'png']))
<img src="{{ asset('storage/' . $denah['foto_denah']) }}"
style="max-width: 30rem;">
@elseif($fileExtension === 'pdf')
<embed src="{{ asset('storage/' . $denah['foto_denah']) }}"
type="application/pdf" width="100%" height="500px">
@endif
@endif
</div>
<div class="input-group w-full flex gap-2">
<input type="file" name="foto_denah[]"
class="file-input file-input-bordered w-full"
data-index="{{ $index }}" accept=".jpg,.jpeg,.png,.pdf"
onchange="previewFile(this)">
</div>
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap w-full gap-4">
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label">Nama Denah</span>
</label>
<input type="text" name="nama_denah[]" class="input w-full"
value="{{ $denah['nama_denah'] ?? '' }}">
</div>
</div>
</div>
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label"> Luas</span>
</label>
<input type="text" name="luas_denah[]"
class="input w-full number-format"
value="{{ isset($denah['luas_denah']) ? $denah['luas_denah'] . ' m²' : '' }}"
onkeyup="formatNumber(this)">
</div>
</div>
</div>
@if ($index > 0)
<div class="flex items-center">
<button type="button" class="btn btn-danger remove-denah">
<i class="ki-filled ki-minus"></i>
</button>
</div>
@endif
</div>
</div>
@endforeach
@else
<!-- Tambahkan satu elemen default jika tidak ada data -->
<div class="denah-item grid gap-5 mb-5 border p-4 rounded">
<!-- Isi dengan elemen default seperti sebelumnya -->
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-baseline flex-wrap lg:flex-nowrap gap-4">
<label class="form-label max-w-56">
<span class="form-label">Upload Denah (Foto/PDF)</span>
</label>
<div class="w-full grid gap-5">
<div class="preview-container-0">
<!-- Preview akan ditampilkan di sini -->
</div>
<div class="input-group w-full flex gap-2">
<input type="file" name="foto_denah[]"
class="file-input file-input-bordered w-full" data-index="0"
accept=".jpg,.jpeg,.png,.pdf" onchange="previewFile(this)">
</div>
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap w-full gap-4">
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label">Nama Denah</span>
</label>
<input type="text" name="nama_denah[]" class="input w-full">
</div>
</div>
</div>
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label"> Luas</span>
</label>
<input type="text" name="luas_denah[]" class="input w-full number-format"
onkeyup="formatNumber(this)">
</div>
</div>
</div>
</div>
</div>
@endif
</div>
<div class="w-full p-4">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label">Total Luas</span>
</label>
<input type="text" name="total_luas" id="totalLuas" class="input w-full number-format" readonly>
</div>
</div>
</div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
<button type="button" class="btn btn-success" id="saveButton" onclick="submitDenah()">
<span id="saveButtonText">Save</span>
</button>
<button class="btn btn-primary" type="button" id="tambahDenah">
Tambah Denah
</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
@include('lpj::surveyor.js.utils')
<script>
const datas = @json($denah);
let denahIndex = 1; // Mulai dari 1 karena sudah ada satu elemen default
document.addEventListener('DOMContentLoaded', function() {
// Format number input
document.querySelectorAll('.number-format').forEach(input => {
input.addEventListener('input', function() {
formatNumber(this);
});
input.addEventListener('focus', function() {
if (this.value === 'm²') {
this.setSelectionRange(0, 0); // Kursor di awal
}
});
});
// Tambah Denah
document.getElementById('tambahDenah').addEventListener('click', function() {
const denahContainer = document.getElementById('denah-container');
const newDenah = createDenahElement(denahIndex);
denahContainer.appendChild(newDenah);
denahIndex++;
const newInputs = newDenah.querySelectorAll('.number-format');
newInputs.forEach(input => {
input.addEventListener('input', function() {
formatNumber(this);
});
input.addEventListener('focus', function() {
if (this.value === 'm²') {
this.setSelectionRange(0, 0); // Kursor di awal
}
});
});
});
// Event delegation untuk tombol hapus denah
document.getElementById('denah-container').addEventListener('click', function(e) {
if (e.target.closest('.remove-denah')) {
e.target.closest('.denah-item').remove();
}
});
});
function calculateTotalLuas() {
let totalLuas = 0;
const luasInputs = document.querySelectorAll('input[name="luas_denah[]"]');
luasInputs.forEach(input => {
const value = parseFloat(input.value.replace(/[^0-9.]/g, ''));
if (!isNaN(value)) {
totalLuas += value;
}
});
const totalLuasInput = document.getElementById('totalLuas');
totalLuasInput.value = totalLuas ? `${totalLuas.toLocaleString()} m²` : '';
}
// Tambahkan event listener untuk setiap input luas_denah[]
document.addEventListener('input', function (e) {
if (e.target && e.target.name === 'luas_denah[]') {
calculateTotalLuas();
}
});
// Jalankan hitung ulang saat halaman dimuat (jika ada nilai default)
document.addEventListener('DOMContentLoaded', calculateTotalLuas);
function createDenahElement(index) {
const denahItem = document.createElement('div');
denahItem.className = 'denah-item grid gap-5 mb-5 border p-4 rounded';
denahItem.innerHTML = `
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-baseline flex-wrap lg:flex-nowrap gap-4">
<label class="form-label max-w-56">
<span class="form-label">Upload Denah (Foto/PDF)</span>
</label>
<div class="w-full grid gap-5">
<div class="preview-container-${index}">
<!-- Preview akan ditampilkan di sini -->
</div>
<div class="input-group w-full flex gap-2">
<input type="file" name="foto_denah[]"
class="file-input file-input-bordered w-full"
data-index="${index}"
accept=".jpg,.jpeg,.png,.pdf"
onchange="previewFile(this)">
</div>
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap w-full gap-4">
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label">Nama Denah</span>
</label>
<input type="text" name="nama_denah[]" class="input w-full">
</div>
</div>
</div>
<div class="w-full">
<div class="flex flex-wrap gap-4">
<div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56">
<span class="form-label"> Luas</span>
</label>
<input type="text" name="luas_denah[]"
class="input w-full number-format"
onkeyup="formatNumber(this)">
</div>
</div>
</div>
<div class="flex items-center">
<button type="button" class="btn btn-danger remove-denah">
<i class="ki-filled ki-minus"></i>
</button>
</div>
</div>
`;
return denahItem;
}
function previewFile(input) {
const index = input.getAttribute('data-index');
const previewContainer = document.querySelector(`.preview-container-${index}`);
const file = input.files[0];
// Hapus preview sebelumnya
previewContainer.innerHTML = '';
if (file) {
if (file.type.startsWith('image/')) {
// Jika file adalah gambar
const img = document.createElement('img');
img.style.maxWidth = '30rem';
const reader = new FileReader();
reader.onload = function(e) {
img.src = e.target.result;
}
reader.readAsDataURL(file);
previewContainer.appendChild(img);
} else if (file.type === 'application/pdf') {
// Jika file adalah PDF
const pdfEmbed = document.createElement('embed');
pdfEmbed.src = URL.createObjectURL(file);
pdfEmbed.type = 'application/pdf';
pdfEmbed.width = '100%';
pdfEmbed.height = '500px';
pdfEmbed.className = 'pdf-preview';
previewContainer.appendChild(pdfEmbed);
}
}
}
function submitDenah() {
showLoadingSwal('Mengirim data ke server...');
document.querySelectorAll('.number-format').forEach(input => {
if (input.value.includes('m²')) {
input.value = input.value.replace('m²', '').trim();
}
});
const formElement = $('#formDenah')[0];
const formData = new FormData(formElement);
$.ajax({
url: '{{ route('surveyor.storeDenah') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
hideLoadingSwal();
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
}
});
} else {
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
},
error: function(xhr, status, error) {
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
});
}
hideLoadingSwal();
toastrErrorBuild(error);
},
});
}
</script>
@endpush

View File

@@ -0,0 +1,222 @@
{{-- analisa fakta --}}
<div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
Analisa Fakta
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta']['fakta_positif']))
@foreach ($forminspeksi['fakta']['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old("fakta_positif.$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="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@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="10">{{ 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="10">{{ 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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Rute Menuju</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea mt-2" name="rute_menuju" rows="10">{{ old('rute_menuju.0', $forminspeksi['fakta']['rute_menuju'] ?? '') }}</textarea>
<em id="error-rute_menuju" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Batas Batas</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-1 gap-4 items-center w-full">
@if (isset($basicData['arahMataAngin']))
@foreach ($basicData['arahMataAngin'] as $item)
@php
$isChecked = in_array(
$item->name,
old('batas_batas', $forminspeksi['fakta']['batas_batas'] ?? []),
);
$inputValue = old(
'batas_batas_input.' . $item->name,
$forminspeksi['fakta']['batas_batas_input'][$item->name] ?? '',
);
@endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="batas_batas[]" type="checkbox"
value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="batas_batas_input[{{ $item->name }}]"
class="input w-full" placeholder="Masukkan Batas {{ $item->name }}..."
value="{{ $inputValue }}">
</div>
@endforeach
@endif
</div>
<em id="error-batas_batas" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi lain terkait lingkungan</label>
<div class="flex flex-wrap items-baseline w-full" id="kondisi-lingkungan-container">
@if (!empty($forminspeksi['fakta']['kondisi_lingkungan']))
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] as $index => $kondisi_lingkungan)
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="10">{{ old("kondisi_lingkungan.$index", $kondisi_lingkungan) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="10" placeholder="Tambahkan keterangan">
{{ old('kondisi_lingkungan.0', $forminspeksi['fakta']['kondisi_lingkungan'][0] ?? '') }}
</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-kondisi_lingkungan" class="alert text-danger text-sm"></em>
</div>
@endif
<button class="btn btn-primary btn-sm mt-5" type="button"
onclick="addClonableItem('kondisi-lingkungan-container', 'kondisi_lingkungan')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi lain terkait Bangunan</label>
<div id="kondisi-lain-bangunan-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta']['kondisi_lain_bangunan']))
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] as $index => $kondisi_lain_bangunan)
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="10">{{ old("kondisi_lain_bangunan.$index", $kondisi_lain_bangunan) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="10">{{ old('kondisi_lain_bangunan.0', $forminspeksi['fakta']['kondisi_lain_bangunan'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-kondisi_lain_bangunan" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button"
onclick="addClonableItem('kondisi-lain-bangunan-container', 'kondisi_lain_bangunan')"
class="btn btn-primary btn-sm mt-5 ">
<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">Informasi Terkait Dokumen</label>
<div id="informasi-dokument-container" class="flex flex-wrap items-baseline w-full">
@php
$informasi_dokument = isset($forminspeksi['fakta']['informasi_dokument'])
? (array) $forminspeksi['fakta']['informasi_dokument']
: [];
@endphp
@if (!empty($informasi_dokument))
@foreach ($informasi_dokument as $index => $document)
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="10">{{ old("informasi_dokument.$index", $document) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="10">{{ old('informasi_dokument.0', isset($forminspeksi['fakta']['informasi_dokument'][0]) ? $forminspeksi['fakta']['informasi_dokument'][0] : '') }}
</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-informasi_dokument" class="alert text-danger text-sm"></em>
</div>
@endif
<button class="btn btn-primary btn-sm mt-5" type="button"
onclick="addClonableItem('informasi-dokument-container', 'informasi_dokument')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,615 @@
<div class=" card w-full border-agi-100 rounded-lg shadow-md ">
<div class="card-header light:bg-agi-50">
@php
$title = $title ?? 'Form Inspeksi';
@endphp
<h3 class="card-title uppercase">
{{ $title }}
</h3>
<div class="flex items-center gap-2">
@php
use Illuminate\Support\Facades\Route;
@endphp
@if (isset($id))
<a href="{{ route($backLink, ['id' => $id]) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@else
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) &&
Request::is('otorisator/show/*/Pelaporan'))
<a href="{{ route('otorisator.show', ['id' => $permohonan->id, 'type' => 'Pelaporan']) }}"
class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@elseif (Auth::user()->hasAnyRole(['administrator', 'surveyor', 'penilai']))
@if (Request::is('surveyor/inspeksi/*/create') && request()->has('dokument') && request()->has('jenis_jaminan'))
<a href="{{ route('surveyor.show', $permohonan->id) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@elseif (Request::is('penilai/*/*'))
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@endif
@endif
@endif
{{-- <a href="{{ route('surveyor.show', ['id' => request('inspeksi')]) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a> --}}
</div>
</div>
<div class="card-body">
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tujuan Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->tujuanPenilaian))
<p class="text-2sm text-gray-700">{{ $permohonan->tujuanPenilaian->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->created_at->format('d/m/Y') }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label max-w-56">Debitur/Perwakilan</label>
@if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan']))
<div id="perwakilan" class="flex flex-wrap items-baseline w-full gap-5">
@foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item)
<div class="perwakilan flex flex-wrap w-full items-baseline gap-2 ">
<input type="text" class="input form-control" name="debitur_perwakilan[]"
value="{{ old('debitur_perwakilan.' . $key, $item) }}"
placeholder="Masukkan Debitur/Perwakilan" />
<button type="button" class="btn btn-danger btn-outline btn-xs remove-btn">Hapus</button>
</div>
@endforeach
</div>
@else
<div id="perwakilan" class="flex flex-wrap items-baseline w-full gap-5">
<div class="perwakilan flex flex-wrap w-full items-baseline gap-2 ">
<input type="text" class="input form-control" name="debitur_perwakilan[]"
value="{{ old('debitur_perwakilan') }}" placeholder="Masukkan Debitur/Perwakilan" />
<button type="button" class="btn btn-danger btn-outline btn-xs remove-btn"
style="display: none">Hapus
</button>
</div>
</div>
@endif
<button onclick="addClonableItem('perwakilan', 'perwakilan')" type="button" class="btn-md btn btn-primary">
<i class="ki-filled ki-plus"></i>
</button>
<em id="error-debitur_perwakilan" class="alert text-danger text-sm"></em>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label max-w-56">Pihak Bank</label>
<div id="perwakilan" class="flex items-baseline w-full gap-5">
<div class="flex gap-4 items-center w-full">
<input class="input" type="text" placeholder="Masukan Pihak Bank Selain Pj" type="text"
name="pihak_bank"
value="{{ old('pihak_bank', isset($forminspeksi['asset']['pihak_bank']) ? $forminspeksi['asset']['pihak_bank'] : '') }}">
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Nama Cadeb/Debitur</h1>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md ">
<div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Deskripsi Aset jaminan</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>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
<p class="text-2sm text-gray-700">{{ $item->jenisJaminan->name }}</p>
<input type="hidden" name="jenis_asset_name" value="{{ $item->jenisJaminan->name }}">
@endforeach
@endif
</div>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input onclick="toggleFieldVisibility('jenis_asset', 'jenis_asset', ['tidak sesuai'])"
type="radio" class="radio" name="jenis_asset" value="sesuai"
{{ isset($forminspeksi['asset']['jenis_asset']['sesuai']) ? 'checked' : '' }}>
<span class="ml-2">Ya</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('jenis_asset', 'jenis_asset', ['tidak sesuai'])"
type="radio" class="radio" name="jenis_asset" value="tidak sesuai"
{{ isset($forminspeksi['asset']['jenis_asset']['tidak sesuai']) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
<!-- Select dropdown untuk "Tidak Sesuai" -->
@php
$statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedValue = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null;
@endphp
<div id="jenis_asset" class="flex items-baseline gap-2"
style="{{ old('jenis_asset_tidak_sesuai', isset($forminspeksi['asset']['jenis_asset']['tidak sesuai'])) ? '' : 'display: none;' }}">
<select id="jenis_asset_tidak_sesuai" class="input w-full"
name="jenis_asset_tidak_sesuai" onchange="handleJenisAssetChange(this)">
<option value="">Pilih Jenis Aset</option>
@if (isset($basicData['jenisJaminan']))
@foreach ($basicData['jenisJaminan'] as $item)
<option value="{{ $item->name }}"
{{ old('jenis_asset_tidak_sesuai', $selectedValue) == $item->name ? 'selected' : '' }}>
{{ old('jenis_asset_tidak_sesuai', $selectedValue) == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
@endif
</select>
</div>
<!-- Input untuk "Lainnya" -->
<input id="jenis_asset_lainnya" type="text" name="jenis_asset_lainnya"
class="input w-full mt-2" placeholder="Masukkan Jenis Aset Lainnya..."
value="{{ old('jenis_asset_lainnya', isset($forminspeksi['asset']['jenis_asset']['Lainnya']) ? $forminspeksi['asset']['jenis_asset']['Lainnya'] : '') }}"
style="{{ old('jenis_asset_lainnya', isset($forminspeksi['asset']['jenis_asset']['Lainnya'])) == 'Lainnya' ? '' : 'display: none;' }}" />
</div>
<em id="error-jenis_asset" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat</label>
<div class="w-full">
@foreach ($permohonan->documents as $dokumen)
@php
$alamat = $dokumen;
@endphp
@endforeach
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen) }}
</span>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input onclick="createAlamat('sesuai')" type="radio" class="radio"
name="alamat_sesuai" value="sesuai"
{{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Ya</span>
</label>
<label class="form-label flex items-center gap-3 text-nowrap">
<input onclick="createAlamat('tidak sesuai')" type="radio" class="radio"
name="alamat_sesuai" value="tidak sesuai"
{{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
</div>
<em id="error-alamat_sesuai" class="alert text-danger text-sm"></em>
<em id="error-alamat_sesuai" class="alert text-danger text-sm"></em>
</div>
@php
$statusKey = isset($forminspeksi['asset']['alamat']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$address = $forminspeksi['asset']['alamat'][$statusKey] ?? null;
@endphp
<div id="alamat_form" class="grid gap-2 mt-5" style="display: none;">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Titik Koordinat Google Maps</h1>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Koordinat</label>
<div id="perwakilan" class="flex items-baseline w-full gap-5">
<div class="grid grid-cols-2 gap-4 items-center w-full">
<input class="input" type="text" placeholder="Masukan Koordinat Latitude" type="text"
name="kordinat_lat" id="lat"
value="{{ old('kordinat_lat', isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '') }}">
<input class="input" type="text" placeholder="Masukan Koordinat Longitude"
name="kordinat_lng" id="lng"
value="{{ old('kordinat_lng', isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '') }}">
</div>
<a onclick="getCoordinates()" type="button" class="btn btn-md btn-outline btn-primary">
<i class="ki-filled ki-map"></i>Ambil
Koordinat </a>
<a target="_blank" href="https://www.google.com/maps" type="button"
class="btn btn-md btn-outline btn-success">
<i class="ki-filled ki-map"></i>Ke google Maps</a>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Status</h1>
</div>
<div class="card-body w-full">
@include('lpj::component.detail-jaminan', ['status' => true])
{{-- <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label class="form-label font-medium max-w-56">Nomor NIB</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nomor_nib" class="input w-full"
value="{{ isset($forminspeksi['asset']['nomor_nib']) ? $forminspeksi['asset']['nomor_nib'] : '' }}"
placeholder="Masukkan Nomor NIB">
</div>
</div> --}}
<div class=" mx-auto rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan cadeb/debitur dengan Pemilik Jaminan</h1>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Pemilik Jaminan</label>
<div>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->documents as $dokumen)
@php
$hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A';
@endphp
<label class="form-label">
{{ $hubCadebPemilik }}
</label>
<input type="hidden" name="hub_cadeb_sesuai" value="{{ $hubCadebPemilik }}"
id="">
@endforeach
</div>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input
onclick="toggleFieldVisibility('hub_cadeb','hub_cadeb_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="hub_cadeb" value="sesuai"
{{ old('hub_cadeb', isset($forminspeksi['asset']['hub_cadeb']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Ya</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input
onclick="toggleFieldVisibility('hub_cadeb','hub_cadeb_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="hub_cadeb" value="tidak sesuai"
{{ old('hub_cadeb', isset($forminspeksi['asset']['hub_cadeb']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
<!-- Select dropdown untuk "Tidak Sesuai" -->
@php
$statusKey = isset($forminspeksi['asset']['hub_cadeb']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb'][$statusKey] ?? null;
@endphp
<select id="hub_cadeb_tidak_sesuai" class="input w-full" name="hub_cadeb_tidak_sesuai"
style="{{ $statusKey != 'sesuai' ? '' : 'display: none;' }}">
<option value="">Select Hubungan Cadeb</option>
@if (isset($basicData['hubCadeb']))
@foreach ($basicData['hubCadeb'] as $item)
@if ($item->name != $hubCadebPemilik)
<option value="{{ $item->name }}"
{{ old('hub_cadeb_tidak_sesuai', $selectedData) == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endif
@endforeach
@endif
</select>
</div>
<em id="error-hub_cadeb" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class=" mx-auto rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan Cadeb/Debitur dengan Penghuni Jaminan</h1>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Penghuni Jaminan</label>
<div class="mt-2">
<div class="flex flex-wrap items-baseline w-full text-sm">
<input type="hidden" name="hub_cadeb_penghuni_sesuai" value="ditempati sendiri"
id="">
</div>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input
onclick="toggleFieldVisibility('hub_cadeb_penghuni','hub_penghuni_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="hub_cadeb_penghuni" value="sesuai"
{{ old('hub_cadeb_penghuni', isset($forminspeksi['asset']['hub_cadeb_penghuni'])) ? 'checked' : '' }}>
<span class="ml-2">Ditempati Sendiri</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input
onclick="toggleFieldVisibility('hub_cadeb_penghuni','hub_penghuni_tidak_sesuai', ['tidak sesuai'])"
type="radio" class="radio" name="hub_cadeb_penghuni" value="tidak sesuai"
{{ old('hub_cadeb_penghuni', $forminspeksi['asset']['hub_cadeb_penghuni']['tidak sesuai'] ?? false) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
<!-- Select dropdown untuk "Tidak Sesuai" -->
@php
$statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null;
@endphp
<input id="hub_penghuni_tidak_sesuai" class="input" name="hub_penghuni_tidak_sesuai"
placeholder="Masukkan Hubungan penghuni jaminan"
value="{{ old('hub_penghuni_tidak_sesuai', isset($selectedData) ? $selectedData : '') }}"
style="{{ $statusKey != 'sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-hub_cadeb_penghuni" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function getCoordinates() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
(position) => {
// Ambil latitude dan longitude
const lat = position.coords.latitude;
const lng = position.coords.longitude;
// Masukkan ke dalam input field
document.getElementById('lat').value = lat;
document.getElementById('lng').value = lng;
toastrSuccessBuild('Koordinat berhasil diambil!');
},
(error) => {
// Handle error
switch (error.code) {
case error.PERMISSION_DENIED:
toastrErrorBuild('Pengguna menolak permintaan geolokasi.');
break;
case error.POSITION_UNAVAILABLE:
toastrErrorBuild('Informasi lokasi tidak tersedia.');
break;
case error.TIMEOUT:
toastrErrorBuild('Permintaan geolokasi mengalami timeout.');
break;
case error.UNKNOWN_ERROR:
toastrErrorBuild('Terjadi kesalahan yang tidak diketahui.');
break;
}
}
);
} else {
toastrErrorBuild('Geolocation tidak didukung oleh browser ini.');
}
}
document.addEventListener('DOMContentLoaded', function() {
// Cek radio button saat halaman dimuat
const sesuaiRadio = document.querySelector('input[name="alamat_sesuai"][value="sesuai"]');
const tidakSesuaiRadio = document.querySelector('input[name="alamat_sesuai"][value="tidak sesuai"]');
// Jika "Ya" sudah tercentang saat load halaman
if (sesuaiRadio.checked) {
createAlamat('sesuai');
}
// Jika "Tidak" sudah tercentang saat load halaman
if (tidakSesuaiRadio.checked) {
createAlamat('tidak sesuai');
}
});
function createAlamat(data) {
const createElementAlamat = document.getElementById('alamat_form');
if (data == 'sesuai') {
createElementAlamat.innerHTML = `
<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">Terletak di.</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="address" name="address" class="input w-full "
value="{{ isset($alamat->address) ? $alamat->address : old('address') }}">
</div>
</div>
<input type="hidden" name="province_code"
value="{{ isset($alamat->province) ? $alamat->province->code : '' }}">
<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($alamat->province) ? $alamat->province->name : '' }}">
</div>
</div>
<input type="hidden" name="city_code"
value="{{ isset($alamat->city) ? $alamat->city->code : '' }}">
<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($alamat->city) ? $alamat->city->name : '' }}">
</div>
</div>
<input type="hidden" name="district_code"
value="{{ isset($alamat->district) ? $alamat->district->code : '' }}">
<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($alamat->district) ? $alamat->district->name : '' }}">
</div>
</div>
<input type="hidden" name="village_code"
value="{{ isset($alamat->village) ? $alamat->village->code : '' }}">
<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($alamat->village) ? $alamat->village->name : '' }}">
</div>
</div>
</div>
`;
}
if (data === 'tidak sesuai') {
createElementAlamat.style.display = 'block';
createElementAlamat.innerHTML = `
<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">Terletak di.</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', $cekAlamat['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" onchange="getCity(this.value)">
<option value="">Select Province</option>
@foreach ($provinces as $province)
<option value="{{ $province->code }}"
@if (
(isset($cekAlamat['province_code']) && $cekAlamat['province_code'] == $province->code) ||
(!isset($cekAlamat['province_code']) &&
isset($debitur->province_code) &&
$debitur->province_code == $province->code)) selected @endif>
{{ $province->name }}
</option>
@endforeach
</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" onchange="getDistrict(this.value)">
<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" onchange="getVillage(this.value)">
<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">Desa/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>
`;
loadSavedLocationData();
}
}
document.addEventListener('DOMContentLoaded', () => {
loadSavedLocationData();
});
function handleJenisAssetChange(select) {
const lainnyaInput = document.getElementById('jenis_asset_lainnya');
if (select.value === 'Lainnya') {
lainnyaInput.style.display = 'block';
} else {
lainnyaInput.style.display = 'none';
lainnyaInput.value = ''; // Reset nilai input jika bukan "lainnya"
}
}
</script>
@include('lpj::surveyor.js.utils')

View File

@@ -0,0 +1,407 @@
<!-- Informasi Tata Ruang -->
<div class="card border border-agi-100 w-full ">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
ATURAN TATA KOTA
@else
Informasi Dinas Tata Ruang
@endif
</h3>
</div>
<div class="card-body">
<!-- Informasi Tata Ruang Form -->
<div class="grid gap-5">
@php
$inputDinasTata = [
[
'label' => 'Peruntukan',
'name' => 'peruntukan',
'index' => 0,
'value' => old(
'peruntukan',
isset($forminspeksi['fakta']['peruntukan']) ? $forminspeksi['fakta']['peruntukan'] : '',
),
],
[
'label' => 'KDB',
'name' => 'kdb',
'index' => 1,
'value' => old(
'kdb',
isset($forminspeksi['fakta']['kdb']) ? $forminspeksi['fakta']['kdb'] : '',
),
],
[
'label' => 'KDH',
'name' => 'kdh',
'index' => 2,
'value' => old(
'kdh',
isset($forminspeksi['fakta']['kdh']) ? $forminspeksi['fakta']['kdh'] : '',
),
],
[
'label' => 'GSB',
'name' => 'gsb',
'index' => 3,
'value' => old(
'gsb',
isset($forminspeksi['fakta']['gsb']) ? $forminspeksi['fakta']['gsb'] : '',
),
],
[
'label' => 'Max Lantai',
'name' => 'max_lantai',
'index' => 4,
'value' => old(
'max_lantai',
isset($forminspeksi['fakta']['max_lantai']) ? $forminspeksi['fakta']['max_lantai'] : '',
),
],
[
'label' => 'KLB',
'name' => 'klb',
'index' => 5,
'value' => old(
'klb',
isset($forminspeksi['fakta']['klb']) ? $forminspeksi['fakta']['klb'] : '',
),
],
[
'label' => 'GSS',
'name' => 'gss',
'index' => 6,
'value' => old(
'gss',
isset($forminspeksi['fakta']['gss']) ? $forminspeksi['fakta']['gss'] : '',
),
],
[
'label' => 'Pelebaran Jalan',
'name' => 'pelebaran_jalan',
'index' => 7,
'value' => old(
'pelebaran_jalan',
isset($forminspeksi['fakta']['pelebaran_jalan'])
? $forminspeksi['fakta']['pelebaran_jalan']
: '',
),
],
[
'label' => 'Nama Petugas TK',
'name' => 'nama_petugas',
'index' => 8,
'value' => old(
'nama_petugas',
isset($forminspeksi['fakta']['nama_petugas']) ? $forminspeksi['fakta']['nama_petugas'] : '',
),
],
];
@endphp
@if (count($inputDinasTata) > 0)
@foreach ($inputDinasTata as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
@error($item['name'])
<em class="alert text-danger text-sm"></em>
@enderror
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
<span class="form-label">Gambar Surat Ukur</span>
</label>
<div class="input-group w-full flex gap-2">
<input class="upload_gs" type="hidden" name="upload_gs" value="upload_gs">
<div class="w-full">
<input id="inputGistaru" type="file" name="upload_gs"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'upload-gs-preview', 'upload_gs')">
<img id="upload-gs-preview"
src="{{ isset($forminspeksi['upload_gs']) && is_string($forminspeksi['upload_gs']) && !empty($forminspeksi['upload_gs']) ? asset('storage/' . $forminspeksi['upload_gs']) : '' }}"
alt="Foto Gs" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['upload_gs']) && is_string($forminspeksi['upload_gs']) && !empty($forminspeksi['upload_gs']) ? '' : 'display: none;' }} max-width: 30rem;" />
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
<span class="form-label">Sentuh Tanahku</span>
</label>
<div class="input-group w-full flex gap-2">
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full">
<input id="inputGistaru" type="file" name="foto_sentuh_tanahku"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'sentuh_tanahku-preview', 'foto_sentuh_tanahku')"
>
<img id="sentuh_tanahku-preview"
src="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? asset('storage/' . $forminspeksi['foto_sentuh_tanahku']) : '' }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? '' : 'display: none;' }} max-width: 30rem;"/>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
<span class="form-label">Gistaru</span>
</label>
<div class="input-group w-full flex gap-2">
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full">
<input id="inputGistaru" type="file" name="foto_gistaru"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'gistaru-preview', 'foto_gistaru')">
<img id="gistaru-preview"
src="{{ isset($forminspeksi['foto_gistaru']) && is_string($forminspeksi['foto_gistaru']) && !empty($forminspeksi['foto_gistaru']) ? asset('storage/' . $forminspeksi['foto_gistaru']) : '' }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_gistaru']) && is_string($forminspeksi['foto_gistaru']) && !empty($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 30rem;" />
</div>
<a href="https://gistaru.atrbpn.go.id/rtronline" type="button" class="btn btn-light"
target="_blank">
<i class="ki-filled ki-map"></i> Gistaru
</a>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
<span class="form-label ">Bhumi</span>
</label>
<div class="input-group w-full flex gap-2">
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full grid gap-2">
<input id="inputBhumi" type="file" name="foto_bhumi"
class="file-input file-input-bordered w-full "
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'bhumi-preview', 'foto_bhumi')">
@php
$bhumiPath = isset($forminspeksi['foto_bhumi']) && is_string($forminspeksi['foto_bhumi']) && !empty($forminspeksi['foto_bhumi'])
? asset('storage/' . $forminspeksi['foto_bhumi'])
: '';
@endphp
<img id="bhumi-preview"
src="{{ $bhumiPath }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ $bhumiPath ? '' : 'display: none;' }} max-width: 30rem;" />
</div>
<a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light" target="_blank">
<i class="ki-filled ki-map"></i> Bhumi
</a>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
<span class="form-label">Blad Tata Ruang Perdaerah</span>
</label>
<div class="input-group w-full flex gap-2">
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full">
<input id="inputArgisRegion" type="file" name="foto_argis_region"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'argis-region-preview', 'foto_argis_region')">
@php
$argisRegionPath = isset($forminspeksi['foto_argis_region']) && is_string($forminspeksi['foto_argis_region']) && !empty($forminspeksi['foto_argis_region'])
? asset('storage/' . $forminspeksi['foto_argis_region'])
: '';
@endphp
<img id="argis-region-preview"
src="{{ $argisRegionPath }}"
alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
style="{{ $argisRegionPath ? '' : 'display: none;' }} max-width: 30rem;">
</div>
< </div>
</div>
</div>
<!-- Upload Photo Button -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label for="" class="form-label max-w-56 text-sm font-medium text-gray-700">Upload
Peta</label>
<div class="w-full grid gap-5">
<div class="input-group w-full flex gap-2">
<input id="foto_tempat" type="file" name="foto_tempat"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="uploadFile(this, 'foto_tempat-preview', 'foto_tempat')">
<button type="button" id="btnCamera" class="btn btn-light"
data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
@php
$fotoTempat = isset($forminspeksi['foto_tempat']) && is_string($forminspeksi['foto_tempat']) && !empty($forminspeksi['foto_tempat'])
? asset('storage/' . $forminspeksi['foto_tempat'])
: '';
@endphp
<img id="foto_tempat-preview" src="{{ $fotoTempat ?: '' }}" alt="Foto Tempat"
class="mt-2 max-w-full h-auto"
style="max-width: 30rem; {{ $fotoTempat ? '' : 'display: none;' }}">
</div>
</div>
<!-- Notes Section -->
<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="w-full">
<div id="keterangan-container" class="flex items-baseline flex-wrap gap-2.5 w-full">
@if (!empty($forminspeksi['fakta']['keterangan']) && is_array($forminspeksi['fakta']['keterangan']))
@foreach ($forminspeksi['fakta']['keterangan'] as $index => $item)
<div class="keterangan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea name="keterangan[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="10">{{ old("keterangan.$index", $item) }}</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="keterangan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea name="keterangan[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="10"></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-keterangan" class="alert text-danger text-sm"></em>
</div>
@endif
</div>
<button type="button" onclick="addClonableItem('keterangan-container', 'keterangan')"
class="btn btn-primary btn-sm mt-5 ">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
@include('lpj::surveyor.components.modal-kamera')
@push('scripts')
<script stype="text/javascript">
function uploadFile(inputElement, previewElement, url) {
// Ambil file dari elemen input
const file = inputElement.files[0];
if (!file) {
Swal.fire({
icon: 'warning',
title: 'Tidak ada file yang dipilih.',
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 1500
});
return;
}
if (inputElement.files && file) {
var reader = new FileReader();
reader.onload = function(e) {
$('#' + previewElement).attr('src', e.target.result).show();
}
reader.readAsDataURL(inputElement.files[0]);
} else {
$('#' + previewElement).hide();
}
// Buat FormData untuk mengirim file
const formData = new FormData();
const dokument = "{{ request('dokument') }}";
const permohonan = "{{ $permohonan->id }}";
formData.append('file', file);
formData.append('dokument_id', dokument);
formData.append('permohonan_id', permohonan);
$.ajax({
url: '/surveyor/upload-file-foto/' + url,
type: 'POST',
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: formData,
processData: false,
contentType: false,
success: function(response) {
if (response.success) {
// Tampilkan pesan sukses
Swal.fire({
icon: 'success',
title: response.message || 'File berhasil diunggah!',
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 1500
});
// Perbarui elemen preview
$(previewElement).attr('src', response.data.path).show();
$(inputElement).data('file-name', response.data.file_name);
} else {
// Tampilkan pesan kesalahan dari server
Swal.fire({
icon: 'error',
title: response.message || 'Gagal mengunggah file!',
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 1500
});
}
},
error: function(xhr, status, error) {
// Tampilkan pesan kesalahan
Swal.fire({
icon: 'error',
title: xhr.responseJSON?.message || 'Terjadi kesalahan saat mengunggah file.',
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 1500
});
console.error(`Error: ${error}`);
}
});
}
</script>
@include('lpj::surveyor.js.camera-editor')
@endpush

View File

@@ -0,0 +1,616 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form id="formInspeksi" method="POST" enctype="multipart/form-data" class="grid gap-5">
@csrf
<input id="permohonan_id" type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input id="dokument_id" type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
<input type="hidden" name="action" value="rap">
<input type="hidden" name="type" value="rap">
@include('lpj::surveyor.components.header')
@include('lpj::surveyor.components.rap')
@else
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@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) }}">
@if (array_intersect($kategoriUnik, ['tanah', 'bangunan', 'apartemen-kantor']))
@include('lpj::surveyor.components.header')
@endif
@foreach ($kategoriUnik as $kategori)
{{-- Tampilkan komponen sesuai kategori --}}
@include('lpj::surveyor.components.' . str_replace('-', '-', $kategori), [
'dokumen' => $dokumen,
])
@endforeach
@endif
@endif
@endforeach
@endif
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
Tanda Tangan
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline justify-between flex-wrap lg:flex-nowrap">
@foreach (['penilai', 'cabang', 'debitur', 'kjpp'] as $type)
@include('lpj::component.signature-pad', ['type' => $type])
@endforeach
</div>
</div>
<div class="card-footer">
<span class="text-sm text-danger">* Harap Menyimpan tanda tangan terlebih dahulu</span>
</div>
</div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
<button type="button" class="btn btn-primary" id="saveButton" onclick="submitData()">
<i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Simpan</span>
</button>
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('dokument'), 'jenis_jaminan_id' => request('jenis_jaminan')]) }}"
class="btn btn-info" id="saveButton">
<i class="ki-filled ki-printer"></i>
<span>Cetak Form Inspeksi</span>
</a>
</div>
</form>
</div>
@php
use Modules\Usermanagement\Models\User;
$cabangUser = User::where('id', $permohonan->user->id)->first();
// print_r($cabangUser->sign);
@endphp
@endsection
@push('scripts')
<script src="{{ asset('vendor/signature.pad.js') }}"></script>
<script type="text/javascript">
const datas = @json($forminspeksi);
console.log(datas);
document.addEventListener('DOMContentLoaded', function() {
const signaturePads = {};
const types = ['penilai', 'cabang', 'debitur', 'kjpp'];
// Initialize all signature pads
types.forEach(type => initSignaturePad(type));
function initSignaturePad(type) {
const canvas = document.getElementById(`signature-pad-${type}`);
if (!canvas) return;
// Improved canvas sizing with strict boundary control
function resizeCanvas() {
const container = canvas.closest('.signature-pad-container');
const containerWidth = container.clientWidth;
// Set canvas style dimensions
canvas.style.width = '100%';
canvas.style.height = `${containerWidth * 0.5}px`; // 2:1 aspect ratio
// Set actual canvas dimensions with high DPI support
const ratio = window.devicePixelRatio || 1;
canvas.width = containerWidth * ratio;
canvas.height = (containerWidth * 0.5) * ratio;
// Scale canvas context
const ctx = canvas.getContext('2d');
ctx.scale(ratio, ratio);
// Clear and redraw existing signature if any
if (signaturePads[type] && !signaturePads[type].isEmpty()) {
const signaturePad = signaturePads[type];
const imageData = signaturePad.toData();
signaturePad.clear();
signaturePad.fromData(imageData);
}
}
// Create signature pad with boundary and scaling control
const signaturePad = new SignaturePad(canvas, {
backgroundColor: 'rgba(255, 255, 255, 0)',
penColor: 'rgb(0, 0, 0)',
minWidth: 0.5,
maxWidth: 2.5,
throttle: 16,
dotSize: 2,
// Custom function to control signature drawing
onBegin: (event) => {
const ctx = canvas.getContext('2d');
const rect = canvas.getBoundingClientRect();
const scaleX = canvas.width / rect.width;
const scaleY = canvas.height / rect.height;
// Ensure drawing stays within canvas
if (
event.clientX < rect.left ||
event.clientX > rect.right ||
event.clientY < rect.top ||
event.clientY > rect.bottom
) {
return false;
}
}
});
signaturePads[type] = signaturePad;
// Initial resize
resizeCanvas();
// Load existing signature
if (type === 'penilai' || type === 'cabang') {
loadPenilaiAndCabangSignature(type, signaturePad);
} else {
loadSignature(type, signaturePad);
}
// Add event listeners
addEventListeners(type, signaturePad);
// Add resize listener
window.addEventListener('resize', () => {
resizeCanvas();
});
}
function drawSignature(signaturePad, imageUrl) {
const image = new Image();
image.crossOrigin = 'Anonymous';
image.onload = function() {
const ctx = signaturePad.canvas.getContext('2d');
const canvasWidth = signaturePad.canvas.width;
const canvasHeight = signaturePad.canvas.height;
// Clear previous content
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
// Calculate scaling to fit within canvas while maintaining aspect ratio
const scale = Math.min(
canvasWidth / image.width,
canvasHeight / image.height
);
const scaledWidth = image.width * scale;
const scaledHeight = image.height * scale;
// Center the image
const x = (canvasWidth - scaledWidth) / 2;
const y = (canvasHeight - scaledHeight) / 2;
// Draw the scaled and centered image
ctx.drawImage(image, x, y, scaledWidth, scaledHeight);
};
image.onerror = function() {
console.error('Error loading signature image');
};
image.src = imageUrl;
}
function addEventListeners(type, signaturePad) {
document.getElementById(`save-${type}`)?.addEventListener('click', () => saveSignature(type,
signaturePad));
document.getElementById(`clear-${type}`)?.addEventListener('click', () => clearSignature(
signaturePad));
document.getElementById(`delete-${type}`)?.addEventListener('click', () => deleteSignature(type,
signaturePad));
}
function saveSignature(type, signaturePad) {
// Prevent saving empty signature for debitur and kjjp
if (signaturePad.isEmpty() && type !== 'penilai' && type !== 'cabang') {
Swal.fire({
icon: 'warning',
title: 'Peringatan',
text: 'Harap memberikan tanda tangan terlebih dahulu.'
});
return;
}
// Use high-quality PNG with appropriate scaling
const signatureDataUrl = signaturePad.isEmpty() ?
(type === 'penilai' ?
`{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` :
(type === 'cabang' ?
`{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}` :
'')) :
signaturePad.toDataURL('image/png', 1.0); // Use full quality
const data = {
signature: signatureDataUrl,
type: type,
name: document.getElementById(`name-${type}`)?.value,
document_id: document.getElementById('dokument_id')?.value,
permohonan_id: document.getElementById('permohonan_id')?.value
};
Swal.fire({
title: 'Menyimpan...',
allowOutsideClick: false,
didOpen: () => Swal.showLoading()
});
fetch(`{{ url('/surveyor/signatures') }}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}',
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
Swal.close();
if (data.success) {
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: 'Tanda tangan berhasil disimpan!',
timer: 1500
});
} else {
throw new Error(data.message || 'Terjadi kesalahan');
}
})
.catch(error => {
Swal.fire({
icon: 'error',
title: 'Error',
text: error.message || 'Terjadi kesalahan saat menyimpan tanda tangan'
});
});
}
function drawSignature(signaturePad, imageUrl) {
const image = new Image();
image.crossOrigin = 'Anonymous'; // Handle cross-origin images
image.onload = function() {
const ctx = signaturePad.canvas.getContext('2d');
ctx.clearRect(0, 0, signaturePad.canvas.width, signaturePad.canvas.height);
// Calculate scaling to fit within canvas while maintaining aspect ratio
const scale = Math.min(
signaturePad.canvas.width / image.width,
signaturePad.canvas.height / image.height
);
const scaledWidth = image.width * scale;
const scaledHeight = image.height * scale;
const x = (signaturePad.canvas.width - scaledWidth) / 2;
const y = (signaturePad.canvas.height - scaledHeight) / 2;
ctx.drawImage(image, x, y, scaledWidth, scaledHeight);
};
image.onerror = function() {
console.error('Error loading signature image');
};
image.src = imageUrl;
}
function loadPenilaiAndCabangSignature(type, signaturePad) {
const nameInputElement = document.getElementById(`name-${type}`);
const params = new URLSearchParams({
document_id: document.getElementById('dokument_id')?.value,
permohonan_id: document.getElementById('permohonan_id')?.value
});
fetch(`{{ url('/surveyor/signatures/${type}') }}?${params}`)
.then(response => response.json())
.then(data => {
if (data.success && data.data?.signature) {
drawSignature(signaturePad, data.data.signature);
if (nameInputElement) {
nameInputElement.value = data.data.name || '';
}
} else {
const signUrl = type === 'penilai' ?
`{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` :
`{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}`;
drawSignature(signaturePad, signUrl);
const defaultName = type === 'penilai' ?
`{{ Auth::user()->name }}` :
`{{ $cabangUser->name }}`;
if (nameInputElement) {
nameInputElement.value = defaultName;
}
}
})
.catch(error => console.error(`Error loading ${type} signature:`, error));
}
function saveSignature(type, signaturePad) {
if (signaturePad.isEmpty() && type !== 'penilai' && type !== 'cabang') {
Swal.fire({
icon: 'warning',
title: 'Peringatan',
text: 'Harap memberikan tanda tangan terlebih dahulu.'
});
return;
}
const signatureDataUrl = signaturePad.isEmpty() ?
(type === 'penilai' ?
`{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` :
(type === 'cabang' ?
`{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}` :
'')) :
signaturePad.toDataURL('image/png');
const data = {
signature: signatureDataUrl,
type: type,
name: document.getElementById(`name-${type}`)?.value,
document_id: document.getElementById('dokument_id')?.value,
permohonan_id: document.getElementById('permohonan_id')?.value
};
Swal.fire({
title: 'Menyimpan...',
allowOutsideClick: false,
didOpen: () => Swal.showLoading()
});
fetch(`{{ url('/surveyor/signatures') }}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}',
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
Swal.close();
if (data.success) {
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: 'Tanda tangan berhasil disimpan!',
timer: 1500
});
} else {
throw new Error(data.message || 'Terjadi kesalahan');
}
})
.catch(error => {
Swal.fire({
icon: 'error',
title: 'Error',
text: error.message || 'Terjadi kesalahan saat menyimpan tanda tangan'
});
});
}
function loadSignature(type, signaturePad) {
const nameInputElement = document.getElementById(`name-${type}`);
const params = new URLSearchParams({
document_id: document.getElementById('dokument_id')?.value,
permohonan_id: document.getElementById('permohonan_id')?.value
});
fetch(`{{ url('/surveyor/signatures/${type}') }}?${params}`)
.then(response => response.json())
.then(data => {
if (data.success && data.data?.signature) {
drawSignature(signaturePad, data.data.signature);
}
if (nameInputElement) {
nameInputElement.value = data.data?.name || '';
}
})
.catch(error => console.error('Error loading signature:', error));
}
function drawSignature(signaturePad, imageUrl) {
const image = new Image();
image.onload = function() {
const ctx = signaturePad.canvas.getContext('2d');
ctx.clearRect(0, 0, signaturePad.canvas.width, signaturePad.canvas.height);
ctx.drawImage(image, 0, 0, signaturePad.canvas.width, signaturePad.canvas.height);
};
image.src = imageUrl;
}
function deleteSignature(type, signaturePad) {
Swal.fire({
title: 'Konfirmasi',
text: 'Apakah Anda yakin ingin menghapus tanda tangan ini?',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Ya, Hapus',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
const data = {
type: type,
document_id: document.getElementById('dokument_id')?.value,
permohonan_id: document.getElementById('permohonan_id')?.value
};
fetch(`{{ url('/surveyor/signatures/${type}') }}`, {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}',
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
if (data.success) {
clearSignature(signaturePad);
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: 'Tanda tangan berhasil dihapus!',
timer: 1500
});
} else {
throw new Error(data.message || 'Terjadi kesalahan');
}
})
.catch(error => {
Swal.fire({
icon: 'error',
title: 'Error',
text: error.message ||
'Terjadi kesalahan saat menghapus tanda tangan'
});
});
}
});
}
function clearSignature(signaturePad) {
signaturePad.clear();
}
// Handle window resize untuk canvas responsif
window.addEventListener('resize', function() {
types.forEach(type => {
const canvas = document.getElementById(`signature-pad-${type}`);
if (canvas) {
setCanvasSize(canvas);
const signaturePad = signaturePads[type];
if (type === 'penilai' || type === 'cabang') {
loadPenilaiAndCabangSignature(type, signaturePad);
} else {
loadSignature(type, signaturePad);
}
}
});
});
});
function submitData() {
showLoadingSwal('Mengirim data ke server...');
const form = document.querySelector('form');
const formData = new FormData(form);
const fotoFields = [
'foto_gistaru',
'foto_bhumi',
'foto_argis_region',
'foto_tempat',
'foto_sentuh_tanahku',
'upload_gs'
];
fotoFields.forEach((field) => {
formData.delete(field);
});
$.ajax({
url: '{{ route('surveyor.store') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
hideLoadingSwal();
if (response.success) {
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
}
});
} else {
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
console.log(response);
},
error: function(xhr, status, error) {
hideLoadingSwal();
if (status === 'timeout') {
Swal.fire({
title: 'Timeout!',
text: 'Waktu permintaan habis. Silakan coba lagi.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
toastrErrorBuild(value[0]);
});
} else {
Swal.fire({
title: 'Error!',
text: xhr.responseJSON?.message || 'Terjadi kesalahan saat mengirim data.',
icon: 'error',
confirmButtonText: 'OK'
});
}
},
timeout: 10000
});
}
// Ensure existing remove buttons are functional
document.addEventListener('DOMContentLoaded', () => {
const removeButtons = document.querySelectorAll('.remove-btn');
removeButtons.forEach(button => {
button.addEventListener('click', function() {
this.closest('.perwakilan').remove();
});
});
document.querySelectorAll('.number-format').forEach(input => {
input.addEventListener('input', function() {
formatNumber(this);
});
});
});
</script>
@include('lpj::surveyor.js.utils')
@endpush

View File

@@ -0,0 +1,901 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
<div class="flex items-center gap-2">
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
</div>
</div>
<div class="card-body">
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tujuan Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->tujuanPenilaian))
<p class="text-2sm text-gray-700">{{ $permohonan->tujuanPenilaian->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->created_at->format('d/m/Y') }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->name))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Wakil Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nama_wakil" class="input" placeholder="Masukkan Hubungan Calon Debitur"
value="{{ old('nama_wakil_debitur', $forminspeksi['nama_wakil_debitur'] ?? '') }}">
<em id="error-nama_wakil_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Hubungan Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="hub_calon_debitur" class="input"
placeholder="Masukkan Hubungan Calon Debitur"
value="{{ old('hub_calon_debitur', $forminspeksi['hub_calon_debitur'] ?? '') }}">
<em id="error-hub_calon_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Data Jaminan
</h3>
</div>
<div class="card-body rounded-lg overflow-hidden">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Pesawat</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['jenisKapal']))
@foreach ($basicData['jenisKapal'] as $item)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="jenis_kapal[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('jenis_kapal', [])) ||
(isset($forminspeksi['jenis_kapal']) &&
is_array($forminspeksi['jenis_kapal']) &&
in_array($item->name, $forminspeksi['jenis_kapal']))
? 'checked'
: '' }}
onclick="toggleCheckboxVisibility('jenis_kapal', 'jenis_kapal_lainnya', ['lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'lainnya') == 0)
<input id="jenis_kapal_lainnya" type="text"
style="{{ isset($forminspeksi['jenis_kapal_lainnya']) && $forminspeksi['jenis_kapal_lainnya'] ? '' : 'display: none;' }}"
name="jenis_kapal_lainnya" class="input w-full mt-2"
placeholder="Masukkan bentuk tanah..."
value="{{ old('jenis_kapal_lainnya', $forminspeksi['jenis_kapal_lainnya'] ?? '') }}" />
@endif
</div>
@endforeach
@endif
</div>
<em id="error-jenis_kapal" class="alert text-danger text-sm"></em>
</div>
</div>
@php
$inputDataJaminan = [
[
'label' => 'Size',
'value' => ['Small', 'Large', 'Medium', 'Very Large'],
'name' => 'size',
'index' => 0,
],
[
'label' => 'Kondisi',
'value' => ['Laik Laut', 'Sekrap', 'Rusak', 'Progress', 'Konversi'],
'name' => 'kondisi',
'index' => 1,
],
[
'label' => 'Klasifikasi
',
'value' => ['IACS', 'BKI', 'Lainnya'],
'name' => 'klasifikasi',
'index' => 2,
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-2">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($item['value']))
@foreach ($item['value'] as $value)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="{{ $item['name'] }}[]" type="checkbox"
value="{{ $value }}"
{{ in_array($value, old($item['name'], $forminspeksi[$item['name']] ?? [])) ? 'checked' : '' }} />
{{ $value }}
</label>
</div>
@endforeach
@endif
</div>
<div class="w-full">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
<em id="error-{{ $item['name'] }}-input-{{ $loop->index }}"
class="alert text-danger text-sm"></em>
</div>
</div>
</div>
@endforeach
@endif
@php
$inputDataJaminan = [
[
'label' => 'Nama Kapal',
'name' => 'nama_kapal',
'value' => old('nama_kapal', $forminspeksi['nama_kapal'] ?? ''),
'index' => 0,
],
[
'label' => 'Pemilik Kapal',
'name' => 'pemilik_kapal',
'value' => old('pemilik_kapal', $forminspeksi['pemilik_kapal'] ?? ''),
'index' => 1,
],
[
'label' => 'Bendera',
'name' => 'bendera',
'value' => old('bendera', $forminspeksi['bendera'] ?? ''),
'index' => 2,
],
[
'label' => 'Nomor Tanda Selar',
'name' => 'nomor_selar',
'value' => old('nomor_selar', $forminspeksi['nomor_selar'] ?? ''),
'index' => 3,
],
[
'label' => 'Kapal',
'name' => 'kapal',
'value' => old('kapal', $forminspeksi['kapal'] ?? ''),
'index' => 4,
],
[
'label' => 'Galangan',
'name' => 'galangan_kapal',
'value' => old('galangan_kapal', $forminspeksi['galangan_kapal'] ?? ''),
'index' => 5,
],
[
'label' => 'Kapal/Shipyard',
'name' => 'kapal_shipyard',
'value' => old('kapal_shipyard', $forminspeksi['kapal_shipyard'] ?? ''),
'index' => 6,
],
[
'label' => 'Tahun Pembuatan',
'name' => 'tahun_pembuatan',
'value' => old('tahun_pembuatan', $forminspeksi['tahun_pembuatan'] ?? ''),
'index' => 7,
],
[
'label' => 'Tahun Lanuncing',
'name' => 'tahun_launcing',
'value' => old('tahun_launcing', $forminspeksi['tahun_launcing'] ?? ''),
'index' => 8,
],
[
'label' => 'DWT (ton)',
'name' => 'dwt',
'value' => old('dwt', $forminspeksi['dwt'] ?? ''),
'index' => 9,
],
[
'label' => 'LWT (ton)',
'name' => 'lwt',
'value' => old('lwt', $forminspeksi['lwt'] ?? ''),
'index' => 10,
],
[
'label' => 'Gross Tonnage (ton)',
'name' => 'gross_tonnage',
'value' => old('gross_tonnage', $forminspeksi['gross_tonnage'] ?? ''),
'index' => 11,
],
[
'label' => 'Net Tonnage (ton)',
'name' => 'net_tonnage',
'value' => old('net_tonnage', $forminspeksi['net_tonnage'] ?? ''),
'index' => 12,
],
[
'label' => 'Tenaga Mesin (HP)',
'name' => 'tenaga_mesin',
'value' => old('tenaga_mesin', $forminspeksi['tenaga_mesin'] ?? ''),
'index' => 13,
],
[
'label' => 'LOA',
'name' => 'loa',
'value' => old('loa', $forminspeksi['loa'] ?? ''),
'index' => 14,
],
[
'label' => 'LBP',
'name' => 'lbp',
'value' => old('lbp', $forminspeksi['lbp'] ?? ''),
'index' => 15,
],
[
'label' => 'Beam',
'name' => 'beam',
'value' => old('beam', $forminspeksi['beam'] ?? ''),
'index' => 16,
],
[
'label' => 'Depth',
'name' => 'depth',
'value' => old('depth', $forminspeksi['depth'] ?? ''),
'index' => 17,
],
[
'label' => 'Draft',
'name' => 'draft',
'value' => old('draft', $forminspeksi['draft'] ?? ''),
'index' => 18,
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Struktur Kapal
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputStrukturKapal = [
[
'label' => 'Lambung Kapal',
'name' => 'lambung_kapal',
'value' => old('lambung_kapal', $forminspeksi['lambung_kapal'] ?? ''),
'index' => 0,
],
[
'label' => 'Dek',
'name' => 'dek',
'value' => old('dek', $forminspeksi['dek'] ?? ''),
'index' => 1,
],
[
'label' => 'Struktur Rangka',
'name' => 'struktur_rangka',
'value' => old('struktur_rangka', $forminspeksi['struktur_rangka'] ?? ''),
'index' => 2,
],
[
'label' => 'Palka',
'name' => 'palka',
'value' => old('palka', $forminspeksi['palka'] ?? ''),
'index' => 3,
],
[
'label' => 'Pondasi Mesin',
'name' => 'pondasi_mesin',
'value' => old('pondasi_mesin', $forminspeksi['pondasi_mesin'] ?? ''),
'index' => 4,
],
[
'label' => 'Area Mesin',
'name' => 'area_mesin',
'value' => old('area_mesin', $forminspeksi['area_mesin'] ?? ''),
'index' => 5,
],
[
'label' => 'Cat dan Korosi',
'name' => 'cat_dan_korosi',
'value' => old('cat_dan_korosi', $forminspeksi['cat_dan_korosi'] ?? ''),
'index' => 6,
],
[
'label' => 'Sistem Pengelasan',
'name' => 'sistem_pengelasan',
'value' => old('sistem_pengelasan', $forminspeksi['sistem_pengelasan'] ?? ''),
'index' => 7,
],
];
@endphp
@if (count($inputStrukturKapal) > 0)
@foreach ($inputStrukturKapal as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
<em id="error_{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_struktur" id="" class="textarea">{{ old('deskripsi_struktur', $forminspeksi['deskripsi_struktur'] ?? '') }}</textarea>
<em id="error_deskripsi_struktur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- Peralatan Keselamatan --}}
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Peralatan Keselamatan
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputPeralatan = [
[
'label' => 'Sekoci/Lifeboat',
'name' => 'sekoci',
'value' => old('sekoci', $forminspeksi['sekoci'] ?? ''),
'index' => 0,
],
[
'label' => 'Jaket Pelampung',
'name' => 'jaket_pelampung',
'value' => old('jaket_pelampung', $forminspeksi['jaket_pelampung'] ?? ''),
'index' => 1,
],
[
'label' => 'Alat Pemadam',
'name' => 'alat_pemadaman',
'value' => old('alat_pemadaman', $forminspeksi['alat_pemadaman'] ?? ''),
'index' => 2,
],
[
'label' => 'Rambu Darurat',
'name' => 'rambu_darurat',
'value' => old('rambu_darurat', $forminspeksi['rambu_darurat'] ?? ''),
'index' => 3,
],
[
'label' => 'Sistem Alarm',
'name' => 'sistem_alarm',
'value' => old('sistem_alarm', $forminspeksi['sistem_alarm'] ?? ''),
'index' => 4,
],
[
'label' => 'Sistem Pencegah',
'name' => 'sistem_pencegah',
'value' => old('sistem_pencegah', $forminspeksi['sistem_pencegah'] ?? ''),
'index' => 5,
],
[
'label' => 'Kebakaran',
'name' => 'kebakaran',
'value' => old('kebakaran', $forminspeksi['kebakaran'] ?? ''),
'index' => 6,
],
[
'label' => 'Lampu Darurat',
'name' => 'lampu_darurat',
'value' => old('lampu_darurat', $forminspeksi['lampu_darurat'] ?? ''),
'index' => 7,
],
];
@endphp
@if (count($inputPeralatan) > 0)
@foreach ($inputPeralatan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_peralatan" id="" class="textarea">{{ old('deskripsi_peralatan', $forminspeksi['deskripsi_peralatan'] ?? '') }}</textarea>
<em id="error-deskripsi_peralatan" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- Sistwm Navigasi dan Komunikasi --}}
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Sistem Navigasi dan Komunikasi
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputDataLoaksi = [
[
'label' => 'Gps',
'name' => 'gps',
'value' => old('gps', $forminspeksi['gps'] ?? ''),
'index' => 0,
],
[
'label' => 'Radar',
'name' => 'radar',
'value' => old('radar', $forminspeksi['radar'] ?? ''),
'index' => 1,
],
[
'label' => 'Radio Komunikasi',
'name' => 'radio_komunikasi',
'value' => old('radio_komunikasi', $forminspeksi['radio_komunikasi'] ?? ''),
'index' => 2,
],
[
'label' => 'Lampu Navigasi',
'name' => 'lampu_navigasi',
'value' => old('lampu_navigasi', $forminspeksi['lampu_navigasi'] ?? ''),
'index' => 3,
],
[
'label' => 'Sistem Kendali otomatis',
'name' => 'sistem_kendali_otomatis',
'value' => old('sistem_kendali_otomatis', $forminspeksi['sistem_kendali_otomatis'] ?? ''),
'index' => 4,
],
[
'label' => 'Kompas',
'name' => 'kompas',
'value' => old('kompas', $forminspeksi['kompas'] ?? ''),
'index' => 5,
],
];
@endphp
@if (count($inputDataLoaksi) > 0)
@foreach ($inputDataLoaksi as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_navigasi" id="" class="textarea">{{ old('deskripsi_navigasi', $forminspeksi['deskripsi_navigasi'] ?? '') }}</textarea>
<em id="error-deskripsi_navigasi" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- Sistwm Mesin dan Penggerak Kapal --}}
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Sistem Mesin dan Penggerak Kapal
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputSistemPengerak = [
[
'label' => 'Mesin Utama',
'name' => 'mesin_utama',
'value' => old('mesin_utama', $forminspeksi['mesin_utama'] ?? ''),
'index' => 0,
],
[
'label' => 'Mesin Bantu',
'name' => 'mesin_bantu',
'value' => old('mesin_bantu', $forminspeksi['mesin_bantu'] ?? ''),
'index' => 1,
],
[
'label' => 'Pompa Pendingin',
'name' => 'pompa_pendingin',
'value' => old('pompa_pendingin', $forminspeksi['pompa_pendingin'] ?? ''),
'index' => 2,
],
[
'label' => 'Sistem Pelumasan',
'name' => 'sistem_pelumasan',
'value' => old('sistem_pelumasan', $forminspeksi['sistem_pelumasan'] ?? ''),
'index' => 3,
],
[
'label' => 'Propeller',
'name' => 'propeller',
'value' => old('propeller', $forminspeksi['propeller'] ?? ''),
'index' => 4,
],
[
'label' => 'Sistem Kelistrikan',
'name' => 'sistem_kelistrikan',
'value' => old('sistem_kelistrikan', $forminspeksi['sistem_kelistrikan'] ?? ''),
'index' => 5,
],
];
@endphp
@if (count($inputSistemPengerak) > 0)
@foreach ($inputSistemPengerak as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value={{ $item['value'] }}>
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_mesin_penggerak" id="" class="textarea">{{ old('deskripsi_mesin_penggerak', $forminspeksi['deskripsi_mesin_penggerak'] ?? '') }}</textarea>
<em id="error-deskripsi_mesin_penggerak" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- Sistwm kelistrikan dan Elektronik --}}
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Sistem Kelistrikan dan Elektronik
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputSistemKelistrikan = [];
$inputSistemKelistrikan = [
[
'label' => 'Lampu Navigasi',
'name' => 'lampu_navigasi',
'value' => old('lampu_navigasi', $forminspeksi['lampu_navigasi'] ?? ''),
'index' => 0,
],
[
'label' => 'Sistem Penerangan',
'name' => 'sistem_penerangan',
'value' => old('sistem_penerangan', $forminspeksi['sistem_penerangan'] ?? ''),
'index' => 1,
],
[
'label' => 'Sistem Panel Distribusi',
'name' => 'sistem_panel_distribusi',
'value' => old('sistem_panel_distribusi', $forminspeksi['sistem_panel_distribusi'] ?? ''),
'index' => 2,
'index' => 2,
],
[
'label' => 'Kabel dan Perangkat Pendukung',
'name' => 'kabel_perangkat',
'value' => old('kabel_perangkat', $forminspeksi['kabel_perangkat'] ?? ''),
'index' => 3,
],
];
@endphp
@if (count($inputSistemKelistrikan) > 0)
@foreach ($inputSistemKelistrikan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_kelistrikan" id="" class="textarea">{{ old('deskripsi_kelistrikan', $forminspeksi['deskripsi_kelistrikan'] ?? '') }}</textarea>
<em id="error_deskripsi_kelistrikan" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
{{-- Linkungan dan Kebersihan Kapal --}}
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Linkungan dan Kebersihan Kapal
</h3>
</div>
<div class="card-body overflow-hidden">
<div class="grid gap-5">
@php
$inputLinkungan = [
[
'label' => 'Kebersihan Dek Luar',
'name' => 'kebersihan_dek_luar',
'value' => old('kebersihan_dek_luar', $forminspeksi['kebersihan_dek_luar'] ?? ''),
'index' => 0,
],
[
'label' => 'Tangki Limbah',
'name' => 'tangki_limbah',
'value' => old('tangki_limbah', $forminspeksi['tangki_limbah'] ?? ''),
'index' => 1,
],
[
'label' => 'Sistem Pengelolaan Limbah',
'name' => 'sistem_pengelolaan_limbah',
'value' => old('sistem_pengelolaan_limbah', $forminspeksi['sistem_pengelolaan_limbah'] ?? ''),
'index' => 2,
],
[
'label' => 'Pengelolaan Air Ballast',
'name' => 'pengelolaan_air_ballast',
'value' => old('pengelolaan_air_ballast', $forminspeksi['pengelolaan_air_ballast'] ?? ''),
'index' => 3,
'index' => 3,
],
];
@endphp
@if (count($inputLinkungan) > 0)
@foreach ($inputLinkungan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value={{ $item['value'] }}>
<em id="error_{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi_kebersihan" id="" class="textarea">{{ old('deskripsi_kebersihan', $forminspeksi['deskripsi_kebersihan'] ?? '') }}</textarea>
<em id="error_deskripsi_kebersihan" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_positif']))
@foreach ($forminspeksi['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old("fakta_positif.$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="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_negatif']))
@foreach ($forminspeksi['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="10">{{ 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="10">{{ old('fakta_negatif.0', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan Yang Perlu Diperhatikan</label>
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">
<div class="catatan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old('catatan.0', $forminspeksi['catatan'][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-catatan" class="alert text-danger text-sm"></em>
</div>
<button type="button"
onclick="addClonableItem('catatan-container', 'catatan')"
class="btn btn-primary btn-sm mt-5 ">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,750 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
<div class="flex items-center gap-2">
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
</div>
</div>
<div class="card-body">
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tujuan Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->tujuanPenilaian))
<p class="text-2sm text-gray-700">{{ $permohonan->tujuanPenilaian->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Dibuat</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->created_at->format('d/m/Y') }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
<label class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tanggal_survey" class="input"
placeholder="Masukkan Hubungan Calon Debitur" value="{{ $forminspeksi['tanggal_survey'] ?? "" }}">
<em id="error-tanggal_survey" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->name))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Wakil Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nama_wakil" class="input"
placeholder="Masukkan Hubungan Calon Debitur" value="{{ $forminspeksi['nama_wakil'] ?? '' }}">
<em id="error-nama_wakil" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Hubungan Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="hub_calon_debitur" class="input"
placeholder="Masukkan Hubungan Calon Debitur" value="{{$forminspeksi['hub_calon_debitur'] ?? ''}}">
<em id="error-hub_calon_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
{{-- lokasi jaminan --}}
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Data Data Jaminan</h1>
</div>
<div class="card-body">
<div class="grid gap-5">
@include('lpj::component.detail-jaminan', ['status' => true])
@php
$inputDataJaminan = [
[
'label' => 'Masa Berlaku STNK',
'name' => 'masa_stnk',
'index' => 7,
'value' => old('masa_stnk', $forminspeksi['masa_stnk'] ?? '')
],
[
'label' => 'Masa Berlaku Pajak',
'name' => 'masa_pajak',
'index' => 8,
'value' => old('masa_pajak', $forminspeksi['masa_pajak'] ?? '')
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{$item['value'] ?? ''}}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Kondisi Fisik Objek
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kendaraan</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['jenisKendaraan']))
@foreach ($basicData['jenisKendaraan'] as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="kendaraan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kendaraan', $forminspeksi['kendaraan'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="kendaraan_input[]" class="input w-full"
id="kendaraan_input" placeholder="Masukkan {{ $item->name }}..."
value="{{ old('kendaraan_input.' . $loop->index, $forminspeksi['kendaraan_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<em id="error-kendaraan" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="kondisi" class="input" placeholder="Masukkan Kondisi" value="{{ $forminspeksi['kondisi'] ?? '' }}">
<em id="error-kondisi" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor polisi</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomo_polisi = isset($details['nomo_polisi']) ? $details['nomo_polisi'] : 'N/A';
@endphp
<p class="text-2sm text-gray-700">{{ $nomo_polisi }} </p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="nomor_polisi" value="sesuai"
onclick="toggleTidakSesuai('nomor_polisi', 'nomor_polis_tidak_sesuai')"
{{ old('nomor_polisi', $forminspeksi['nomor_polisi'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="nomor_polisi" value="tidak sesuai"
onclick="toggleTidakSesuai('nomor_polisi', 'nomor_polis_tidak_sesuai')"
{{ old('nomor_polisi', $forminspeksi['nomor_polisi'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<input type="text" name="nomor_polis_tidak_sesuai" id="nomor_polis_tidak_sesuai"
class="input w-full" placeholder="Masukan Nomor polisi"
value="{{ old('nomor_polis_tidak_sesuai', $forminspeksi['nomor_polis_tidak_sesuai'] ?? '') }}"
style="{{ old('nomor_polisi', $forminspeksi['nomor_polisi'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-nomor_polisi" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Merek</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$merek = isset($details['merek']) ? $details['merek'] : 'N/A';
@endphp
<p class="text-2sm text-gray-700">{{ $merek }} </p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="merek" value="sesuai"
onclick="toggleTidakSesuai('merek', 'merek_tidak_sesuai')"
{{ old('merek', $forminspeksi['merek'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="merek" value="tidak sesuai"
onclick="toggleTidakSesuai('merek', 'merek_tidak_sesuai')"
{{ old('merek', $forminspeksi['merek'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<input type="text" name="merek_tidak_sesuai" id="merek_tidak_sesuai"
class="input w-full" placeholder="Masukan Merek"
value="{{ old('merek_tidak_sesuai', $forminspeksi['merek_tidak_sesuai'] ?? '') }}"
style="{{ old('merek', $forminspeksi['merek'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-merek" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Warna</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$warna = isset($details['warna']) ? $details['warna'] : 'N/A';
@endphp
<p class="text-2sm text-gray-700">{{ $warna }} </p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="warna" value="sesuai"
onclick="toggleTidakSesuai('warna', 'warna_tidak_sesuai')"
{{ old('warna', $forminspeksi['warna'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="warna" value="tidak sesuai"
onclick="toggleTidakSesuai('warna', 'warna_tidak_sesuai')"
{{ old('warna', $forminspeksi['warna'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<input type="text" name="warna_tidak_sesuai" id="warna_tidak_sesuai"
class="input w-full" placeholder="Masukan Warna"
value="{{ old('warna_tidak_sesuai', $forminspeksi['warna_tidak_sesuai'] ?? '') }}"
style="{{ old('warna', $forminspeksi['warna'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-warna" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Rangka</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomor_rangka = isset($details['nomor_rangka']) ? $details['nomor_rangka'] : 'N/A';
@endphp
<p class="text-2sm text-gray-700">{{ $nomor_rangka }} </p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="nomor_rangka" value="sesuai"
onclick="toggleTidakSesuai('nomor_rangka', 'nomor_rangka_tidak_sesuai')"
{{ old('nomor_rangka', $forminspeksi['nomor_rangka'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="nomor_rangka" value="tidak sesuai"
onclick="toggleTidakSesuai('nomor_rangka', 'nomor_rangka_tidak_sesuai')"
{{ old('nomor_rangka', $forminspeksi['nomor_rangka'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<input type="text" name="nomor_rangka_tidak_sesuai" id="nomor_rangka_tidak_sesuai"
class="input w-full" placeholder="Masukan Nomor Rangka"
value="{{ old('nomor_rangka_tidak_sesuai', $forminspeksi['nomor_rangka_tidak_sesuai'] ?? '') }}"
style="{{ old('nomor_rangka', $forminspeksi['nomor_rangka'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-nomor_rangka" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Mesin</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomor_mesin = isset($details['nomor_mesin']) ? $details['nomor_mesin'] : 'N/A';
@endphp
<p class="text-2sm text-gray-700">{{ $nomor_mesin }} </p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="flex flex-wrap items-baseline w-full">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="nomor_mesin" value="sesuai"
onclick="toggleTidakSesuai('nomor_mesin', 'nomor_mesin_tidak_sesuai')"
{{ old('nomor_mesin', $forminspeksi['nomor_mesin'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="nomor_mesin" value="tidak sesuai"
onclick="toggleTidakSesuai('nomor_mesin', 'nomor_mesin_tidak_sesuai')"
{{ old('nomor_mesin', $forminspeksi['nomor_mesin'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<input type="text" name="nomor_mesin_tidak_sesuai" id="nomor_mesin_tidak_sesuai"
class="input w-full" placeholder="Masukan Nomor Mesin"
value="{{ old('nomor_mesin_tidak_sesuai', $forminspeksi['nomor_mesin_tidak_sesuai'] ?? '') }}"
style="{{ old('nomor_mesin', $forminspeksi['nomor_mesin'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div>
<em id="error-nomor_mesin" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Posisi Kilometer</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="posisi_kilometer" class="input" placeholder="Posisi Kilometer" value="{{ $forminspeksi['posisi_kilometer'] ?? '' }}">
<em id="error-posisi_kilometer" class="alert text-danger text-sm"></em>
</div>
</div>
@php
$inputDataJaminan = [
[
'label' => 'Transmisi',
'value' => ['Otomatis', 'Manual'],
'name' => 'transmisi',
'index' => 0,
],
[
'label' => 'Mesin dan panel Instrument',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'mesin_panel_instrument',
'index' => 1,
],
[
'label' => 'Fungsi Mesin dan panel Instument',
'value' => ['Berfungsi', 'Rusak'],
'name' => 'fungsi_mesin_panel_instrument',
'index' => 2,
],
[
'label' => 'Interior',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'interior',
'index' => 3,
],
[
'label' => 'Jumlah pintu',
'value' => ['Dua Pintu', 'Empat Pintu', 'Lain-Lain'],
'name' => 'jumlah_pintu',
'index' => 4,
],
[
'label' => 'Rangka dan karoseri',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'rangka_karoseri',
'index' => 5,
],
[
'label' => 'Ban',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'ban',
'index' => 6,
],
[
'label' => 'Velg',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'velg',
'index' => 7,
],
[
'label' => 'Bamper Depan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'bamper_depan',
'index' => 8,
],
[
'label' => 'Bamper Belakang',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'bamper_belakang',
'index' => 9,
],
[
'label' => 'Lampu depan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'lampu_depan',
'index' => 10,
],
[
'label' => 'Lampu belakang',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'lampu_belakang',
'index' => 11,
],
[
'label' => 'Kaca kendaraan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'kaca_kendaraan',
'index' => 12,
],
[
'label' => 'Air Conditioner',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'air_conditioner',
'index' => 13,
],
[
'label' => 'Tape/Radio/CD dan perlengkapan (Equalizer, Booster, dll)',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'tape_radio_cd',
'index' => 14,
],
[
'label' => 'Sensor parkir',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sensor_parkir',
'index' => 15,
],
[
'label' => 'Sensor Camera (360), Recorder',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sensor_camera_recorder',
'index' => 16,
],
[
'label' => 'Lcd',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'lcd',
'index' => 17,
],
[
'label' => 'Sabuk Keselamatan',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sabuk_keselamatan',
'index' => 18,
],
[
'label' => 'Airbag',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'airbag',
'index' => 19,
],
[
'label' => 'Asuransi',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'asuransi',
'index' => 20,
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($item['value']))
@foreach ($item['value'] as $value)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="{{ $item['name'] }}[]" type="checkbox"
value="{{ $value }}"
{{ in_array($value, old($item['name'], $forminspeksi[$item['name']] ?? [])) ? 'checked' : '' }} />
{{ $value }}
</label>
<input type="text" name="{{ $item['name'] }}_input[]"
class="input w-full"
id="bentukTanahInput-{{ $loop->parent->index }}-{{ $loop->index }}"
placeholder="Masukkan {{ $value }}..."
value="{{ old($item['name'] . '_input.' . $loop->index, $forminspeksi[$item['name'] . '_input'][$loop->index] ?? '') }}">
</div>
@endforeach
@endif
</div>
<div class="w-full">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
<em id="error-{{ $item['name'] }}-input-{{ $loop->index }}"
class="alert text-danger text-sm"></em>
</div>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perusahaan Asuransi</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="perusahaan_asuransi" class="input"
placeholder="Pesurahaan Asuransi" value="{{ $forminspeksi['perusahaan_asuransi'] ?? '' }}">
<em class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tahun Berakhir</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tahun_berakhir" class="input" placeholder="Tahun berakhir" value="{{ $forminspeksi['tahun_berakhir'] ?? "" }}">
<em class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_positif']))
@foreach ($forminspeksi['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old("fakta_positif.$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="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_negatif']))
@foreach ($forminspeksi['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="10">{{ 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="10">{{ old('fakta_negatif.0', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Analisa makro</label>
<div id="analisa_makro-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['analisa_makro']))
@foreach ($forminspeksi['analisa_makro'] as $index => $negatif)
<div class="analisa_makro flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="analisa_makro[]" rows="10">{{ old("analisa_makro.$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="analisa_makro flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="analisa_makro[]" rows="10">{{ old('analisa_makro.0', $forminspeksi['analisa_makro'][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-analisa_makro" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('analisa_makro-container', 'analisa_makro')">
<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</label>
<div id="kesimpulan-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['kesimpulan']))
@foreach ($forminspeksi['kesimpulan'] as $index => $negatif)
<div class="kesimpulan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kesimpulan[]" rows="10">{{ old("kesimpulan.$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="kesimpulan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kesimpulan[]" rows="10">{{ old('kesimpulan.0', $forminspeksi['kesimpulan'][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-kesimpulan" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('kesimpulan-container', 'kesimpulan')">
<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</label>
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['catatan']))
@foreach ($forminspeksi['catatan'] as $index => $negatif)
<div class="catatan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old("catatan.$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="catatan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old('catatan.0', $forminspeksi['catatan'][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-catatan" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('catatan-container', 'catatan')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,417 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
Analisa Lingkungan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<!-- Jarak dari Objek Utama -->
<div class=" rounded-lg">
<div class="grid grid-cols-2 gap-5">
<div>
<label class="block text-sm font-medium text-gray-700">Jarak Dari Jalan
Utama</label>
<input type="text" class="input mt-2" name="jarak_jalan_utama" placeholder="Km"
value="{{ old('jarak_jalan_utama', isset($forminspeksi['lingkungan']['jarak_jalan_utama']) ? $forminspeksi['lingkungan']['jarak_jalan_utama'] : '') }}">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Jalan</label>
<input type="text" name="jalan_linkungan" class="input mt-2"
placeholder="Masukkan Nama Jalan"
value="{{ old('jalan_linkungan', isset($forminspeksi['lingkungan']['jalan_linkungan']) ? $forminspeksi['lingkungan']['jalan_linkungan'] : '') }}">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Jarak ke CBD Point</label>
<input type="text" class="input mt-2" name="jarak_cbd_point" placeholder="Masukkan Jarak ke CBD Point"
value="{{ old('jarak_cbd_point', isset($forminspeksi['lingkungan']['jarak_cbd_point']) ? $forminspeksi['lingkungan']['jarak_cbd_point'] : '') }}">
</div>
<div>
<label class="block text-sm font-medium text-gray-700">Nama CBD Point</label>
<input type="text" class="input mt-2" name="nama_cbd_point" placeholder="Masukkan Nama CBD Point"
value="{{ old('nama_cbd_point', isset($forminspeksi['lingkungan']['nama_cbd_point']) ? $forminspeksi['lingkungan']['nama_cbd_point'] : '') }}">
</div>
</div>
<div class="w-full mt-4">
<label class="block text-sm font-medium text-gray-700">Lebar Perkerasan Jalan Depan objek</label>
@php
$lebarPerkerasanJalan = old(
'lebar_perkerasan_jalan',
$forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? '',
);
@endphp
<input type="text" name="lebar_perkerasan_jalan" class="input mt-2" placeholder="Masukkan Lebar Perkerasan Jalan"
value="{{ $lebarPerkerasanJalan }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perkerasan Jalan</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['perkerasanJalan']))
@foreach ($basicData['perkerasanJalan'] as $item)
@php
$isChecked = in_array(
$item->name,
isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan'])
? $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']
: [],
);
@endphp
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="perkerasan_jalan[]" type="checkbox"
value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }}
onclick="toggleCheckboxVisibility('perkerasan_jalan', 'perkerasan_jalan_lainnya', ['lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'Lainnya') == 0)
@php
$lainnyaValue = old(
'perkerasan_jalan_lainnya',
isset($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'])
? $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']
: '',
);
@endphp
<input id="perkerasan_jalan_lainnya" type="text"
style="{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']) && $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'] ? '' : 'display: none' }}"
name="perkerasan_jalan_lainnya" class="input w-full mt-2"
value="{{ $lainnyaValue }}" placeholder="Masukkan lainnya..." />
@endif
@endforeach
@endif
</div>
<em id="error-perkerasan-jalan" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Lalulintas -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lalu Lintas Depan Lokasi</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['laluLintasLokasi']))
@foreach ($basicData['laluLintasLokasi'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="lalu_lintas[]" type="checkbox"
value="{{ $item->name }}"
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, explode(',', is_array(old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? '')) ? implode(',', old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? '')) : old('lalu_lintas', $forminspeksi['lingkungan']['lalu_lintas'] ?? ''))) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-lalu-lintas" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Golongan Hidup Sekitar -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Golongan Masyarakat Sekitar</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['golMasySekitar']))
@foreach ($basicData['golMasySekitar'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="gol_mas_sekitar[]" type="checkbox"
value="{{ $item->name }}"
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, explode(',', is_array(old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? '')) ? implode(',', old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? '')) : old('gol_mas_sekitar', $forminspeksi['lingkungan']['gol_mas_sekitar'] ?? ''))) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-gol_mas_sekitar" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Tingkat Keramaian -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tingkat Keramaian</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['tingkatKeramaian']))
@foreach ($basicData['tingkatKeramaian'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="tingkat_keramaian[]" type="checkbox"
value="{{ $item->name }}"
{{ isset($forminspeksi['lingkungan']['tingkat_keramaian']) && in_array($item->name, explode(',', is_array(old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? '')) ? implode(',', old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? '')) : old('tingkat_keramaian', $forminspeksi['lingkungan']['tingkat_keramaian'] ?? ''))) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-tingkat_keramaian" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Terletak Di Area -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Terletak Di Area</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['terletakDiArea']))
@foreach ($basicData['terletakDiArea'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="terletak_diarea[]" type="checkbox"
value="{{ $item->name }}"
{{ isset($forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea']) && in_array($item->name, explode(',', is_array(old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? '')) ? implode(',', old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? '')) : old('terletak_diarea', $forminspeksi['lingkungan']['terletak_diarea'] ?? ''))) ? 'checked' : '' }}
onclick="toggleCheckboxVisibility('terletak_diarea', 'terletak_diarea_lainnya', ['Lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'Lainnya') == 0)
@php
$lainnyaValue = old(
'terletak_diarea_lainnya',
isset($forminspeksi['lingkungan']['terletak_diarea']['lainnya'])
? $forminspeksi['lingkungan']['terletak_diarea']['lainnya']
: '',
);
@endphp
<input id="terletak_diarea_lainnya" type="text"
style="{{ isset($forminspeksi['lingkungan']['terletak_diarea']['lainnya']) && $forminspeksi['lingkungan']['terletak_diarea']['lainnya'] ? '' : 'display: none' }}"
name="terletak_diarea_lainnya" class="input w-full mt-2"
value="{{ $lainnyaValue }}" placeholder="Masukkan lainnya..." />
@endif
@endforeach
@endif
</div>
<em id="error-terletak_diarea" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Disekitar Lokasi -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Disekitar Lokasi</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col gap-2 mt-2">
<label class="text-sm flex items-center gap-2.5 text-nowrap">
<input
onclick="toggleFieldVisibility('disekitar_lokasi', 'disekitar_lokasi_sesuai', ['ya'])"
type="radio" class="radio" name="disekitar_lokasi" value="ya"
{{ old('disekitar_lokasi', $forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }} />
<span class="ml-2">Telah ada bangunan</span>
</label>
<div class="flex w-full items-center gap-4">
<div id="disekitar_lokasi_sesuai" class="grid grid-cols-2 gap-4 mt-5 mb-5"
style="{{ old('disekitar_lokasi', $forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? '' : 'display: none;' }}">
<div class="flex items-center gap-2">
<label for="" class="text-sm text-gray-700">Kondisi bangunan</label>
@php
$kondisi = ['Cukup', 'Baik', 'Kurang'];
@endphp
<select class="select" name="kondisi_bagunan_disekitar_lokasi" id="">
<option value="">pilih kondisi</option>
@foreach ($kondisi as $item)
<option value="{{ $item }}"
{{ old('kondisi_bagunan_disekitar_lokasi', $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '') == $item ? 'selected' : '' }}>
{{ $item }}
</option>
@endforeach
</select>
</div>
<div class="flex items-center gap-2">
<label for="" class="text-sm text-gray-700">Sifat bangunan</label>
@php
$sifat = ['Permanen', 'Semi Permanen', 'Tidak Permanen'];
@endphp
<select class="select" name="sifat_bagunan_disekitar_lokasi" id="">
<option value="">pilih sifat bagunan</option>
@foreach ($sifat as $item)
<option value="{{ $item }}"
{{ old('sifat_bagunan_disekitar_lokasi', $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '') == $item ? 'selected' : '' }}>
{{ $item }}
</option>
@endforeach
</select>
</div>
</div>
</div>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input
onclick="toggleFieldVisibility('disekitar_lokasi', 'disekitar_lokasi_sesuai', ['ya'])"
type="radio" class="radio" name="disekitar_lokasi" value="tidak sesuai"
{{ old('disekitar_lokasi', $forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak sesuai' ? 'checked' : '' }} />
<span class="ml-2">Belum ada bangunan</span>
</label>
</div>
<em id="error-terletak_diarea" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Dekat Makam -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Dekat Makam</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col gap-2 mt-2">
<!-- Opsi Ya -->
<div class="flex w-full items-center gap-4">
<label class="text-sm flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('dekat_makam', 'dekat-makam', ['ya'])"
type="radio" class="radio" name="dekat_makam" value="ya"
{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }} />
<span class="ml-2">Ya</span>
</label>
<div id="dekat-makam" class="flex items-baseline gap-4 w-full"
style="{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'display:flex;' : 'display:none;' }}">
<div class="flex items-center gap-2">
<label for="jarak_makam" class="form-label max-w-56">Jarak</label>
<input type="text" class="input mt-2" name="jarak_makam"
value="{{ old('jarak_makam', $forminspeksi['lingkungan']['jarak_makam'] ?? '') }}"
placeholder="Km" />
</div>
<div class="flex items-center gap-2">
<label for="nama_makam" class="form-label max-w-56">Nama TPU</label>
<input type="text" class="input mt-2 w-full" name="nama_makam"
value="{{ old('nama_makam', $forminspeksi['lingkungan']['nama_makam'] ?? '') }}"
placeholder="Nama TPU" />
</div>
</div>
</div>
<!-- Opsi Tidak -->
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('dekat_makam', 'dekat-makam', ['ya'])"
type="radio" class="radio" name="dekat_makam" value="tidak"
{{ old('dekat_makam', $forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }} />
<span class="ml-2">Tidak</span>
</label>
</div>
<em id="error-dekat_makam" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Dekat Tps -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Dekat TPS</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col gap-2 mt-2 w-full">
<!-- Opsi Ya -->
<div class="flex w-full items-center gap-4">
<label class="text-sm flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('dekat_tps', 'dekat-tps', ['ya'])"
type="radio" class="radio" name="dekat_tps" value="ya"
{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }} />
<span class="ml-2">Ya</span>
</label>
<div id="dekat-tps" class="flex flex-wrap gap-4 w-full"
style="{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'display:flex;' : 'display:none;' }}">
<div class="flex items-center gap-2">
<label for="jarak_tps" class="form-label max-w-56">Jarak</label>
<input type="text" id="jarak_tps" class="input mt-2" name="jarak_tps"
value="{{ old('jarak_tps', $forminspeksi['lingkungan']['jarak_tps'] ?? '') }}"
placeholder="Km" />
</div>
<div class="flex items-center gap-2">
<label for="nama_tps" class="form-label max-w-56">Nama TPS</label>
<input type="text" id="nama_tps" class="input mt-2" name="nama_tps"
value="{{ old('nama_tps', $forminspeksi['lingkungan']['nama_tps'] ?? '') }}"
placeholder="Nama TPS" />
</div>
</div>
</div>
<!-- Opsi Tidak -->
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('dekat_tps', 'dekat-tps', ['ya'])" type="radio"
class="radio" name="dekat_tps" value="tidak"
{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }} />
<span class="ml-2">Tidak</span>
</label>
</div>
<em id="error-dekat_tps" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Dekat Lainnya</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" class="input mt-2" name="dekat_lainnya"
value="{{ old('dekat_lainnya', $forminspeksi['lingkungan']['dekat_lainnya'] ?? '') }}"
placeholder="Masukkan Lainnya" />
<em id="error-dekat_makam" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Merupakan daerah -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Merupakan Daerah</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['merupakanDaerah']))
@foreach ($basicData['merupakanDaerah'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="merupakan_daerah[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, isset($forminspeksi['lingkungan']['merupakan_daerah']) ? $forminspeksi['lingkungan']['merupakan_daerah'] : []) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-merupakan_daerah" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Fasilitas Umum Sekitar -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Fasilitas Umum Dekat Objek</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['fasilitasObjek']))
@foreach ($basicData['fasilitasObjek'] as $item)
@php
$isChecked = in_array(
$item->name,
old(
'fasilitas_dekat_object',
$forminspeksi['lingkungan']['fasilitas_dekat_object'] ?? [],
),
);
$inputValue = old(
'fasilitas_dekat_object_input.' . $item->name,
$forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] ?? '',
);
@endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="fasilitas_dekat_object[]" type="checkbox"
value="{{ $item->name }}" {{ $isChecked ? 'checked' : '' }} />
{{ $item->name }}
</label>
<input type="text" name="fasilitas_dekat_object_input[{{ $item->name }}]"
class="input w-full" placeholder="Masukkan fasilitas {{ $item->name }}..."
value="{{ $inputValue }}">
</div>
@endforeach
@endif
</div>
<em id="error-fasilitas_dekat_object" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,101 @@
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Lokasi Jaminan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
@php
$inputDataLoaksi = [
[
'label' => 'Nama Jalan',
'index' => 0,
'name' => 'nama_jalan',
'value' => old('nama_jalan', isset($forminspeksi['nama_jalan']) ? $forminspeksi['nama_jalan'] : ''),
],
[
'label' => 'Perumahan/Gang',
'index' => 1,
'name' => 'perumahan_gang',
'value' => old(
'perumahan_gang',
isset($forminspeksi['perumahan_gang']) ? $forminspeksi['perumahan_gang'] : '',
),
],
[
'label' => 'Blok/Nomor',
'index' => 2,
'name' => 'blok_nomor',
'value' => old('blok_nomor', isset($forminspeksi['blok_nomor']) ? $forminspeksi['blok_nomor'] : ''),
],
];
@endphp
@if (count($inputDataLoaksi) > 0)
@foreach ($inputDataLoaksi as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
@error($item['name'])
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endforeach
@endif
<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" onchange="getCity(this.value)">
<option value="">Pilih Provinsi</option>
@foreach ($provinces as $item)
<option value="{{ $item->code }}" {{ ($cekAlamat['province_code'] ?? '') == $item->code ? 'selected' : '' }}>{{ $item->name }}</option>
@endforeach
</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" onchange="getDistrict(this.value)">
<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" onchange="getVillage(this.value)">
<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>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', () => {
loadSavedLocationData();
});
</script>
@include('lpj::surveyor.js.utils')

View File

@@ -0,0 +1,289 @@
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Order Penilaian
</h3>
<div class="flex items-center gap-2">
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
</div>
</div>
<div class="card-body">
<div class="grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tujuan Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->tujuanPenilaian))
<p class="text-2sm text-gray-700">{{ $permohonan->tujuanPenilaian->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Survey</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->created_at->format('d/m/Y') }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Identitas Debitur
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->name))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Wakil Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nama_wakil" class="input"
placeholder="Masukkan Hubungan Calon Debitur">
<em id="error-nama_wakil" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Hubungan Calon Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="hub_calon_debitur" class="input"
placeholder="Masukkan Hubungan Calon Debitur">
<em id="error-hub_calon_debitur" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg shadow-md">
@include('lpj::surveyor.components.lokasi-jaminan')
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Data Jaminan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Model</label>
<div class="flex flex-wrap items-baseline w-full">
<select
class="input tomselect w-full @error('hadapMataAngin') border-danger bg-danger-light @enderror"
name="hadapMataAngin">
<option value="">Select Model Kendaraan </option>
@if (isset($arahMataAngin))
@foreach ($arahMataAngin as $item)
<option value="{{ $item->name }}"
{{ old('hadapMataAngin') == $item->name ? 'selected' : '' }}>{{ $item->name }}
</option>
@endforeach
@endif
</select>
@error('hadapMataAngin')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@php
$inputDataJaminan = [];
$inputDataJaminan = [
[
'label' => 'Tipe/Model',
'name' => 'tipe_model',
'index' => 0,
],
[
'label' => 'Merek',
'name' => 'merek',
'index' => 1,
],
[
'label' => 'Tahun Pembuatan',
'name' => 'tahun_pembuatan',
'index' => 2,
],
[
'label' => 'Negara Pembuat',
'name' => 'negara_pembuat',
'index' => 3,
],
[
'label' => 'Kondisi Mesin',
'name' => 'kondisi_mesin',
'index' => 4,
],
];
@endphp
@if (count($inputDataJaminan) > 0)
@foreach ($inputDataJaminan as $item)
<!-- Nomor Lambung -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Deskripsi/Keterangan Lain Lain </label>
<div class="flex flex-wrap items-baseline w-full">
<textarea name="deskripsi" id="" class="textarea"></textarea>
@error('deskripsi')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex justify-end" style="margin-top: 10px">
<button class="btn btn-xs btn-primary" type="button" id="addBagunan">
tambah mesin
<i class="ki-filled ki-plus"></i>
</button>
</div>
</div>
</div>
<div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Analisis Fakta
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_positif']))
@foreach ($forminspeksi['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old("fakta_positif.$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="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fakta_negatif']))
@foreach ($forminspeksi['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="10">{{ 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="10">{{ old('fakta_negatif.0', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan Yang Perlu Diperhatikan</label>
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">
<div class="catatan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old('catatan.0', $forminspeksi['catatan'][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-catatan" class="alert text-danger text-sm"></em>
</div>
<button type="button"
onclick="addClonableItem('catatan-container', 'catatan')"
class="btn btn-primary btn-sm mt-5 ">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,102 @@
<style>
.camera-container {
position: relative;
width: 100%;
height: auto;
}
video, canvas {
width: 100%;
height: auto;
}
</style>
<div class="modal fade" data-modal="true" id="cameraModal" data-backdrop="" data-keyboard="false">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Ambil Foto</h3>
<button type="button" class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true" id="closeModal">
<i class="ki-outline ki-cross"></i>
</button>
</div>
<!-- Camera Interface -->
<div class="modal-body">
<div class="camera-container relative">
<video id="video" class="w-full h-auto" autoplay playsinline></video>
<canvas id="canvas" class="hidden w-full h-auto"></canvas>
<canvas id="drawingCanvas" class="hidden absolute top-0 left-0 w-full h-full"></canvas>
<div id="textOverlay" class="position-absolute top-0 left-0 w-100 h-100 pointer-events-none">
</div>
</div>
<div class="modal-footer mt-2">
<div id="cameraControls" class="flex justify-center gap-2 mt-4">
<button type="button" id="startButton" class="btn btn-primary">
<i class="ki-outline ki-camera"></i> Start Camera
</button>
<button type="button" id="takePhotoButton" class="btn btn-success" disabled>
<i class="ki-outline ki-photograph"></i> Ambil Foto
</button>
<button type="button" id="switchButton" class="btn btn-info" disabled>
<i class="ki-outline ki-arrows-circle"></i> Switch Camera
</button>
</div>
<!-- Editor Controls -->
<div id="editorControls" class=" flex flex-wrap gap-2 mt-4">
<div class="drawing-tools flex gap-2">
<button type="button" class="tool-btn btn btn-sm" data-tool="brush">
<i class="ki-filled ki-brush"></i>
</button>
<button type="button" class="tool-btn btn btn-sm" data-tool="rectangle">
<i class="ki-filled ki-frame"></i>
</button>
<button type="button" class="btn btn-light btn-sm tool-btn" data-tool="arrow">
<i class="ki-duotone ki-arrow-right fs-2"></i>
</button>
<button type="button" class="tool-btn btn btn-sm" data-tool="circle">
<i class="ki-filled ki-mouse-circle"></i>
</button>
<button type="button" class="tool-btn btn btn-sm" data-tool="text">
<i class="ki-filled ki-text"></i>
</button>
</div>
<div class="drawing-settings flex gap-2">
<input type="color" id="colorPicker" class="w-8 h-8 rounded">
<div class="flex items-center gap-2">
<input type="range" id="brushSize" min="1" max="20" value="5"
class="range range-sm">
<span id="brushSizeValue" class="text-sm">5px</span>
</div>
<input type="text" id="textInput" class="input" placeholder="Enter text">
<button type="button" class="btn btn-primary" id="confirmTextBtn">Add Text</button>
</div>
<div class="history-controls flex gap-2">
<button type="button" id="undoButton" class="btn btn-sm">
<i class="ki-filled ki-arrows-loop"></i>
</button>
<button type="button" id="resetButton" class="btn btn-sm">
<i class="ki-outline ki-trash"></i>
</button>
</div>
<div class="final-controls flex gap-2">
<button type="button" class="btn btn-light btn-sm" data-modal-dismiss="true">Cancel</button>
<button id="backButton" class="btn btn-warning btn-sm">
<i class="ki-outline ki-arrow-left"></i> Kembali
</button>
<button type="button" id="saveButton" class="btn btn-success btn-sm" data-modal-dismiss="true">
<i class="ki-outline ki-check"></i> Simpan
</button>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,430 @@
<div class="card-header bg-agi-50">
<h3 class="card-title">Data Pembanding</h3>
<div class="flex items-center gap-2">
@if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan'))
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@else
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@endif
</div>
</div>
<div class="card-header bg-agi-50 py-5 flex-wrap flex justify-end">
<button type="button" id="addColumnBtn" class="btn btn-primary btn-sm">
<i class="ki-filled ki-plus"></i> Tambah Pembanding
</button>
<button type="button" id="removeColumnBtn" class="btn btn-danger btn-sm ml-2" style="display: none;">
<i class="ki-filled ki-minus"></i> Hapus Pembanding
</button>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table id="dataTable" class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead class="bg-gray-50 sticky top-0">
<tr>
<th class="px-4 py-3 min-w-[200px]">Parameter</th>
<th class="px-4 py-3 min-w-[250px]">Objek Penilaian</th>
<th class="px-4 py-3 min-w-[250px]">Data Pembanding 1</th>
</tr>
</thead>
<tbody>
<!-- Informasi Dasar -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Informasi Dasar</td>
</tr>
<tr>
<td class="px-4 py-2">Foto</td>
<td class="px-4 py-2">
<div class="flex flex-col gap-2">
@php
$photos = $fotoForm['upload_foto'] ?? [];
if (!is_array($photos)) {
$photos = [];
}
$groupedPhotos = collect($photos)->groupBy('category');
$mainPhoto = $groupedPhotos->get('Tampak Depan', collect())->first();
// echo $mainPhoto;
@endphp
@if ($mainPhoto)
<img id="uploadedImage1" src="{{ asset('storage/' . $mainPhoto['path']) }}"
class="max-w-[200px]" alt="Uploaded Image">
@endif
<input type="file" name="foto_objek" class="file-input" accept="image/*"
onchange="previewImage(this, 'uploadedImage1')">
</div>
</td>
<td class="px-4 py-2">
<div class="flex flex-col gap-2">
<img id="uploadedImage2" class="max-w-[200px] hidden" alt="Pembanding Image">
<input type="file" name="foto_objek_pembanding[]" class="file-input" accept="image/*"
onchange="previewImage(this, 'uploadedImage2')">
</div>
</td>
</tr>
<!-- Data Properti -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Data </td>
</tr>
<tr>
<td class="px-4 py-2">Nama</td>
<td class="px-4 py-2">
<input type="text" name="nama" class="input" value="{{ $inspectionData['nama'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="nama_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Tipe</td>
<td class="px-4 py-2">
<input type="text" name="type" class="input" value="{{ $inspectionData['type'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="type_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Warna</td>
<td class="px-4 py-2">
<input type="text" name="warna" class="input "
value="{{ $inspectionData['warna'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="warna_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Lokasi</td>
<td class="px-4 py-2">
<input type="text" name="lokasi" class="input"
value="{{ $inspectionData['lokasi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="lokasi_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Sumber data</td>
<td class="px-4 py-2">
<input type="text" name="sumber_data" class="input"
value="{{ $inspectionData['sumber_data'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="sumber_data_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Tahun</td>
<td class="px-4 py-2">
<input type="text" name="tahun" class="input "
value="{{ $inspectionData['tahun'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="tahun_pembanding[]" class="input ">
</td>
</tr>
<tr>
<td class="px-4 py-2">Transmisi</td>
<td class="px-4 py-2">
<input type="text" name="transmisi" class="input"
value="{{ is_array($inspectionData['transmisi'] ?? '') ? implode(', ', $inspectionData['transmisi']) : $inspectionData['transmisi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="transmisi_pembanding[]" class="input ">
</td>
</tr>
<!-- Informasi Harga -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Spesifikasi</td>
</tr>
<tr>
<td class="px-4 py-2">Tahun Pembuatan
</td>
<td class="px-4 py-2">
<input type="text" name="tahun_pembuatan" class="input number-format"
value="{{ $inspectionData['tahun_pembuatan'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="tahun_pembuatan_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Merek / Buatan
</td>
<td class="px-4 py-2">
<input type="text" name="merek_buatan" class="input"
value="{{ $inspectionData['merek_buatan'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="merek_buatan_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Kapasitas / HP
</td>
<td class="px-4 py-2">
<input type="text" name="kapasitas" class="input"
value="{{ $inspectionData['kapasitas'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="kapasitas_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Power</td>
<td class="px-4 py-2">
<input type="text" name="power" class="input"
value="{{ $inspectionData['power'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="power_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Kondisi</td>
<td class="px-4 py-2">
<input type="text" name="kondisi" class="input"
value="{{ $inspectionData['kondisi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="kondisi_pembanding[]" class="input">
</td>
</tr>
<!-- Lokasi -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Lokasi</td>
</tr>
<tr>
<td class="px-4 py-2">Koordinat</td>
<td class="px-4 py-2">
<div class="grid grid-cols-2 gap-2">
<input type="text" name="kordinat_lat" class="input" placeholder="Latitude"
value="{{ $inspectionData['kordinat_lat'] ?? '' }}">
<input type="text" name="kordinat_lng" class="input" placeholder="Longitude"
value="{{ $inspectionData['kordinat_lng'] ?? '' }}">
</div>
</td>
<td class="px-4 py-2">
<div class="grid grid-cols-2 gap-2">
<input type="text" name="kordinat_lat_pembanding[]" class="input"
placeholder="Latitude">
<input type="text" name="kordinat_lng_pembanding[]" class="input"
placeholder="Longitude">
</div>
</td>
</tr>
<tr>
<td class="px-4 py-2">Alamat</td>
<td class="px-4 py-2">
@php
$address = $inspectionData['nama_jalan'] ?? null;
@endphp
<textarea name="nama_jalan" class="input py-2" rows="2">{{ $address }}</textarea>
</td>
<td class="px-4 py-2">
<textarea name="address_pembanding[]" class="input py-2" rows="2"></textarea>
</td>
</tr>
<tr>
<td class="px-4 py-2">Provinsi</td>
<td class="px-4 py-2">
<select id="province_code" name="province_code" class="input w-full">
<option value="">Select Province</option>
@foreach ($provinces as $province)
@php
$selectedProvince = $inspectionData['alamat']['sesuai']['province_code'] ?? null;
@endphp
<option value="{{ $province->code }}"
{{ $selectedProvince == $province->code ? 'selected' : '' }}>
{{ $province->name }}
</option>
@endforeach
</select>
</td>
<td class="px-4 py-2">
<select id="province_code_pembanding" name="province_code_pembanding[]"
onchange="handleProvinceChange(this)" class="input w-full">
<option value="">Pilih Provinsi</option>
@foreach ($provinces as $province)
<option value="{{ $province->code }}">{{ $province->name }}
</option>
@endforeach
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Kabupaten/Kota</td>
<td class="px-4 py-2">
<select id="city_code" name="city_code" class="select w-full">
@php
$selectedCity = $inspectionData['alamat']['sesuai']['city_code'] ?? null;
@endphp
<option value="">Pilih Kota/Kabupaten</option>
@if (isset($selectedCity))
@foreach ($cities as $city)
<option value="{{ $city->code }}"
{{ $selectedCity == $city->code ? 'selected' : '' }}>
{{ $city->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="city_code_pembanding" name="city_code_pembanding[]"
onchange="handleCityChange(this)" class="input w-full">
<option value="">Pilih Kota/Kabupaten</option>
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Kecamatan</td>
<td class="px-4 py-2">
<select id="district_code" name="district_code" class="select w-full">
@php
$selectedDisrict = $inspectionData['alamat']['sesuai']['district_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDisrict))
@foreach ($districts as $district)
<option value="{{ $district->code }}"
{{ $selectedDisrict == $district->code ? 'selected' : '' }}>
{{ $district->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="district_code_pembanding" name="district_code_pembanding[]"
onchange="handleDistrictChange(this)" class="input w-full">
<option value="">Pilih Kecamatan</option>
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Desa/Kelurahan</td>
<td class="px-4 py-2">
<select id="village_code" name="village_code" class="select w-full">
@php
$selectedDesa = $inspectionData['alamat']['sesuai']['village_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDesa))
@foreach ($villages as $village)
<option value="{{ $village->code }}"
{{ $selectedDesa == $village->code ? 'selected' : '' }}>
{{ $village->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="village_code_pembanding" name="village_code_pembanding[]" class="input w-full">
<option value="">Pilih Desa/Kelurahan</option>
</select>
</td>
</tr>
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Harga</td>
</tr>
<tr>
<td class="px-4 py-2">Harga Penawaran/ Transaksi(Rp)</td>
<td class="px-4 py-2">
<input type="text" name="harga" class="input currency-format"
value="{{ $inspectionData['asset']['harga'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="harga_pembanding[]" class="input currency-format">
</td>
</tr>
<tr>
<td class="px-4 py-2">Diskon</td>
<td class="px-4 py-2">
<div class="input">
<input type="text" name="diskon" class=" currency"
value="{{ $inspectionData['asset']['diskon'] ?? '' }}">
<span class="btn btn-icon">
<i class="ki-outline ki-percentage"></i>
</span>
</div>
</td>
<td class=" px-4 py-2">
<div class="input">
<input type="text" name="diskon_pembanding[]" class="currency">
<span class="btn btn-icon">
<i class="ki-outline ki-percentage"></i>
</i>
</span>
</div>
</td>
</tr>
{{-- <tr style="display: none;">
<td class="px-4 py-2">Total</td>
<td class="px-4 py-2">
<input type="text" name="total" class="input currency"
value="{{ $inspectionData['total'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="total_pembanding[]" class="input currency-format">
</td>
</tr> --}}
<tr>
<td class="px-4 py-2">Harga Setelah Diskon</td>
<td class="px-4 py-2">
<input type="text" name="total" class="input currency-format" readonly
value="{{ $inspectionData['asset']['total'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="total_pembanding[]" readonly class="input currency-format">
</td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,489 @@
<div class="card-header bg-agi-50">
<h3 class="card-title">Data Pembanding</h3>
<div class="flex items-center gap-2">
@if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan'))
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@else
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@endif
</div>
</div>
<div class="card-header bg-agi-50 py-5 flex-wrap flex justify-end">
<button type="button" id="addColumnBtn" class="btn btn-primary btn-sm">
<i class="ki-filled ki-plus"></i> Tambah Pembanding
</button>
<button type="button" id="removeColumnBtn" class="btn btn-danger btn-sm ml-2" style="display: none;">
<i class="ki-filled ki-minus"></i> Hapus Pembanding
</button>
</div>
{{-- @php
print_r($inspectionData);
@endphp --}}
<div class="card-body">
<div class="scrollable-x-auto">
<table id="dataTable" class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead class="bg-gray-50 sticky top-0">
<tr>
<th class="px-4 py-3 min-w-[200px]">Parameter</th>
<th class="px-4 py-3 min-w-[250px]">Objek Penilaian</th>
<th class="px-4 py-3 min-w-[250px]">Data Pembanding 1</th>
</tr>
</thead>
<tbody>
<!-- Informasi Dasar -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Informasi Dasar</td>
</tr>
<tr>
<td class="px-4 py-2">Foto</td>
<td class="px-4 py-2">
<div class="flex flex-col gap-2">
@php
$photos = $fotoForm['upload_foto'] ?? [];
if (!is_array($photos)) {
$photos = [];
}
$groupedPhotos = collect($photos)->groupBy('category');
$mainPhoto = $groupedPhotos->get('Tampak Depan', collect())->first();
// echo $mainPhoto;
@endphp
@if ($mainPhoto)
<img id="uploadedImage1" src="{{ asset('storage/' . $mainPhoto['path']) }}"
class="max-w-[200px]" alt="Uploaded Image">
@endif
<input type="hidden" name="name_foto_objek" class="input"
value="{{ $mainPhoto['path'] ?? '' }}">
<input type="file" name="foto_objek" class="file-input" accept=".jpg,.jpeg,.png"
onchange="previewImage(this, 'uploadedImage1')">
</div>
</td>
<td class="px-4 py-2">
<div class="flex flex-col gap-2">
<img id="uploadedImage2" class="max-w-[200px] hidden" alt="Pembanding Image">
<input type="file" name="foto_objek_pembanding[]" class="file-input" accept=".jpg,.jpeg,.png"
onchange="previewImage(this, 'uploadedImage2')">
</div>
</td>
</tr>
<!-- Data Properti -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Data Properti</td>
</tr>
<tr>
<td class="px-4 py-2">Jenis Aset</td>
<td class="px-4 py-2">
<select name="jenis_aset" class="select">
<option value="">Pilih Jenis Aset</option>
@php
$selectedKey =
old('jenis_aset') ??
($inspectionData['asset']['jenis_asset']['sesuai'] ??
($inspectionData['asset']['jenis_asset']['tidak sesuai'] ?? ''));
@endphp
@foreach ($data['jenisJaminan'] as $item)
<option value="{{ $item->name }}" {{ $selectedKey == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
</select>
</td>
<td class="px-4 py-2">
<select name="jenis_aset_pembanding[]" class="select">
<option value="">Pilih Jenis Aset</option>
@foreach ($data['jenisJaminan'] as $item)
<option value="{{ $item->name }}"
{{ ($inspectionData['jenis_aset'] ?? '') == $item->name ? 'selected' : '' }}>
{{ $item->name }}</option>
@endforeach
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Luas Tanah ()</td>
@php
$cekLuas =
isset($inspectionData['tanah']['luas_tanah']) == 'sesuai' ? 'sesuai' : 'tidak sesuai';
@endphp
<td class="px-4 py-2">
<input type="text" name="luas_tanah" class="input "
value="{{ $inspectionData['tanah']['luas_tanah']['sesuai'] ?? ($inspectionData['tanah']['luas_tanah']['tidak sesuai'] ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_pembanding[]" class="input ">
</td>
</tr>
@php
$luasTanahData = [];
$nilai = 0;
// Memeriksa apakah key 'bangunan' ada di dalam $inspectionData
if (isset($inspectionData['bangunan']['luas_tanah_bagunan'])) {
$luasTanahData = $inspectionData['bangunan']['luas_tanah_bagunan'];
if (!empty($luasTanahData['sesuai'])) {
$nilai = $luasTanahData['sesuai'];
} elseif (!empty($luasTanahData['tidak sesuai'])) {
$nilai = $luasTanahData['tidak sesuai'];
}
}
@endphp
<tr>
<td class="px-4 py-2">Luas Bangunan ()</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input"
value="{{ $inspectionData['bangunan']['luas_tanah_bagunan']['sesuai'] ?? ($inspectionData['bangunan']['luas_tanah_bagunan']['tidak sesuai'] ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input ">
</td>
</tr>
<!-- Informasi Harga -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Informasi</td>
</tr>
<tr>
<td class="px-4 py-2">Hak atas properti yang dialihkan</td>
<td class="px-4 py-2">
<input type="text" name="hak_properti" class="input"
value="{{ $inspectionData['asset']['hak_properti'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="hak_properti_pembanding[]" class="input">
</td>
</tr>
{{-- <tr> --}}
{{-- <td class="px-4 py-2">Penawaran/ Transaksi</td>
<td class="px-4 py-2">
<input type="text" name="penawaran" class="input"
value="{{ $inspectionData['asset']['penawaran'] ?? '' }}"> --}}
{{-- <select class="input w-full" name="penawaran">
<option value="">Pilih</option>
<option value="Penawaran" {{ (isset($inspectionData['asset']['penawaran']) && $inspectionData['asset']['penawaran'] == 'Penawaran') ? 'selected' : '' }}>Penawaran</option>
<option value="Transaksi" {{ (isset($inspectionData['asset']['penawaran']) && $inspectionData['asset']['penawaran'] == 'Transaksi') ? 'selected' : '' }}>Transaksi</option>
</select> --}}
{{-- </td>
<td class="px-4 py-2">
<input type="text" name="penawaran_pembanding[]" class="input"> --}}
{{-- <select class="input w-full" name="penawaran_pembanding[]">
<option value="">Pilih</option>
<option value="Penawaran" {{ (isset($inspectionData['penawaran']) && $inspectionData['penawaran'] == 'Penawaran') ? 'selected' : '' }}>Penawaran</option>
<option value="Transaksi" {{ (isset($inspectionData['penawaran']) && $inspectionData['penawaran'] == 'Transaksi') ? 'selected' : '' }}>Transaksi</option>
</select> --}}
{{-- </td>
</tr> --}}
{{-- <tr>
<td class="px-4 py-2">Harga Penawaran/ Transaksi(Rp)</td>
<td class="px-4 py-2">
<input type="text" name="harga_penawaran" class="input currency-format"
value="{{ $inspectionData['asset']['harga_penawaran'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="harga_penawaran_pembanding[]" class="input currency-format">
</td>
</tr> --}}
<tr>
<td class="px-4 py-2">Telepon Contact Person</td>
<td class="px-4 py-2">
<input type="text" name="telepon" class="input"
value="{{ $inspectionData['asset']['telepon'] ?? ($permohonan->debiture->phone ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="telepon_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Status Narasumber</td>
<td class="px-4 py-2">
<input type="text" name="status_nara_sumber" class="input"
value="{{ $inspectionData['asset']['status_nara_sumber'] ?? ($dokumen->pemilik->hubungan_pemilik->name ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="status_nara_sumber_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Nama Narasumber</td>
<td class="px-4 py-2">
<input type="text" name="nama_nara_sumber" class="input"
value="{{ $inspectionData['asset']['nama_nara_sumber'] ?? ($permohonan->debiture->name ?? '') }}">
</td>
<td class="px-4 py-2">
<input type="text" name="nama_nara_sumber_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Tanggal Data</td>
<td class="px-4 py-2">
<input type="date" name="tanggal" class="input"
value="{{ $inspectionData['asset']['tanggal'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="date" name="tanggal_pembanding[]" class="input">
</td>
</tr>
<!-- Lokasi -->
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Lokasi</td>
</tr>
<tr>
<td class="px-4 py-2">Koordinat</td>
<td class="px-4 py-2">
<div class="grid grid-cols-2 gap-2">
<input type="text" name="kordinat_lat" class="input" placeholder="Latitude"
value="{{ $inspectionData['asset']['kordinat_lat'] ?? '' }}" pattern="^-?((1[0-7]\d|\d{1,2})(\.\d+)?|180(\.0+)?)$">
<input type="text" name="kordinat_lng" class="input" placeholder="Longitude"
value="{{ $inspectionData['asset']['kordinat_lng'] ?? '' }}" pattern="^-?((1[0-7]\d|\d{1,2})(\.\d+)?|180(\.0+)?)$">
</div>
</td>
<td class="px-4 py-2">
<div class="grid grid-cols-2 gap-2">
<input type="text" name="kordinat_lat_pembanding[]" class="input"
placeholder="Latitude" pattern="^-?((1[0-7]\d|\d{1,2})(\.\d+)?|180(\.0+)?)$">
<input type="text" name="kordinat_lng_pembanding[]" class="input"
placeholder="Longitude" pattern="^-?((1[0-7]\d|\d{1,2})(\.\d+)?|180(\.0+)?)$">
</div>
</td>
</tr>
<tr>
<td class="px-4 py-2">Alamat</td>
<td class="px-4 py-2">
@php
$statusAlamat = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$address = $inspectionData['asset']['alamat'][$statusAlamat]['address'] ?? null;
@endphp
<textarea name="address" class="input py-2" rows="2">{{ $address }}</textarea>
</td>
<td class="px-4 py-2">
<textarea name="address_pembanding[]" class="input py-2" rows="2"></textarea>
</td>
</tr>
<tr>
<td class="px-4 py-2">Provinsi</td>
<td class="px-4 py-2">
<select id="province_code" name="province_code" class="input w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$address = $inspectionData['asset']['alamat'][$statusKey]['province_code'] ?? null;
@endphp
<option value="">Select Province</option>
@foreach ($provinces as $province)
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedProvince =
$inspectionData['asset']['alamat'][$statusKey]['province_code'] ?? null;
@endphp
<option value="{{ $province->code }}"
{{ $selectedProvince == $province->code ? 'selected' : '' }}>
{{ $province->name }}
</option>
@endforeach
</select>
</td>
<td class="px-4 py-2">
<select id="province_code_pembanding" name="province_code_pembanding[]"
onchange="handleProvinceChange(this)" class="input w-full">
<option value="">Pilih Provinsi</option>
@foreach ($provinces as $province)
<option value="{{ $province->code }}">{{ $province->name }}
</option>
@endforeach
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Kabupaten/Kota</td>
<td class="px-4 py-2">
<select id="city_code" name="city_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedCity = $inspectionData['asset']['alamat'][$statusKey]['city_code'] ?? null;
@endphp
<option value="">Pilih Kota/Kabupaten</option>
@if (isset($selectedCity))
@foreach ($cities as $city)
<option value="{{ $city->code }}"
{{ $selectedCity == $city->code ? 'selected' : '' }}>
{{ $city->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="city_code_pembanding" name="city_code_pembanding[]"
onchange="handleCityChange(this)" class="input w-full">
<option value="">Pilih Kota/Kabupaten</option>
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Kecamatan</td>
<td class="px-4 py-2">
<select id="district_code" name="district_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedDisrict =
$inspectionData['asset']['alamat'][$statusKey]['district_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDisrict))
@foreach ($districts as $district)
<option value="{{ $district->code }}"
{{ $selectedDisrict == $district->code ? 'selected' : '' }}>
{{ $district->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="district_code_pembanding" name="district_code_pembanding[]"
onchange="handleDistrictChange(this)" class="input w-full">
<option value="">Pilih Kecamatan</option>
</select>
</td>
</tr>
<tr>
<td class="px-4 py-2">Desa/Kelurahan</td>
<td class="px-4 py-2">
<select id="village_code" name="village_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedDesa = $inspectionData['asset']['alamat'][$statusKey]['village_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDesa))
@foreach ($villages as $village)
<option value="{{ $village->code }}"
{{ $selectedDesa == $village->code ? 'selected' : '' }}>
{{ $village->name }}
</option>
@endforeach
@endif
</select>
</td>
<td class="px-4 py-2">
<select id="village_code_pembanding" name="village_code_pembanding[]" class="input w-full">
<option value="">Pilih Desa/Kelurahan</option>
</select>
</td>
</tr>
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Harga</td>
</tr>
<tr>
<td class="px-4 py-2">Harga Penawaran/ Transaksi(Rp)</td>
<td class="px-4 py-2">
<input type="text" name="harga" class="input currency-format"
value="{{ $inspectionData['asset']['harga'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="harga_pembanding[]" class="input currency-format">
</td>
</tr>
<tr>
<td class="px-4 py-2">Diskon</td>
<td class="px-4 py-2">
<div class="input">
<input type="text" name="diskon" class=" currency"
value="{{ $inspectionData['asset']['diskon'] ?? '' }}">
<span class="btn btn-icon">
<i class="ki-outline ki-percentage"></i>
</span>
</div>
</td>
<td class=" px-4 py-2">
<div class="input">
<input type="text" name="diskon_pembanding[]" class="currency">
<span class="btn btn-icon">
<i class="ki-outline ki-percentage"></i>
</i>
</span>
</div>
</td>
</tr>
{{-- <tr style="">
<td class="px-4 py-2">Harga Setelah Diskon</td>
<td class="px-4 py-2">
<input type="text" name="total" class="input currency"
value="{{ $inspectionData['asset']['total'] ?? '' }}" readonly>
</td>
<td class="px-4 py-2">
<input type="text" name="total_pembanding[]" class="input currency-format" readonly>
</td>
</tr> --}}
<tr>
<td class="px-4 py-2">Harga Setelah Diskon</td>
<td class="px-4 py-2">
<input type="text" name="total" class="input currency-format" readonly
value="{{ $inspectionData['asset']['total'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="total_pembanding[]" readonly class="input currency-format">
</td>
</tr>
</tbody>
</table>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,524 @@
@include('lpj::surveyor.components.print-out.header')
<div style="border: 1px solid #000;">
<table
style="width: 100%; border-top: none; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Tujuan Penilaian
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px;">Tujuan Penilai</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ $permohonan->tujuanPenilaian->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Cabang/Pemohon</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ $permohonan->debiture->branch->name ?? '' }} / {{ $permohonan->user->name ?? '' }}
</td>
</tr>
</table>
</td>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Tanggal Dibuat</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ formatTanggalIndonesia($permohonan->created_at) }}
</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px;">
Tanggal Survey</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
</tr>
</table>
</td>
</tr>
</table>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Identitas Debitur
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td style="width: 20%; padding: 2px; vertical-align: top;">Nama</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; width: 79%;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px; vertical-align: top;">Nama Wakil</td>
<td style="width: 1%; padding: 2px; vertical-align: top;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ $forminspeksi['nama_wakil'] ?? '' }}
</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px; vertical-align: top;">Hubungan Calon debitur</td>
<td style="width: 1%; padding: 2px; vertical-align: top;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ $forminspeksi['hub_calon_debitur'] ?? '' }}
</td>
</tr>
</table>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Lokasi Jaminan
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td width="20%">Nama Jalan</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $forminspeksi['nama_jalan'] ?? '' }}</td>
</tr>
<tr>
<td width="20%">Perumahan/Gang</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $forminspeksi['perumahan_gang'] ?? '' }}</td>
</tr>
<tr>
<td width="20%">Blok/Nomor</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $forminspeksi['blok_nomor'] ?? '' }}</td>
</tr>
<tr>
<td>Kelurahan</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['village_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kecamatan</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['district_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kotamadya</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $alamat['city_code'] ?? '' }}</td>
</tr>
<tr>
<td>Propinsi</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['province_code'] ?? '' }}</td>
</tr>
</table>
<div>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Data data jaminan
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top; width: 25%;">Model</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table style="width: 100%;">
@if (isset($basicData['modelAlatBerat']))
@foreach ($basicData['modelAlatBerat'] as $item)
<tr>
<td width="40%">
<label class="form-label max-w-56 gap-2.5">
<input class="checkbox" name="kendaraan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('jenis_model', [])) ||
(isset($forminspeksi['jenis_model']) &&
is_array($forminspeksi['jenis_model']) &&
in_array($item->name, $forminspeksi['jenis_model']))
? 'checked'
: '' }} />
{{ $item->name }}
</label>
</td>
<td width="1%"></td>
<td width="100%">
<p>{{ old('kendaraan_input.' . $loop->index, $forminspeksi['kendaraan_input'][$loop->index] ?? '') }}
</p>
</td>
</tr>
@endforeach
@endif
</table>
</td>
</tr>
@php
$inputDataJaminan = [
[
'label' => 'Nomor Lambung',
'name' => 'nomor_lambung',
'index' => 0,
'value' => old('nomor_lambung', $forminspeksi['nomor_lambung'] ?? ''),
],
[
'label' => 'Model Unit',
'name' => 'model_unit',
'index' => 1,
'value' => old('model_unit', $forminspeksi['model_unit'] ?? ''),
],
[
'label' => 'Tahun Pembuatan',
'name' => 'tahun_pembuatan',
'index' => 2,
'value' => old('tahun_pembuatan', $forminspeksi['tahun_pembuatan'] ?? ''),
],
[
'label' => 'Merk',
'name' => 'merk',
'index' => 3,
'value' => old('merk', $forminspeksi['merk'] ?? ''),
],
[
'label' => 'Negara Pembuat',
'name' => 'negara_pembuat',
'index' => 4,
'value' => old('negara_pembuat', $forminspeksi['negara_pembuat'] ?? ''),
],
[
'label' => 'Tahun Pembelian',
'name' => 'tahun_pembelian',
'index' => 5,
'value' => old('tahun_pembelian', $forminspeksi['tahun_pembelian'] ?? ''),
],
[
'label' => 'Nomor Faktur/Invoice',
'name' => 'nomor_faktur',
'index' => 6,
'value' => old('nomor_faktur', $forminspeksi['nomor_faktur'] ?? ''),
],
[
'label' => 'Nomor Kontrak Pembelian',
'name' => 'nomor_kontrak',
'index' => 7,
'value' => old('nomor_kontrak', $forminspeksi['nomor_kontrak'] ?? ''),
],
[
'label' => 'Nama Pemilik',
'name' => 'nama_pemilik',
'index' => 8,
'value' => old('nama_pemilik', $forminspeksi['nama_pemilik'] ?? ''),
],
[
'label' => 'Alamaat Pemilik',
'name' => 'alamat_pemilik',
'index' => 9,
'value' => old('alamat_pemilik', $forminspeksi['alamat_pemilik'] ?? ''),
],
[
'label' => 'Nomor Asuransi',
'name' => 'nomor_asuransi',
'index' => 10,
'value' => old('nomor_asuransi', $forminspeksi['nomor_asuransi'] ?? ''),
],
[
'label' => 'Nomor Rangka',
'name' => 'nomor_rangka',
'index' => 11,
'value' => old('nomor_rangka', $forminspeksi['nomor_rangka'] ?? ''),
],
[
'label' => 'Nomor Mesin',
'name' => 'nomor_mesin',
'index' => 12,
'value' => old('nomor_mesin', $forminspeksi['nomor_mesin'] ?? ''),
],
[
'label' => 'Hour Meters',
'name' => 'hour_mesters',
'index' => 13,
'value' => old('hour_mesters', $forminspeksi['hour_mesters'] ?? ''),
],
[
'label' => 'Overhaul Mesin',
'name' => 'overhaul_mesin',
'index' => 14,
'value' => old('overhaul_mesin', $forminspeksi['overhaul_mesin'] ?? ''),
],
];
@endphp
@foreach ($inputDataJaminan as $item)
<tr>
<td width="20%" style="vertical-align: top;">{{ $item['label'] }}</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
{{ $item['value'] ?? '' }}
</td>
</tr>
@endforeach
</table>
</div>
<div>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Kondisi Fisik Objek
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
@php
$kondisiObjeck = [
[
'label' => 'Mesin dan Panel Instrument',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'mesin_panel',
'index' => 0,
],
[
'label' => 'Fungsi mesin dan panel instrument',
'value' => ['Berfungsi', 'Rusak'],
'name' => 'fungsi_panel',
'index' => 1,
],
[
'label' => 'Interior (jok, dll)',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'interior',
'index' => 2,
],
[
'label' => 'Rangka dan Karoseri',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'rangka_Karoseri',
'index' => 3,
],
[
'label' => 'Ban',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'ban',
'index' => 4,
],
[
'label' => 'Velg',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'velg',
'index' => 5,
],
[
'label' => 'Air Conditioner',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'air_conditioner',
'index' => 6,
],
[
'label' => 'Aksesoris Tambahan lainnya',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'aksesoris',
'index' => 7,
],
[
'label' => 'LCD',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'lcd',
'index' => 8,
],
[
'label' => 'Perlengkapan Keamanan',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'perlengkapan',
'index' => 9,
],
[
'label' => 'Asuransi',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'asuransi',
'index' => 10,
],
];
@endphp
@foreach ($kondisiObjeck as $item)
<tr>
<td style="vertical-align: top; width: 25%;">{{ $item['label'] }}</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
<table style="width: 100%; border-collapse: collapse;">
@foreach ($item['value'] as $value)
<tr>
<td>
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="{{ $item['name'] }}[]" type="checkbox"
value="{{ $value }}"
{{ in_array($value, old($item['name'], $forminspeksi[$item['name']] ?? [])) ? 'checked' : '' }} />
{{ $value }}
@if ($forminspeksi[$item['name'] . '_input'][$loop->index] != null)
-
{{ old($item['name'] . '_input' . $loop->index, $forminspeksi[$item['name'] . '_input'][$loop->index] ?? '') }}
@endif
</label>
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endforeach
<tr>
<td style="vertical-align: top;">Perusahaan Asuransi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">{{ $forminspeksi['perusahaan_asuransi'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Tahun Berakhir</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
{{ isset($forminspeksi['tahun_berakhir']) ? formatTanggalIndonesia($forminspeksi['tahun_berakhir']) : '' }}
</td>
</tr>
</table>
</div>
<div>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ANalisa Fakta
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td width="25%" style="vertical-align: top;">Faktor Positif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@isset($forminspeksi['fakta_positif'])
<table style="width: 100%; border-collapse: collapse;">
@foreach ($forminspeksi['fakta_positif'] as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@endisset
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;">Faktor Negatif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['fakta_negatif'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Catatan yang perlu di perhatikan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['catatan'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
</table>
</div>
</div>
@include('lpj::surveyor.components.print-out.footer')

View File

@@ -0,0 +1,142 @@
<div class="no-break">
<table style="width: 100%; border-top: 1px solid #000; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Analisa Unit
</h2>
</td>
</tr>
</table>
<table>
<tr>
@php
$cekLuas =
old('luas_unit_radio') ??
(isset($forminspeksiluas_unit['luas_unit']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai');
$luasSesuai = $forminspeksiluas_unit['luas_unit']['sesuai'] ?? null;
$luasTidakSesuai = $forminspeksiluas_unit['luas_unit']['tidak sesuai'] ?? null;
@endphp
<td style="padding: 2px;">Luas Unit</td>
<td style="padding: 2px;">:</td>
<td width="" style="text-align: left">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_tanah_radio" value="sesuai"
{{ $cekLuas == 'sesuai' ? 'checked' : '' }}>
Sesuai {{ $luasSesuai ? '- ' . $luasSesuai . ' m²' : '' }}
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_tanah_radio" value="tidak sesuai"
{{ $cekLuas == 'tidak sesuai' ? 'checked' : '' }}>
Tidak Sesuai {{ $luasTidakSesuai ? '- ' . $luasTidakSesuai . ' m² (luas fisik)' : '' }}
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><strong>Bentuk Unit</strong></td>
<td>
@if (isset($basicData['bentukUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['bentukUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['bentuk_unit']) && in_array($item->name, $forminspeksi['bentuk_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>Kondisi Unit</strong></td>
<td>
@if (isset($basicData['kondisiUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['kondisiUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['kondisi_unit']) && in_array($item->name, $forminspeksi['kondisi_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>Posisi Unit</strong></td>
<td>
@if (isset($basicData['posisiUnit']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['posisiUnit'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['posisi_unit']) && in_array($item->name, $forminspeksi['posisi_unit']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
<tr>
<td><strong>View Unit</strong></td>
<td>
@if (isset($basicData['view']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['view'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['view']) && in_array($item->name, $forminspeksi['view']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</table>
</div>

View File

@@ -0,0 +1,253 @@
<div class="no-break">
<table style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ANalisa Bangunan
</h2>
</td>
</tr>
</table>
<table>
<!-- Luas Tanah Bangunan -->
<tr>
@php
// Tentukan apakah sesuai atau tidak sesuai berdasarkan input lama atau data awal
$cekLuasBangunan = old('luas_bangunan') ?? (isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'])
? 'tidak sesuai'
: 'sesuai');
// Ambil nilai dari key yang sesuai
$luasBangunanSesuai = $forminspeksi['bangunan']['luas_tanah_bagunan']['sesuai'] ?? null;
$luasBangunanTidakSesuai = $forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'] ?? null;
@endphp
<td width="25%" style="vertical-align: top;">Luas Bangunan (IMB)</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" {{ $cekLuasBangunan == 'sesuai' ? 'checked' : '' }}>
Sesuai {{ $luasBangunanSesuai ? '- ' .$luasBangunanSesuai . ' m²' : '' }}
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" {{ $cekLuasBangunan == 'tidak sesuai' ? 'checked' : '' }}>
Tidak Sesuai {{ $luasBangunanTidakSesuai ? '- '. $luasBangunanTidakSesuai . ' m² (luas fisik)' : '' }}
</label>
</td>
</tr>
</table>
</td>
</tr>
<!-- Jenis Bangunan -->
<tr>
<td style="vertical-align: top;">Jenis Bangunan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['jenisBangunan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['jenisBangunan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['bangunan']['jenis_bangunan']) && in_array($item->name, $forminspeksi['bangunan']['jenis_bangunan']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<!-- Kondisi Bangunan -->
<tr>
<td style="vertical-align: top;">Kondisi Bangunan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['kondisiBangunan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['kondisiBangunan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['bangunan']['kondisi_bangunan']) && in_array($item->name, $forminspeksi['bangunan']['kondisi_bangunan']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<!-- Sifat Bangunan -->
<tr>
<td style="vertical-align: top;">Sifat Bangunan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['sifatBangunan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['sifatBangunan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" name="sifat_bangunan[]" value="{{ $item->name }}"
{{ isset($forminspeksi['bangunan']['sifat_bangunan']) && in_array($item->name, $forminspeksi['bangunan']['sifat_bangunan']) ? 'checked' : '' }}>
{{ $item->name }}
@if (isset($forminspeksi['bangunan']['sifat_bangunan']) &&
in_array($item->name, $forminspeksi['bangunan']['sifat_bangunan']))
@php
$inputValues = isset($forminspeksi['bangunan']['sifat_bangunan_input'][$index])
? $forminspeksi['bangunan']['sifat_bangunan_input'][$index]
: null;
@endphp
@if ($inputValues)
<span class="label-checkbox"> - {{ $inputValues }}</span>
@endif
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
@if (isset($forminspeksi['bangunan']['spesifikasi_bangunan']) &&
count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 0)
@foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $bangunanIndex => $bangunan)
<tr>
<td colspan="2">Spesifikasi Bangunan {{ $bangunanIndex + 1 }}</td>
</tr>
@if (isset($basicData['spekKategoriBangunan']))
@foreach ($basicData['spekKategoriBangunan'] as $index => $spesifikasi)
<tr>
<td style="vertical-align: top;">{{ $spesifikasi->name }}</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<table class="checkbox-list">
@if (isset($basicData['spekBangunan']))
@php $count = 0; @endphp
<tr>
@foreach ($basicData['spekBangunan'] as $kategori)
@if ($kategori->spek_kategori_bangunan_id == $spesifikasi->id)
@php
$selectedValues = [];
if (
isset($bangunan['spek_kategori_bangunan'][$spesifikasi->name])
) {
$selectedValues = array_values(
$bangunan['spek_kategori_bangunan'][$spesifikasi->name],
);
}
$lainnyaValue =
$bangunan['spek_kategori_bangunan'][$spesifikasi->name][
'lainnya'
] ?? '';
@endphp
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" class="checkbox-lainnya"
style="margin-right: 3px;"
name="spesifikasi_bangunan[{{ $bangunanIndex }}][{{ $spesifikasi->name }}][]"
value="{{ $kategori->name }}"
@if (in_array($kategori->name, $selectedValues)) checked @endif>
{{ $kategori->name }}
@if ($kategori->name == 'Lainnya')
<span class="text-lainnya"
style="display: {{ in_array('Lainnya', $selectedValues) ? 'inline' : 'none' }};">
: {{ $lainnyaValue }}
</span>
@endif
</label>
</td>
@php $count++; @endphp
@if ($count % 3 == 0)
</tr>
<tr>
@endif
@endif
@endforeach
</tr>
@endif
</table>
</td>
</tr>
@endforeach
@endif
@endforeach
@endif
<tr>
<td style="vertical-align: top;">Sarana Pelengkap</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['saranaPelengkap']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['saranaPelengkap'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" name="sarana_pelengkap[]" value="{{ $item->name }}"
{{ isset($forminspeksi['bangunan']['sarana_pelengkap']) && in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']) ? 'checked' : '' }}>
{{ $item->name }}
@if (isset($forminspeksi['bangunan']['sarana_pelengkap']) &&
in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']))
@php
$inputValues = isset($forminspeksi['bangunan']['sarana_pelengkap_input'][$index])
? $forminspeksi['bangunan']['sarana_pelengkap_input'][$index]
: null;
@endphp
@if ($inputValues)
<span class="label-checkbox"> - {{ $inputValues }}</span>
@endif
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</div>

View File

@@ -0,0 +1,118 @@
<div class="no-break" >
<table style="width: 100%; border: 1px solid #000; border-collapse: collapse;">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ANalisa Fakta
</h2>
</td>
</tr>
</table>
<table>
<tr>
<td width="20%" style="vertical-align: top;">Faktor Positif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@isset($forminspeksi['fakta']['fakta_positif'])
<table style="width: 100%; border-collapse: collapse;">
@foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@endisset
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Faktor Negatif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['fakta']['fakta_negatif'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Rute Munuju</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
<p>{{ $forminspeksi['fakta']['rute_menuju'] ?? '' }}</p>
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Batas Batas </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas)
@if ($batas)
<p> - {{ $arah }} : {{ $batas }}</p>
@endif
@endforeach
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Kondisi lain terkait lingkungan </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi)
<p>{!! nl2br(e($kondisi)) !!}</p>
@endforeach
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Kondisi lain terkait Bangunan </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] ?? [] as $kondisiLain)
<p>{!! nl2br(e($kondisiLain)) !!}</p>
@endforeach
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Informasi Terkait Dokumen </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi)
<p>{!! nl2br(e($informasi)) !!}</p>
@endforeach
</td>
</tr>
</table>
</div>

View File

@@ -0,0 +1,130 @@
<div class="no-break">
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td style="border: 1px solid #000;">
<table>
<tr>
<td>
Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }}
</td>
</tr>
<tr>
<td>
TTD
</td>
</tr>
</table>
<table style="width: 100%; border-collapse: collapse; text-align: center;">
<tr>
@if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image']))
@php
$imagePath = $forminspeksi['signature']['penilai']['image'];
$isBase64 = str_starts_with($imagePath, 'data:image');
if (!$isBase64) {
$relativePath = str_replace(url('storage') . '/', '', $imagePath);
$absolutePath = storage_path('app/public/' . $relativePath);
} else {
$absolutePath = $imagePath;
}
@endphp
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $absolutePath }}" alt="">
</td>
@endif
@if (isset($forminspeksi['signature']['cabang']))
@php
$imagePath = $forminspeksi['signature']['cabang']['image'];
$isBase64 = str_starts_with($imagePath, 'data:image');
if (!$isBase64) {
$relativePath = str_replace(url('storage') . '/', '', $imagePath);
$absolutePath = storage_path('app/public/' . $relativePath);
} else {
$absolutePath = $imagePath;
}
@endphp
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $absolutePath }}" alt="">
</td>
@endif
@if (isset($forminspeksi['signature']['debitur']))
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $forminspeksi['signature']['debitur']['image'] }}"
alt="Debitur/Perwakilan">
</td>
@endif
<!-- K.J.P.P -->
@if (isset($forminspeksi['signature']['kjjp']))
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $forminspeksi['signature']['kjjp']['image'] }}"
alt="KJPP">
</td>
@endif
</tr>
<tr>
@if (isset($forminspeksi['signature']['penilai']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('PENILAI')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['cabang']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('CABANG')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['debitur']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['kjjp']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['kjjp']['name'])) }}</span>
<br />
<span>{{ strtoupper('K.J.P.P') }}</span>
</td>
@endif
</tr>
</table>
</td>
</tr>
</table>
</div>
<footer id="footer">
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
</footer>
<script type="text/php">
if (isset($pdf)) {
$pdf->page_script('
$font = $fontMetrics->get_font("Arial, Helvetica, sans-serif", "normal");
$size = 10;
$pageText = $PAGE_NUM;
$y = 800;
$x = 550;
$pdf->text($x, $y, $pageText, $font, $size);
');
}
</script>
</body>
</html>

View File

@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hasil Inspeksi</title>
<style>
* {
font-size: 12px;
}
body {
font-family: Arial, sans-serif;
}
/** Define the header rules **/
@page {
margin-top: 100px;
margin-bottom: 50px;
}
#header {
position: fixed;
top: -80px;
left: 0;
right: 0;
height: 50px;
text-align: center;
padding-bottom: 10px;
}
.header-logo {
position: absolute;
left: 20px;
top: 10px;
max-height: 80px;
max-width: 150px;
}
.header-title {
margin-top: 20px;
}
#footer {
position: fixed;
bottom: -50px;
left: 0;
right: 0;
height: 50px;
text-align: center;
border-top: 1px solid #ddd;
padding-top: 10px;
font-size: 9px;
}
.page-number:after {
content: counter(page) " dari " counter(pages);
}
.content {
margin-top: 10px;
}
.page-break {
page-break-after: always;
}
#footer {
position: fixed;
bottom: -50px;
left: 0;
right: 0;
height: 50px;
text-align: left;
border-top: 1px solid #ddd;
padding-top: 10px;
font-size: 12px;
}
body {
margin-top: 3cm;
margin-bottom: 120px;
position: relative;
z-index: 1;
}
.border {
border: 1px solid #000;
}
.no-break {
page-break-inside: avoid;
page-break-before: auto;
page-break-after: auto;
}
.custom-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
}
.custom-table td {
vertical-align: top;
}
.custom-table td:first-child {
font-weight: bold;
width: 30%;
/* Sesuaikan lebar kolom keterangan */
}
table.checkbox-list {
width: 100%;
border-collapse: collapse;
}
td.checkbox-item {
width: 33.33%;
vertical-align: top;
text-align: left;
}
label.checkbox-label {
display: flex;
align-items: center;
font-size: 12px;
}
label.checkbox-label input[type="checkbox"] {
margin-right: 6px;
transform: scale(1.3);
/* Memperkecil ukuran checkbox */
}
@media print {
table {
border-collapse: collapse;
}
tr {
page-break-inside: avoid;
}
td, th {
border: 1px solid #000;
}
}
</style>
</head>
@php
$data = '';
$dokument = null;
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$dokument = $dokumen;
}
$data = rtrim($data, ', ');
$senior_officer = null;
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
}
@endphp
<body style="width: 90%; margin: auto">
<header id="header">
<table style="width: 100%; border: none;">
<tr>
<td style="width: 20%; text-align: left;" class="header-left">
@include('lpj::component.logo-bag', ['width' => 150, 'height' => 40])
</td>
<td style="text-align: right;">
<div style="">
<p style="margin: 0; padding:0; font-size:10px;">Tanggal: {{ date('Y-m-d') }}</p>
<p style="margin: 0; padding:0; font-size:10px;">Waktu: {{ date('H:i:s') }}</p>
<p style="margin: 0; padding:0; font-size:10px;">User: {{ Auth::user()->name }}</p>
</div>
</td>
</tr>
</table>
</header>

View File

@@ -0,0 +1,103 @@
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style="text-transform: uppercase; text-align: center; margin: 0;">Informasi Dinas Tata Ruang</h2>
</td>
</tr>
</table>
<table>
<tr>
<td width="20%" style="vertical-align: top;">Informasi Dinas Tata Ruang </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
@php
$displayKey = ucfirst(str_replace('_', ' ', $key));
if (strlen($key) == 3) {
$displayKey = strtoupper($key);
}
@endphp
<p> - {{ $displayKey }}: {{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
</td>
</tr>
@php
$fotoTypes = [
'upload_gs',
'foto_sentuh_tanahku',
'foto_gistaru',
'foto_bhumi',
'foto_argis_region',
'foto_tempat',
];
$customLabels = [
'upload_gs' => 'Gambar Situasi',
'foto_sentuh_tanahku' => 'Sentuh Tanahku',
'foto_gistaru' => 'Gistaru',
'foto_bhumi' => 'Bhumi',
'foto_argis_region' => 'Blad Tata Ruang ',
'foto_tempat' => 'Peta Lokasi',
];
// Memindahkan foto_tempat ke depan jika ada
if (($key = array_search('upload_gs', $fotoTypes)) !== false) {
unset($fotoTypes[$key]);
array_unshift($fotoTypes, 'upload_gs');
}
// Filter fotoTypes untuk memastikan hanya yang memiliki imagePath valid
$validPhotoTypes = array_filter($fotoTypes, function ($type) use ($forminspeksi) {
return isset($forminspeksi[$type]) && !empty($forminspeksi[$type]) && is_string($forminspeksi[$type]);
});
@endphp
@foreach ($validPhotoTypes as $type)
@php
$imagePath = $forminspeksi[$type] ?? null;
$imageUrl = is_string($imagePath) ? asset('storage/' . $imagePath) : null;
@endphp
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
<tr>
<td style="20%"> {{ $customLabels[$type] ?? '' }}</td>
<td width="1%" style="vertical-align: top;"></td>
<td style="width: 79%">
<img src="{{ storage_path('app/public/' . $imagePath) }}" alt="{{ $imageUrl }}"
style="max-height: 400px; height: auto; max-width: 100%;">
</td>
</tr>
@endif
@endforeach
<tr>
<td width="20%" style="vertical-align: top;">Catatan yang Perlu Diperhatikan </td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $informasi)
<p>{!! nl2br(e($informasi)) !!}</p>
@endforeach
</td>
</tr>
</table>
</div>

View File

@@ -0,0 +1,713 @@
@include('lpj::surveyor.components.print-out.header')
<div style="border: 1px solid #000;">
<table
style="width: 100%; border-top: none; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Tujuan Penilaian
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px;">Tujuan Penilai</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ $permohonan->tujuanPenilaian->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Cabang/Pemohon</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ $permohonan->debiture->branch->name ?? '' }} / {{ $permohonan->user->name ?? '' }}
</td>
</tr>
</table>
</td>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Tanggal Dibuat</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ formatTanggalIndonesia($permohonan->created_at) }}
</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px;">
Tanggal Survey</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
</tr>
</table>
</td>
</tr>
</table>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Identitas Debitur
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td style="width: 20%; padding: 2px; vertical-align: top;">Nama</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; width: 79%;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Nama Wakil</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
@if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan']))
@foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item)
{{ $item }}
@endforeach
@endif
</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Hubungan Calon debitur</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
@if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan']))
@foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item)
{{ $item }}
@endforeach
@endif
</td>
</tr>
</table>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Lokasi Jaminan
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td width="20%">Terletak di</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $alamat['address'] ?? '' }}</td>
</tr>
<tr>
<td>Kelurahan</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['village_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kecamatan</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['district_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kotamadya</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td> {{ $alamat['city_code'] ?? '' }}</td>
</tr>
<tr>
<td>Propinsi</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td>{{ $alamat['province_code'] ?? '' }}</td>
</tr>
</table>
<div class="no-break" style="border-bottom: 1px solid #000;">
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI
</h2>
</td>
</tr>
</table>
<table>
@include('lpj::component.print-out-dokument')
<tr>
@php
// Ambil nilai sesuai dan tidak sesuai
$hubCadebSesuai = $forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null;
$hubCadebTidakSesuai = $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null;
@endphp
<td style="vertical-align: top;">Hubungan Pemilik Jaminan dengan Debitur</td>
<td style="width:1%; padding: 2px; vertical-align: top;">:</td>
<td>
<div style="margin-bottom: 10px;">
<label>
<input type="radio" name="hubCadebStatus" value="sesuai"
{{ $hubCadebSesuai ? 'checked' : '' }}> Sesuai
</label>
<label style="margin-left: 20px;">
<input type="radio" name="hubCadebStatus" value="tidak sesuai"
{{ $hubCadebTidakSesuai ? 'checked' : '' }}> Tidak Sesuai
</label>
</div>
@if (!empty($basicData['hubCadeb']))
<table>
<tr>
@php $count = 0; @endphp
@foreach ($basicData['hubCadeb'] as $item)
<td>
<label>
<input type="checkbox"
{{ isset($item->name) && ($hubCadebSesuai === $item->name || $hubCadebTidakSesuai === $item->name) ? 'checked' : '' }}>
{{ $item->name ?? '' }}
</label>
</td>
@php $count++; @endphp
@if ($count % 3 === 0)
</tr>
<tr>
@endif
@endforeach
@if ($count % 3 !== 0)
@for ($i = 0; $i < 3 - ($count % 3); $i++)
<td></td>
@endfor
@endif
</tr>
</table>
@endif
</td>
</tr>
<tr>
@php
$statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null;
@endphp
<td style="vertical-align: top; width: 20%; padding: 2px;">Hubungan Penghuni Jaminan dengan Debitur</td>
<td style="width:1%; padding: 2px; vertical-align: top;">:</td>
<td style="vertical-align: top;">
@if (isset($selectedData))
{{ $selectedData ?? '' }}
</td>
@endif
</td>
</tr>
</table>
</div>
<div>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Kondisi Fisik Objek
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top; width: 25%;">Kendaraan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table style="width: 100%;">
@if (isset($basicData['jenisKendaraan']))
@foreach ($basicData['jenisKendaraan'] as $item)
<tr>
<td width="40%">
<label class="form-label max-w-56 gap-2.5">
<input class="checkbox" name="kendaraan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kendaraan', $forminspeksi['kendaraan'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
</td>
<td width="1%"></td>
<td width="100%">
<p>{{ old('kendaraan_input.' . $loop->index, $forminspeksi['kendaraan_input'][$loop->index] ?? '') }}</p>
</td>
</tr>
@endforeach
@endif
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Kondisi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;"></td>
</tr>
<tr>
<td style="vertical-align: top;">Nomor Polisi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Merek</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Warana</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Nomor Rangka</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Nomor Mesin</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Posisi Kilometer</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="sesuai" >
Sesuai
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_bangunan_radio" value="tidak sesuai" >
Tidak Sesuai
</label>
</td>
</tr>
</table>
</td>
</tr>
@php
$inputDataJaminan = [
[
'label' => 'Transmisi',
'value' => ['Otomatis', 'Manual'],
'name' => 'transmisi',
'index' => 0,
],
[
'label' => 'Mesin dan panel Instrument',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'mesin_panel_instrument',
'index' => 1,
],
[
'label' => 'Fungsi Mesin dan panel Instument',
'value' => ['Berfungsi', 'Rusak'],
'name' => 'fungsi_mesin_panel_instrument',
'index' => 2,
],
[
'label' => 'Interior',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'interior',
'index' => 3,
],
[
'label' => 'Jumlah pintu',
'value' => ['Dua Pintu', 'Empat Pintu', 'Lain-Lain'],
'name' => 'jumlah_pintu',
'index' => 4,
],
[
'label' => 'Rangka dan karoseri',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'rangka_karoseri',
'index' => 5,
],
[
'label' => 'Ban',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'ban',
'index' => 6,
],
[
'label' => 'Velg',
'value' => ['Standard', 'Tidak Standard'],
'name' => 'velg',
'index' => 7,
],
[
'label' => 'Bamper Depan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'bamper_depan',
'index' => 8,
],
[
'label' => 'Bamper Belakang',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'bamper_belakang',
'index' => 9,
],
[
'label' => 'Lampu depan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'lampu_depan',
'index' => 10,
],
[
'label' => 'Lampu belakang',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'lampu_belakang',
'index' => 11,
],
[
'label' => 'Kaca kendaraan',
'value' => ['Terawat', 'Cukup Terawat', 'Tidak Terawat'],
'name' => 'kaca_kendaraan',
'index' => 12,
],
[
'label' => 'Air Conditioner',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'air_conditioner',
'index' => 13,
],
[
'label' => 'Tape/Radio/CD dan perlengkapan (Equalizer, Booster, dll)',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'tape_radio_cd',
'index' => 14,
],
[
'label' => 'Sensor parkir',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sensor_parkir',
'index' => 15,
],
[
'label' => 'Sensor Camera (360), Recorder',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sensor_camera_recorder',
'index' => 16,
],
[
'label' => 'Lcd',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'lcd',
'index' => 17,
],
[
'label' => 'Sabuk Keselamatan',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'sabuk_keselamatan',
'index' => 18,
],
[
'label' => 'Airbag',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'airbag',
'index' => 19,
],
[
'label' => 'Asuransi',
'value' => ['Ada', 'Tidak Ada'],
'name' => 'asuransi',
'index' => 20,
],
];
@endphp
@foreach ($inputDataJaminan as $item)
<tr>
<td style="vertical-align: top; width: 25%;">{{ $item['label'] }}</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
<table style="width: 100%; border-collapse: collapse;">
@foreach ($item['value'] as $value)
<tr>
<td>
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="{{ $item['name'] }}[]" type="checkbox"
value="{{ $value }}"
{{ in_array($value, old($item['name'], $forminspeksi[$item['name']] ?? [])) ? 'checked' : '' }} />
{{ $value }}
@if ($forminspeksi[$item['name'] . '_input'][$loop->index] != null)
-
{{ old($item['name'] . '_input' . $loop->index, $forminspeksi[$item['name'] . '_input'][$loop->index] ?? '') }}
@endif
</label>
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endforeach
<tr>
<td style="vertical-align: top;">Perusahaan Asuransi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">{{ $forminspeksi['perusahaan_asuransi'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Tahun Berakhir</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
{{ isset($forminspeksi['tahun_berakhir']) ? formatTanggalIndonesia($forminspeksi['tahun_berakhir']) : '' }}
</td>
</tr>
</table>
</div>
<div>
<table
style="width: 100%; border-top: 1px solid #000; border-bottom: 1px solid #000; border-collapse: collapse; border-left: none; border-right: none;">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ANalisa Fakta
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td width="25%" style="vertical-align: top;">Faktor Positif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@isset($forminspeksi['fakta_positif'])
<table style="width: 100%; border-collapse: collapse;">
@foreach ($forminspeksi['fakta_positif'] as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@endisset
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;">Faktor Negatif</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['fakta_negatif'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;">Analisa Makro</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['analisa_makro'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td width="20%" style="vertical-align: top;">Kesimpulan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="100%" style="vertical-align: top;">
@php
$faktaNegatif = $forminspeksi['catatan'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
</table>
</div>
</div>
@include('lpj::surveyor.components.print-out.footer')

View File

@@ -0,0 +1,313 @@
<div class="no-break">
<table style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Analisa Lingkungan
</td>
</tr>
</table>
<table>
<tr>
<td>
<table>
<tr>
<td width="25%">Jarak Jalan Utama</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? '' }} {{ $forminspeksi['lingkungan']['jalan_linkungan'] ?? '' }}</td>
</tr>
<tr>
<td>Jarak CBD Point</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['jarak_cbd_point'] ?? '' }} {{ $forminspeksi['lingkungan']['nama_cbd_point'] ?? '' }}</td>
</tr>
<tr>
<td>Lebar Perkerasan Jalan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Perkerasan Jalan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['perkerasanJalan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['perkerasanJalan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) && in_array($item->name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Lalu Lintas Depan Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['laluLintasLokasi']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['laluLintasLokasi'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, $forminspeksi['lingkungan']['lalu_lintas']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Golongan Masyarakat Sekitar</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['golMasySekitar']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['golMasySekitar'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, $forminspeksi['lingkungan']['gol_mas_sekitar']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Tingkat Keramaian</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['tingkatKeramaian']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['tingkatKeramaian'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['tingkat_keramaian']) && in_array($item->name, $forminspeksi['lingkungan']['tingkat_keramaian']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Terletak Di Area</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['terletakDiArea']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['terletakDiArea'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea']) && in_array($item->name, $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? '') ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['lingkungan']['terletak_diarea']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['terletak_diarea']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Disekitar Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Telah ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }}>
Telah ada bangunan
@if (($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya')
- Kondisi Bangunan:
{{ $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '' }}
, Sifat Bangunan:
{{ $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Belum ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak' ? 'checked' : '' }}>
Belum ada bangunan
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Makam</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya')
- Nama Makam:
{{ $forminspeksi['lingkungan']['nama_makam'] ?? '' }}
, Jarak Makam:
{{ $forminspeksi['lingkungan']['jarak_makam'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat TPS</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya')
- Nama TPS:
{{ $forminspeksi['lingkungan']['nama_tps'] ?? '' }}
, Jarak TPS:
{{ $forminspeksi['lingkungan']['jarak_tps'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Lainnya</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['dekat_lainnya'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Merupakan Daerah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['merupakanDaerah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['merupakanDaerah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['merupakan_daerah']) && in_array($item->name, $forminspeksi['lingkungan']['merupakan_daerah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Fasilitas Umum Dekat Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@if (isset($basicData['fasilitasObjek']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['fasilitasObjek'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['fasilitas_dekat_object']) && $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] ? 'checked' : '' }}>
{{ $item->name}} {{isset($forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name]) ? '('. $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] .')' : ''}}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>

View File

@@ -0,0 +1,640 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hasil Inspeksi</title>
<style>
* {
font-size: 12px;
}
body {
font-family: Arial, sans-serif;
}
/** Define the header rules **/
@page {
margin-top: 100px;
margin-bottom: 50px;
}
#header {
position: fixed;
top: -80px;
left: 0;
right: 0;
height: 50px;
text-align: center;
padding-bottom: 10px;
}
.header-logo {
position: absolute;
left: 20px;
top: 10px;
max-height: 80px;
max-width: 150px;
}
.header-title {
margin-top: 20px;
}
#footer {
position: fixed;
bottom: -50px;
left: 0;
right: 0;
height: 50px;
text-align: center;
border-top: 1px solid #ddd;
padding-top: 10px;
font-size: 9px;
}
.page-number:after {
content: counter(page) " dari " counter(pages);
}
.content {
margin-top: 10px;
}
.page-break {
page-break-after: always;
}
#footer {
position: fixed;
bottom: -50px;
left: 0;
right: 0;
height: 50px;
text-align: left;
border-top: 1px solid #ddd;
padding-top: 10px;
font-size: 12px;
}
body {
margin-top: 3cm;
margin-bottom: 120px;
position: relative;
z-index: 1;
}
.border {
border: 1px solid #000;
}
.no-break {
page-break-inside: avoid;
page-break-before: auto;
page-break-after: auto;
}
.custom-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
}
.custom-table td {
vertical-align: top;
}
.custom-table td:first-child {
font-weight: bold;
width: 30%;
/* Sesuaikan lebar kolom keterangan */
}
table.checkbox-list {
width: 100%;
border-collapse: collapse;
}
td.checkbox-item {
width: 33.33%;
vertical-align: top;
text-align: left;
}
label.checkbox-label {
display: flex;
align-items: center;
font-size: 12px;
}
label.checkbox-label input[type="checkbox"] {
margin-right: 6px;
transform: scale(1.3);
/* Memperkecil ukuran checkbox */
}
@media print {
table {
border-collapse: collapse;
}
tr {
page-break-inside: avoid;
}
td, th {
border: 1px solid #000;
}
}
</style>
</head>
@php
$data = '';
$dokument = null;
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$dokument = $dokumen;
}
$data = rtrim($data, ', ');
$senior_officer = null;
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
}
use Modules\Usermanagement\Models\User;
$surveyorUser = User::where('id', $surveyor->userPenilaiTeam->id)->first();
@endphp
<body style="width: 90%; margin: auto">
<header id="header">
<table style="width: 100%; border: none;">
<tr>
<td style="width: 20%; text-align: left;" class="header-left">
@include('lpj::component.logo-bag', ['width' => 150, 'height' => 40])
</td>
<td style="text-align: right;">
<div style="">
<p style="margin: 0; padding:0; font-size:10px;">
Tanggal: {{ \Carbon\Carbon::parse($permohonan->penilaian->updated_at)->format('d-m-Y') }}
</p>
<p style="margin: 0; padding:0; font-size:10px;">
Waktu: {{ \Carbon\Carbon::parse($permohonan->penilaian->updated_at)->format('H:i') }}
</p>
<p style="margin: 0; padding:0; font-size:10px;">User: {{ $surveyorUser->name }}</p>
</div>
</td>
</tr>
</table>
</header>
<div style="text-align: center; text-transform: uppercase; font-weight: bold;">
<h1 style="font-size: 14px;">
FORM INSPEKSI {{ $data ?? '' }}
</h1></div>
<div >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Tujuan Penilaian
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px;">Tujuan Penilai</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ $permohonan->tujuanPenilaian->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Cabang/Pemohon</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ $permohonan->debiture->branch->name ?? '' }} / {{ $permohonan->user->name ?? '' }}
</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Debitur/Perwakilan</td>
<td style="width: 1%; padding: 2px; vertical-align: top;">:</td>
<td style="vertical-align: top; padding: 2px;">
@if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan']))
@foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item)
<p style="margin: 0; padding:0;">
{{ $item }}
</p>
@endforeach
@endif
</td>
</tr>
</table>
</td>
<td style="vertical-align: top;">
<table>
<tr>
<td style="width: 25%; padding: 2px;">
Tanggal Survey</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="vertical-align: top; padding: 2px;">
{{ formatTanggalIndonesia($permohonan->penilaian->updated_at) }}</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Pihak Bank</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; vertical-align: top;">
{{ isset($forminspeksi['asset']['pihak_bank']) ? $forminspeksi['asset']['pihak_bank'] : '' }}
</td>
</tr>
</table>
</td>
</tr>
</table>
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Nama Cadeb/Debitur
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Nama</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; width: 79%;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
</table>
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse;">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Deskripsi Aset jaminan
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
@php
$statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedData = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null;
$lainnya = isset($forminspeksi['asset']['jenis_asset']['Lainnya'])
? $forminspeksi['asset']['jenis_asset']['Lainnya']
: null;
@endphp
<td width="25%" style="padding: 2px; vertical-align: top;">Jenis Aset</td>
<td width="1%" style=" vertical-align: top;">:</td>
<td style="vertical-align: top; width: %;">
{{ $selectedData ?? '' }} {{ $lainnya ?? '' }}
</td>
</tr>
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Alamat</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top;">
<table style="margin: 0">
<tr>
<td width="25%">Terletak di</td>
<td> {{ $alamat['address'] ?? '' }}</td>
</tr>
<tr>
<td>Kelurahan</td>
<td>{{ $alamat['village_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kecamatan</td>
<td>{{ $alamat['district_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kotamadya</td>
<td> {{ $alamat['city_code'] ?? '' }}</td>
</tr>
<tr>
<td>Propinsi</td>
<td>{{ $alamat['province_code'] ?? '' }}</td>
</tr>
</table>
</td>
</tr>
</table>
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Titik Koordinat Google Maps
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td style="width: 25%; padding: 2px; vertical-align: top;">Titik Kordinat</td>
<td style="width: 1%; vertical-align: top;">:</td>
<td style="vertical-align: top; width: 79%;">
{{ isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '' }}
,
{{ isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '' }}
</td>
</tr>
</table>
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI
</h2>
</td>
</tr>
</table>
<table>
@include('lpj::component.print-out-dokument')
<tr>
@php
// Ambil nilai sesuai dan tidak sesuai
$hubCadebSesuai = $forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null;
$hubCadebTidakSesuai = $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null;
@endphp
<td style="vertical-align: top;">Hubungan Pemilik Jaminan dengan Debitur</td>
<td style="width:1%; padding: 2px; vertical-align: top;">:</td>
<td>
<div style="margin-bottom: 10px;">
<label>
<input type="radio" name="hubCadebStatus" value="sesuai"
{{ $hubCadebSesuai ? 'checked' : '' }}> Sesuai
</label>
<label style="margin-left: 20px;">
<input type="radio" name="hubCadebStatus" value="tidak sesuai"
{{ $hubCadebTidakSesuai ? 'checked' : '' }}> Tidak Sesuai
</label>
</div>
@if (!empty($basicData['hubCadeb']))
<table>
<tr>
@php $count = 0; @endphp
@foreach ($basicData['hubCadeb'] as $item)
<td>
<label>
<input type="checkbox"
{{ isset($item->name) && ($hubCadebSesuai === $item->name || $hubCadebTidakSesuai === $item->name) ? 'checked' : '' }}>
{{ $item->name ?? '' }}
</label>
</td>
@php $count++; @endphp
@if ($count % 3 === 0)
</tr>
<tr>
@endif
@endforeach
@if ($count % 3 !== 0)
@for ($i = 0; $i < 3 - ($count % 3); $i++)
<td></td>
@endfor
@endif
</tr>
</table>
@endif
</td>
</tr>
<tr>
@php
$statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null;
@endphp
<td style="vertical-align: top; width: 20%; padding: 2px;">Hubungan Penghuni Jaminan dengan Debitur</td>
<td style="width:1%; padding: 2px; vertical-align: top;">:</td>
<td style="vertical-align: top;">
@if (isset($selectedData))
{{ $selectedData ?? '' }}
</td>
@endif
</td>
</tr>
</table>
</div>
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
@include('lpj::surveyor.components.print-out.rap')
@else
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
@if (isset($formKategori) && $formKategori)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
@endif
@foreach ($kategoriUnik as $kategori)
{{-- Tampilkan komponen sesuai kategori jika file komponen ada --}}
@includeIf('lpj::surveyor.components.print-out.' . str_replace('-', '-', $kategori), [
'dokumen' => $dokumen,
])
@endforeach
@endif
@endforeach
@endif
</div>
<div class="no-break">
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td>
<table>
<tr>
<td>
Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }}
</td>
</tr>
<tr>
<td>
TTD
</td>
</tr>
</table>
<table style="width: 100%; border-collapse: collapse; text-align: center;">
<tr>
@if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image']))
@php
$imagePath = $forminspeksi['signature']['penilai']['image'];
$isBase64 = str_starts_with($imagePath, 'data:image');
if (!$isBase64) {
$relativePath = str_replace(url('storage') . '/', '', $imagePath);
$absolutePath = storage_path('app/public/' . $relativePath);
} else {
$absolutePath = $imagePath;
}
@endphp
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $absolutePath }}" alt="">
</td>
@endif
@if (isset($forminspeksi['signature']['cabang']))
@php
$imagePath = $forminspeksi['signature']['cabang']['image'];
$isBase64 = str_starts_with($imagePath, 'data:image');
if (!$isBase64) {
$relativePath = str_replace(url('storage') . '/', '', $imagePath);
$absolutePath = storage_path('app/public/' . $relativePath);
} else {
$absolutePath = $imagePath;
}
@endphp
<td style="width: 100px;">
<img style="width: 100px;" src="{{ $absolutePath }}" alt="">
</td>
@endif
@if (isset($forminspeksi['signature']['debitur']))
<td style="width: 100px;">
<img style="width: 100px;"
src="{{ $forminspeksi['signature']['debitur']['image'] }}"
alt="Debitur/Perwakilan">
</td>
@endif
<!-- K.J.P.P -->
@if (isset($forminspeksi['signature']['kjpp']))
<td style="width: 100px;">
<img style="width: 100px;"
src="{{ $forminspeksi['signature']['kjpp']['image'] }}" alt="KJPP">
</td>
@endif
</tr>
<tr>
@if (isset($forminspeksi['signature']['penilai']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('PENILAI')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['cabang']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('CABANG')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['debitur']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }}</span>
<br />
<span>{{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }}</span>
</td>
@endif
@if (isset($forminspeksi['signature']['kjpp']['name']))
<td style=" text-align: center">
<span>{{ ucwords(strtolower($forminspeksi['signature']['kjpp']['name'])) }}</span>
<br />
<span>{{ strtoupper('K.J.P.P') }}</span>
</td>
@endif
</tr>
</table>
</td>
</tr>
</table>
</div>
<footer id="footer">
{{-- Cabang : {{ $permohonan->debiture->branch->name ?? '' }} --}}
</footer>
<script type="text/php">
if (isset($pdf)) {
$pdf->page_script('
$font = $fontMetrics->get_font("Arial, Helvetica, sans-serif", "normal");
$size = 10;
$pageText = $PAGE_NUM;
$y = 800;
$x = 550;
$pdf->text($x, $y, $pageText, $font, $size);
');
}
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,497 @@
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
PERIZINAN
</h2>
</td>
</tr>
</table>
<table>
@if (isset($forminspeksi['perizinan']) && is_array($forminspeksi['perizinan']) && count($forminspeksi['perizinan']) > 0)
@foreach ($forminspeksi['perizinan'] as $perizinan)
<tr>
<td style="width: 20%; padding: 2px;">Perizinan</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $perizinan['perizinan'] }}</td>
</tr>
@endforeach
@endif
@if (isset($forminspeksi['brosur_price_list']) && count($forminspeksi['brosur_price_list']) > 0)
@foreach ($forminspeksi['brosur_price_list'] as $perizinan)
<tr>
<td style="width: 20%; padding: 2px;">Brosur & Pricelist</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $perizinan['jenis'] }}</td>
</tr>
@endforeach
@endif
</table>
</div>
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
DESKRIPSI DEVELOPER
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Pengalaman Developer & Proyek Yang Pernah
Dibuat</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td style="width: 79%;">{!! nl2br(e($forminspeksi['pengalaman_developer'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Apakah Developer Anggota REI</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['developer_anggota'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@isset($forminspeksi['lainnya_developer'])
@foreach ($forminspeksi['lainnya_developer'] as $item)
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Lainnya</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
@endisset
</table>
</div>
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
KONDISI, LINGKUNGAN DAN PROGRESS PEMBANGUNAN
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kapan Mulai Dibangun & Target Penyelesaian
</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kapan_mulai_dibangun'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kondisi Perumahan Saat Ini</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kondisi_perumahan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Progress Pembangunan</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['progres_pembangunan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kontraktor (internal/eksternal)</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kontraktor'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Lingkungan Sekitar</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['lingkungan_sekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Komplek Lain Disekitar Lokasi</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['komplek_disekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Pusat Keramaian Dekat Lokasi</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['pusat_keramaian'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Transportasi Umum Yang Tersedia</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['transportasi_umum'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@isset($forminspeksi['lainnya_kondisi'])
@foreach ($forminspeksi['lainnya_kondisi'] as $item)
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Lainnya</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
@endisset
</table>
</div>
<div class="no-break" >
@isset($forminspeksi['partisi'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
PARTISI BANGUNAN
</h2>
</td>
</tr>
</table>
<table style="width: 100%;">
@if (is_array($forminspeksi['partisi']))
@foreach ($forminspeksi['partisi'] as $key => $item)
@if (is_array($item))
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">
{{ $item['nama'] ?? '' }}
</td>
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
<td>
{{ $item['value'] ?? '' }}
</td>
</tr>
@endif
@endforeach
@endif
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['jumlah_unit'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
JUMLAH UNIT, BLOK, TYPE DAN LUAS BANGUNAN
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['jumlah_unit'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['batas_batas_perumahan'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
BATAS-BATAS PERUMAHAN
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['batas_batas_perumahan'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['fasus_fasum'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
FASOS/FASUM
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['fasus_fasum'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['progres_penjualan'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
PROGRES PENJUALAN SAAT INI
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['progres_penjualan'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['harga_unit'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
HARGA UNIT
</h2>
</td>
</tr>
</table>
<<table>
@foreach ($forminspeksi['harga_unit'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['target_market'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
TARGet market
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['target_market'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['kerjasama_dengan_bank'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
Kerjasama dengan bank lain
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['rute_menuju_lokasi'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
rute menuju lokasi
</h2>
</td>
</tr>
</table>
<table>
<tr>
<td>
{{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}
</td>
</tr>
</table>
@endisset
</div>
<div class="no-break" >
@isset($forminspeksi['properti_sejenis'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
properti sejenis
</h2>
</td>
</tr>
</table>
<table>
<tr>
<td>
{{ $forminspeksi['properti_sejenis'] ?? '' }}
</td>
</tr>
</table>
@endisset
</div>
<div class="no-break" >
@if (isset($forminspeksi['fakta']) && is_array($forminspeksi['fakta']))
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ATURAN TATA KOTA
</h2>
</td>
</tr>
</table>
<table>
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@if (isset($forminspeksi['fakta']) && is_array($forminspeksi['fakta']))
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
@php
$displayKey = ucfirst(str_replace('_', ' ', $key));
if (strlen($key) == 3) {
$displayKey = strtoupper($key);
}
@endphp
<p> - {{ $displayKey }}: {{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
@endif
</table>
@endif
</div>
<div class="no-break" >
@isset($forminspeksi['fakta']['keterangan'])
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
CATATAN LAINNYA
</h2>
</td>
</tr>
</table>
<table>
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
<tr>
<td>
<p>{!! nl2br(e($keterangan)) !!}</p>
</td>
</tr>
@endforeach
</table>
@endisset
</div>

View File

@@ -0,0 +1,327 @@
<div class="no-break" >
<table
style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td></td>
<td style="text-align: center; margin-top: 5px; ">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
ANalisa Tanah
</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
@php
$cekLuas =
old('luas_tanah_radio') ??
(isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai');
$luasSesuai = $forminspeksi['tanah']['luas_tanah']['sesuai'] ?? null;
$luasTidakSesuai = $forminspeksi['tanah']['luas_tanah']['tidak sesuai'] ?? null;
@endphp
<td width="25%" style="vertical-align: top;">Luas Tanah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td width="" style="text-align: left">
<table>
<tr>
<td>
<label>
<input type="radio" name="luas_tanah_radio" value="sesuai"
{{ $cekLuas == 'sesuai' ? 'checked' : '' }}>
Sesuai {{ $luasSesuai ? '- ' . $luasSesuai . ' m²' : '' }}
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="luas_tanah_radio" value="tidak sesuai"
{{ $cekLuas == 'tidak sesuai' ? 'checked' : '' }}>
Tidak Sesuai {{ $luasTidakSesuai ? '- ' . $luasTidakSesuai . ' m² (luas fisik)' : '' }}
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Hadap mata Angin</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<label>
<input type="radio" name="tusuk_sate" value="Ya"
{{ isset($forminspeksi['tanah']['hadap_mata_angin']['sesuai']) && $forminspeksi['tanah']['hadap_mata_angin']['sesuai'] ? 'checked' : '' }}>
sesuai
</label>
<label>
<input type="radio" name="hadap_mata_angin" value="tidak sesuai"
{{ isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai']) && $forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'] ? 'checked' : '' }}>
Tidak
@if (isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai']) &&
$forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai']
)
{{ isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai']) ? ' (' . $forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'] . ')' : '' }}
@endif
</label>
</td>
</tr>
<!-- Bentuk Tanah -->
<tr>
<td style="vertical-align: top;">Bentuk Tanah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['bentukTanah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['bentukTanah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']) && in_array($item->name, $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']) ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['tanah']['bentuk_tanah']['lainnya']) ? ' (' . $forminspeksi['tanah']['bentuk_tanah']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<!-- Kontur Tanah -->
<tr>
<td style="vertical-align: top;">Kontur Tanah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['konturTanah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['konturTanah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['tanah']['kontur_tanah']) && in_array($item->name, $forminspeksi['tanah']['kontur_tanah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<!-- Ketinggian Tanah -->
<tr>
<td style="vertical-align: top;">Beda Ketinggian Dengan Jalan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['ketinggianTanah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['ketinggianTanah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['tanah']['ketinggian_tanah']['ketinggian']) && in_array($item->name, $forminspeksi['tanah']['ketinggian_tanah']['ketinggian']) ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lebih Tinggi')
{{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi']) ? ' (' . $forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi'] . ')' : '' }}
@endif
@if ($item->name == 'Lebih Rendah')
{{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah']) ? ' (' . $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Kontur Jalan Depan Objek</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<table>
<tr>
<td>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="menurun"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'menurun' ? 'checked' : '' }}>
<span class="ml-2">Menurun</span>
</label>
</td>
</tr>
<tr>
<td>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="rata"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'rata' ? 'checked' : '' }}>
<span class="ml-2">Rata</span>
</label>
</td>
</tr>
<tr>
<td>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="Menanjak"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'Menanjak' ? 'checked' : '' }}>
<span class="ml-2">Menanjak</span>
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Posisi Kavling</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['posisiKavling']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['posisiKavling'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['tanah']['posisi_kavling']['posisi_kavling']) && in_array($item->name, $forminspeksi['tanah']['posisi_kavling']['posisi_kavling']) ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['tanah']['posisi_kavling']['lainnya']) ? ' (' . $forminspeksi['tanah']['posisi_kavling']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<!-- Kondisi Fisik Tanah -->
<tr>
<td style="vertical-align: top;">Tusuk Sate</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<table>
<tr>
<td>
<label>
<input type="radio" name="tusuk_sate" value="Ya"
{{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya'] ? 'checked' : '' }}>
Ya
@if (isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya'])
{{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? ' (' . $forminspeksi['tanah']['tusuk_sate']['Ya'] . ')' : '' }}
@endif
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="tusuk_sate" value="Tidak"
{{ isset($forminspeksi['tanah']['tusuk_sate']['Tidak']) && $forminspeksi['tanah']['tusuk_sate']['Tidak'] ? 'checked' : '' }}>
Tidak
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Lockland</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<table>
<tr>
<td>
<label>
<input type="radio" name="lockland" value="yes"
{{ isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'yes' ? 'checked' : '' }}>
Ya
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="radio" name="lockland" value="no"
{{ isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'no' ? 'checked' : '' }}>
Tidak
</label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Kondisi Fisik Tanah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['kondisiFisikTanah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['kondisiFisikTanah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah']) && in_array($item->name, $forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</table>
</div>

View File

@@ -0,0 +1,728 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Perizinan
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<!-- Bagian Perizinan -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label class="form-label max-w-56">Perizinan Lainnya</label>
<div class="flex-wrap items-stretch w-full">
<div class="flex flex-col items-start gap-4 w-full">
@if (isset($basicData['perizinan']))
@foreach ($basicData['perizinan'] as $key => $item)
<div class="flex items-center gap-4 w-full">
<label class="form-label flex items-center gap-2.5 text-nowrap min-w-[200px]">
<input class="checkbox"
name="perizinan[{{ $key }}]"
type="checkbox"
value="{{ $item->name }}"
@checked(in_array($item->name, old('perizinan', [])) ||
(isset($forminspeksi['perizinan']) &&
in_array($item->name, array_column($forminspeksi['perizinan'], 'perizinan'))))>
{{ $item->name }}
</label>
<div class="grid gap-2.5 w-full">
<div class="flex items-center gap-4 w-full">
@php
$existingFile = isset($forminspeksi['perizinan'])
? collect($forminspeksi['perizinan'])->firstWhere('perizinan', $item->name)
: null;
@endphp
@if ($existingFile)
<div class="flex items-center gap-4 w-full">
<span class="text-sm text-gray-600">
{{ basename($existingFile['perizinan_file']) }}
</span>
<span class="flex-none badge badge-sm badge-outline badge-warning mt-2"
onclick="viewPDF('{{ Storage::url($existingFile['perizinan_file']) }}')">
<i class="ki-filled ki-eye mr-2"></i>Preview
</span>
</div>
@endif
</div>
<div class="flex items-center gap-4 w-full">
<input class="file-input w-full"
name="perizinan_file[{{ $key }}]"
type="file"
accept=".pdf"
data-index="{{ $key }}">
</div>
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
<!-- Bagian Brosur & Pricelist -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label class="form-label max-w-56">Brosur & Pricelist</label>
<div class="flex-wrap items-stretch w-full">
@php
$brosurItems = [
[
'label' => 'Brosur',
'name' => 'brosur_price_list',
'inputname' => 'brosur_price_list_file',
],
[
'label' => 'Pricelist',
'name' => 'brosur_price_list',
'inputname' => 'brosur_price_list_file',
],
];
@endphp
<div class="flex flex-col items-start gap-4 w-full">
@foreach ($brosurItems as $index => $item)
<div class="flex items-center gap-4 w-full">
<label class="form-label flex items-center gap-2.5 text-nowrap min-w-[200px]">
<input class="checkbox"
name="{{ $item['name'] }}[{{ $index }}]"
type="checkbox"
value="{{ $item['label'] }}"
@checked(in_array($item['label'], old('brosur_price_list', [])) ||
(isset($forminspeksi['brosur_price_list']) &&
in_array($item['label'], array_column($forminspeksi['brosur_price_list'], 'jenis'))))>
{{ $item['label'] }}
</label>
<div class="grid gap-2.5 w-full">
<div class="flex items-center gap-4 w-full">
@php
$existingFile = isset($forminspeksi['brosur_price_list'])
? collect($forminspeksi['brosur_price_list'])->firstWhere('jenis', $item['label'])
: null;
@endphp
@if ($existingFile)
<div class="flex items-center gap-4 w-full">
<span class="text-sm text-gray-600">
{{ basename($existingFile['file_path']) }}
</span>
<span class="flex-none badge badge-sm badge-outline badge-warning mt-2"
onclick="viewPDF('{{ Storage::url($existingFile['file_path']) }}')">
<i class="ki-filled ki-eye mr-2"></i>Preview
</span>
</div>
@endif
</div>
<div class="flex items-center gap-4 w-full">
<input class="file-input w-full"
name="{{ $item['inputname'] }}[{{ $index }}]"
type="file"
accept=".pdf"
data-index="{{ $index }}"
id="file_{{ $index }}">
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Deskripsi developer
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Pengalaman Developer & Proyek Yang Pernah Dibuat</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['pengalaman_developer']))
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="pengalaman_developer" rows="10">{{ old('pengalaman_developer', $forminspeksi['pengalaman_developer']) }}</textarea>
</div>
@else
<div class="pengalaman_developer flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="pengalaman_developer" rows="10">{{ old('pengalaman_developer') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Apakah Developer Anggota REI</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['developer_anggota']))
<div class="developer_anggota flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="developer_anggota" rows="10">{{ old('developer_anggota', $forminspeksi['developer_anggota']) }}</textarea>
</div>
@else
<div class="developer_anggota flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="developer_anggota" rows="10">{{ old('developer_anggota') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lainnya</label>
<div class="w-full">
<div id="lainnya_developer-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['lainnya_developer']))
@foreach ($forminspeksi['lainnya_developer'] as $index => $item)
<div class="lainnya_developer flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lainnya_developer[]" rows="10">{{ old("lainnya_developer.$index", $item) }}</textarea>
</div>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
@endforeach
@else
<div class="lainnya_developer flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lainnya_developer[]" rows="10">{{ old('lainnya_developer.0', '') }}</textarea>
</div>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
@endif
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('lainnya_developer-container', 'lainnya_developer')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
KONDISI, LINGKUNGAN DAN PROGRESS PEMBANGUNAN
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kapan Mulai Dibangun & Target Penyelesaian</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['kapan_mulai_dibangun']))
<div class="kapan_mulai_dibangun flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kapan_mulai_dibangun" rows="10">{{ old('kapan_mulai_dibangun', $forminspeksi['kapan_mulai_dibangun']) }}</textarea>
</div>
@else
<div class="kapan_mulai_dibangun flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kapan_mulai_dibangun" rows="10">{{ old('kapan_mulai_dibangun') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi Perumahan Saat Ini</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['kondisi_perumahan']))
<div class="kondisi_perumahan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_perumahan" rows="10">{{ old('kondisi_perumahan', $forminspeksi['kondisi_perumahan']) }}</textarea>
</div>
@else
<div class="kondisi_perumahan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kondisi_perumahan" rows="10">{{ old('kondisi_perumahan') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Progress Pembangunan</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['progres_pembangunan']))
<div class="progres_pembangunan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="progres_pembangunan" rows="10">{{ old('progres_pembangunan', $forminspeksi['progres_pembangunan']) }}</textarea>
</div>
@else
<div class="progres_pembangunan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="progres_pembangunan" rows="10">{{ old('progres_pembangunan') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kontraktor (internal/eksternal)</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['kontraktor']))
<div class="kontraktor flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kontraktor" rows="10">{{ old('kontraktor', $forminspeksi['kontraktor']) }}</textarea>
</div>
@else
<div class="kontraktor flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kontraktor" rows="10">{{ old('kontraktor') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lingkungan Sekitar</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['lingkungan_sekitar']))
<div class="lingkungan_sekitar flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lingkungan_sekitar" rows="10">{{ old('lingkungan_sekitar', $forminspeksi['lingkungan_sekitar']) }}</textarea>
</div>
@else
<div class="lingkungan_sekitar flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lingkungan_sekitar" rows="10">{{ old('lingkungan_sekitar') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Komplek Lain Disekitar Lokasi</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['komplek_disekitar']))
<div class="komplek_disekitar flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="komplek_disekitar" rows="10">{{ old('komplek_disekitar', $forminspeksi['komplek_disekitar']) }}</textarea>
</div>
@else
<div class="komplek_disekitar flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="komplek_disekitar" rows="10">{{ old('komplek_disekitar') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Pusat Keramaian Dekat Lokasi</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['pusat_keramaian']))
<div class="pusat_keramaian flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="pusat_keramaian" rows="10">{{ old('pusat_keramaian', $forminspeksi['pusat_keramaian']) }}</textarea>
</div>
@else
<div class="pusat_keramaian flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="pusat_keramaian" rows="10">{{ old('pusat_keramaian') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Transportasi Umum Yang Tersedia</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['transportasi_umum']))
<div class="transportasi_umum flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="transportasi_umum" rows="10">{{ old('transportasi_umum', $forminspeksi['transportasi_umum']) }}</textarea>
</div>
@else
<div class="transportasi_umum flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="transportasi_umum" rows="10">{{ old('transportasi_umum') }}</textarea>
</div>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lainnya</label>
<div id="lainnya-kondisi-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['lainnya_kondisi']))
@foreach ($forminspeksi['lainnya_kondisi'] as $index => $positif)
<div class="lainnya_kondisi flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lainnya_kondisi[]" rows="10">{{ old("lainnya_kondisi.$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="lainnya_kondisi flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="lainnya_kondisi[]" rows="10">{{ old('lainnya_kondisi.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('lainnya-kondisi-container', 'lainnya_kondisi')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
PARTISI BANGUNAN
</h3>
</div>
<div class="card-body">
<div class="grid gap-2.5">
@if (isset($basicData['spekKategoriBangunan']))
@foreach ($basicData['spekKategoriBangunan'] as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item->name ?? '' }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="hidden" name="partisi[{{ $item->name }}][nama]"
value="{{ $item->name ?? '' }}">
<input type="text" name="partisi[{{ $item->name }}][value]" class="input"
placeholder="Masukkan {{ $item->name }}"
value="{{ isset($forminspeksi['partisi'][$item->name]['value']) ? $forminspeksi['partisi'][$item->name]['value'] : old('partisi.' . $item->name . '.value') }}">
</div>
</div>
@endforeach
@endif
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
JUMLAH UNIT, BLOK, TYPE DAN LUAS BANGUNAN
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="jumlah-unit" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['jumlah_unit']))
@foreach ($forminspeksi['jumlah_unit'] as $index => $positif)
<div class="jumlah_unit flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="jumlah_unit[]" rows="10">{{ old("jumlah_unit.$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="jumlah_unit flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="jumlah_unit[]" rows="10">{{ old('jumlah_unit.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('jumlah-unit', 'jumlah_unit')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
BATAS-BATAS PERUMAHAN
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="bata-perumahan-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['batas_batas_perumahan']))
@foreach ($forminspeksi['batas_batas_perumahan'] as $index => $positif)
<div class="batas_batas_perumahan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="batas_batas_perumahan[]" rows="10">{{ old("batas_batas_perumahan.$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="batas_batas_perumahan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="batas_batas_perumahan[]" rows="10">{{ old('batas_batas_perumahan.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('bata-perumahan-container', 'batas_batas_perumahan')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
FASOS/FASUM
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="fasos-fasum-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['fasus_fasum']))
@foreach ($forminspeksi['fasus_fasum'] as $index => $positif)
<div class="fasus_fasum flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fasus_fasum[]" rows="10">{{ old("fasus_fasum.$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="fasus_fasum flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fasus_fasum[]" rows="10">{{ old('fasus_fasum.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fasos-fasum-container', 'fasus_fasum')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
PROGRES PENJUALAN SAAT INI
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="progres-penjualan-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['progres_penjualan']))
@foreach ($forminspeksi['progres_penjualan'] as $index => $positif)
<div class="progres_penjualan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="progres_penjualan[]" rows="10">{{ old("progres_penjualan.$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="progres_penjualan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="progres_penjualan[]" rows="10">{{ old('progres_penjualan.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('progres-penjualan-container', 'progres_penjualan')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
HARGA UNIT
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="harga-unit-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['harga_unit']))
@foreach ($forminspeksi['harga_unit'] as $index => $positif)
<div class="harga_unit flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="harga_unit[]" rows="10">{{ old("harga_unit.$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="harga_unit flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="harga_unit[]" rows="10">{{ old('harga_unit.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('harga-unit-container', 'harga_unit')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
TARGET MARKET
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="target_market-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['target_market']))
@foreach ($forminspeksi['target_market'] as $index => $positif)
<div class="target_market flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="target_market[]" rows="10">{{ old("target_market.$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="target_market flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="target_market[]" rows="10">{{ old('target_market.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('target_market-container', 'target_market')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
KERJASAMA DENGAN BANK LAIN
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="kerjasama_dengan_bank-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['kerjasama_dengan_bank']))
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $index => $positif)
<div class="kerjasama_dengan_bank flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kerjasama_dengan_bank[]" rows="10">{{ old("kerjasama_dengan_bank.$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="kerjasama_dengan_bank flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="kerjasama_dengan_bank[]" rows="10">{{ old('kerjasama_dengan_bank.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
</div>
</div>
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('kerjasama_dengan_bank-container', 'kerjasama_dengan_bank')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
RUTE MENUJU LOKASI
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['rute_menuju_lokasi']))
<div class="rute_menuju_lokasi flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="rute_menuju_lokasi" rows="10">{{ old('rute_menuju_lokasi', $forminspeksi['rute_menuju_lokasi']) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@else
<div class="rute_menuju_lokasi flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="rute_menuju_lokasi" rows="10">{{ old('rute_menuju_lokasi') }}</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
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Properti Sejenis
</h3>
</div>
<div class="card-body">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($forminspeksi['properti_sejenis']))
<div class="properti_sejenis flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="properti_sejenis" rows="10">{{ old('properti_sejenis', $forminspeksi['properti_sejenis']) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@else
<div class="properti_sejenis flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="properti_sejenis" rows="10">{{ old('properti_sejenis') }}</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
</div>
</div>
</div>
</div>
@include('lpj::surveyor.components.informasi')

View File

@@ -0,0 +1,354 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase">
Analisa Tanah
</h3>
</div>
<div class="card-body">
<div class="grid gap-5">
<!-- Luas tanah -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Luas Tanah</label>
<div class="mt-2">
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
// 27
$total_luas_tanah = 0;
$jenis_legalitas_jaminan_id = 0;
if (isset($item->detail)) {
$total_luas_tanah = calculateTotalLuas($item->detail, 'luas_tanah', 1, 27, 3);
}
@endphp
<input type="hidden" id="jenis_legalistas_jaminan_tanah_id"
name="jenis_legalistas_jaminan_tanah_id" class="input"
value="{{ $jenis_legalitas_jaminan_id }}">
<input type="hidden" name="luas_tanah_sesuai" class="input"
value="{{ $total_luas_tanah }}">
<p class="text-2sm text-gray-700">{{ $total_luas_tanah }} m<sup>2</sup></p>
@endforeach
@endif
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="luas_tanah" value="sesuai"
onclick="toggleFieldVisibility('luas_tanah', 'luas_tanah_tidak_sesuai', ['tidak sesuai'])"
{{ old('luas_tanah', isset($forminspeksi['tanah']['luas_tanah']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="luas_tanah" value="tidak sesuai"
onclick="toggleFieldVisibility('luas_tanah', 'luas_tanah_tidak_sesuai', ['tidak sesuai'])"
{{ old('luas_tanah', isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<div id="luas_tanah_tidak_sesuai" class="flex items-baseline gap-2"
style="{{ old('luas_tanah', isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai'])) ? '' : 'display: none;' }}">
<div class="input">
<input id="analisa_tanah_tidak_sesuai" type="text" name="luas_tanah_tidak_sesuai"
class="w-full number-format" placeholder="Masukan Luas Tanah"
value="{{ old('luas_tanah_tidak_sesuai', $forminspeksi['tanah']['luas_tanah']['tidak sesuai'] ?? '') }}">
</div>
{{-- <button type="button" class="btn btn-md btn-primary"
onclick="updateAnalisa('analisa_tanah')">Save
</button> --}}
</div>
</div>
<em id="error-luas_tanah" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<!-- Hadap Mata Angin -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<input type="hidden" name="hadap_mata_angin_sesuai" class="input" value="sesuai">
<label class="form-label max-w-56">Hadap Mata Angin</label>
<div class="mt-2">
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="hadap_mata_angin" value="sesuai"
onclick="toggleFieldVisibility('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai' ,['tidak sesuai'])"
{{ old('hadap_mata_angin', isset($forminspeksi['tanah']['hadap_mata_angin']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="hadap_mata_angin" value="tidak sesuai"
onclick="toggleFieldVisibility('hadap_mata_angin', 'hadap_mata_angin_tidak_sesuai' ,['tidak sesuai'])"
{{ old('hadap_mata_angin', isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span>
</label>
<!-- Select dropdown untuk "Tidak Sesuai" -->
<div id="hadap_mata_angin_tidak_sesuai" class="flex items-baseline gap-2"
style="{{ old('hadap_mata_angin', isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'])) ? '' : 'display: none;' }}">
<select class="input w-full
id="
hadap_mata_angin_tidak_sesuai" name="hadap_mata_angin_tidak_sesuai">
@php
$statusKey = isset($forminspeksi['tanah']['hadap_mata_angin']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedData = $forminspeksi['tanah']['hadap_mata_angin'][$statusKey] ?? null;
@endphp
<option value="">Select Hadap Mata Angin</option>
@if (isset($basicData['arahMataAngin']))
@foreach ($basicData['arahMataAngin'] as $item)
<option value="{{ $item->name }}"
{{ old('hadap_mata_angin_tidak_sesuai', $selectedData ?? '') == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
@endif
</select>
{{-- <button type="button" class="btn btn-md btn-primary" onclick="updateAnalisa('hadap_mata_angin')">Save</button> --}}
</div>
</div>
<em id="error-hadap_mata_angin" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
<!-- Bentuk Tanah -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Bentuk Tanah</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['bentukTanah']))
@foreach ($basicData['bentukTanah'] as $item)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="bentuk_tanah[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('bentuk_tanah', [])) ||
(isset($forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']) &&
is_array($forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']) &&
in_array($item->name, $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']))
? 'checked'
: '' }}
onclick="toggleCheckboxVisibility('bentuk_tanah', 'bentuk_tanah_lainnya', ['lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'lainnya') == 0)
<input id="bentuk_tanah_lainnya" type="text"
style="{{ isset($forminspeksi['tanah']['bentuk_tanah']['lainnya']) && $forminspeksi['tanah']['bentuk_tanah']['lainnya'] ? '' : 'display: none;' }}"
name="bentuk_tanah_lainnya" class="input w-full mt-2"
placeholder="Masukkan bentuk tanah..."
value="{{ old('bentuk_tanah_lainnya', $forminspeksi['tanah']['bentuk_tanah']['lainnya'] ?? '') }}" />
@endif
</div>
@endforeach
@endif
</div>
<em id="error-bentuk_tanah" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kontur Tanah</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['konturTanah']))
@foreach ($basicData['konturTanah'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kontur_tanah[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kontur_tanah', $forminspeksi['tanah']['kontur_tanah'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }}
</label>
@endforeach
@endif
</div>
<em id="error-kontur_tanah" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Beda Ketinggian Dengan Jalan -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Beda Ketinggian Dengan Jalan</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['ketinggianTanah']))
@foreach ($basicData['ketinggianTanah'] as $item)
<div class="flex flex-col gap-2">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="ketinggian_jalan[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('ketinggian_jalan', $forminspeksi['tanah']['ketinggian_jalan'] ?? [])) ? 'checked' : '' }}
onclick="toggleMultipleFields('ketinggian_jalan', {
'Lebih Tinggi': 'input-lebih-tinggi',
'Lebih Rendah': 'input-lebih-rendah'
})" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'Lebih Tinggi') == 0)
<input id="input-lebih-tinggi" type="text"
style="{{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi']) && $forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi'] ? '' : 'display: none;' }}"
name="ketinggian_lebih_tinggi" class="input w-full mt-2" placeholder="Masukkan Ketinggian..."
value="{{ old('ketinggian_lebih_tinggi', $forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi'] ?? '') }}" />
@elseif (strcasecmp($item->name, 'Lebih Rendah') == 0)
<input id="input-lebih-rendah" type="text"
style="{{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah']) && $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] ? '' : 'display: none;' }}"
name="ketinggian_lebih_rendah" class="input w-full mt-2" placeholder="Masukkan Ketinggian..."
value="{{ old('ketinggian_lebih_rendah', $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] ?? '') }}" />
@endif
</div>
@endforeach
@endif
</div>
<em id="error-ketinggian_jalan" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Kontur Jalan Depan Objek -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kontur Jalan Depan Objek</label>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="menurun"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'menurun' ? 'checked' : '' }}>
<span class="ml-2">Menurun</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="rata"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'rata' ? 'checked' : '' }}>
<span class="ml-2">Rata</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="kontur_jalan" value="Menanjak"
{{ old('kontur_jalan', isset($forminspeksi['tanah']['kontur_jalan']) ? $forminspeksi['tanah']['kontur_jalan'] : '') == 'Menanjak' ? 'checked' : '' }}>
<span class="ml-2">Menanjak</span>
</label>
</div>
<em id="error-kontur_jalan" class="alert text-danger text-sm"></em>
</div>
</div>
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Posisi Kavling</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['posisiKavling']))
@php
$selectedPosisiKavling = old(
'posisi_kavling',
$forminspeksi['tanah']['posisi_kavling']['posisi_kavling'] ?? [],
);
$lainnyaValue = old(
'posisi_kavling_lainnya',
$forminspeksi['tanah']['posisi_kavling']['lainnya'] ?? '',
);
@endphp
@foreach ($basicData['posisiKavling'] as $item)
<div class="flex items-center">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="posisi_kavling[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, $selectedPosisiKavling) ? 'checked' : '' }}
onclick="toggleCheckboxVisibility('posisi_kavling', 'posisi_kavling_lainnya', ['Lainnya'])" />
{{ $item->name }}
</label>
@if (strcasecmp($item->name, 'Lainnya') == 0)
<input id="posisi_kavling_lainnya" type="text"
style="{{ $lainnyaValue ? '' : 'display: none' }}"
name="posisi_kavling_lainnya" class="input w-full mt-2"
placeholder="Masukkan Posisi Kavling lainnya..."
value="{{ $lainnyaValue }}" />
@endif
</div>
@endforeach
@endif
</div>
<em id="error-posisi_kavling" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Tusuk Sate -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tusuk Sate</label>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('tusuk_sate', 'tusuk_sate_ya', ['Ya'])"
type="radio" class="radio" name="tusuk_sate" value="Ya"
{{ old('tusuk_sate') == 'Ya' || (isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'checked' : '' }}>
<span class="ml-2">Ya</span>
@php
$statusKey = isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'Ya' : 'Tidak';
$selectedData = $forminspeksi['tanah']['tusuk_sate'][$statusKey] ?? null;
@endphp
<input id="tusuk_sate_ya" class="input" name="tusuk_sate_ya"
placeholder="Masukkan Tusuk Sate..."
value="{{ old('tusuk_sate_ya', isset($selectedData) ? $selectedData : '') }}"
style="{{ $statusKey == 'Ya' ? '' : 'display: none;' }}">
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleFieldVisibility('tusuk_sate', 'tusuk_sate_ya', ['Ya'])"
type="radio" class="radio" name="tusuk_sate" value="Tidak"
{{ old('tusuk_sate') == 'Tidak' || (isset($forminspeksi['tanah']['tusuk_sate']['Tidak']) && $forminspeksi['tanah']['tusuk_sate']['Tidak']) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
</div>
<em id="error-tusuk_sate" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Lockland -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Lockland</label>
<div class="flex-wrap items-stretch">
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="lockland" value="yes"
{{ old('lockland') == 'yes' || (isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'yes') ? 'checked' : '' }}>
<span class="ml-2">Ya</span>
</label>
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="lockland" value="no"
{{ old('lockland') == 'no' || (isset($forminspeksi['tanah']['lockland']) && $forminspeksi['tanah']['lockland'] == 'no') ? 'checked' : '' }}>
<span class="ml-2">Tidak</span>
</label>
</div>
<em id="error-lockland" class="alert text-danger text-sm"></em>
</div>
</div>
<!-- Kondisi Fisik Tanah -->
<div class="flex items-stretch flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Kondisi Fisik Tanah</label>
<div class="flex-wrap items-stretch">
<div class="flex flex-col items-start gap-4">
@if (isset($basicData['kondisiFisikTanah']))
@foreach ($basicData['kondisiFisikTanah'] as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kondisi_fisik_tanah[]" type="checkbox"
value="{{ $item->name }}"
{{ in_array($item->name, old('kondisi_fisik_tanah', [])) || (isset($forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah']) && in_array($item->name, $forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah'])) ? 'checked' : '' }}
onclick="toggleInputLainnya(this, 'kondisi_fisik_tanah_lainnya', '{{ $item->name }}')" />
{{ $item->name }}
</label>
<!-- Display input field only if "lainnya" is selected -->
@if (strcasecmp($item->name, 'lainnya') == 0)
<div class="flex items-center">
<input type="text" name="kondisi_fisik_tanah_lainnya"
id="kondisi_fisik_tanah_lainnya" class="input mt-2"
placeholder="Masukkan Kondisi Fisik Tanah..." style="display: none;"
value="{{ old('kondisi_fisik_tanah_lainnya', isset($forminspeksi['tanah']['kondisi_fisik_tanah']['lainnya'])) }}">
</div>
@endif
@endforeach
@endif
</div>
<em id="error-kondisi_fisik_tanah" class="alert text-danger text-sm"></em>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,116 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@if (isset($model->id))
<form action="{{ route('basicdata.updateData', ['type' => $header[1], 'id' => $model->id]) }}" method="POST">
<input type="hidden" name="id" value="{{ $model->id ?? '' }}">
@method('PUT')
@else
<form method="POST" action="{{ route('basicdata.storeData', ['type' => $header[1]]) }}">
@endif
@csrf
<div class="card border border-agi-100 pb-2.5">
<input type="hidden" name="action" value="{{ $header[1] }}">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
{{ isset($jenisAset->id) ? 'Edit' : 'Tambah' }} {{ $header[0] }}
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.' . $header[1] . '.index') }}" 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">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
name="code" value="{{ $model->code ?? '' }}">
@error('code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text"
name="name" value="{{ $model->name ?? '' }}">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@if (isset($header[1]) && $header[1] == 'spek-bangunan')
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Kategori
</label>
<div class="flex flex-wrap items-baseline w-full">
<select
class="input tomselect w-full @error('spek_kategori_bangunan_id') border-danger bg-danger-light @enderror"
name="spek_kategori_bangunan_id">
<option value="">Select Kategori Bangunan</option>
@if (!empty($spekKategoriBagunan))
@foreach ($spekKategoriBagunan as $item)
<option value="{{ $item->id }}"
@if (
(isset($model->spek_kategori_bangunan_id) && $model->spek_kategori_bangunan_id == $item->id) ||
old('spek_kategori_bangunan_id') == $item->id) selected @endif>
{{ $item->name }}
</option>
@endforeach
@endif
</select>
@error('spek_kategori_bangunan_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endif
@if (isset($header[1]) && $header[1] == 'foto-objek-jaminan')
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Form Kategori</label>
<div class="flex flex-wrap items-baseline w-full">
<select
class="input tomselect w-full @error('kategori') border-danger bg-danger-light @enderror select2"
name="kategori">
<option value="">Pilih Kategori</option>
@foreach (['tanah', 'bangunan', 'kapal', 'kendaraan', 'mesin', 'pesawat', 'alat-berat', 'apartemen-kantor'] as $item)
<option value="{{ $item }}"
@if (isset($model) && $model->kategori == $item) {{ 'selected' }} @endif>
{{ $item }}
</option>
@endforeach
</select>
@error('form_kategori')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endif
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
</div>
@endsection

View File

@@ -0,0 +1,177 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('basicdata.' . $header[1]) }}
@endsection
@section('content')
<div class="grid">
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="data-table" data-api-url="{{ route('basicdata.datatablesSurveyory', ['type' => $header[0] ]) }}">
<div class="card-header bg-agi-50 py-5 flex-wrap">
<h3 class="card-title">
Daftar {{$header[0]}}
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
<input placeholder="Search {{$header[0]}}" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="{{ route('basicdata.export', $header[1] ) }}"> Export to Excel </a>
@php
$href = route('basicdata.createData', ['type' => $header[1]]);
@endphp
<a class="btn btn-sm btn-primary" href="{{$href}}"> Tambah {{$header[0]}} </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
</th>
<th class="min-w-[250px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Code </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[250px]" data-datatable-column="name">
<span class="sort"> <span class="sort-label">{{ isset($header[0]) ? $header[0] : '' }}</span>
<span class="sort-icon"> </span> </span>
</th>
@if ($header[1] == 'spek-bangunan' || $header[1] == 'foto-objek-jaminan')
<th class="min-w-[250px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Kategori </span>
<span class="sort-icon"> </span> </span>
</th>
@endif
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true">
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
function deleteData(data) {
Swal.fire({
title: 'Are you sure?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.isConfirmed) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
}
});
$.ajax(`basic-data/deleteData/${data}/{{$header[1]}}`, {
type: 'DELETE'
}).then((response) => {
swal.fire('Deleted!', 'User has been deleted.', 'success').then(() => {
window.location.reload();
});
}).catch((error) => {
console.error('Error:', error);
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
});
}
})
}
</script>
<script type="module">
const element = document.querySelector('#data-table');
const searchInput = document.getElementById('search');
const header = '{{$header[1]}}';
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
code: {
title: 'Code',
},
name: {
title: 'Jenis Aset',
},
...(header == 'spek-bangunan' && {
kategories:{
title: 'Kategori',
render: (item, data)=>{
return data.bangunan_kategori.name;
}
}
}),
...(header == 'foto-objek-jaminan' && {
kategories:{
title: 'Kategori',
render: (item, data)=>{
return data.kategori;
}
}
}),
actions: {
title: 'Status',
render: (item, data) => {
return `<div class="flex flex-nowrap justify-center">
<a class="btn btn-sm btn-icon btn-clear btn-info" href="basic-data/${header}/${data.id}">
<i class="ki-outline ki-notepad-edit"></i>
</a>
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
<i class="ki-outline ki-trash"></i>
</a>
</div>`;
},
}
},
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function () {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
@endpush

View File

@@ -0,0 +1,130 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
@push('style')
<style>
.add-new-bg {
background-image: url('/assets/media/images/2600x1200/bg-4.png');
}
.dark .add-new-bg {
background-image: url('/assets/media/images/2600x1200/bg-4-dark.png');
}
</style>
@endpush
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan',['backLink'=>'surveyor.index'])
@if ($permohonan->status == 'revisi-survey')
<div class="card border border-agi-100 min-w-full">
<div class="card-header light:bg-agi-50" id="basic_settings">
<div class="card-title flex flex-row gap-1.5">
Catatan Revisi
</div>
</div>
<div class="card-body">
<p>{{ $permohonan->keterangan ?? '' }}</p>
</div>
</div>
@endif
<div class="card border border-agi-100 min-w-full">
<div class="card-header light:bg-agi-50" id="basic_settings">
<div class="card-title flex flex-row gap-1.5">
Form Jaminan
</div>
</div>
<div class="card-body">
@include('lpj::surveyor.components.card-tambah')
</div>
<div class="card-footer ">
<div class="flex gap-5">
<button type="button" id="btnSubmit" class="btn btn-primary">
Submit
</button>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
document.addEventListener('DOMContentLoaded', function() {
checkButtonStatus();
document.getElementById('btnSubmit').addEventListener('click', onSubmit);
});
function checkButtonStatus() {
$.ajax({
url: "{{ route('surveyor.checkButtonStatus', ['id' => $surveyor]) }}",
type: "GET",
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.buttonDisable) {
$('#btnProses, #btnSubmit').prop('disabled', true);
} else {
$('#btnProses, #btnSubmit').prop('disabled', false);
}
},
error: function(xhr, status, error) {
console.log('Error checking button status:', error, status, xhr);
}
});
}
function onProses() {
return alert('Are you sure you want to submit?');
}
function onSubmit() {
$.ajax({
url: "{{ route('surveyor.submitSurveyor', ['id' => $surveyor]) }}",
type: "POST",
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
window.location.href = "{{ route('surveyor.index') }}";
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.log('Error checking button status:', error, status, xhr);
if (xhr.responseJSON.message) {
toastrErrorBuild(xhr.responseJSON.message);
}else{
toastrErrorBuild('Terjadi kesalahan');
}
}
});
}
// $('.card-title a').on('click', function(e) {
// e.preventDefault();
// var url = $(this).attr('href');
// $.get(url, function(response) {
// $('.card-body').html(response);
// });
// });
</script>
@endpush

View File

@@ -0,0 +1,680 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('surveyor') }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10"
data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('surveyor.datatables') }}">
<div class="card-header light:bg-agi-50 py-5 flex-wrap">
<h3 class="card-title">
Surveyor
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm">
<i class="ki-filled ki-magnifier"></i>
<input placeholder="Search Penilaian" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="{{ route('activity.export') }}"> Export to Excel </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
</th>
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
<span class="sort"><span class="sort-label">Nomor Registrasi</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
<span class="sort"><span class="sort-label">Tanggal Assigned</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="user_id">
<span class="sort"><span class="sort-label">User Pemohon</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="branch_id">
<span class="sort"><span class="sort-label">Cabang Pemohon</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="debitur_id">
<span class="sort"><span class="sort-label">Debitur</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_id">
<span class="sort"><span class="sort-label">Tujuan Penilaian</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="status">
<span class="sort"><span class="sort-label">Fasilitas Kredit</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[150px]" data-datatable-column="status">
<span class="sort"><span class="sort-label">Status</span>
<span class="sort-icon"></span>
</span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div
class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per
page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"></span>
<div class="pagination" data-datatable-pagination="true"></div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
function approveReschedule(penilaianId, permohonanId, noReg, debitur, reschedule_date, reschedule_note) {
Swal.fire({
title: 'Konfirmasi',
html: `
<p>Yakin akan Menyetujui atau Menolak Reschedule Jadwal Kunjungan <b>${noReg}</b> untuk Debitur <b>${debitur}</b>
pada waktu <b>${window.formatTanggalWaktuIndonesia(reschedule_date)}</b>?</p>
<p><b>Catatan: </b> <br/>${reschedule_note}</p>
`,
icon: 'warning',
showDenyButton: true,
showCancelButton: true,
confirmButtonColor: '#3085d6',
denyButtonColor: '#d33',
confirmButtonText: 'Approve',
denyButtonText: 'Reject'
}).then((result) => {
if (result.isConfirmed) {
// Approve action
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/store-approve-reschedule') }}" + "/" + penilaianId;
var input_data = {
_token: token,
permohonan_id: permohonanId,
nomor_registrasi: noReg
}
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
success: function(response) {
console.log(response);
if ('success' == response.status) {
Swal.fire('Sukses!', response.message, 'success').then(() => {
location.reload(true);
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
console.log(response);
}
});
} else if (result.isDenied) {
// Reject action
Swal.fire({
title: 'Masukkan Keterangan',
input: 'textarea',
inputPlaceholder: 'Tuliskan alasan penolakan di sini...',
inputAttributes: {
'aria-label': 'Tuliskan alasan penolakan di sini'
},
showCancelButton: true,
confirmButtonText: 'Submit',
cancelButtonText: 'Batal'
}).then((rejectResult) => {
if (rejectResult.isConfirmed && rejectResult.value) {
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/store-rejected-reschedule') }}" + "/" +
penilaianId;
var input_data = {
_token: token,
permohonan_id: permohonanId,
nomor_registrasi: noReg,
rejected_note: rejectResult.value,
keterangan: rejectResult.value
}
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
success: function(response) {
console.log(response);
if ('success' == response.status) {
Swal.fire('Ditolak!', response.message, 'success').then(
() => {
location.reload(true);
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
console.log(response);
}
});
} else if (rejectResult.dismiss === Swal.DismissReason.cancel) {
Swal.fire('Dibatalkan', 'Aksi penolakan dibatalkan.', 'info');
}
});
}
});
}
function prosesSurvey(permohonanId, nomor_registrasi, penilaianId) {
Swal.fire({
title: 'Konfirmasi',
text: `Yakin akan Melakukan Inspeksi dengan nomor registrasi ${nomor_registrasi}?`,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Setujui',
cancelButtonText: 'Batal',
denyButtonText: 'Ubah Jadwal Kunjungan',
denyButtonColor: '#f4b400',
showDenyButton: true
}).then((result) => {
if (result.isConfirmed) {
// Mendefinisikan URL dan data
let token = "{{ csrf_token() }}";
let useURL = `{{ URL::to('/surveyor/store-proses-survey') }}/${permohonanId}`;
let input_data = {
_token: token,
permohonan_id: permohonanId
};
// Melakukan AJAX request
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
dataType: "json",
success: function(response) {
if (response.status === 'success') {
// Arahkan langsung ke halaman inspeksi
window.location.href = `surveyor/${permohonanId}/show?form=inspeksi`;
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response) {
const errorMessage = response.responseJSON?.message ||
'Terjadi kesalahan saat memproses data.';
Swal.fire('Error!', errorMessage, 'error');
}
});
}else if (result.isDenied) {
// Reject action
Swal.fire({
title: 'Masukkan Keterangan',
input: 'textarea',
inputPlaceholder: 'Tuliskan alasan perubahan jadwal di sini dan masukkan tanggal kunjungan...',
inputAttributes: {
'aria-label': 'Tuliskan alasan perubahan jadwal di sini dan masukkan tanggal kunjungan'
},
showCancelButton: true,
confirmButtonText: 'Submit',
cancelButtonText: 'Batal'
}).then((rejectResult) => {
if (rejectResult.isConfirmed && rejectResult.value) {
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/store-rejected-reschedule') }}" + "/" +
penilaianId;
var input_data = {
_token: token,
permohonan_id: permohonanId,
nomor_registrasi: nomor_registrasi,
rejected_note: rejectResult.value,
keterangan: rejectResult.value
}
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
success: function(response) {
console.log(response);
if ('success' == response.status) {
Swal.fire('Ditolak!', response.message, 'success').then(
() => {
location.reload(true);
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
console.log(response);
}
});
} else if (rejectResult.dismiss === Swal.DismissReason.cancel) {
Swal.fire('Dibatalkan', 'Aksi penolakan dibatalkan.', 'info');
}
});
}
});
}
function prosesJadwalSurvey(permohonanId) {
Swal.fire({
title: 'Apakah Anda Yakin?',
html: `
<div class="text-left space-y-4">
<p class="text-gray-700 text-center">Untuk membuat jadwal kunjungan, silahkan isi form berikut!</p>
<div>
<label for="tanggal_kunjungan" class="block text-sm font-medium text-gray-700 mb-1" style="text-align: start;">Tanggal Kunjungan <span class="text-danger">*</span></label>
<input type="date" id="tanggal_kunjungan" class="input" style="margin-top: 10px; width: 100%;" required>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1 mt-2" style="text-align: start;">Waktu Kunjungan (Format 24 Jam) <span class="text-danger">*</span></label>
<div style="display: flex; align-items: center; gap: 10px; margin-top: 10px;">
<div style="position: relative; flex: 1;">
<input type="text" id="jam_kunjungan" class="input" maxlength="2" style="width: 100%; text-align: center; padding-right: 30px;" placeholder="00">
<div style="position: absolute; right: 5px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column;">
<button type="button" id="jam_up" class="btn btn-xs btn-light" style="height: 12px; padding: 0 4px; font-size: 10px; margin-bottom: 2px;">▲</button>
<button type="button" id="jam_down" class="btn btn-xs btn-light" style="height: 12px; padding: 0 4px; font-size: 10px;">▼</button>
</div>
</div>
<span style="font-weight: bold;">:</span>
<div style="position: relative; flex: 1;">
<input type="text" id="menit_kunjungan" class="input" maxlength="2" style="width: 100%; text-align: center; padding-right: 30px;" placeholder="00">
<div style="position: absolute; right: 5px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column;">
<button type="button" id="menit_up" class="btn btn-xs btn-light" style="height: 12px; padding: 0 4px; font-size: 10px; margin-bottom: 2px;">▲</button>
<button type="button" id="menit_down" class="btn btn-xs btn-light" style="height: 12px; padding: 0 4px; font-size: 10px;">▼</button>
</div>
</div>
</div>
</div>
<div>
<label for="deskripsi-penilaian" class="block text-sm font-medium text-gray-700 mb-1 mt-2" style="text-align: start;">Keterangan <span class="text-danger">*</span> </label>
<textarea id="deskripsi-penilaian" class="textarea" placeholder="Masukkan keterangan" style="margin-top: 10px;" required></textarea>
</div>
</div>
`,
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Submit',
cancelButtonText: 'Batal',
didOpen: () => {
// Set default value ke waktu saat ini
const now = new Date();
const dateString = now.toISOString().slice(0, 10);
const hours = now.getHours();
const minutes = now.getMinutes();
// Set default values
document.getElementById('tanggal_kunjungan').value = dateString;
document.getElementById('jam_kunjungan').value = hours.toString().padStart(2, '0');
document.getElementById('menit_kunjungan').value = minutes.toString().padStart(2, '0');
// Handler untuk input jam
const jamInput = document.getElementById('jam_kunjungan');
const jamUp = document.getElementById('jam_up');
const jamDown = document.getElementById('jam_down');
// Validasi hanya angka untuk jam
jamInput.addEventListener('input', function(e) {
this.value = this.value.replace(/[^0-9]/g, '').substring(0, 2);
let value = parseInt(this.value, 10);
if (!isNaN(value)) {
if (value > 23) {
this.value = "00";
} else {
this.value = value.toString().padStart(2, '0');
}
}
});
jamInput.addEventListener('blur', function() {
if (this.value === "" || isNaN(parseInt(this.value, 10))) {
this.value = "00";
} else {
this.value = parseInt(this.value, 10).toString().padStart(2, '0');
}
});
// Button handlers untuk jam
jamUp.addEventListener('click', function() {
let value = parseInt(jamInput.value, 10);
if (isNaN(value)) value = 0;
value = (value + 1) % 24;
jamInput.value = value.toString().padStart(2, '0');
});
jamDown.addEventListener('click', function() {
let value = parseInt(jamInput.value, 10);
if (isNaN(value)) value = 0;
value = (value - 1 + 24) % 24;
jamInput.value = value.toString().padStart(2, '0');
});
// Handler untuk input menit
const menitInput = document.getElementById('menit_kunjungan');
const menitUp = document.getElementById('menit_up');
const menitDown = document.getElementById('menit_down');
// Validasi hanya angka untuk menit
menitInput.addEventListener('input', function(e) {
this.value = this.value.replace(/[^0-9]/g, '').substring(0, 2);
let value = parseInt(this.value, 10);
if (!isNaN(value)) {
if (value > 59) {
this.value = "00";
} else {
this.value = value.toString().padStart(2, '0');
}
}
});
menitInput.addEventListener('blur', function() {
if (this.value === "" || isNaN(parseInt(this.value, 10))) {
this.value = "00";
} else {
this.value = parseInt(this.value, 10).toString().padStart(2, '0');
}
});
// Button handlers untuk menit
menitUp.addEventListener('click', function() {
let value = parseInt(menitInput.value, 10);
if (isNaN(value)) value = 0;
value = (value + 1) % 60;
menitInput.value = value.toString().padStart(2, '0');
});
menitDown.addEventListener('click', function() {
let value = parseInt(menitInput.value, 10);
if (isNaN(value)) value = 0;
value = (value - 1 + 60) % 60;
menitInput.value = value.toString().padStart(2, '0');
});
},
preConfirm: () => {
// Ambil nilai input
const tanggalKunjungan = document.getElementById('tanggal_kunjungan').value;
let jamKunjungan = document.getElementById('jam_kunjungan').value;
let menitKunjungan = document.getElementById('menit_kunjungan').value;
const keteranganInspeksi = document.getElementById('deskripsi-penilaian').value;
// Validasi input: cek apakah input kosong
if (!tanggalKunjungan.trim()) {
Swal.showValidationMessage('Harap mengisi Tanggal Kunjungan.');
return false;
}
if (!jamKunjungan || !menitKunjungan) {
Swal.showValidationMessage('Harap mengisi Waktu Kunjungan.');
return false;
}
if (!keteranganInspeksi.trim()) {
Swal.showValidationMessage('Harap mengisi Keterangan.');
return false;
}
// Pastikan format 2 digit
jamKunjungan = parseInt(jamKunjungan, 10).toString().padStart(2, '0');
menitKunjungan = parseInt(menitKunjungan, 10).toString().padStart(2, '0');
// Gabungkan tanggal dan waktu dalam format ISO
const datetimeValue = `${tanggalKunjungan}T${jamKunjungan}:${menitKunjungan}`;
// Jika semua valid, kembalikan data
return {
tanggal: datetimeValue,
keterangan: keteranganInspeksi
};
}
}).then((result) => {
if (result.isConfirmed) {
const {
tanggal,
keterangan
} = result.value;
let token = "{{ csrf_token() }}";
let useURL = "/surveyor/store-jadwal/" + permohonanId;
let input_data = {
_token: token,
id: permohonanId,
waktu_penilaian: tanggal,
deskripsi_penilaian: keterangan,
keterangan:'Permintaan Jadwal Kujungan: ' + window.formatTanggalWaktuIndonesia(tanggal) + ', ' + keterangan
};
$.ajax({
url: useURL,
type: "POST",
cache: false,
data: input_data,
success: function(response) {
if (response.success) {
Swal.fire('Berhasil!', 'Berhasil membuat jadwal.', 'success').then(
() => {
window.location.reload();
});
} else {
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response) {
const errorMessage = response.responseJSON?.message ||
'Terjadi kesalahan saat memproses data.';
Swal.fire('Error!', errorMessage, 'error');
}
});
}
});
}
</script>
<script type="module">
const element = document.querySelector('#permohonan-table');
const searchInput = document.getElementById('search');
const statusFilter = document.getElementById('status-filter');
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
order: [{
column: 'nomor_registrasi',
dir: 'asc'
}], // Default order by 'nomor_registrasi' ascending
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
nomor_registrasi: {
title: 'Nomor Registrasi',
},
tanggal_permohonan: {
title: 'Tanggal Assigned',
},
user_id: {
title: 'User Pemohon',
render: (item, data) => data.user ? `${data.user.name}` : 'N/A',
},
branch_id: {
title: 'Cabang Pemohon',
render: (item, data) => data.branch ? `${data.branch.name}` : 'N/A',
},
debitur_id: {
title: 'Debitur',
render: (item, data) => {
return data.debiture ? `${data.debiture.name}` : 'N/A';
},
},
tujuan_penilaian_id: {
title: 'Tujuan Penilaian',
render: (item, data) => data.tujuan_penilaian ? `${data.tujuan_penilaian.name}` : 'N/A',
},
jenis_fasilitas_kredit_id: {
title: 'Fasilitas Kredit',
render: (item, data) => data.jenis_fasilitas_kredit ? `${data.jenis_fasilitas_kredit.name}` : 'N/A',
},
status: {
title: 'status',
render: (item, data) => {
let tooltip = '';
if (data.status === 'revisi-laporan' || data.status === 'revisi-survey') {
tooltip = data.keterangan || '';
} else if (data.status === 'reschedule') {
tooltip = data.penilaian?.reschedule_note || '';
}
return `
<button
class="badge badge-sm badge-default uppercase flex justify-center"
title="${tooltip}">
${data.status}
</button>`;
}
},
actions: {
title: 'Action',
render: (item, data) => {
let actionHtml = '';
if (data.status === 'request-reschedule') {
actionHtml += `
<button class="btn btn-sm btn-icon btn-clear btn-success"
onclick="approveReschedule('${data.penilaian.id}','${data.id}', '${data.nomor_registrasi}', '${data.debiture?.name}', '${data.penilaian.reschedule_date}', '${data.penilaian.reschedule_note}')"
title="Approve Reschedule">
<i class="ki-filled ki-double-check"></i>
</button>
`;
} else {
if (!data.penilaian.waktu_penilaian) {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary"
onclick="prosesJadwalSurvey(${data.penilaian.id})"
title="Buat Jadwal Kunjungan">
<i class="ki-filled ki-calendar-edit"></i>
</a>
`;
if (data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null) {
actionHtml += `
<span class="badge badge-xs badge-outline badge-warning text-4xs">Menunggu Pemohon</span>
`;
}
} else if (data.status === 'approved-reschedule' || data.status ===
'rejected-reschedule' || data.status === 'request-jadwal') {
actionHtml += `
<span class="badge badge-xs badge-outline badge-warning text-4xs">Menunggu Pemohon</span>
`;
} else if (data.status === 'proses-survey') {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-clarity"
onclick="prosesSurvey(${data.id}, '${data.nomor_registrasi}', '${data.penilaian.id}')"
title="Masuk Form Inspeksi">
<i class="ki-filled ki-tablet-ok"></i>
</a>
`;
} else {
// Tombol Lihat Form Inspeksi dan Freeze Survey
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-warning"
href="surveyor/${data.id}/show?form=inspeksi"
title="Lihat Form Inspeksi">
<i class="ki-outline ki-eye"></i>
</a>
`;
}
}
return actionHtml;
}
}
}
};
let dataTable = new KTDataTable(element, dataTableOptions);
searchInput.addEventListener('input', function() {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
// statusFilter.addEventListener('change', function() {
// const selectedStatus = this.value;
// dataTable.search(selectedStatus);
// });
function convertDate(date) {
const createdAt = new Date(date);
const day = String(createdAt.getDate()).padStart(2, '0');
const month = String(createdAt.getMonth() + 1).padStart(2, '0');
const year = createdAt.getFullYear();
return `${day}-${month}-${year}`;
}
</script>
@endpush

View File

@@ -0,0 +1,760 @@
@push('scripts')
<script>
const style = document.createElement('style');
style.textContent = `
.draggable-text {
z-index: 1000;
}
.draggable-text:hover {
outline: 1px dashed #666;
}
`;
document.head.appendChild(style);
document.addEventListener('DOMContentLoaded', function() {
const editor = new UniversalCameraEditor();
const cameraButtons = document.querySelectorAll('#btnCamera');
const modal = document.getElementById('cameraModal');
const closeModal = document.getElementById('closeModal');
// Current input field to update
let currentInputField = null;
// Handle camera button click
cameraButtons.forEach(button => {
button.addEventListener('click', function(e) {
e.preventDefault();
const inputContainer = this.closest('.input-group');
currentInputField = inputContainer.querySelector('input[type="file"]');
modal.classList.remove('hidden');
modal.classList.add('modal-open');
editor.startCamera();
});
});
closeModal.addEventListener('click', function() {
modal.classList.add('hidden');
editor.closeCamera();
});
// Override save function
editor.saveAndUpload = async function() {
try {
// Create final canvas
const finalCanvas = document.createElement('canvas');
finalCanvas.width = this.canvas.width;
finalCanvas.height = this.canvas.height;
const ctx = finalCanvas.getContext('2d');
// Draw original photo and edited result on final canvas
ctx.drawImage(this.canvas, 0, 0);
ctx.drawImage(this.drawingCanvas, 0, 0);
// Convert canvas to Blob and create file
finalCanvas.toBlob(async (blob) => {
const file = new File([blob], `camera_photo_${Date.now()}.jpg`, {
type: "image/jpeg"
});
// Create FileList and update input field
const dataTransfer = new DataTransfer();
dataTransfer.items.add(file);
if (currentInputField) {
currentInputField.files = dataTransfer.files;
const event = new Event('change', {
bubbles: true
});
currentInputField.dispatchEvent(event);
const previewContainer = currentInputField.closest('.input-group')
.querySelector('.preview-container');
if (previewContainer) {
const img = document.createElement('img');
img.src = URL.createObjectURL(file);
img.className = 'w-full h-32 object-cover rounded-lg';
previewContainer.innerHTML = '';
previewContainer.appendChild(img);
}
}
// Close modal
modal.classList.remove('show');
modal.style.display = 'none';
modal.setAttribute('aria-hidden', 'true');
// document.body.classList.remove('modal-open');
// Remove modal backdrop if exists
const backdrop = document.querySelector('.modal-backdrop');
if (backdrop) {
backdrop.remove();
}
// Stop camera stream
if (editor.stream) {
editor.stream.getTracks().forEach(track => track.stop());
editor.stream = null;
}
// Reset camera to initial state
editor.closeCamera();
// Reset scroll if needed
window.scrollTo(0, 0); // Adjust as necessary
}, 'image/jpeg', 0.8);
} catch (error) {
console.error('Error saving photo:', error);
alert('Error saving photo. Please try again.');
}
};
// Handle escape key
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
const modal = document.getElementById('cameraModal');
if (modal.classList.contains('modal-open')) {
modal.classList.remove('modal-open');
modal.classList.add('hidden');
if (editor.stream) {
editor.stream.getTracks().forEach(track => track.stop());
}
}
}
});
});
</script>
<script>
class UniversalCameraEditor {
constructor() {
// Initialize elements
this.video = document.getElementById('video');
this.canvas = document.getElementById('canvas');
this.drawingCanvas = document.getElementById('drawingCanvas');
this.ctx = this.drawingCanvas.getContext('2d');
// Buttons
this.startButton = document.getElementById('startButton');
this.takePhotoButton = document.getElementById('takePhotoButton');
this.switchButton = document.getElementById('switchButton');
this.backButton = document.getElementById('backButton');
this.saveButton = document.getElementById('saveButton');
this.undoButton = document.getElementById('undoButton');
this.resetButton = document.getElementById('resetButton');
// Drawing controls
this.colorPicker = document.getElementById('colorPicker');
this.brushSize = document.getElementById('brushSize');
this.brushSizeValue = document.getElementById('brushSizeValue');
// Text modal elements
this.textModal = document.getElementById('textModal');
this.textInput = document.getElementById('textInput');
this.confirmTextBtn = document.getElementById('confirmTextBtn');
this.cancelTextBtn = document.getElementById('cancelTextBtn');
// Initialize state
this.stream = null;
this.currentFacingMode = 'environment';
this.isDrawing = false;
this.currentTool = 'brush';
this.drawingHistory = [];
this.historyIndex = -1;
// Drawing coordinates
this.startX = 0;
this.startY = 0;
this.lastX = 0;
this.lastY = 0;
// Setup
this.setupCanvas();
this.setupEventListeners();
this.setupDrawingContext();
// Add text overlay container
this.textOverlay = document.getElementById('textOverlay');
this.activeTextElement = null;
this.isDraggingText = false;
this.textOffset = {
x: 0,
y: 0
};
// Current input field reference
this.currentInputField = null;
}
setupCanvas() {
// Set initial canvas size
this.canvas.width = 1280;
this.canvas.height = (this.canvas.width * 3) / 4;
this.drawingCanvas.width = this.canvas.width;
this.drawingCanvas.height = this.canvas.height;
}
setupDrawingContext() {
this.ctx.strokeStyle = this.colorPicker.value;
this.ctx.lineWidth = this.brushSize.value;
this.ctx.lineCap = 'round';
this.ctx.lineJoin = 'round';
}
async startCamera() {
try {
if (this.stream) {
this.stream.getTracks().forEach(track => track.stop());
}
const constraints = {
video: {
facingMode: this.currentFacingMode,
width: {
ideal: 1280
},
height: {
ideal: 960
}
},
audio: false
};
this.stream = await navigator.mediaDevices.getUserMedia(constraints);
this.video.srcObject = this.stream;
// Enable buttons after camera starts
this.takePhotoButton.disabled = false;
this.switchButton.disabled = false;
// Show video, hide canvas
this.video.style.display = 'block';
this.canvas.style.display = 'none';
this.drawingCanvas.style.display = 'none';
// Hide editor controls
document.getElementById('editorControls').classList.add('hidden');
document.getElementById('cameraControls').classList.remove('hidden');
} catch (error) {
console.error('Error accessing camera:', error);
alert('Error accessing camera. Please make sure you have granted camera permissions.');
}
}
takePhoto() {
// Draw video frame to canvas
const context = this.canvas.getContext('2d');
context.drawImage(this.video, 0, 0, this.canvas.width, this.canvas.height);
// Hide video, show canvases
this.video.style.display = 'none';
this.canvas.style.display = 'block';
this.drawingCanvas.style.display = 'block';
// Show editor controls, hide camera controls
document.getElementById('editorControls').classList.remove('hidden');
document.getElementById('cameraControls').classList.add('hidden');
// Clear drawing history
this.drawingHistory = [];
this.historyIndex = -1;
this.saveDrawingState();
}
takePhoto() {
const context = this.canvas.getContext('2d');
// Determine if the video is in portrait or landscape mode
const isPortrait = this.video.videoHeight > this.video.videoWidth;
if (isPortrait) {
// Portrait mode
this.canvas.width = this.video.videoWidth;
this.canvas.height = this.video.videoHeight;
context.drawImage(this.video, 0, 0, this.canvas.width, this.canvas.height);
} else {
// Landscape mode
this.canvas.width = 1280;
this.canvas.height = (this.canvas.width * this.video.videoHeight) / this.video.videoWidth;
context.drawImage(this.video, 0, 0, this.canvas.width, this.canvas.height);
}
// Adjust drawing canvas to match main canvas
this.drawingCanvas.width = this.canvas.width;
this.drawingCanvas.height = this.canvas.height;
// Hide video, show canvases
this.video.style.display = 'none';
this.canvas.style.display = 'block';
this.drawingCanvas.style.display = 'block';
// Show editor controls, hide camera controls
document.getElementById('editorControls').classList.remove('hidden');
document.getElementById('cameraControls').classList.add('hidden');
// Clear drawing history
this.drawingHistory = [];
this.historyIndex = -1;
this.saveDrawingState();
}
switchCamera() {
this.currentFacingMode = this.currentFacingMode === 'environment' ? 'user' : 'environment';
this.startCamera();
}
resetToCamera() {
// Clear canvases
const context = this.canvas.getContext('2d');
context.clearRect(0, 0, this.canvas.width, this.canvas.height);
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
// Reset history
this.drawingHistory = [];
this.historyIndex = -1;
// Restart camera
this.startCamera();
}
saveDrawingState() {
// Trim history if we're not at the end
if (this.historyIndex < this.drawingHistory.length - 1) {
this.drawingHistory = this.drawingHistory.slice(0, this.historyIndex + 1);
}
// Save current state
this.drawingHistory.push(this.drawingCanvas.toDataURL());
this.historyIndex++;
}
undo() {
if (this.historyIndex > 0) {
this.historyIndex--;
this.redrawHistory();
}
}
resetDrawing() {
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
this.saveDrawingState();
}
// Implement all event listeners from previous code here
setupEventListeners() {
// Camera controls
this.startButton.onclick = () => this.startCamera();
this.takePhotoButton.onclick = () => this.takePhoto();
this.switchButton.onclick = () => this.switchCamera();
this.backButton.onclick = () => this.resetToCamera();
// Drawing controls
this.setupDrawingEvents();
this.setupToolButtons();
// Settings changes
this.colorPicker.oninput = (e) => this.ctx.strokeStyle = e.target.value;
this.brushSize.oninput = (e) => {
this.ctx.lineWidth = e.target.value;
this.brushSizeValue.textContent = `${e.target.value}px`;
};
// History controls
this.undoButton.onclick = () => this.undo();
this.resetButton.onclick = () => this.resetDrawing();
// Save functionality
this.saveButton.onclick = () => this.saveAndUpload();
// Text tool modal controls
this.confirmTextBtn.onclick = () => {
const text = this.textInput.value.trim();
if (text) {
this.addDraggableText(text);
this.textInput.value = '';
}
};
}
setupToolButtons() {
const toolButtons = document.querySelectorAll('.tool-btn');
toolButtons.forEach(button => {
button.onclick = () => {
toolButtons.forEach(btn => btn.classList.remove('active'));
button.classList.add('active');
this.currentTool = button.dataset.tool;
};
});
}
// Implement drawing events from previous code here
setupDrawingEvents() {
// Mouse events
this.drawingCanvas.addEventListener('mousedown', (e) => this.startDrawing(e));
this.drawingCanvas.addEventListener('mousemove', (e) => this.draw(e));
this.drawingCanvas.addEventListener('mouseup', () => this.stopDrawing());
this.drawingCanvas.addEventListener('mouseout', () => this.stopDrawing());
// Touch events
this.drawingCanvas.addEventListener('touchstart', (e) => {
if (this.shouldPreventDefault(e)) {
e.preventDefault();
}
const touch = e.touches[0];
const mouseEvent = new MouseEvent('mousedown', {
clientX: touch.clientX,
clientY: touch.clientY
});
this.startDrawing(mouseEvent);
}, {
passive: false
});
this.drawingCanvas.addEventListener('touchmove', (e) => {
if (this.shouldPreventDefault(e)) {
e.preventDefault();
}
const touch = e.touches[0];
const mouseEvent = new MouseEvent('mousemove', {
clientX: touch.clientX,
clientY: touch.clientY
});
this.draw(mouseEvent);
}, {
passive: false
});
this.drawingCanvas.addEventListener('touchend', () => {
this.stopDrawing();
}, {
passive: true
});
}
// Implement drawing methods from previous code here
startDrawing(e) {
this.isDrawing = true;
const rect = this.drawingCanvas.getBoundingClientRect();
const scaleX = this.drawingCanvas.width / rect.width;
const scaleY = this.drawingCanvas.height / rect.height;
this.startX = (e.clientX - rect.left) * scaleX;
this.startY = (e.clientY - rect.top) * scaleY;
this.lastX = this.startX;
this.lastY = this.startY;
if (this.currentTool === 'brush') {
this.ctx.beginPath();
this.ctx.moveTo(this.startX, this.startY);
}
}
addDraggableText(text) {
const textElement = document.createElement('div');
textElement.className = 'draggable-text';
textElement.style.cssText = `
position: absolute;
cursor: move;
user-select: none;
color: ${this.colorPicker.value};
font-size: ${this.brushSize.value * 2}px;
padding: 5px;
border-radius: 3px;
display: flex;
align-items: center;
gap: 8px;
`;
// Create text span
const textSpan = document.createElement('span');
textSpan.textContent = text;
textElement.appendChild(textSpan);
// Create delete button
const deleteBtn = document.createElement('button');
deleteBtn.innerHTML = '×';
deleteBtn.style.cssText = `
border: none;
background: none;
color: #ff4444;
font-size: 20px;
cursor: pointer;
padding: 0;
line-height: 1;
opacity: 0;
transition: opacity 0.2s;
`;
textElement.appendChild(deleteBtn);
// Show/hide delete button on hover
textElement.addEventListener('mouseenter', () => {
deleteBtn.style.opacity = '1';
});
textElement.addEventListener('mouseleave', () => {
deleteBtn.style.opacity = '0';
});
// Delete functionality
deleteBtn.addEventListener('click', (e) => {
e.stopPropagation();
textElement.remove();
this.saveDrawingState();
});
// Center the text initially
textElement.style.left = '50%';
textElement.style.top = '50%';
textElement.style.transform = 'translate(-50%, -50%)';
// Add drag functionality
this.setupDraggableText(textElement);
this.textOverlay.appendChild(textElement);
this.saveDrawingState();
}
setupDraggableText(element) {
let isDragging = false;
let currentX;
let currentY;
let initialX;
let initialY;
let xOffset = 0;
let yOffset = 0;
const dragStart = (e) => {
if (this.currentTool === 'text') {
const event = e.type === 'mousedown' ? e : e.touches[0];
initialX = event.clientX - xOffset;
initialY = event.clientY - yOffset;
if (e.target === element || e.target.parentNode === element) {
isDragging = true;
}
}
};
const drag = (e) => {
if (isDragging) {
e.preventDefault();
const event = e.type === 'mousemove' ? e : e.touches[0];
currentX = event.clientX - initialX;
currentY = event.clientY - initialY;
xOffset = currentX;
yOffset = currentY;
setTranslate(currentX, currentY, element);
}
};
const dragEnd = () => {
if (isDragging) {
isDragging = false;
this.saveDrawingState();
}
};
const setTranslate = (xPos, yPos, el) => {
el.style.transform = `translate(${xPos}px, ${yPos}px)`;
};
// Mouse events
element.addEventListener('mousedown', dragStart);
document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', dragEnd);
// Touch events
element.addEventListener('touchstart', dragStart);
document.addEventListener('touchmove', drag);
document.addEventListener('touchend', dragEnd);
}
// Add this CSS to your stylesheet
draw(e) {
if (!this.isDrawing) return;
const rect = this.drawingCanvas.getBoundingClientRect();
const scaleX = this.drawingCanvas.width / rect.width;
const scaleY = this.drawingCanvas.height / rect.height;
const x = (e.clientX - rect.left) * scaleX;
const y = (e.clientY - rect.top) * scaleY;
switch (this.currentTool) {
case 'arrow':
// Restore the previous state before drawing new arrow
if (this.historyIndex >= 0) {
this.redrawHistory();
} else {
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
}
this.drawArrow(this.startX, this.startY, x, y);
break;
case 'brush':
this.ctx.lineTo(x, y);
this.ctx.stroke();
break;
case 'rectangle':
// Restore the previous state before drawing new rectangle
if (this.historyIndex >= 0) {
this.redrawHistory();
} else {
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
}
this.ctx.beginPath();
this.ctx.strokeRect(this.startX, this.startY, x - this.startX, y - this.startY);
break;
case 'circle':
// Restore the previous state before drawing new circle
if (this.historyIndex >= 0) {
this.redrawHistory();
} else {
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
}
const radius = Math.sqrt(Math.pow(x - this.startX, 2) + Math.pow(y - this.startY, 2));
this.ctx.beginPath();
this.ctx.arc(this.startX, this.startY, radius, 0, Math.PI * 2);
this.ctx.stroke();
break;
}
this.lastX = x;
this.lastY = y;
}
drawArrow(fromX, fromY, toX, toY) {
const headLength = 20;
const headAngle = Math.PI / 6;
// Calculate angle
const angle = Math.atan2(toY - fromY, toX - fromX);
// Draw main line
this.ctx.beginPath();
this.ctx.moveTo(fromX, fromY);
this.ctx.lineTo(toX, toY);
this.ctx.stroke();
// Draw arrowhead
this.ctx.beginPath();
this.ctx.moveTo(toX, toY);
this.ctx.lineTo(
toX - headLength * Math.cos(angle - headAngle),
toY - headLength * Math.sin(angle - headAngle)
);
this.ctx.moveTo(toX, toY);
this.ctx.lineTo(
toX - headLength * Math.cos(angle + headAngle),
toY - headLength * Math.sin(angle + headAngle)
);
this.ctx.stroke();
}
startDrawing(e) {
this.isDrawing = true;
const rect = this.drawingCanvas.getBoundingClientRect();
const scaleX = this.drawingCanvas.width / rect.width;
const scaleY = this.drawingCanvas.height / rect.height;
this.startX = (e.clientX - rect.left) * scaleX;
this.startY = (e.clientY - rect.top) * scaleY;
this.lastX = this.startX;
this.lastY = this.startY;
if (this.currentTool === 'brush') {
this.ctx.beginPath();
this.ctx.moveTo(this.startX, this.startY);
}
}
stopDrawing() {
if (this.isDrawing) {
this.isDrawing = false;
if (this.currentTool === 'brush') {
this.ctx.closePath();
}
this.saveDrawingState();
}
}
redrawHistory() {
if (this.historyIndex >= 0 && this.drawingHistory[this.historyIndex]) {
const img = new Image();
img.src = this.drawingHistory[this.historyIndex];
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
this.ctx.drawImage(img, 0, 0);
} else {
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
}
}
closeEditor() {
if (this.stream) {
this.stream.getTracks().forEach(track => track.stop());
}
// Clear canvases and text overlay
this.ctx.clearRect(0, 0, this.drawingCanvas.width, this.drawingCanvas.height);
const mainCtx = this.canvas.getContext('2d');
mainCtx.clearRect(0, 0, this.canvas.width, this.canvas.height);
this.textOverlay.innerHTML = '';
// Reset state
this.drawingHistory = [];
this.historyIndex = -1;
this.currentInputField = null;
// Close modals
this.cameraModal.hide();
this.textInputModal.hide();
}
// Override this method in your implementation
saveAndUpload() {
}
closeCamera() {
// Stop the video stream
if (this.stream) {
this.stream.getTracks().forEach(track => track.stop());
}
// Hide video and canvas elements
this.video.style.display = 'none';
this.canvas.style.display = 'none';
this.drawingCanvas.style.display = 'none';
// Reset any additional state if needed
this.stream = null;
}
}
</script>
@endpush

View File

@@ -0,0 +1,185 @@
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
const ruteLainnyaDiv = document.getElementById("ruteLainnya");
const lantaiLainnyaDiv = document.getElementById("lantaiLainnya");
// Create new div for additional items
function createNewDiv(container, inputName) {
const newDiv = document.createElement("div");
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
const index = container.querySelectorAll(".flex.items-baseline")
.length; // Get index for dynamic IDs
newDiv.innerHTML = `
<div class="flex items-baseline w-full flex-wrap lg:flex-nowrap gap-2.5 mb-5" id="photoContainer">
<label class="flex flex-col form-label max-w-56">
Masukkan nama ${inputName}
</label>
<div class="flex flex-wrap items-baseline w-full gap-4">
<img id="foto_${inputName}-preview-${index}"
src="{{ isset($formFoto['gerbang']) ? asset('storage/' . $formFoto['gerbang']) : '' }}"
alt="Foto Gerbong" class="mt-2 max-w-full h-auto"
style="{{ isset($formFoto['gerbang']) ? '' : 'display: none;' }} width: 30rem;">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="flex flex-wrap items-baseline px-2">
<input class="input" type="text" name="name_${inputName}[]">
</div>
<div class="input-group w-full flex flex-col gap-2">
<div class="input-group w-full flex gap-2">
<input id="inputLainnya-${index}" type="file" name="foto_${inputName}[]"
class="file-input file-input-bordered w-full" accept="image/*"
capture="camera" onchange="previewImage(this, 'foto_${inputName}-preview-${index}')">
<button type="button" id="btnCamera-${index}" class="btn btn-light"
data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
</div>
<button type="button" class="btn btn-danger btn-sm delete-btn">
<i class="ki-filled ki-trash"></i>
</button>
</div>
</div>
</div>
`;
container.appendChild(newDiv);
addDeleteListeners(container); // Re-add listeners for delete buttons in the new div
}
// Event listener for adding more items
function setupInputHandlers(containerId, buttonId, labelText, inputDataClass, buttonDeleteClass) {
const addButton = document.getElementById(buttonId);
const inputContainer = document.getElementById(containerId);
if (!addButton || !inputContainer) {
console.error(`Element with ID ${containerId} or ${buttonId} not found.`);
return;
}
function updateLabels() {
const labels = inputContainer.querySelectorAll('.form-label span');
labels.forEach((label, index) => {
label.textContent = `${labelText} ${index + 1}`;
});
}
function handleDeleteButtons() {
const deleteBtns = inputContainer.querySelectorAll(`.${buttonDeleteClass}`);
deleteBtns.forEach(btn => {
btn.style.display = inputContainer.children.length > 1 ? 'block' : 'none';
});
}
function createNewInput() {
const newDiv = inputContainer.children[0].cloneNode(true);
// Reset semua input dalam elemen baru
const inputFile = newDiv.querySelector(`.${inputDataClass}`);
const previewContainer = newDiv.querySelector('.preview-container');
const imgPreview = previewContainer.querySelector('img');
if (inputFile) {
// Generate unique ID untuk input dan preview
const uniqueId = `${containerId}-${Date.now()}`;
inputFile.id = `input-${uniqueId}`;
imgPreview.id = `preview-${uniqueId}`;
// Reset input file
inputFile.value = '';
// Tambahkan event listener untuk preview
inputFile.addEventListener('change', function() {
const file = this.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
imgPreview.src = e.target.result;
imgPreview.style.display = 'block';
};
reader.readAsDataURL(file);
}
});
}
// Reset preview
imgPreview.src = '';
imgPreview.style.display = 'none';
const deleteBtn = newDiv.querySelector(`.${buttonDeleteClass}`);
if (deleteBtn) {
deleteBtn.addEventListener('click', function() {
inputContainer.removeChild(newDiv);
handleDeleteButtons();
updateLabels();
});
}
newDiv.style.marginTop = '10px';
inputContainer.appendChild(newDiv);
updateLabels();
handleDeleteButtons();
}
// Event listener untuk tombol tambah
addButton.addEventListener('click', createNewInput);
// Inisialisasi preview untuk input yang sudah ada
const existingInputs = inputContainer.querySelectorAll(`.${inputDataClass}`);
existingInputs.forEach((input, index) => {
const previewContainer = input.closest('.flex').querySelector('.preview-container');
const imgPreview = previewContainer.querySelector('img');
input.addEventListener('change', function() {
const file = this.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
imgPreview.src = e.target.result;
imgPreview.style.display = 'block';
};
reader.readAsDataURL(file);
}
});
// Tambahkan event listener untuk tombol hapus
document.querySelectorAll('.delete-btn').forEach(deleteBtn => {
deleteBtn.addEventListener('click', function() {
// Temukan container terdekat yang akan dihapus
const containerToRemove = this.closest('.flex');
const inputContainer = this.closest('#inputContainerRute');
if (inputContainer.querySelectorAll('.flex').length > 1) {
containerToRemove.remove();
// Update nomor label setelah penghapusan
updateLabels(inputContainer);
} else {
// Jika hanya satu input, reset input tersebut
resetInput(containerToRemove);
}
});
});
});
updateLabels();
handleDeleteButtons();
}
// setupInputHandlers('inputContainerRute', 'btnRute', 'Foto Rute Menuju Lokasi', 'file-input',
// 'delete-btn');
// setupInputHandlers('inputContainerLantai', 'btnLantai', 'Foto Lantai', 'file-input',
// 'delete-btn');
// setupInputHandlers('inputContainerLingkungan', 'btnLingkungan', 'Lingkungan', 'file-input',
// 'delete-btn');
});
</script>

View File

@@ -0,0 +1,538 @@
<script>
function showLoadingSwal(message) {
Swal.fire({
title: message,
allowOutsideClick: false,
didOpen: () => {
Swal.showLoading();
}
});
}
function hideLoadingSwal() {
Swal.close();
}
function previewImage(input, imageId) {
const preview = document.getElementById(imageId);
if (input.files && input.files[0]) {
const reader = new FileReader();
reader.onload = function(e) {
preview.src = e.target.result;
preview.classList.remove('hidden');
}
reader.readAsDataURL(input.files[0]);
}
}
function formatNumber(input) {
const cursorPosition = input.selectionStart;
let value = input.value.replace(/[^0-9,]/g, '');
if ((value.match(/,/g) || []).length > 1) {
value = value.replace(/,/g, (match, offset) => (offset === value.indexOf(',') ? ',' : ''));
}
if (value.includes(',')) {
const [beforeComma, afterComma] = value.split(',');
value = `${beforeComma},${afterComma.substring(0, 2)}`;
}
input.value = value ? value + ' m²' : 'm²';
input.setSelectionRange(cursorPosition, cursorPosition);
}
function formatCurrency(value, isDiskon = false) {
// Ensure the value is a valid number
const numericValue = parseFloat(value);
if (isNaN(numericValue)) {
return 0;
}
// Format the number with commas for thousands separators
const formattedValue = numericValue.toLocaleString('id-ID', {
style: 'currency',
currency: 'IDR', // Indonesian Rupiah
minimumFractionDigits: isDiskon ? 2 : 0, // Include decimals for discounts
maximumFractionDigits: isDiskon ? 2 : 0,
});
return formattedValue;
}
function previewImage(input, previewId) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
$('#' + previewId).attr('src', e.target.result).show();
}
reader.readAsDataURL(input.files[0]);
} else {
$('#' + previewId).hide();
}
}
function addClonableItem(containerId, itemClass) {
const container = document.getElementById(containerId);
if (!container) {
console.error(`Container with ID "${containerId}" not found.`);
return;
}
const template = container.querySelector(`.${itemClass}`);
if (!template) {
console.error(`Template with class "${itemClass}" not found in container "${containerId}".`);
return;
}
// Clone the template element
const newElement = template.cloneNode(true);
// Reset all input fields comprehensively
const inputs = newElement.querySelectorAll('input, select, textarea');
inputs.forEach(input => {
// Reset based on input type
switch (input.type) {
case 'text':
case 'number':
case 'email':
case 'tel':
case 'password':
case 'search':
case 'url':
case 'textarea':
input.value = '';
break;
case 'checkbox':
case 'radio':
input.checked = false;
break;
case 'select-one':
case 'select-multiple':
input.selectedIndex = 0;
break;
case 'file':
input.value = '';
break;
}
// Remove any error classes or validation states
input.classList.remove('is-invalid', 'error');
// Reset any custom attributes if needed
input.removeAttribute('data-previous-value');
});
// Reset select elements to their default state
const selects = newElement.querySelectorAll('select');
selects.forEach(select => {
select.selectedIndex = 0;
});
// Make the delete button visible and bind the click event
const deleteButton = newElement.querySelector('.remove-btn');
if (deleteButton) {
deleteButton.style.display = 'inline-block';
deleteButton.addEventListener('click', () => {
newElement.remove();
});
}
// Reset any custom data attributes
newElement.querySelectorAll('[data-clone-reset]').forEach(element => {
const resetValue = element.getAttribute('data-clone-reset');
if (resetValue) {
if (element.tagName === 'INPUT' || element.tagName === 'SELECT' || element.tagName ===
'TEXTAREA') {
element.value = resetValue;
} else {
element.textContent = resetValue;
}
}
});
// Optional: Regenerate unique IDs if needed
const elementsWithId = newElement.querySelectorAll('[id]');
elementsWithId.forEach(element => {
const originalId = element.id;
const newId = `${originalId}_${Date.now()}`;
element.id = newId;
// Update any labels or references
const labels = newElement.querySelectorAll(`label[for="${originalId}"]`);
labels.forEach(label => {
label.setAttribute('for', newId);
});
});
// Append the cloned element to the container
container.appendChild(newElement);
// Optional: Trigger any custom events or reinitialize plugins
const event = new Event('cloneAdded', {
bubbles: true
});
newElement.dispatchEvent(event);
}
async function loadSavedLocationData() {
const provinceCode = '{{ $cekAlamat['province_code'] ?? '' }}';
const cityCode = '{{ $cekAlamat['city_code'] ?? '' }}';
const districtCode = '{{ $cekAlamat['district_code'] ?? '' }}';
const villageCode = '{{ $cekAlamat['village_code'] ?? '' }}';
// Set province
const provinceSelect = document.getElementById('province_code');
if (provinceCode && provinceSelect) {
provinceSelect.value = provinceCode;
await getCity(provinceCode);
}
// Set city
const citySelect = document.getElementById('city_code');
if (cityCode && citySelect) {
citySelect.value = cityCode;
await getDistrict(cityCode);
}
// Set district
const districtSelect = document.getElementById('district_code');
if (districtCode && districtSelect) {
districtSelect.value = districtCode;
await getVillage(districtCode);
}
// Set village
const villageSelect = document.getElementById('village_code');
if (villageCode && villageSelect) {
villageSelect.value = villageCode;
}
}
// Modifikasi fungsi existing
async function getCity(provinceId) {
try {
const response = await fetch(`/locations/cities/province/${provinceId}`);
const data = await response.json();
const cityDropdown = document.getElementById('city_code');
if (cityDropdown) {
cityDropdown.innerHTML = '<option value="">Pilih Kota/Kabupaten</option>';
data.forEach(city => {
const option = document.createElement('option');
option.value = city.code;
option.textContent = city.name;
@if (isset($debitur->city_code))
if (city.code === '{{ $debitur->city_code }}') {
option.selected = true;
}
@endif
cityDropdown.appendChild(option);
});
// Reset dropdown kecamatan dan desa
document.getElementById('district_code').innerHTML = '<option value="">Pilih Kecamatan</option>';
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching cities:', error);
}
}
// Lakukan hal serupa untuk getDistrict dan getVillage
async function getDistrict(cityId) {
try {
const response = await fetch(`/locations/districts/city/${cityId}`);
const data = await response.json();
const districtDropdown = document.getElementById('district_code');
if (districtDropdown) {
districtDropdown.innerHTML = '<option value="">Pilih Kecamatan</option>';
data.forEach(district => {
const option = document.createElement('option');
option.value = district.code;
option.textContent = district.name;
// Cek apakah ini adalah kecamatan yang sebelumnya dipilih
@if (isset($debitur->district_code))
if (district.code === '{{ $debitur->district_code }}') {
option.selected = true;
}
@endif
districtDropdown.appendChild(option);
});
// Reset dropdown desa
document.getElementById('village_code').innerHTML = '<option value="">Pilih Kelurahan</option>';
}
} catch (error) {
console.error('Error fetching districts:', error);
}
}
async function getVillage(districtId) {
try {
const response = await fetch(`/locations/villages/district/${districtId}`);
const data = await response.json();
const villageDropdown = document.getElementById('village_code');
if (villageDropdown) {
villageDropdown.innerHTML = '<option value="">Pilih Desa/Kelurahan</option>';
data.forEach(village => {
const option = document.createElement('option');
option.value = village.code;
option.textContent = village.name;
// Cek apakah ini adalah desa yang sebelumnya dipilih
@if (isset($debitur->village_code))
if (village.code === '{{ $debitur->village_code }}') {
option.selected = true;
}
@endif
villageDropdown.appendChild(option);
});
}
} catch (error) {
console.error('Error fetching villages:', error);
}
}
function checkLaporan(permohonanId, documentId, inspeksiId, statusLpj) {
// showLoadingSwal('Tunggu...');
fetch(
`{{ url('/penilai/check-laporan') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
)
.then(response => response.json())
.then(data => {
if (data.status) {
window.location.href =
`{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&statusLpj=${statusLpj}&type=${data.status}`;
} else {
// Jika laporan belum ada, tampilkan pesan peringatan
Swal.fire({
title: 'Laporan Belum Ada',
text: data.message,
icon: 'warning',
confirmButtonText: 'OK',
confirmButtonColor: '#3085d6',
});
}
})
.catch(error => {
console.error('Error:', error);
Swal.fire({
title: 'Terjadi Kesalahan',
text: 'Tidak dapat memproses permintaan. Silakan coba lagi nanti.',
icon: 'error',
confirmButtonText: 'OK',
confirmButtonColor: '#d33',
});
});
}
function updateAnalisa(params) {
const inputMap = {
jenis_asset: 'jenis_asset_tidak_sesuai',
analisa_tanah: 'analisa_tanah_tidak_sesuai',
analisa_unit: 'analisa_luas_unit_tidak_sesuai',
analisa_bangunan: 'analisa_bangunan_tidak_sesuai',
};
// Pastikan elemen ID ada di inputMap
if (!inputMap[params]) {
console.error('Parameter tidak valid:', params);
return;
}
// Ambil nilai berdasarkan parameter
const inputValue = document.getElementById(inputMap[params]).value;
const data = {
[params === 'jenis_asset' ? 'jenis_asset' : params.replace('analisa_', 'luas_')]: inputValue,
types: params,
...(document.getElementById('jenis_legalistas_jaminan_bangunan_id') && {
jenis_legalistas_jaminan_bangunan_id: document.getElementById(
'jenis_legalistas_jaminan_bangunan_id').value
}),
...(document.getElementById('jenis_legalistas_jaminan_tanah_id') && {
jenis_legalistas_jaminan_tanah_id: document.getElementById('jenis_legalistas_jaminan_tanah_id')
.value
}),
...(document.getElementById('jenis_legalistas_jaminan_unit_id') && {
jenis_legalistas_jaminan_unit_id: document.getElementById('jenis_legalistas_jaminan_unit_id')
.value
})
};
console.log(data);
$.ajax({
url: '{{ route('surveyor.update_analisa', ['id' => $permohonan->id]) }}',
type: 'POST',
data: data,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
console.log(response);
if (response.success) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.error('Terjadi error:', error);
console.log('Status:', status);
console.log('Response:', xhr.responseText);
if (xhr.responseJSON.message) {
toastrErrorBuild(xhr.responseJSON.message);
} else {
toastrErrorBuild('Terjadi kesalahan');
}
}
});
}
function updateAlamatFields(status) {
// Ambil elemen formulir
const addressForm = document.getElementById('alamat_form');
const inputs = addressForm.querySelectorAll('input, select');
const addressInput = document.getElementById('address');
if (status === 'sesuai') {
addressInput.value = "{{ $dokumen->address ?? '' }}";
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.setAttribute('readonly', true);
} else if (element.tagName === 'SELECT') {
element.setAttribute('disabled', true);
element.classList.add('disabled-input')
}
});
addressForm.style.display = 'grid';
addressForm.disabled = true;
addressForm.classList.add('disabled-input')
} else if (status === 'tidak sesuai') {
addressForm.style.display = 'grid';
addressForm.removeAttribute('disabled');
addressForm.classList.remove('disabled-input')
const formInspeksi = @json($forminspeksi ?? '');
const addressInput = document.getElementById('address');
if (formInspeksi && formInspeksi.asset && formInspeksi.asset.alamat) {
if (formInspeksi.asset.alamat['tidak sesuai'] && formInspeksi.asset.alamat['tidak sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['tidak sesuai'].address;
} else if (formInspeksi.asset.alamat['sesuai'] && formInspeksi.asset.alamat['sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['sesuai'].address;
} else {
addressInput.value = "";
}
}
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.removeAttribute('readonly');
} else if (element.tagName === 'SELECT') {
element.removeAttribute('disabled');
element.classList.remove('disabled-input')
}
});
}
}
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
const selectedValue = $(`[name="${fieldName}"]:checked`).val();
const inputField = $(`#${inputId}`);
if (visibleValues.includes(selectedValue)) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleCheckboxVisibility(fieldName, inputId, visibleValues = []) {
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
const inputField = $(`#${inputId}`);
// Cek apakah salah satu nilai yang dipilih cocok dengan visibleValues
const shouldShow = visibleValues.some(value => selectedValues.includes(value.toLowerCase()));
if (shouldShow) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleMultipleFields(fieldName, mappings) {
// Ambil semua nilai checkbox yang dicentang
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
// Iterasi melalui setiap mapping
for (const [key, inputId] of Object.entries(mappings)) {
const inputField = $(`#${inputId}`);
// Tampilkan input jika nilai yang relevan dipilih
if (selectedValues.includes(key.toLowerCase())) {
inputField.show();
} else {
inputField.hide().val(''); // Sembunyikan dan reset nilai
}
}
}
function toggleAlamatVisibility(idSesuai, idTidakSesuai, selectedValue) {
// Ambil elemen berdasarkan ID
const alamatSesuai = document.getElementById(idSesuai);
const alamatTidakSesuai = document.getElementById(idTidakSesuai);
// Periksa nilai yang dipilih dan tampilkan elemen yang sesuai
if (selectedValue === 'sesuai') {
alamatSesuai.style.display = 'grid'; // Tampilkan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'none'; // Sembunyikan "Alamat Tidak Sesuai"
} else if (selectedValue === 'tidak sesuai') {
alamatSesuai.style.display = 'none'; // Sembunyikan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'grid'; // Tampilkan "Alamat Tidak Sesuai"
}
}
function handleCurrencyInput(input) {
const value = input.value.replace(/[^\d]/g, '');
input.value = formatCurrency(value);
}
function cleanCurrencyValue(value) {
return value.replace(/[^\d]/g, '');
}
</script>