Merge remote-tracking branch 'composer/feature/senior-officer' into staging

This commit is contained in:
Daeng Deni Mardaeni
2025-01-16 19:35:07 +07:00
11 changed files with 433 additions and 241 deletions

View File

@@ -959,6 +959,11 @@ class SurveyorController extends Controller
$id = $request->input('id');
$penilaian = Penilaian::findOrFail($id);
if ($validate['waktu_penilaian'] <= $penilaian->tanggal_kunjungan) {
return redirect()
->route('surveyor.index')
->with('error', 'Waktu penilaian harus lebih besar dari tanggal assign.');
}
$penilaian->update([
'waktu_penilaian' => $validate['waktu_penilaian'],
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
@@ -986,6 +991,12 @@ class SurveyorController extends Controller
'authorized_status' => 1,
]);
$permohonan = Permohonan::findOrFail($request->permohonan_id);
$permohonan->update([
'status' => 'survey'
]);
$data['status'] = 'success';
$data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove';
} catch (\Exception $e) {
@@ -1002,8 +1013,29 @@ class SurveyorController extends Controller
}
public function storeFreeze()
public function storeFreeze($id, Request $request)
{
try {
$permohonan = Permohonan::findOrFail($id);
$permohonan->update([
'status' => 'request-freeze',
'keterangan' => $request->message
]);
return response()->json([
'success' => true,
'message' => 'Berhasil Kirim permintaan Request Freeaze ke So'
], 200);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',
'error' => $e->getMessage()
], 500);
}
}

View File

