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

This commit is contained in:
Daeng Deni Mardaeni
2025-01-22 13:40:03 +07:00
9 changed files with 476 additions and 56 deletions

View File

@@ -90,7 +90,7 @@ class PenilaiController extends Controller
'inspeksi_id' => $inspeksiId,
],
[
'type_penilai' => 'standard',
'type_penilai' => 'sederhana',
]
);
@@ -1047,6 +1047,25 @@ class PenilaiController extends Controller
// Tentukan tipe berdasarkan kondisi
$type = $statusLpj->type_penilai ?? null;
if ($type === 'memo') {
return $this->checkDataMemo($type, $statusLpj);
}
if ($type === 'resume') {
return $this->checkDataResume($type, $statusLpj);
}
if ($type === 'standard' || $type === 'sederhana') {
return $this->checkDataLpj($type, $statusLpj);
}
if ($type === 'rap') {
return $this->checkDataRap($type, $statusLpj);
}
// Kembalikan respons dengan tipe yang sesuai
return response()->json(['status' => $type]);
}
@@ -1089,5 +1108,242 @@ class PenilaiController extends Controller
}
public function checkDataMemo($type, $statusLpj)
{
// Ambil data JSON dari statusLpj
$data = json_decode($statusLpj->memo, true) ?? [];
$validationRules = [
'memo' => [
'kepada',
'dari',
'nomor_memo',
'tanggal',
'perihal',
'jenis_asset_tidak_sesuai',
'lokasi.lokasi',
'lokasi.address',
'lokasi.province_code',
'lokasi.city_code',
'lokasi.district_code',
'lokasi.village_code',
'lokasi.penilai',
'terlampir',
'hasil_survey',
'kesimpulan_saran',
],
];
// Validasi data JSON
if (isset($validationRules[$type])) {
$missingFields = [];
foreach ($validationRules[$type] as $field) {
$keys = explode('.', $field);
$value = $data;
foreach ($keys as $key) {
if (!isset($value[$key])) {
$missingFields[] = $field;
break;
}
$value = $value[$key];
}
}
// Jika ada field yang kosong, kembalikan error
if (!empty($missingFields)) {
return response()->json([
'status' => null,
'message' => "Silahkan lengkapi data memo terlebih dahulu.",
'missing_fields' => $missingFields,
], 400);
}
}
// Jika data valid
return response()->json([
'status' => $type,
'message' => "Data memo valid.",
]);
}
public function checkDataResume($type, $statusLpj)
{
// Ambil data JSON dari statusLpj
$data = json_decode($statusLpj->resume, true) ?? [];
$validationRules = [
'resume' => [
'fakta.fakta_positif',
'fakta.fakta_negatif',
'fisik',
'sesuai_imb',
'keterangan'
],
];
// Validasi data JSON
if (isset($validationRules[$type])) {
$missingFields = [];
foreach ($validationRules[$type] as $field) {
$keys = explode('.', $field);
$value = $data;
foreach ($keys as $key) {
if (!isset($value[$key])) {
$missingFields[] = $field;
break;
}
$value = $value[$key];
}
// Validasi khusus untuk array fisik dan sesuai_imb
if ($field === 'fisik' || $field === 'sesuai_imb') {
if (empty($value) || !is_array($value)) {
$missingFields[] = $field;
continue;
}
// Validasi struktur data di dalam array
foreach ($value as $item) {
$requiredKeys = ['sertifikat', 'luas_tanah', 'luas_bangunan', 'nilai'];
foreach ($requiredKeys as $requiredKey) {
if (!isset($item[$requiredKey])) {
$missingFields[] = $field . '.' . $requiredKey;
}
}
}
}
}
// Jika ada field yang kosong, kembalikan error
if (!empty($missingFields)) {
return response()->json([
'status' => null,
'message' => "Silahkan lengkapi data resume terlebih dahulu.",
'missing_fields' => $missingFields,
], 400);
}
}
// Jika data valid
return response()->json([
'status' => $type,
'message' => "Data resume valid.",
]);
}
public function checkDataLpj($type, $statusLpj)
{
// Ambil data JSON dari statusLpj
$data = json_decode($statusLpj->lpj, true) ?? [];
$validationRules = [
'lpj' => [
'luas_tanah',
'nilai_tanah_1',
'nilai_tanah_2',
'luas_bangunan',
'nilai_bangunan_1',
'nilai_bangunan_2',
'total_nilai_pasar_wajar',
'likuidasi',
'likuidasi_nilai_1',
'likuidasi_nilai_2',
'asuransi_luas_bangunan',
'asuransi_nilai_1',
'asuransi_nilai_2',
'npw_tambahan'
],
];
// Validasi data JSON
if (isset($validationRules[$type])) {
$missingFields = [];
foreach ($validationRules[$type] as $field) {
// Penanganan khusus untuk field yang boleh null
if (in_array($field, ['sarana_pelengkap_penilai', 'nilai_sarana_pelengkap_1', 'nilai_sarana_pelengkap_2'])) {
continue;
}
if (!isset($data[$field])) {
$missingFields[] = $field;
continue;
}
// Validasi khusus untuk npw_tambahan
if ($field === 'npw_tambahan' && is_array($data[$field])) {
foreach ($data[$field] as $index => $item) {
$requiredKeys = ['name', 'luas', 'nilai_1', 'nilai_2'];
foreach ($requiredKeys as $key) {
if (!isset($item[$key])) {
$missingFields[] = "npw_tambahan[$index].$key";
}
}
}
}
}
// Jika ada field yang kosong, kembalikan error
if (!empty($missingFields)) {
return response()->json([
'status' => null,
'message' => "Silahkan lengkapi data LPJ terlebih dahulu.",
'missing_fields' => $missingFields,
], 400);
}
}
// Jika data valid
return response()->json([
'status' => $type,
'message' => "Data LPJ valid.",
]);
}
public function checkDataRap($type, $statusLpj)
{
// Ambil data JSON dari statusLpj
$data = json_decode($statusLpj->rap, true) ?? [];
$requiredFields = [
'dari',
'kepada',
'perihal',
'tanggal',
'nomor_rap'
];
// Cek apakah ada field yang kosong
$missingFields = [];
foreach ($requiredFields as $field) {
if (!isset($data[$field]) || empty($data[$field])) {
$missingFields[] = $field;
}
}
// Jika ada field yang kosong, kembalikan error
if (!empty($missingFields)) {
return response()->json([
'status' => null,
'message' => "Silahkan lengkapi data RAP terlebih dahulu.",
'missing_fields' => $missingFields
], 400);
}
// Jika semua data terisi
return response()->json([
'status' => $type,
'message' => "Data RAP valid."
]);
}
}

