Files
lpj/resources/views/penilai/components/resume.blade.php

541 lines
28 KiB
PHP

@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="formResume" method="POST" class="w-full grid gap-5">
@csrf
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Jaminan
</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 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">Nama Debitur</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 class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat Object</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen->pemilik) }}
</span>
@endforeach
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Registrasi</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</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">Nomor Laporan</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</p>
</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 class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
faktor
</h3>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($resumeData['fakta']['fakta_positif']))
@foreach ($resumeData['fakta']['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old("fakta_positif.$index", $positif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
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="3">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</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($resumeData['fakta']['fakta_negatif']))
@foreach ($resumeData['fakta']['fakta_negatif'] as $index => $negatif)
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old("fakta_negatif.$index", $negatif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $resumeData['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-negatif-container', 'fakta_negatif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
KESIMPULAN NILAI PASAR WAJAR
</h3>
</div>
<div class="card-body grid gap-5">
<div class="gird gap-5">
<label class="form-label max-w-56">1. SESUAI FISIK</label>
<div class="flex flex-wrap items-baseline w-full mt-5">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
</tr>
</thead>
</thead>
<tbody>
@if(!empty($resumeData['fisik']))
@foreach($resumeData['fisik'] as $item)
<tr>
<td class="text-center">
<input type="text" name="fisik_sertifikat[]" class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="fisik_luas_tanah[]" class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center"> <input type="text" name="fisik_luas_bangunan[]" value="{{ $item['luas_bangunan'] }}"
class="input number-format"></td>
<td class="text-center">
<input type="text" name="fisik_nilai[]" class="input number-format" value="{{ $item['nilai'] }}">
</td>
</tr>
@endforeach
@else
<tr>
<td class="text-center">
<input type="text" name="fisik_sertifikat[]" class="input number-format">
</td>
<td class="text-center">
<input type="text" name="fisik_luas_tanah[]" class="input number-format">
</td>
<td class="text-center"> <input type="text" name="fisik_luas_bangunan[]"
class="input number-format"></td>
<td class="text-center">
<input type="text" name="fisik_nilai[]" class="input number-format">
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
<div class="gird gap-5">
<label class="form-label max-w-56">2. SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
</tr>
</thead>
</thead>
<tbody>
@if(!empty($resumeData['fisik']))
@foreach($resumeData['fisik'] as $item)
<tr>
<td class="text-center">
<input type="text" name="sesuai_sertifikat[]" class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_tanah[]" class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_bangunan[]"
class="input number-format" value="{{ $item['luas_bangunan'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_nilai[]" class="input number-format" value="{{ $item['nilai'] }}">
</td>
</tr>
@endforeach
@else
<tr>
<td class="text-center">
<input type="text" name="sesuai_sertifikat[]" class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_tanah[]" class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_bangunan[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_nilai[]" class="input number-format">
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
@if(!empty($resumeData['tambahan']))
<div class="gird gap-5">
<label class="form-label max-w-56">3. Tambahan</label>
<div class="flex flex-wrap items-baseline w-full">
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
</tr>
</thead>
</thead>
<tbody>
@if(!empty($resumeData['tambahan']))
@foreach($resumeData['tambahan'] as $item)
<tr>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]" class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_tanah[]" class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_bangunan[]"
class="input number-format" value="{{ $item['luas_bangunan'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai[]" class="input number-format" value="{{ $item['nilai'] }}">
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</div>
@endif
<div>
<button type="button" class="btn btn-primary btn-sm mt-5" onclick="tambahKesimpulanNilai()">
<i class="ki-outline ki-plus"></i>
Kesimpulan Nilai
</button>
</div>
<div id="kesimpulan" class="grid gap-5 w-full"></div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg:form-label max-w-56 ">Catatan yang Perlu Diperhatikan
</label>
<div class="input-group w-full flex gap-2">
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old('keterangan', $resumeData['keterangan'] ?? '') }}</textarea>
</div>
</div>
</div>
<div class="card-footer">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
</div>
</div>
</form>
</div>
@endsection
@include('lpj::surveyor.js.utils')
<script type="text/javascript">
let counter = 3;
function tambahKesimpulanNilai() {
const kesimpulan = document.getElementById('kesimpulan');
kesimpulan.innerHTML += `
<div class="grid gap-5 w-full" id="kesimpulan-${counter}">
<label class="form-label kesimpulan max-w-56">${counter}. Tambahan</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="tabel-container w-full">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Aksi</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_tanah[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_bangunan[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai[]"
class="input number-format">
</td>
<td class="text-center">
<button type="button" class="btn btn-danger" onclick="deleteRow(this)">Delete</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
`;
counter++;
}
function deleteRow(button) {
const rowContainer = button.closest('.grid');
rowContainer.remove();
updateLabelNumbers();
}
function updateLabelNumbers() {
const labels = document.querySelectorAll('.kesimpulan');
labels.forEach((label, index) => {
// Update setiap label dengan nomor yang benar
label.textContent = `${index + 1}. SESUAI IMB`;
});
}
function saveResume() {
showLoadingSwal('Mengirim data keserver ...');
const formElement = document.querySelector('form');
const jsonData = formToJson(formElement);
console.log('Data dalam format JSON:', JSON.stringify(jsonData, null, 2));
const urlParams = new URLSearchParams(window.location.search); // Mengambil query parameters dari URL
const permohonanId = urlParams.get('permohonanId');
const documentId = urlParams.get('documentId');
const inspeksiId = urlParams.get('inspeksiId');
const requestUrl =
`{{ route('penilai.storeResume') }}`;
$.ajax({
url: requestUrl,
type: 'POST',
data: JSON.stringify({
permohonan_id: permohonanId,
document_id: documentId,
inspeksi_id: inspeksiId,
resume: jsonData,
}),
contentType: 'application/json',
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('penilai.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) {
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
toastrErrorBuild(value[0]);
});
// toastrErrorBuild(error);
}
hideLoadingSwal();
console.log(errors);
}
});
}
function formToJson(formElement) {
const formData = new FormData(formElement);
const jsonData = {
fakta: {
fakta_positif: [],
fakta_negatif: []
},
fisik: [],
sesuai_imb: [],
tambahan:[],
keterangan: ""
};
// Ambil fakta positif
document.querySelectorAll('textarea[name="fakta_positif[]"]').forEach(textarea => {
jsonData.fakta.fakta_positif.push(textarea.value);
});
// Ambil fakta negatif
document.querySelectorAll('textarea[name="fakta_negatif[]"]').forEach(textarea => {
jsonData.fakta.fakta_negatif.push(textarea.value);
});
// Ambil data fisik
document.querySelectorAll('table tbody tr').forEach(row => {
const fisikData = {
sertifikat: row.querySelector('input[name="fisik_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="fisik_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="fisik_luas_bangunan[]"]')?.value || "",
nilai: row.querySelector('input[name="fisik_nilai[]"]')?.value || ""
};
if (fisikData.sertifikat) {
jsonData.fisik.push(fisikData);
}
});
// Ambil data sesuai IMB
document.querySelectorAll('table tbody tr').forEach(row => {
const imbData = {
sertifikat: row.querySelector('input[name="sesuai_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="sesuai_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="sesuai_luas_bangunan[]"]')?.value || "",
nilai: row.querySelector('input[name="sesuai_nilai[]"]')?.value || ""
};
if (imbData.sertifikat) {
jsonData.sesuai_imb.push(imbData);
}
});
document.querySelectorAll('table tbody tr').forEach(row => {
const imbData = {
sertifikat: row.querySelector('input[name="tambahan_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="tambahan_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="tambahan_luas_bangunan[]"]')?.value || "",
nilai: row.querySelector('input[name="tambahan_nilai[]"]')?.value || ""
};
console.log(imbData);
if (imbData.sertifikat) {
jsonData.tambahan.push(imbData);
}
});
// Ambil keterangan
const keterangan = formElement.querySelector('textarea[name="keterangan"]')?.value || "";
jsonData.keterangan = keterangan;
return jsonData;
}
// Cara Penggunaan
</script>