@@ -1,113 +1,134 @@
<div>
@php
$photoSections = [
'rute_menuju_lokasi' => [
'key' => 'rute_menuju_lokasi',
'name_prefix' => '',
'nested' => true
],
'foto_rute_lainnya' => [
'key' => 'name_rute_lainnya',
'name_prefix' => '',
'nested' => false
],
'object_jaminan' => [
'key' => 'name_objek',
'name_prefix' => '',
'nested' => false
],
'foto_lantai_unit' => [
'key' => 'name',
'name_prefix' => 'Foto Lantai',
'nested' => true
],
'foto_lingkungan' => [
'key' => 'foto_lingkungan',
'name_prefix' => '',
'nested' => true
],
'single_photos' => [
'foto_basement' => 'Basement',
'foto_gerbang' => 'Gerbang',
'pendamping' => 'Pendamping'
]
];
$photoSections = [
'rute_menuju_lokasi' => [
'key' => 'rute_menuju_lokasi',
'name_prefix' => '',
'nested' => true,
],
'foto_rute_lainnya' => [
'key' => 'name_rute_lainnya',
'name_prefix' => '',
'nested' => false,
],
'foto_lingkungan' => [
'key' => 'foto_lingkungan',
'name_prefix' => '',
'nested' => true,
],
'single_photos' => [
'foto_basement' => 'Basement',
'foto_gerbang' => 'Gerbang',
'pendamping' => 'Pendamping',
],
'object_jaminan' => [
'key' => 'name_objek',
'name_prefix' => '',
'nested' => false,
],
'foto_lantai_unit' => [
'key' => 'name',
'name_prefix' => 'Foto Lantai',
'nested' => true,
],
];
$hasPhotos = false;
$hasPhotos = false;
@endphp
<style>
.photo-container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-bottom: 20px;
}
.photo-item {
width: 100%; /* Adjust to fit two photos per row */
margin-bottom: 10px;
}
.photo-item img {
width: 80%;
height: auto;
border-radius: 5px;
}
</style>
@foreach ($photoSections as $sectionKey => $sectionConfig)
@if ($sectionKey === 'single_photos')
@foreach ($sectionConfig as $photoKey => $photoName)
@if (isset($formFoto[$photoKey]) && !empty($formFoto[$photoKey]))
@php
$imagePath = storage_path('app/public/' . $formFoto[$photoKey]);
$hasPhotos = true;
@endphp
<div class="border photo-item">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $photoName }}
</h2>
@if ($statusLpj || file_exists($imagePath))
<img src="{{ $imagePath }}" alt="{{ $photoName }}" class="photo-image">
@endif
</div>
@endif
@endforeach
<div class="photo-container">
@foreach ($sectionConfig as $photoKey => $photoName)
@if (isset($formFoto[$photoKey]) && !empty($formFoto[$photoKey]))
@php
$imagePath = storage_path('app/public/' . $formFoto[$photoKey]);
$hasPhotos = true;
@endphp
<div class="photo-item border">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $photoName }}
</h2>
@if ($statusLpj || file_exists($imagePath))
<img src="{{ $imagePath }}" alt="{{ $photoName }}" class="photo-image">
@endif
</div>
@endif
@endforeach
</div>
@else
@php
$sectionData = $formFoto[$sectionKey] ?? null;
$sectionData = $formFoto[$sectionKey] ?? null;
@endphp
@if (!empty($sectionData))
@if ($sectionConfig['nested'])
@if (isset($sectionData[$sectionConfig['key']][0]))
@foreach ($sectionData[$sectionConfig['key']][0] as $index => $item)
@php
$imagePath = storage_path('app/public/' . $item['path']);
$hasPhotos = true;
@endphp
<div class="border photo-item">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $sectionConfig['name_prefix'] ?
($sectionConfig['name_prefix'] . ' ' . ($index + 1)) :
($item['name'] ?? 'Foto ' . ($index + 1))
}}
</h2>
@if ($statusLpj || file_exists($imagePath))
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image">
@endif
</div>
@endforeach
<div class="photo-container">
@foreach ($sectionData[$sectionConfig['key']][0] as $index => $item)
@php
$imagePath = storage_path('app/public/' . $item['path']);
$hasPhotos = true;
@endphp
<div class="photo-item border">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $sectionConfig['name_prefix']
? $sectionConfig['name_prefix'] . ' ' . ($index + 1)
: $item['name'] ?? 'Foto ' . ($index + 1) }}
</h2>
@if ($statusLpj || file_exists($imagePath))
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image">
@endif
</div>
@endforeach
</div>
@endif
@else
@foreach ($sectionData as $index => $item)
@php
$name = $item[$sectionConfig['key']] ?? '';
$photoPath = $sectionKey === 'object_jaminan' ?
($item['foto_objek'] ?? '') :
($item['foto_rute_lainnya'] ?? '');
<div class="photo-container">
@foreach ($sectionData as $index => $item)
@php
$name = $item[$sectionConfig['key']] ?? '';
$photoPath =
$sectionKey === 'object_jaminan'
? $item['foto_objek'] ?? ''
: $item['foto_rute_lainnya'] ?? '';
$imagePath = storage_path('app/public/' . $photoPath);
@endphp
$imagePath = storage_path('app/public/' . $photoPath);
@endphp
@if (!empty($name) || !empty($photoPath))
@php $hasPhotos = true; @endphp
<div class="border photo-item">
@if (!empty($name))
<h2 class="text-gray-600 font-semibold text-xl">
{{ $name }}
</h2>
@endif
@if ($statusLpj || (file_exists($imagePath) && !empty($photoPath)))
<img src="{{ $imagePath }}" alt="{{ $name ?: 'Foto' }}" class="photo-image">
@endif
</div>
@endif
@endforeach
@if (!empty($name) || !empty($photoPath))
@php $hasPhotos = true; @endphp
<div class="photo-item border">
@if (!empty($name))
<h2 class="text-gray-600 font-semibold text-xl">
{{ $name }}
</h2>
@endif
@if ($statusLpj || (file_exists($imagePath) && !empty($photoPath)))
<img src="{{ $imagePath }}" alt="{{ $name ?: 'Foto' }}" class="photo-image">
@endif
</div>
@endif
@endforeach
</div>
@endif
@endif
@endif

View File