View File

@@ -25,6 +25,7 @@
<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" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<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">

View File

@@ -146,7 +146,8 @@
<tr>
<td style="width: 20%; padding: 2px;">Tanggal</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
<td style="width: 79%; padding: 2px;">
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Perihal</td>
@@ -159,12 +160,30 @@
<h2 style="text-transform: uppercase;">Copy Dokumen yang Dilampirkan</h2>
<table style="width: 100%;">
$senior_officer = null;
@foreach ($permohonan->debiture->documents as $dokumen)
@php
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
$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
@if (isset($dokumen))
@@ -219,7 +238,8 @@
<td>{{ $forminspeksi['kontraktor'] ?? '' }}</td>
</tr>
<tr>
<td>@isset($forminspeksi['kerjasama_dengan_bank'])
<td>
@isset($forminspeksi['kerjasama_dengan_bank'])
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -234,7 +254,8 @@
</td>
</tr>
<tr>
<td>@isset($forminspeksi['harga_unit'])
<td>
@isset($forminspeksi['harga_unit'])
@foreach ($forminspeksi['harga_unit'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -249,7 +270,8 @@
</td>
</tr>
<tr>
<td>@isset($forminspeksi['fasus_fasum'])
<td>
@isset($forminspeksi['fasus_fasum'])
@foreach ($forminspeksi['fasus_fasum'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -257,7 +279,8 @@
</td>
</tr>
<tr>
<td>@isset($forminspeksi['target_market'])
<td>
@isset($forminspeksi['target_market'])
@foreach ($forminspeksi['target_market'] as $item)
<div>{{ $item }}</div>
@endforeach
@@ -302,25 +325,53 @@
<p>Demikian kami sampaikan, atas perhatiannya kami ucapkan terima kasih.</p>
<table style="width: 100%; text-align: center;">
<tr>
<td style="height: 50px;"></td>
<td style="height: 50px;"></td>
<td style="height: 50px;"></td>
<td style="height: 50px;"></td>
</tr>
@php
use Modules\Usermanagement\Models\User;
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
$imagePathPenilai = storage_path(
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
);
$soUser = User::where('id', $senior_officer->id)->first();
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
$imagePathDD = storage_path(
'app/public/signatures/' .
User::role('DD Appraisal')->first()->id .
'/' .
User::role('DD Appraisal')->first()->sign,
);
@endphp
<tr>
<td style="height: 50px;"></td>
<td style="height: 50px;">
@if (file_exists($imagePathDD))
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
@endif
</td>
<td style="height: 50px;">
@if (file_exists($imagePathSo))
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
@endif
</td>
<td style="height: 50px;">
@if (file_exists($imagePathPenilai))
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
@endif
</td>
</tr>
<tr>
<td></td>
<td>{{ User::role('DD Appraisal')->first()->name ?? '' }}
<br>Deputy Director
<br>DEPUTY DIRECTOR
</td>
<td>
<br>SO Region
{{ $senior_officer->name ?? '' }}
<br> SENIOR OFFICER
</td>
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}
<br>Appraisal
<br>PENILAI
</td>
</tr>
</table>

View File

@@ -195,6 +195,7 @@
if ($permohonan->debiture && $permohonan->debiture->documents) {
foreach ($permohonan->debiture->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) {
@@ -241,7 +242,8 @@
<tr>
<td style="padding: 2px;">Waktu Penyelesaian</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">{{hitungHariKerja($permohonan->penilaian->tanggal_kunjungan, $tanggalLaporan)}}</td>
<td style="padding: 2px;">
{{ hitungHariKerja($permohonan->penilaian->tanggal_kunjungan, $tanggalLaporan) }}</td>
</tr>
</table>
</td>
@@ -1030,26 +1032,83 @@
</table>
</tr>
<tr>
<td>
<table>
<div style="margin-top: 20px;">
<label style="font-weight: bold;">DISCLAIMER</label>
<div>
<ol style="padding-left: 20px; list-style-type: decimal; margin-top: 0;">
<li style="margin-bottom: 5px;">PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG
BERLAKU DI SUBDIT APPRAISAL</li>
<li style="margin-bottom: 5px;">LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY
DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN
DOKUMEN ASLINYA</li>
<li style="margin-bottom: 5px;">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 style="margin-bottom: 5px;">LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN
INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA</li>
</ol>
</div>
</div>
</table>
</td>
</tr>
<tr>
<td>Demikian laporan penilai jaminan ini di buat secara objektif, tanpa adanya pengaruh baik intern
maupun extern</td>
</tr>
<tr>
<table style="width: 100%; text-align: center;" border="1">
<table style="width: 100%; border-collapse: collapse; text-align: center;" border="1">
@php
use Modules\Usermanagement\Models\User;
@endphp
<tr>
<td width="50%">Penilai Dibuat</td>
<td width="50%">Di periksa dan menyutujui</td>
</tr>
<tr>
<td style="height: 50px"></td>
<td style="height: 50px"></td>
</tr>
<tr>
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
Penilai Jaminan
<td style="border: 1px solid #000; padding: 4px;height: 50px">
</td>
<td> {{ $senior_officer->name ?? '' }}</br>
Senior Officer
<td style="border: 1px solid #000; padding: 4px;height: 50px"></td>
<td style="border: 1px solid #000; padding: 4px;height: 50px"></td>
<td style="border: 1px solid #000; padding: 4px;height: 50px">
@php
$imagePath = storage_path('app/public/signature/' . User::role('EO Appraisal')->first()->id . '/'. User::role('EO Appraisal')->first()->sign);
@endphp
@if (file_exists($imagePath))
<img src="{{ $imagePath }}" alt="{{ $imagePath }}" class="photo-image">
@endif
</td>
</tr>
<tr>
<td style="border: 1px solid #000; padding: 4px;">
{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
<strong style="font-weight: bold; ">
PENILAI
</strong>
</td>
<td style="border: 1px solid #000; padding: 4px;"> {{ $senior_officer->name ?? '' }}</br>
<strong style="font-weight: bold; ">
SENIOR OFFICER
</strong>
</td>
<td style="border: 1px solid #000; padding: 4px;">
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
<strong style="font-weight: bold; ">
EXECUTIVE OFFICER
</strong>
</td>
<td style="border: 1px solid #000; padding: 4px;">
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
<strong style="font-weight: bold; ">
DEPUTY DIRECTOR
</strong>
</td>
</tr>
</table>
@@ -1057,7 +1116,7 @@
</table>
<div class="page-break"></div>
<table style="width: 100%; border: 1px solid #000;">
<table style="width: 100%; border-collapse: collapse; border: 1px solid #000;">
<tr>
<td style="width:20%; padding: 2px; border: 1px solid #000">Nama Debitur</td>
<td style=" width: 1%; padding: 2px; border: 1px solid #000">:</td>
@@ -1071,11 +1130,12 @@
<tr>
<td style="padding: 2px; border: 1px solid #000">Tanggal Laporan</td>
<td style="padding: 2px; border: 1px solid #000">:</td>
<td style="padding: 2px; border: 1px solid #000">{{ formatTanggalIndonesia($tanggalLaporan) ?? '' }}</td>
<td style="padding: 2px; border: 1px solid #000">{{ formatTanggalIndonesia($tanggalLaporan) ?? '' }}
</td>
</tr>
</table>
<div class="section">
<div class="judul" >
<div class="judul">
<h6 class="border" style="text-align: center">
PETA
</h6>
@@ -1099,8 +1159,7 @@
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
<div style="border: 1px solid #ddd; padding: 10px; text-align: center;">
<img src="{{ storage_path('app/public/' . $imagePath) }}"
alt="{{ $type }}"
<img src="{{ storage_path('app/public/' . $imagePath) }}" alt="{{ $type }}"
style="max-width: 100%; height: auto; margin-bottom: 10px;">
<p style="margin: 0; font-size: 14px;">
{{ Str::title(str_replace('_', ' ', $type)) }}

View File

@@ -1524,43 +1524,98 @@
</table>
<table style="width: 100%;">
<div style="margin-top: 20px;">
<label style="font-weight: bold;">DISCLAIMER</label>
<div>
<ol style="padding-left: 20px; list-style-type: decimal; margin-top: 0;">
<li style="margin-bottom: 5px;">PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG
BERLAKU DI SUBDIT APPRAISAL</li>
<li style="margin-bottom: 5px;">LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY
DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN
DOKUMEN ASLINYA</li>
<li style="margin-bottom: 5px;">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 style="margin-bottom: 5px;">LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN
INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA</li>
</ol>
</div>
</div>
<table style="width: 100%; text-align: center;" border="1">
</table>
<table style="width: 100%; border-collapse: collapse; text-align: center;" border="1">
@php
use Modules\Usermanagement\Models\User;
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
$imagePathPenilai = storage_path('app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign);
$soUser = User::where('id', $senior_officer->id)->first();
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
$imagePathEO = storage_path('app/public/signatures/' . User::role('EO Appraisal')->first()->id . '/'. User::role('EO Appraisal')->first()->sign);
$imagePathDD = storage_path('app/public/signatures/' . User::role('DD Appraisal')->first()->id . '/'. User::role('DD Appraisal')->first()->sign);
@endphp
<tr>
<td width="30%">Penilai Dibuat</td>
<td width="30%">Di periksa</td>
<td width="30%">Menyutujui</td>
<td style="border: 1px solid #000; padding: 4px;height: 50px">
@if (file_exists($imagePathPenilai))
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
@endif
</td>
<td style="border: 1px solid #000; padding: 4px;height: 50px">
@if (file_exists($imagePathSo))
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
@endif
</td>
<td style="border: 1px solid #000; padding: 4px;height: 50px">
@if (file_exists($imagePathEO))
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
@endif
</td>
<td style="border: 1px solid #000; padding: 4px;height: 50px">
@if (file_exists($imagePathDD))
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
@endif
</td>
</tr>
<tr>
<td style="height: 50px"></td>
<td style="height: 50px"></td>
<td style="height: 50px"></td>
</tr>
<tr>
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
<td style="border: 1px solid #000; padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
<strong style="font-weight: bold; ">
PENILAI JAMINAN
PENILAI
</strong>
</td>
<td> {{ $senior_officer->name ?? '' }}</br>
<td style="border: 1px solid #000; padding: 4px;"> {{ $senior_officer->name ?? '' }}</br>
<strong style="font-weight: bold; ">
SENIOR OFFICER
</strong>
</td>
<td>
{{ $permohonan->user->name ?? '' }}</br>
<td style="border: 1px solid #000; padding: 4px;">
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
<strong style="font-weight: bold; ">
EXECUTIVE OFFICER
</strong>
</td>
<td style="border: 1px solid #000; padding: 4px;">
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
<strong style="font-weight: bold; ">
DEPUTY DIRECTOR
</strong>
</td>
</tr>
</table>
</div>
</div>
<div class="page-break"></div>
<table style="width: 100%; border: 1px solid #000;">
<table style="width: 100%; border-collapse: collapse; border: 1px solid #000;">
<tr>
<td style="width:20%; padding: 2px; border: 1px solid #000">Nama Debitur</td>
<td style=" width: 1%; padding: 2px; border: 1px solid #000">:</td>

View File

@@ -376,7 +376,6 @@
</table>
<table style="width: 100%">
<tr>
<td>
<table>

View File

@@ -8,6 +8,7 @@
<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 type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="dokument_id" value="{{ request('documentId') }}">
<input type="hidden" name="action" value="rap">

View File

@@ -292,7 +292,7 @@
<a class="btn btn-outline btn-info "
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )">
<i class="ki-filled ki-eye"></i>
PRIVIEW
PREVIEW
</a>
<a class="btn btn-success"

View File

@@ -312,15 +312,13 @@
.then(response => response.json())
.then(data => {
if (data.status) {
// Jika laporan ada, arahkan ke halaman cetak
window.location.href =
`{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=${statusLpj}&type=${data.status}`;
} else {
// Jika laporan belum ada, tampilkan pesan peringatan
Swal.fire({
title: 'Laporan Belum Ada',
text: 'Silakan isi laporan terlebih dahulu sebelum mencetak.',
text: data.message,
icon: 'warning',
confirmButtonText: 'OK',
confirmButtonColor: '#3085d6',