diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php
index ec4cf45..c06db93 100644
--- a/app/Http/Controllers/LaporanController.php
+++ b/app/Http/Controllers/LaporanController.php
@@ -11,6 +11,12 @@ class LaporanController extends Controller
/**
* Display a listing of the resource.
*/
+
+ public function index()
+ {
+ return view('lpj::laporan.index');
+ }
+
public function sederhana_index()
{
return view('lpj::laporan.sederhana_index');
diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php
index 2be57e5..7528118 100644
--- a/app/Http/Controllers/PenilaiController.php
+++ b/app/Http/Controllers/PenilaiController.php
@@ -199,7 +199,7 @@ class PenilaiController extends Controller
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
-
+
return view('lpj::penilai.components.paparan');
}
@@ -240,10 +240,10 @@ class PenilaiController extends Controller
});
}
- // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role
+
$query->whereHas('penilaian.userPenilai', function ($q) {
- $q->where('role', 'penilai') // Ensure the role is 'penilai'
- ->where('user_id', Auth::user()->id); // Ganti dengan Auth::user()->id jika dinamis
+ $q->where('role', 'penilai')
+ ->where('user_id', Auth::user()->id);
});
// Apply sorting if provided
@@ -487,7 +487,8 @@ class PenilaiController extends Controller
}
}
- public function storeLpjSederhanadanStandard(Request $request){
+ public function storeLpjSederhanadanStandard(Request $request)
+ {
try {
diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php
index 5515aaa..b7d4ed6 100644
--- a/app/Http/Controllers/PenilaianController.php
+++ b/app/Http/Controllers/PenilaianController.php
@@ -359,7 +359,7 @@ class PenilaianController extends Controller
'pembatalan' => 'Pembatalan',
'sla' => 'SLA',
];
-
+
$header = $headers[$type] ?? 'Pelaporan';
return view('lpj::penilaian.otorisator.index', compact('header'));
@@ -380,7 +380,7 @@ class PenilaianController extends Controller
return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header'));
}
- public function otorisatorUpdate($id, $context)
+ public function otorisatorUpdate(Request $request, $id, $context)
{
$permohonan = Permohonan::find($id);
@@ -396,28 +396,30 @@ class PenilaianController extends Controller
$newStatus = $permohonan->status_bayar === 'sudah_bayar' ? 'belum_bayar' : 'sudah_bayar';
$permohonan->update([
- 'status_bayar' => $newStatus
+ 'status_bayar' => $newStatus,
+ 'keterangan' => $request->message
]);
break;
case 'pembatalan':
-
$permohonan->update([
- 'authorized_status' => 1,
+ 'status' => 'batal',
+ 'keterangan' => $request->message
]);
break;
case 'pelaporan':
-
$permohonan->update([
- 'status' => 'disetujui',
+ 'status' => 'proses-laporan',
+ 'keterangan' => $request->message
]);
break;
case 'sla':
$permohonan->update([
- 'status' => 'order',
+ 'status' => 'proses-sla',
+ 'keterangan' => $request->message
]);
break;
@@ -449,10 +451,10 @@ class PenilaianController extends Controller
// Tentukan status berdasarkan otorisator
$status = match ($otorisator) {
- 'Pelaporan' => 'proses laporan',
+ 'Pelaporan' => 'proses-laporan',
'Pembayaran' => 'proses',
- 'Pembatalan' => 'proses',
- 'SLA' => 'proses',
+ 'Pembatalan' => 'batal',
+ 'SLA' => 'freeze',
default => '',
};
@@ -477,10 +479,13 @@ class PenilaianController extends Controller
if (!empty($otorisator)) {
if ($status == 'proses') {
$query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']);
+ } elseif ($status == 'proses-laporan') {
+ $query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
+ } elseif ($status == 'batal') {
+ $query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
+ } elseif ($status == 'freeze') {
+ $query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
}
- // else {
- // $query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
- // }
}
// Filter berdasarkan region user yang login
diff --git a/module.json b/module.json
index f884f24..762ae31 100644
--- a/module.json
+++ b/module.json
@@ -323,33 +323,6 @@
"pemohon-eo",
"admin",
"senior-officer"
- ],
- "sub": [
- {
- "title": "Sederhana",
- "path": "laporan.sederhana",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "administrator",
- "admin"
- ]
- },
- {
- "title": "Standard",
- "path": "laporan.standard",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "administrator",
- "pemohon-ao",
- "pemohon-eo",
- "admin",
- "senior-officer"
- ]
- }
]
},
{
diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php
new file mode 100644
index 0000000..46f3aff
--- /dev/null
+++ b/resources/views/laporan/index.blade.php
@@ -0,0 +1,96 @@
+@extends('layouts.main')
+
+{{-- @section('breadcrumbs') --}}
+ {{-- {{ Breadcrumbs::render('laporan.index') }} --}}
+{{-- @endsection --}}
+
+
+@section('content')
+
+@endsection
diff --git a/resources/views/laporan/sederhana_index.blade.php b/resources/views/laporan/sederhana_index.blade.php
deleted file mode 100644
index 48cd5be..0000000
--- a/resources/views/laporan/sederhana_index.blade.php
+++ /dev/null
@@ -1,487 +0,0 @@
-@extends('layouts.main')
-
-@section('breadcrumbs')
- {{ Breadcrumbs::render('laporan.sederhana.index') }}
-@endsection
-
-
-@section('content')
-
-
-
-@endsection
diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php
index 8fcaaa2..0d401c2 100644
--- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php
+++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php
@@ -436,54 +436,115 @@
@@ -495,25 +556,35 @@
- @endsection
+@endsection
- @include('lpj::surveyor.js.utils')
-
+ });
+
+ document.querySelectorAll('.number-format').forEach(input => {
+ input.addEventListener('input', function() {
+ formatNumber(this);
+ });
+ });
+ });
+
+ function calculateTotal() {
+ // Fungsi untuk menghapus format ribuan/koma
+ const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0;
+
+ // Ambil elemen input dan parse nilainya
+ let luasTanah = parseInput(document.getElementById('luas_tanah').value);
+ let hargaPerMeterTanah = parseInput(document.querySelector('input[name="nilai_tanah_1"]').value);
+ let totalLuasTanah = document.querySelector('input[name="nilai_tanah_2"]');
+
+ let luasBangunan = parseInput(document.getElementById('luas_bangunan').value);
+ let hargaPerMeterBangunan = parseInput(document.querySelector('input[name="nilai_bangunan_1"]').value);
+ let totalLuasBangunan = document.querySelector('input[name="nilai_bangunan_2"]');
+
+ let saranaPelengkap = parseInput(document.getElementById('sarana_pelengkap').value);
+ let hargaPerMeterSarana = parseInput(document.querySelector('input[name="nilai_sarana_pelengkap_1"]').value);
+ let totalLuasSarana = document.querySelector('input[name="nilai_sarana_pelengkap_2"]');
+
+ // Bagian Likuidasi
+ let persentaseLikuidasi = parseInput(document.getElementById('likuidasi').value);
+ let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]');
+ let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]');
+
+ // Bagian Asuransi
+ let luasBangunanAsuransi = parseInput(document.getElementById('asuransi_luas_bangunan').value);
+ let hargaPerMeterAsuransi = parseInput(document.querySelector('input[name="asuransi_nilai_1"]').value);
+ let totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]');
+
+ let total = document.querySelector('input[name="total_nilai_pasar_wajar"]');
+
+ // Hitung hasil
+ const hasilTanah = luasTanah * hargaPerMeterTanah;
+ const hasilBangunan = luasBangunan * hargaPerMeterBangunan;
+ const hasilSarana = saranaPelengkap * hargaPerMeterSarana;
+
+ const totalNilaiPasarWajar = hasilTanah + hasilBangunan + hasilSarana;
+
+ // Perhitungan Likuidasi
+ const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar;
+
+ // Perhitungan Asuransi
+ const hasilAsuransi = luasBangunanAsuransi * hargaPerMeterAsuransi;
+
+ // Tampilkan hasil dalam format currency
+ totalLuasTanah.value = formatCurrency(hasilTanah.toString());
+ totalLuasBangunan.value = formatCurrency(hasilBangunan.toString());
+ totalLuasSarana.value = formatCurrency(hasilSarana.toString());
+ total.value = formatCurrency(totalNilaiPasarWajar.toString());
+
+ // Tampilkan nilai likuidasi dan asuransi
+ totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString());
+ totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString());
+
+ // Total likuidasi (total nilai pasar wajar + nilai likuidasi)
+ // const totalPasarWajarDenganLikuidasi = totalNilaiPasarWajar + hasilLikuidasi;
+ totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString());
+}
+
+
+
+ function saveLpjSederhanadanStandard() {
+ const form = document.getElementById('form-lpj');
+ const formData = new FormData(form);
+
+ const jsonData = {
+ luas_tanah: formData.get('luas_tanah'),
+ nilai_tanah_1: formData.get('nilai_tanah_1'),
+ nilai_tanah_2: formData.get('nilai_tanah_2'),
+ luas_bangunan: formData.get('luas_bangunan'),
+ nilai_bangunan_1: formData.get('nilai_bangunan_1'),
+ nilai_bangunan_2: formData.get('nilai_bangunan_2'),
+ sarana_pelengkap: formData.get('sarana_pelengkap'),
+ nilai_sarana_pelengkap_1: formData.get('nilai_sarana_pelengkap_1'),
+ nilai_sarana_pelengkap_2: formData.get('nilai_sarana_pelengkap_2'),
+ total_nilai_pasar_wajar: formData.get('total_nilai_pasar_wajar'),
+ likuidasi: formData.get('likuidasi'),
+ likuidasi_nilai_1: formData.get('likuidasi_nilai_1'),
+ likuidasi_nilai_2: formData.get('likuidasi_nilai_2'),
+ asuransi_luas_bangunan: formData.get('asuransi_luas_bangunan'),
+ asuransi_nilai_1: formData.get('asuransi_nilai_1'),
+ asuransi_nilai_2: formData.get('asuransi_nilai_2')
+ };
+
+ showLoadingSwal('Mengirim data ke server...');
+
+ const urlParams = new URLSearchParams(window.location.search);
+ const permohonanId = {{ $permohonan->id }};
+ const documentId = urlParams.get('documentId');
+ const inspeksiId = urlParams.get('inspeksiId');
+
+ const requestUrl = `{{ route('penilai.storeLpjSederhanadanStandard') }}`;
+ $.ajax({
+ url: requestUrl,
+ type: 'POST',
+ data: JSON.stringify({
+ permohonan_id: permohonanId,
+ document_id: documentId,
+ inspeksi_id: inspeksiId,
+ lpj: 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]);
+ });
+ }
+ hideLoadingSwal();
+ console.log(errors);
+ }
+ });
+ }
+
+@include('lpj::surveyor.js.utils')
diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php
index 539b603..ef6f4e1 100644
--- a/resources/views/penilai/index.blade.php
+++ b/resources/views/penilai/index.blade.php
@@ -5,92 +5,92 @@
@endsection
@section('content')
-
diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php
index 56a8c90..66f2d1d 100644
--- a/resources/views/penilaian/otorisator/index.blade.php
+++ b/resources/views/penilaian/otorisator/index.blade.php
@@ -200,8 +200,7 @@
actions: {
title: 'Status',
render: (item, data) => {
- if (data.status != 'proses laporan' && dataHeader != 'Pelaporan') {
- return `
+ return `
`;
- } else {
- return `
`
- }
},
}
@@ -240,6 +231,12 @@
title: 'Apakah Anda yakin?',
text: `Untuk melakukan otorisator ${dataHeader}!`,
icon: 'warning',
+ input: 'textarea', // Menambahkan input textarea
+ inputLabel: 'Keterangan',
+ inputPlaceholder: 'Masukkan keterangan...',
+ inputAttributes: {
+ 'aria-label': 'Masukkan keterangan'
+ },
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
@@ -247,6 +244,7 @@
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
+ const userMessage = result.value || ''; // Ambil pesan dari textarea
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
@@ -255,6 +253,9 @@
$.ajax({
url: `/otorisator/otorisator/${dataId}/${dataHeader}`,
type: 'POST',
+ data: {
+ message: userMessage // Kirim pesan sebagai bagian dari data
+ },
success: (response) => {
Swal.fire('Berhasil!', 'Data berhasil diotorisasi.', 'success').then(() => {
window.location.reload();
@@ -264,13 +265,14 @@
error: (error) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.',
- 'error');
+ 'error');
}
});
}
});
}
+
function showLoadingSwal(message, duration = 5000) {
Swal.fire({
title: message,
diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php
index 00dd3e0..05b1fff 100644
--- a/resources/views/penilaian/otorisator/show.blade.php
+++ b/resources/views/penilaian/otorisator/show.blade.php
@@ -26,13 +26,18 @@
@push('scripts')