@@ -52,6 +52,60 @@
</div>
@endif
@if (isset($formFoto['foto_gerbang']))
<div class="card">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
Gerbang
</h3>
</div>
<div class="card-body">
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
Gerbang
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($formFoto['foto_gerbang']) }}" alt="" class="w-full h-auto object-cover">
</div>
</div>
</div>
</div>
</div>
@endif
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
<div class="card">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
Lingkungan </h3>
</div>
<div class="card-body">
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
@foreach ($formFoto['foto_lingkungan']['foto_lingkungan'][0] as $index => $item)
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $item['name'] ?? 'Lingkungan - ' . ($index + 1) }}
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($item['path']) }}" alt="Gambar {{ $index + 1 }}"
class="w-full h-auto object-cover">
</div>
</div>
</div>
@endforeach
@endif
</div>
</div>
@endif
@if (isset($formFoto['object_jaminan']))
<div class="card">
<div class="card-header bg-agi-50" id="basic_settings">
@@ -112,31 +166,7 @@
</div>
@endif
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
<div class="card">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
Lingkungan </h3>
</div>
<div class="card-body">
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
@foreach ($formFoto['foto_lingkungan']['foto_lingkungan'][0] as $index => $item)
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class="text-gray-600 font-semibold text-xl">
{{ $item['name'] ?? 'Lingkungan - ' . ($index + 1) }}
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($item['path']) }}" alt="Gambar {{ $index + 1 }}"
class="w-full h-auto object-cover">
</div>
</div>
</div>
@endforeach
@endif
</div>
</div>
@endif
@if (isset($formFoto['foto_basement']))
<div class="card">
@@ -191,34 +221,8 @@
</div>
@endif
@if (isset($formFoto['foto_gerbang']))
<div class="card">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
Gerbang
</h3>
</div>
<div class="card-body">
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
Gerbang
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($formFoto['foto_gerbang']) }}" alt="" class="w-full h-auto object-cover">
</div>
</div>
</div>
</div>
</div>
@endif
@if (isset($formFoto['pendamping']))
<div class="card">

View File

@@ -5,12 +5,40 @@
@endsection
@section('content')
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
@include('lpj::assetsku.includenya')
<form id="form-lpj" method="post" class="w-full grid gap-5">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="dokument_id" value="{{ request('documentId') }}">
<input type="hidden" id="lpj-data" value="{{ json_encode($lpjData ?? []) }}" />
@include('lpj::component.form-penilai')
<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 ">DISCLAIMER
</label>
<div class="input-group w-full flex gap-2">
<ol class="list-decimal pl-5 space-y-2">
<li>PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG BERLAKU DI SUBDIT APPRAISAL</li>
<li>LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN DOKUMEN ASLINYA</li>
<li>PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT PENILAIAN, ATAS INFORMASI YANG DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN DI ANTARA PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI</li>
<li>LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA</li>
</ol>
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" id="saveButton" onclick="saveLpjSederhanadanStandard()">
<span id="saveButtonText">Save</span>

View File

@@ -194,7 +194,7 @@
<h2 style="text-transform: uppercase;">Informasi Perusahaan/Kondisi dan Lingkungan Sekitar</h2>
<table style="width: 100%;">
<tr>
<td>1. {{ $permohonan->debiture->name ?? '' }} {{ $forminspeksi['pengalaman_developer'] ?? '' }}
<td>{{ $permohonan->debiture->name ?? '' }} {{ $forminspeksi['pengalaman_developer'] ?? '' }}
{{ $forminspeksi['developer_anggota'] ?? '' }}
<p style="padding-left: 15px;">
@@ -207,7 +207,7 @@
</td>
</tr>
<tr>
<td>2. {{ $forminspeksi['kapan_mulai_dibangun'] ?? '' }}<br>
<td>{{ $forminspeksi['kapan_mulai_dibangun'] ?? '' }}<br>
<p style="padding-left: 15px;">
{{ $forminspeksi['kondisi_perumahan'] ?? '' }}<br>
{{ $forminspeksi['progres_pembangunan'] ?? '' }}<br>
@@ -216,10 +216,10 @@
</td>
</tr>
<tr>
<td>3. {{ $forminspeksi['kontraktor'] ?? '' }}</td>
<td>{{ $forminspeksi['kontraktor'] ?? '' }}</td>
</tr>
<tr>
<td>4. @isset($forminspeksi['kerjasama_dengan_bank'])
<td>@isset($forminspeksi['kerjasama_dengan_bank'])
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -234,7 +234,7 @@
</td>
</tr>
<tr>
<td>5. @isset($forminspeksi['harga_unit'])
<td>@isset($forminspeksi['harga_unit'])
@foreach ($forminspeksi['harga_unit'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -249,7 +249,7 @@
</td>
</tr>
<tr>
<td>6. @isset($forminspeksi['fasus_fasum'])
<td>@isset($forminspeksi['fasus_fasum'])
@foreach ($forminspeksi['fasus_fasum'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -257,7 +257,7 @@
</td>
</tr>
<tr>
<td>7. @isset($forminspeksi['target_market'])
<td>@isset($forminspeksi['target_market'])
@foreach ($forminspeksi['target_market'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -265,16 +265,16 @@
</td>
</tr>
<tr>
<td>8. {{ $forminspeksi['kontraktor'] ?? '' }}</td>
<td>{{ $forminspeksi['kontraktor'] ?? '' }}</td>
</tr>
<tr>
<td>10. {{ $forminspeksi['lingkungan_sekitar'] ?? '' }}</td>
<td>{{ $forminspeksi['lingkungan_sekitar'] ?? '' }}</td>
</tr>
<tr>
<td>11. {{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}</td>
<td>{{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}</td>
</tr>
<tr>
<td>12. Hasil pengecekan dan informasi ketentuan dari dinas tata ruang:
<td>
<p style="padding-left: 15px;">
{{ $forminspeksi['fakta']['peruntukan'] ?? '' }}<br>

View File

@@ -5,6 +5,22 @@
@endsection
@section('content')
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form id="formResume" method="POST" class="w-full grid gap-5">
@@ -333,20 +349,47 @@
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old('keterangan', $resumeData['keterangan'] ?? '') }}</textarea>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg:form-label max-w-56 ">DISCLAIMER
</label>
<div class="input-group w-full flex gap-2">
<ol class="list-decimal pl-5 space-y-2">
<li>LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN JAMINAN
</li>
<li>LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI DASAR PENGAJUAN DAN ATAU PENCAIRAN KREDIT, LAPORAN YANG
DIGUNAKAN TETAP WAJIB BERUPA LAPORAN PENILAIAN JAMINAN (LPJ)
</li>
<li>DETAIL PER METER TANAH DAN BANGUNAN, SARANA PELENGKAP DLL AKAN TERCATAT DI LAPORAN PENILAIAN JAMINAN
(LPJ) NANTI
</li>
<li>LAPORAN RESUME INI HANYA DIGUNAKAN UNTUK KEPENTINGAN INTERNAL BAGI
</li>
<li>LAPORAN RESUME INI HANYA BERLAKU 14 HARI KALENDER TERHITUNG DARI TANGGAL RESUME INI DIBUAT SESUAI ATURAN
YANG BERLAKU, APABILA LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG BERLAKU
</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali
</li>
</ol>
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-secondary"
href="{{ route('penilai.paparan') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
PAPARAN
</a>
<a class="btn btn-primary"
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-secondary"
href="{{ route('penilai.paparan') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
PAPARAN
</a>
<a class="btn btn-primary"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>

View File

@@ -212,7 +212,7 @@
</a>
@endif
<a class="btn btn-primary"
href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $dokumen->jenis_jaminan_id }}">
onclick="paparan()">
PAPARAN
</a>
@@ -273,7 +273,7 @@
<div class="menu-item">
<a class="menu-link"
onclick="seletSederhanaStandart('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, '{{ $permohonan->jenisFasilitasKredit->name }}')">
onclick="seletSederhanaStandart('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, '{{ $permohonan->jenisFasilitasKredit->name }}', '{{$permohonan->status_bayar}}')">
<span class="menu-icon">
<i class="ki-outline ki-setting-2"></i>
</span>
@@ -346,7 +346,7 @@
onclick="uploadKertasKerja({{ $permohonan->id }}, '{{ $documentId }}', '{{ $inspeksiId }}', '{{ $jenisJaminanId }}')">Upload</button>
</div>
</div>
<div class="form-group flex items-baseline flex-wrap">
{{-- <div class="form-group flex items-baseline flex-wrap">
@if ($jenisJaminanId)
<a class="btn btn-outline btn-primary w-full"
@@ -356,7 +356,7 @@
@else
<p class="text-red-500">Tidak ada dokumen yang memiliki jenis jaminan.</p>
@endif
</div>
</div> --}}
</div>
<div class="modal-footer">
@@ -368,7 +368,19 @@
<script>
function seletSederhanaStandart(permohonanId, documentId, inspeksiId, jaminanId, fasilitasKredit) {
function seletSederhanaStandart(permohonanId, documentId, inspeksiId, jaminanId, fasilitasKredit, statusBayar) {
if(statusBayar === 'belum_bayar'){
Swal.fire({
title: 'Jenis LPJ Ditentukan',
text: 'Satus Pembayaran belum bayar. LPJ akan diarahkan ke resum.',
icon: 'info',
confirmButtonText: 'Lanjutkan',
confirmButtonColor: '#3085d6',
}).then(() => {
resume(permohonanId, documentId, inspeksiId, jaminanId)
});
}else{
fetch(
`{{ url('/penilai/check-status-lpj') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
)
@@ -419,7 +431,9 @@
console.log(data);
});
}
}
}
function saveStatusLpj(permohonanId, documentId, inspeksiId, type, jaminanId) {
fetch(`{{ url('/penilai/save-status-lpj') }}`, {
@@ -528,6 +542,57 @@
}
function paparan(){
Swal.fire({
title: 'Apakah Kamu yakin ingin membuat paparan',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
url: "",
type: "POST",
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
// window.location.reload();
hideLoadingSwal();
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
window.location.reload();
}
});
}
},
error: function(xhr, status, error) {
console.log('Error checking button status:', error, status, xhr);
if (xhr.responseJSON.message) {
// window.location.reload();
hideLoadingSwal();
} else {
// window.location.reload();
hideLoadingSwal();
}
}
})
}
});
}
function savePenilai() {
showLoadingSwal('Mengirim data keserver ...');
$.ajax({

View File

@@ -207,7 +207,7 @@
if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !==
'done' && data.penilaian.authorized_status == null) {
actionHtml += `
<a class="btn btn-sm btn-outline btn-primary" href="javascript:void(0)" onclick="surveyorApproveKunjungan(${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}')" title="Approve Jadwal Kunjungan No Reg ${data.nomor_registrasi}" >
<a class="btn btn-sm btn-outline btn-primary" href="javascript:void(0)" onclick="surveyorApproveKunjungan(${data.id},${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}')" title="Approve Jadwal Kunjungan No Reg ${data.nomor_registrasi}" >
<i class="ki-filled ki-calendar-edit"></i>
</a>
`;
@@ -248,7 +248,7 @@
});
</script>
<script type="text/javascript">
function surveyorApproveKunjungan(id, noReg, debitur, waktuPenilaian) {
function surveyorApproveKunjungan(permohonanId,idPenilaian, noReg, debitur, waktuPenilaian) {
Swal.fire({
title: ' ',
text: "Yakin akan Menyetujui Jadwal Kunjungan " + noReg + " untuk Debitur " + debitur +
@@ -263,12 +263,13 @@
//define variable
// $id ==> penilaian.id
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/storeAproved') }}" + "/" + id;
let useURL = "{{ URL::to('/surveyor/storeAproved') }}" + "/" + idPenilaian;
var input_data = new Object();
input_data._token = token;
input_data.id = id;
input_data.id = idPenilaian;
input_data.noReg = noReg;
input_data.permohonan_id = permohonanId;
$.ajax({
url: useURL,
type: "PUT",

View File

@@ -235,6 +235,19 @@
</div>
</div>
<div class="card rounded-lg shadow-md">
<div class="card-body">
<div class=" py-4 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Lingkungan</h1>
</div>
<div class="dropzone" id="lingkungan-dropzone">
<div class="dz-message" data-foto-type="foto_lingkungan">
<span>Seret dan lepas file di sini atau klik untuk unggah</span>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 bg-white rounded-lg shadow-md">
<div class="card-body">
@@ -398,19 +411,7 @@
</div>
</div>
<div class="card rounded-lg shadow-md">
<div class="card-body">
<div class=" py-4 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Lingkungan</h1>
</div>
<div class="dropzone" id="lingkungan-dropzone">
<div class="dz-message" data-foto-type="foto_lingkungan">
<span>Seret dan lepas file di sini atau klik untuk unggah</span>
</div>
</div>
</div>
</div>

View File

@@ -141,61 +141,63 @@
</div>
</div>
<div class="modal" data-modal="true" id="modal_freeze">
<div class="modal-content modal-center-y max-w-[600px]">
<div class="modal-header">
<h3 class="modal-title">Freeze Surveyor</h3>
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
<i class="ki-outline ki-cross"></i>
</button>
</div>
<div class="modal-body">
<form action="{{ route('surveyor.storeFreeze') }}" method="POST" enctype="multipart/form-data"
id="freezeSurveyor">
@method('put')
@csrf
<input id="ids" type="hidden" name="id">
<div class="pl-1 grid gap-2.5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea id="deskripsi_penilaian"
class="textarea @error('deskripsi_penilaian') border-danger bg-danger-light @enderror" rows="3"
name="deskripsi_penilaian"></textarea>
@error('deskripsi_penilaian')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="modal-footer justify-end mt-2">
<div class="flex gap-4">
<button type="button" class="btn btn-light" data-modal-dismiss="true">Cancel</button>
<button id="btnSubmit" type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
function jadwal(id) {
document.getElementById('ids').value = id;
}
function surveyorFreeze(permohonanId, noReg, debitur) {
function freezeInputSurveyor(data) {
Swal.fire({
title: 'Apakah Anda yakin?',
text: "Yakin akan Request Freeze dengan " + noReg + " untuk Debitur " + debitur +
" ?",
icon: 'warning',
input: 'textarea',
inputLabel: 'Keterangan',
inputPlaceholder: 'Masukkan keterangan...',
inputAttributes: {
'aria-label': 'Masukkan keterangan'
},
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Lanjutkan!',
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
const userMessage = result.value || ''; // Ambil pesan dari textarea
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
});
$.ajax({
url: `/surveyor/storeFreeze/${permohonanId}`,
type: 'POST',
data: {
message: userMessage
},
success: (response) => {
Swal.fire('Berhasil!',
response.message,
'success').then(() => {
window.location.reload();
});
console.log(response);
},
error: (error) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan Freeze.',
'error');
}
});
}
});
}
</script>
<script type="module">
const element = document.querySelector('#permohonan-table');
const searchInput = document.getElementById('search');
@@ -252,7 +254,8 @@
render: (item, data) => {
let actionHtml = '';
if (data.penilaian.waktu_penilaian == null || data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null) {
if (data.penilaian.waktu_penilaian == null || data.penilaian.waktu_penilaian && data
.penilaian.authorized_status == null) {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary" data-modal-toggle="#modal_jadwal" onclick="jadwal(${data.penilaian.id})" title="Buat Jadwal Kunjungan">
<i class="ki-filled ki-calendar-edit"></i>
@@ -263,11 +266,9 @@
<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>
<button type="button" class="btn btn-sm btn-icon btn-clear btn-info" onclick="freezeInputSurveyor(${data.id})" data-modal-toggle="#modal_freeze" title="Freeze Survey">
<button type="button" class="btn btn-sm btn-icon btn-clear btn-info" onclick="surveyorFreeze('${data.id}', '${data.nomor_registrasi}', '${data.debiture?.name}')" title="Freeze Survey">
<i class="ki-filled ki-arrow-circle-right"></i>
</button>
`;
}
return actionHtml;
@@ -295,9 +296,5 @@
const year = createdAt.getFullYear();
return `${day}-${month}-${year}`;
}
</script>
@endpush

View File

@@ -539,7 +539,7 @@ Route::middleware(['auth'])->group(function () {
Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah');
Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal');
Route::put('storeAproved/{storeAproved}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
Route::put('storeFreeze', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze');
Route::post('storeFreeze/{id}', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze');
Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto');
Route::delete('/surveyor/hapus-foto', [SurveyorController::class, 'hapusFoto'])->name('hapusFoto');