fix(so/dd/eo/penilai): perbaikan otorisasi untuk paparan, pelaporan, penambahan revisi pembayaran, data pembading dan ubah class bg-agi-50 ke light:bg-agi-50

This commit is contained in:
majid
2025-03-03 15:48:03 +07:00
parent f928cf1d76
commit b8dbda153e
26 changed files with 204 additions and 105 deletions

View File

@@ -110,7 +110,9 @@ class PembayaranController extends Controller
public function edit($id) public function edit($id)
{ {
$permohonan = Permohonan::find($id); $permohonan = Permohonan::find($id);
return view('lpj::pembayaran.form', compact('permohonan'));
$persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $permohonan->id)->first();
return view('lpj::pembayaran.form', compact('permohonan', 'persetujuanPenawaran'));
} }
public function store(PersetujuanPenawaranRequest $request) public function store(PersetujuanPenawaranRequest $request)
@@ -119,27 +121,44 @@ class PembayaranController extends Controller
$validated['created_by'] = Auth::id(); $validated['created_by'] = Auth::id();
$validated['status'] = '0'; $validated['status'] = '0';
if (isset($validated['penawaran_id'])) { $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $validated['permohonan_id'] ?? null)->first();
$persetujuanPenawaran = PersetujuanPenawaran::create( $permohonan = Permohonan::find(request()->get('permohonan_id'));
['penawaran_id' => $validated['penawaran_id']], if ($persetujuanPenawaran) {
$validated, // if (isset($validated['penawaran_id'])) {
);
// $persetujuanPenawaran = PersetujuanPenawaran::create(
// ['penawaran_id' => $validated['penawaran_id']],
// $validated,
// );
$persetujuanPenawaran->fill($validated);
if ($request->hasFile('bukti_bayar')) {
$folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id'];
$persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->store($folderPath, 'public');
}
$persetujuanPenawaran->save();
$permohonan->approve_bayar_by = null;
$permohonan->approve_bayar_at = null;
$permohonan->status = 'done';
$permohonan->save();
} else { } else {
$persetujuanPenawaran = PersetujuanPenawaran::create( $persetujuanPenawaran = PersetujuanPenawaran::create(
$validated $validated
); );
$folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id'];
if ($request->hasFile('bukti_bayar')) {
$persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->store($folderPath, 'public');
}
$persetujuanPenawaran->save();
} }
$folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id'];
if ($request->hasFile('bukti_bayar')) {
$persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->store($folderPath, 'public');
}
$persetujuanPenawaran->save();
// Update the status of the related permohonan to 'spk' // Update the status of the related permohonan to 'spk'
$permohonan = Permohonan::find(request()->get('permohonan_id'));
if ($permohonan) { if ($permohonan) {
$permohonan->status_bayar = request()->get('status_bayar'); $permohonan->status_bayar = request()->get('status_bayar');
$permohonan->save(); $permohonan->save();
@@ -183,12 +202,15 @@ class PembayaranController extends Controller
if ($permohonan) { if ($permohonan) {
if ($request->type === 'revisi') { if ($request->type === 'revisi') {
$data['status'] = 'revisi-pembayaran';
$data['status_bayar'] = 'belum_bayar'; $data['status_bayar'] = 'belum_bayar';
} else { } else {
$data['status_bayar'] = 'sudah_bayar'; $data['status_bayar'] = 'sudah_bayar';
$data['status'] = 'proses-laporan';
} }
if ($permohonan->jenis_penilaian_id == 2) { if ($permohonan->jenis_penilaian_id == 2) {
$data['status_bayar'] = 'sudah_bayar';
$data['status'] = 'spk'; $data['status'] = 'spk';
} }
@@ -203,7 +225,6 @@ class PembayaranController extends Controller
$data['keterangan'] $data['keterangan']
); );
$data['status'] = 'proses-laporan';
} }
$permohonan->update($data); $permohonan->update($data);
@@ -233,12 +254,19 @@ class PembayaranController extends Controller
// abort(403, 'Sorry! You are not allowed to view users.'); // abort(403, 'Sorry! You are not allowed to view users.');
} }
$query = Permohonan::query()->where(['status_bayar' => 'belum_bayar', 'jenis_penilaian_id' => 1]) $query = Permohonan::query()->where(function ($query) {
->whereNotIn('id', function ($subquery) { $query->where(['status_bayar' => 'belum_bayar', 'jenis_penilaian_id' => 1])
->orWhere('status', 'revisi-pembayaran');
})
->where(function ($query) {
$query->whereNotIn('id', function ($subquery) {
$subquery->select('permohonan_id') $subquery->select('permohonan_id')
->from('persetujuan_penawaran') ->from('persetujuan_penawaran')
->whereNotNull('permohonan_id'); ->whereNotNull('permohonan_id');
}); })
->orWhere('status', 'revisi-pembayaran');
});
// Pencarian berdasarkan parameter search // Pencarian berdasarkan parameter search
if ($request->has('search') && !empty($request->get('search'))) { if ($request->has('search') && !empty($request->get('search'))) {

View File

@@ -610,6 +610,8 @@ class PenilaianController extends Controller
public function updatePermohonan($permohonan, $status, $approvalField, $message) public function updatePermohonan($permohonan, $status, $approvalField, $message)
{ {
$permohonan->update([ $permohonan->update([
'status' => $status, 'status' => $status,
$approvalField => Auth::user()->id, $approvalField => Auth::user()->id,
@@ -727,8 +729,8 @@ class PenilaianController extends Controller
'tujuanPenilaian', 'tujuanPenilaian',
'nilaiPlafond', 'nilaiPlafond',
'penilaian.userPenilai' => function ($q) { 'penilaian.userPenilai' => function ($q) {
$q->where('role', 'penilai')->with(['user', 'team.regions'])->first(); $q->where('role', 'penilai')->with(['user', 'team.regions']);
}, },
'penilai', 'penilai',
'approveSo', 'approveSo',
'approveEo', 'approveEo',

View File

@@ -1090,7 +1090,7 @@ class SurveyorController extends Controller
'address', 'village_code', 'district_code', 'city_code', 'province_code', 'address', 'village_code', 'district_code', 'city_code', 'province_code',
'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon', 'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon',
'sumber_data', 'harga', 'tahun','transmisi','telepon', 'sumber_data', 'harga', 'tahun','transmisi','telepon',
'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi','tanggal' 'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi','tanggal', 'harga_penawaran'
]; ];
@@ -1100,7 +1100,7 @@ class SurveyorController extends Controller
'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan',
'status_nara_sumber', 'harga', 'harga_diskon', 'diskon', 'total', 'nama_nara_sumber', 'status_nara_sumber', 'harga', 'harga_diskon', 'diskon', 'total', 'nama_nara_sumber',
'peruntukan', 'penawaran', 'telepon','hak_properti', 'peruntukan', 'penawaran', 'telepon','hak_properti',
'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek','tanggal' 'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek','tanggal', 'harga_penawaran'
]; ];
} }
@@ -1113,7 +1113,7 @@ class SurveyorController extends Controller
if (is_array($inputValue) && isset($inputValue[$index])) { if (is_array($inputValue) && isset($inputValue[$index])) {
$value = $inputValue[$index]; $value = $inputValue[$index];
// Format hanya untuk harga, harga_diskon, dan total // Format hanya untuk harga, harga_diskon, dan total
if (in_array($field, ['harga', 'harga_diskon', 'total'])) { if (in_array($field, ['harga', 'harga_diskon', 'total', 'harga_penawaran'])) {
$value = preg_replace('/[^0-9]/', '', $value); // Hapus karakter non-angka $value = preg_replace('/[^0-9]/', '', $value); // Hapus karakter non-angka
} }
$pembanding[$field] = $value; $pembanding[$field] = $value;
@@ -1155,7 +1155,7 @@ class SurveyorController extends Controller
'address', 'village_code', 'district_code', 'city_code', 'province_code', 'address', 'village_code', 'district_code', 'city_code', 'province_code',
'luas_tanah', 'luas_tanah_bagunan', 'total', 'diskon', 'harga_diskon', 'luas_tanah', 'luas_tanah_bagunan', 'total', 'diskon', 'harga_diskon',
'status_nara_sumber', 'harga', 'nama_nara_sumber','hak_properti','telepon', 'status_nara_sumber', 'harga', 'nama_nara_sumber','hak_properti','telepon',
'kordinat_lat', 'kordinat_lng', 'jenis_aset','penawaran', 'tanggal', 'kordinat_lat', 'kordinat_lng', 'jenis_aset','penawaran', 'tanggal','harga_penawaran'
]; ];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))

View File

@@ -33,9 +33,9 @@ class Authorization extends Model
]; ];
protected $casts = [ protected $casts = [
'approve_so' => 'boolean', // 'approve_so' => 'boolean',
'approve_eo' => 'boolean', // 'approve_eo' => 'boolean',
'approve_dd' => 'boolean', // 'approve_dd' => 'boolean',
'approve_so_at' => 'datetime', 'approve_so_at' => 'datetime',
'approve_eo_at' => 'datetime', 'approve_eo_at' => 'datetime',
'approve_dd_at' => 'datetime', 'approve_dd_at' => 'datetime',

View File

@@ -11,6 +11,7 @@
{ {
protected $table = 'permohonan'; protected $table = 'permohonan';
protected $fillable = [ protected $fillable = [
'id',
'nomor_registrasi', 'nomor_registrasi',
'tanggal_permohonan', 'tanggal_permohonan',
'user_id', 'user_id',

View File

@@ -1,6 +1,6 @@
@if (!isset($status)) @if (!isset($status))
<div class="card border border-agi-100 {{ isset($hidePermohonan) ? 'hidden' : '' }}"> <div class="card border border-agi-100 {{ isset($hidePermohonan) ? 'hidden' : '' }}">
<div class="card-header bg-agi-50" id="advanced_settings_appearance"> <div class="card-header light:bg-agi-50" id="advanced_settings_appearance">
@php @php
$title = $title ?? 'Data Permohonan'; $title = $title ?? 'Data Permohonan';
@endphp @endphp
@@ -81,7 +81,7 @@
</div> </div>
<div class="card border border-agi-100 min-w-full"> <div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Detail Debitur Detail Debitur
</h3> </h3>
@@ -92,7 +92,7 @@
<table class="table align-middle text-sm text-gray-500"> <table class="table align-middle text-sm text-gray-500">
<tr> <tr>
<td class="py-2 text-gray-600 font-normal"> <td class="py-2 text-gray-600 font-normal">
Name Nama
</td> </td>
<td class="py-2 text-gray-800 font-normaltext-sm"> <td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->name ?? '' }} {{ $permohonan->debiture->name ?? '' }}
@@ -108,7 +108,7 @@
</tr> </tr>
<tr> <tr>
<td class="py-3"> <td class="py-3">
Phone No Hp
</td> </td>
<td class="py-3 text-gray-700 text-2sm font-normal"> <td class="py-3 text-gray-700 text-2sm font-normal">
{{ $permohonan->debiture->phone ?? '' }} {{ $permohonan->debiture->phone ?? '' }}
@@ -117,7 +117,7 @@
<tr> <tr>
<td class="py-3 text-gray-600 font-normal"> <td class="py-3 text-gray-600 font-normal">
Address Alamat
</td> </td>
<td class="py-3 text-gray-700 text-sm font-normal"> <td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->address ?? '' }} {{ $permohonan->debiture->address ?? '' }}
@@ -178,7 +178,7 @@
</div> </div>
<div class="card border border-agi-100 min-w-full"> <div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Data Jaminan Data Jaminan
</h3> </h3>
@@ -233,7 +233,7 @@
</div> </div>
<div class="mb-5"> <div class="mb-5">
<h3 class="text-md font-medium text-gray-900"> <h3 class="text-md font-medium text-gray-900">
Alamat Pemilik Jaminan: Alamat Jaminan:
</h3> </h3>
<span class="text-2sm text-gray-700"> <span class="text-2sm text-gray-700">
{{ $dokumen->pemilik->address ?? '' }}, {{ $dokumen->pemilik->address ?? '' }},

View File

@@ -1,5 +1,5 @@
<div class="card border border-agi-100 min-w-full"> <div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Activity Activity
</h3> </h3>

View File

@@ -8,7 +8,7 @@
<div class="grid"> <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" <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="pembayaran-table" data-api-url="{{ route('pembayaran.approval.datatables') }}"> id="pembayaran-table" data-api-url="{{ route('pembayaran.approval.datatables') }}">
<div class="card-header bg-agi-50 py-5 flex-wrap"> <div class="card-header light:bg-agi-50 py-5 flex-wrap">
<h3 class="card-title"> <h3 class="card-title">
Daftar Pembayaran Daftar Pembayaran
</h3> </h3>
@@ -348,11 +348,12 @@
if (!permohonan.approve_bayar_by) { if (!permohonan.approve_bayar_by) {
iconPembayaranOtorisator = `<a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="handlePembayaran(${permohonan.id},'otorisator')"> iconPembayaranOtorisator = `<a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="handlePembayaran(${permohonan.id},'otorisator')">
<i class="ki-filled ki-double-check"></i> <i class="ki-filled ki-double-check"></i>
</a>`; </a>
}else{ <a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="handlePembayaran(${permohonan.id}, 'revisi')">
iconPembayaranOtorisator = `<a class="btn btn-sm btn-icon btn-clear btn-primary " onclick="handlePembayaran(${permohonan.id}, 'revisi')">
<i class="ki-filled ki-arrow-circle-left"></i> <i class="ki-filled ki-arrow-circle-left"></i>
</a>`; </a>
`;
} }
return `<div class="flex flex-nowrap justify-center">` + iconPembayaranOtorisator + `</div>`; return `<div class="flex flex-nowrap justify-center">` + iconPembayaranOtorisator + `</div>`;

View File

@@ -15,12 +15,13 @@
'jenis_aset' => 'Jenis properti', 'jenis_aset' => 'Jenis properti',
'hak_properti' => 'Status Hak Tanah', 'hak_properti' => 'Status Hak Tanah',
'address' => 'Alamat Lokasi', 'address' => 'Alamat Lokasi',
'harga' => 'Harga Penawaran', 'harga_penawaran' => 'Harga Penawaran',
'harga_diskon' => 'Indikasi Harga Transaksi', 'harga_diskon' => 'Indikasi Harga Transaksi',
'telepon' => 'Penjual (HP)', 'telepon' => 'Penjual (HP)',
'penawaran' => 'Ditawarkan Sejak', 'penawaran' => 'Ditawarkan Sejak',
'luas_tanah' => 'Luas Tanah', 'luas_tanah' => 'Luas Tanah',
'luas_bangunan' => 'Luas Bangunan', 'luas_bangunan' => 'Luas Bangunan',
'tanggal' => 'Tanggal Data',
'kordinat' => 'Titik Kordinat', 'kordinat' => 'Titik Kordinat',
]; ];
@endphp @endphp

View File

@@ -426,21 +426,21 @@
@if (Auth::user()->hasAnyRole(['senior-officer', 'surveyor', 'administrator'])) @if (Auth::user()->hasAnyRole(['senior-officer', 'surveyor', 'administrator']))
<button type="button" class="btn btn-primary" onclick="saveResume()"> <button type="button" class="btn btn-primary" onclick="saveResume()">
<i class="ki-filled ki-save-2"></i> <i class="ki-filled ki-save-2"></i>
Save</button> Simpan</button>
@endif @endif
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator']))
<a class="btn btn-info" <a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN Lampiran Foto dan Dokument
</a> </a>
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}" <a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}"
class="btn btn-light"> class="btn btn-light">
<i class="ki-filled ki-printer"></i> Hasil Inspeksi <i class="ki-filled ki-printer"></i>Cetak Hasil Inspeksi
</a> </a>
<a class="btn btn-success" <a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )"> onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print <i class="ki-filled ki-printer"></i> Cetak Laporan
</a> </a>
@endif @endif
</div> </div>

View File

@@ -8,7 +8,7 @@
@include('lpj::assetsku.includenya') @include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100 pb-2.5"> <div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings"> <div class="card-header light:light:bg-agi-50" id="basic_settings">
<h3 class="card-title"> <h3 class="card-title">
Detail Penilaian Detail Penilaian
</h3> </h3>
@@ -111,7 +111,7 @@
@foreach ($permohonan->documents as $dokumen) @foreach ($permohonan->documents as $dokumen)
<div class="card"> <div class="card border border-agi-100">
<div class="card-body grid gap-5"> <div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@php @php
@@ -219,19 +219,19 @@
<div class="flex gap-5"> <div class="flex gap-5">
<a class="btn btn-primary" <a class="btn btn-primary"
href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $dokumen->jenis_jaminan_id }}"> href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $dokumen->jenis_jaminan_id }}">
LAMPIRAN FOTO DAN DOKUMEN Lampiran Foto dan Dokument
</a> </a>
@if (strtolower($permohonan->tujuanPenilaian->name) != 'rap') @if (strtolower($permohonan->tujuanPenilaian->name) != 'rap')
<a class="btn btn-primary" data-modal-toggle="#modal_2"> <a class="btn btn-primary" data-modal-toggle="#modal_2">
KERTAS KERJA Kertas Kerja
</a> </a>
@endif @endif
<a class="btn btn-primary" onclick="paparan({{ $permohonan->id }})"> <a class="btn btn-primary" onclick="paparan({{ $permohonan->id }})">
PAPARAN Paparan
</a> </a>
<div class="dropdown" data-dropdown="true" data-dropdown-trigger="click"> <div class="dropdown" data-dropdown="true" data-dropdown-trigger="click">
<button class="dropdown-toggle btn btn-primary uppercase"> <button class="dropdown-toggle btn btn-primary ">
Pembuatan Laporan Pembuatan Laporan
</button> </button>
@@ -322,13 +322,13 @@
<a class="btn btn-outline btn-info " <a class="btn btn-outline btn-info "
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )"> onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )">
<i class="ki-filled ki-eye"></i> <i class="ki-filled ki-eye"></i>
PREVIEW Lihat Laporan
</a> </a>
<a class="btn btn-success" <a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 0 )"> onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 0 )">
<i class="ki-filled ki-printer"></i> <i class="ki-filled ki-printer"></i>
PRINT OUT Cetak Laporan
</a> </a>
</div> </div>
</div> </div>

View File

@@ -108,6 +108,47 @@
</div> </div>
</div> </div>
@endif @endif
@if ($permohonan->authorization->approve_so && $dataHeader == 'paparan' )
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
Approval
</h3>
</div>
<div class="card-body">
<table class="table table-border">
<tbody>
<tr>
<td>Diperiksa Oleh</td>
<td>{{ getUser($permohonan->authorization->approve_so)->name ?? 'N/A' }}</td>
<td>{{ $permohonan->authorization->approve_so_at ? formatTanggalIndonesia($permohonan->authorization->approve_so_at, 1) : 'N/A' }}
</td>
</tr>
@if ($permohonan->authorization->approve_eo != null)
<tr>
<td>Disetujui Oleh (EO)</td>
<td>{{ getUser($permohonan->authorization->approve_eo)->name ?? 'N/A' }}</td>
<td>{{ $permohonan->authorization->approve_eo_at ? formatTanggalIndonesia($permohonan->authorization->approve_eo_at, 1) : 'N/A' }}
</td>
</tr>
@endif
@if (in_array($permohonan->nilai_plafond_id, [1, 2, 4]) && $permohonan->approve_dd != null)
<tr>
<td>Disetujui Oleh (DD)</td>
<td>{{ getUser($permohonan->authorization->approve_dd)->name ?? 'N/A' }}</td>
<td>{{ $permohonan->authorization->approve_dd_at ? formatTanggalIndonesia($permohonan->authorization->approve_dd_at, 1) : 'N/A' }}
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
@endif
<div> <div>
<div> <div>
<div class="flex gap-2.5"> <div class="flex gap-2.5">

View File

@@ -75,7 +75,7 @@
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="tanggal_paparan"> <th class="min-w-[150px]" data-datatable-column="tanggal_paparan">
<span class="sort"> <span class="sort-label"> Tanggal Paparan </span> <span class="sort"> <span class="sort-label">Keterangan/Tanggal Paparan </span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="approval_so"> <th class="min-w-[150px]" data-datatable-column="approval_so">
@@ -240,7 +240,7 @@
title: 'Tanggal Paparan', title: 'Tanggal Paparan',
render: (item, data) => { render: (item, data) => {
if(data.tanggal_paparan) { if(data.tanggal_paparan) {
return `${window.formatTanggalIndonesia(data.tanggal_paparan)}`; return ` ${data?.keterangan} | ${window.formatTanggalIndonesia(data.tanggal_paparan)}`;
} }
return "-"; return "-";
@@ -258,8 +258,8 @@
approval_eo: { approval_eo: {
title: 'Approval EO', title: 'Approval EO',
render: (item, data) => { render: (item, data) => {
if (data.approve_eo) { if (data?.authorization?.approve_eo) {
return `${data.approve_eo.name} | ${window.formatTanggalIndonesia(data.approval_eo_at)}`; return `${data?.authorization?.approve_eo.name} | ${window.formatTanggalIndonesia(data.approval_eo_at)}`;
} }
return ''; return '';
}, },

View File

@@ -1,5 +1,5 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
Analisa Bangunan Analisa Bangunan
</h3> </h3>

View File

@@ -79,16 +79,18 @@
let columnCount = 1; let columnCount = 1;
// Fungsi calculate prices yang diperbaiki // Fungsi calculate prices yang diperbaiki
function calculatePrices(type = 'main', index = null) { function calculatePrices(type = 'main', index = null) {
let hargaInput, diskonInput, totalInput, hargaDiskonInput; let hargaInput, diskonInput, totalInput, hargaDiskonInput, hargaPenawaranInput;
// Tentukan input berdasarkan tipe (main atau pembanding) // Tentukan input berdasarkan tipe (main atau pembanding)
if (type === 'main') { if (type === 'main') {
hargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
hargaInput = document.querySelector('input[name="harga"]'); hargaInput = document.querySelector('input[name="harga"]');
diskonInput = document.querySelector('input[name="diskon"]'); diskonInput = document.querySelector('input[name="diskon"]');
totalInput = document.querySelector('input[name="total"]'); totalInput = document.querySelector('input[name="total"]');
hargaDiskonInput = document.querySelector('input[name="harga_diskon"]'); hargaDiskonInput = document.querySelector('input[name="harga_diskon"]');
} else { } else {
// Untuk pembanding, gunakan array input dengan index // Untuk pembanding, gunakan array input dengan index
const hargaPenawarans = document.getElementsByName('harga_penawaran_pembanding[]');
const hargaInputs = document.getElementsByName('harga_pembanding[]'); const hargaInputs = document.getElementsByName('harga_pembanding[]');
const diskonInputs = document.getElementsByName('diskon_pembanding[]'); const diskonInputs = document.getElementsByName('diskon_pembanding[]');
const totalInputs = document.getElementsByName('total_pembanding[]'); const totalInputs = document.getElementsByName('total_pembanding[]');
@@ -96,6 +98,7 @@
// Pastikan index valid // Pastikan index valid
if (index !== null && index < hargaInputs.length) { if (index !== null && index < hargaInputs.length) {
hargaPenawaranInput = hargaPenawarans[index]
hargaInput = hargaInputs[index]; hargaInput = hargaInputs[index];
diskonInput = diskonInputs[index]; diskonInput = diskonInputs[index];
totalInput = totalInputs[index]; totalInput = totalInputs[index];
@@ -106,11 +109,12 @@
} }
// Validasi input // Validasi input
if (!hargaInput || !diskonInput || !totalInput || !hargaDiskonInput) { if (!hargaPenawaranInput || !hargaInput || !diskonInput || !totalInput || !hargaDiskonInput) {
return; return;
} }
// Ambil nilai numerik dari input // Ambil nilai numerik dari input
const hargaPenawaran = parseFloat(hargaPenawaranInput.value.replace(/[^\d]/g, '') || '0');
const harga = parseFloat(hargaInput.value.replace(/[^\d]/g, '') || '0'); const harga = parseFloat(hargaInput.value.replace(/[^\d]/g, '') || '0');
let diskonInput_value = diskonInput.value.replace(',', '.'); let diskonInput_value = diskonInput.value.replace(',', '.');
let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0'); let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0');
@@ -120,10 +124,11 @@
diskon = Math.min(diskon, 100); diskon = Math.min(diskon, 100);
const total = harga; const total = harga;
const hargaSetelahDiskon = harga - (harga * (diskon / 100)); const hargaPermeterSetelahDiskon = harga - (harga * (diskon / 100))
const hargaSetelahDiskon = hargaPenawaran - (hargaPenawaran * (diskon / 100));
// Update nilai dengan format currency // Update nilai dengan format currency
totalInput.value = formatCurrency(total.toString()); totalInput.value = formatCurrency(hargaPermeterSetelahDiskon.toString());
hargaDiskonInput.value = formatCurrency(hargaSetelahDiskon.toString()); hargaDiskonInput.value = formatCurrency(hargaSetelahDiskon.toString());
} }
@@ -211,7 +216,8 @@
'hak_properti_pembanding[]': currentData.hak_properti, 'hak_properti_pembanding[]': currentData.hak_properti,
'telepon_pembanding[]': currentData.telepon, 'telepon_pembanding[]': currentData.telepon,
'penawaran_pembanding[]': currentData.penawaran, 'penawaran_pembanding[]': currentData.penawaran,
'tanggal_pembanding[]': currentData.tanggal 'tanggal_pembanding[]': currentData.tanggal,
'harga_penawaran_pembanding[]':currentData.harga_penawaran
}; };
@@ -261,11 +267,15 @@
function initializePriceCalculation() { function initializePriceCalculation() {
// Event listener untuk input utama // Event listener untuk input utama
const mainHargaInput = document.querySelector('input[name="harga"]'); const mainHargaInput = document.querySelector('input[name="harga"]');
const mainHargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
const mainDiskonInput = document.querySelector('input[name="diskon"]'); const mainDiskonInput = document.querySelector('input[name="diskon"]');
if (mainHargaInput) { if (mainHargaInput) {
mainHargaInput.addEventListener('input', () => calculatePrices('main')); mainHargaInput.addEventListener('input', () => calculatePrices('main'));
} }
if (mainHargaPenawaranInput) {
mainHargaPenawaranInput.addEventListener('input', () => calculatePrices('main'));
}
if (mainDiskonInput) { if (mainDiskonInput) {
mainDiskonInput.addEventListener('input', () => calculatePrices('main')); mainDiskonInput.addEventListener('input', () => calculatePrices('main'));
@@ -273,11 +283,17 @@
// Event listener untuk input pembanding // Event listener untuk input pembanding
const pembandingHargaInputs = document.getElementsByName('harga_pembanding[]'); const pembandingHargaInputs = document.getElementsByName('harga_pembanding[]');
const pembandingHargaPenawaranInput = document.getElementsByName('harga_penawaran_pembanding[]');
const pembandingDiskonInputs = document.getElementsByName('diskon_pembanding[]'); const pembandingDiskonInputs = document.getElementsByName('diskon_pembanding[]');
pembandingHargaInputs.forEach((input, index) => { pembandingHargaInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index)); input.addEventListener('input', () => calculatePrices('pembanding', index));
}); });
pembandingHargaPenawaranInput.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));
});
pembandingDiskonInputs.forEach((input, index) => { pembandingDiskonInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index)); input.addEventListener('input', () => calculatePrices('pembanding', index));

View File

@@ -1,8 +1,8 @@
{{-- analisa fakta --}} {{-- analisa fakta --}}
<div class="card border border-agi-100 rounded-lg overflow-hidden"> <div class="card border border-agi-100 rounded-lg overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
Analisis Fakta Analisa Fakta
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -1,5 +1,5 @@
<div class=" card w-full bg-white rounded-lg shadow-md "> <div class=" card w-full border-agi-100 rounded-lg shadow-md ">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
@php @php
$title = $title ?? 'Form Inspeksi'; $title = $title ?? 'Form Inspeksi';
@endphp @endphp
@@ -121,8 +121,8 @@
</div> </div>
</div> </div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Nama Cadeb/Debitur</h1> <h1 class="text-md font-medium text-gray-900 uppercase">Nama Cadeb/Debitur</h1>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -142,8 +142,8 @@
</div> </div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md "> <div class="card border border-agi-100 w-full rounded-lg shadow-md ">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Deskripsi Aset jaminan</h1> <h1 class="text-md font-medium text-gray-900 uppercase">Deskripsi Aset jaminan</h1>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -250,8 +250,8 @@
</div> </div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Titik Koordinat Google Maps</h1> <h1 class="text-md font-medium text-gray-900 uppercase">Titik Koordinat Google Maps</h1>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -278,8 +278,8 @@
</div> </div>
<div class="card"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Status</h1> <h1 class="text-md font-medium text-gray-900 uppercase">Status</h1>
</div> </div>
<div class="card-body w-full"> <div class="card-body w-full">
@@ -307,7 +307,9 @@
@php @php
$hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A'; $hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A';
@endphp @endphp
{{ $hubCadebPemilik }} <p>
{{ $hubCadebPemilik }}
</p>
<input type="hidden" name="hub_cadeb_sesuai" value="{{ $hubCadebPemilik }}" <input type="hidden" name="hub_cadeb_sesuai" value="{{ $hubCadebPemilik }}"
id=""> id="">
@@ -361,7 +363,7 @@
</div> </div>
<div class=" mx-auto bg-white rounded-lg overflow-hidden"> <div class=" mx-auto rounded-lg overflow-hidden">
<div class="py-4 "> <div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan Cadeb/Debitur dengan Penghuni Jaminan</h1> <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"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">

View File

@@ -1,6 +1,6 @@
<!-- Informasi Tata Ruang --> <!-- Informasi Tata Ruang -->
<div class="card border border-agi-100 w-full "> <div class="card border border-agi-100 w-full ">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap') @if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
ATURAN TATA KOTA ATURAN TATA KOTA

View File

@@ -47,7 +47,7 @@
@endforeach @endforeach
@endif @endif
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
Tanda Tangan Tanda Tangan
</h3> </h3>
@@ -68,12 +68,12 @@
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px"> <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()"> <button type="button" class="btn btn-primary" id="saveButton" onclick="submitData()">
<i class="ki-filled ki-save-2"></i> <i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Save</span> <span id="saveButtonText">Simpan</span>
</button> </button>
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('dokument'), 'jenis_jaminan_id' => request('jenis_jaminan')]) }}" <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"> class="btn btn-info" id="saveButton">
<i class="ki-filled ki-printer"></i> <i class="ki-filled ki-printer"></i>
<span>Print Out</span> <span>Cetak Form Inspeksi</span>
</a> </a>
</div> </div>

View File

@@ -1,5 +1,5 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
Analisa Lingkungan Analisa Lingkungan
</h3> </h3>

View File

@@ -188,12 +188,23 @@
</td> </td>
</tr> </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> <tr>
<td class="px-4 py-2">Telepon Contact Person</td> <td class="px-4 py-2">Telepon Contact Person</td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="telepon" class="input" <input type="text" name="telepon" class="input"
value="{{ $inspectionData['asset']['telepon'] ?? '' }}"> value="{{ $inspectionData['asset']['telepon'] ?? $permohonan->debiture->phone ?? '' }}">
</td> </td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="telepon_pembanding[]" class="input"> <input type="text" name="telepon_pembanding[]" class="input">
@@ -204,7 +215,7 @@
<td class="px-4 py-2">Status Narasumber</td> <td class="px-4 py-2">Status Narasumber</td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="status_nara_sumber" class="input" <input type="text" name="status_nara_sumber" class="input"
value="{{ $inspectionData['asset']['status_nara_sumber'] ?? '' }}"> value="{{ $inspectionData['asset']['status_nara_sumber'] ?? $dokumen->pemilik->hubungan_pemilik->name ?? '' }}">
</td> </td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="status_nara_sumber_pembanding[]" class="input"> <input type="text" name="status_nara_sumber_pembanding[]" class="input">
@@ -214,7 +225,7 @@
<td class="px-4 py-2">Nama Narasumber</td> <td class="px-4 py-2">Nama Narasumber</td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="nama_nara_sumber" class="input" <input type="text" name="nama_nara_sumber" class="input"
value="{{ $inspectionData['asset']['nama_nara_sumber'] ?? '' }}"> value="{{ $inspectionData['asset']['nama_nara_sumber'] ?? $permohonan->debiture->name ?? '' }}">
</td> </td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="nama_nara_sumber_pembanding[]" class="input"> <input type="text" name="nama_nara_sumber_pembanding[]" class="input">
@@ -437,14 +448,14 @@
</td> </td>
</tr> </tr>
<tr style="display: none;"> <tr style="">
<td class="px-4 py-2">Total</td> <td class="px-4 py-2"></td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="total" class="input currency" <input type="text" name="total" class="input currency"
value="{{ $inspectionData['asset']['total'] ?? '' }}"> value="{{ $inspectionData['asset']['total'] ?? '' }}" readonly>
</td> </td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<input type="text" name="total_pembanding[]" class="input currency-format"> <input type="text" name="total_pembanding[]" class="input currency-format" readonly>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -542,23 +542,19 @@
<tr> <tr>
@php @php
$hubCadebPenghuni = $forminspeksi['asset']['hub_cadeb_penghuni'] ?? null; $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai'])
? 'sesuai'
$cekHub = $hubCadebPenghuni === 'sesuai' ? 'sesuai' : 'tidak sesuai'; : 'tidak sesuai';
$selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null;
$hubCadeb =
is_array($hubCadebPenghuni) && isset($hubCadebPenghuni[$cekHub])
? $hubCadebPenghuni[$cekHub]
: $hubCadebPenghuni[$cekHub] ?? null;
@endphp @endphp
<td><strong>Hubungan Penghuni Jaminan dengan Debitur</strong></td> <td><strong>Hubungan Penghuni Jaminan dengan Debitur</strong></td>
<td> <td>
@if (isset($basicData['hubPenghuni'])) @if (isset($selectedData))
<table class="checkbox-table"> <table class="checkbox-table">
<tr> <tr>
<td> <td>
{{ $hubCadeb ?? '' }} {{ $selectedData ?? '' }}
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -126,7 +126,7 @@
<input type="radio" name="tusuk_sate" value="Ya" <input type="radio" name="tusuk_sate" value="Ya"
{{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya'] ? 'checked' : '' }}> {{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya'] ? 'checked' : '' }}>
Ya Ya
@if (isset($forminspeksi['tanah']['tusuk_sate']) && $forminspeksi['tanah']['tusuk_sate']['Ya']) @if (isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya'])
{{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? ' (' . $forminspeksi['tanah']['tusuk_sate']['Ya'] . ')' : '' }} {{ isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? ' (' . $forminspeksi['tanah']['tusuk_sate']['Ya'] . ')' : '' }}
@endif @endif
</label> </label>

View File

@@ -1,5 +1,5 @@
<div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden"> <div class="card border border-agi-100 w-full rounded-lg shadow-md overflow-hidden">
<div class="card-header bg-agi-50"> <div class="card-header light:bg-agi-50">
<h3 class="card-title uppercase"> <h3 class="card-title uppercase">
Analisa Tanah Analisa Tanah
</h3> </h3>

View File

@@ -24,7 +24,7 @@
@if ($permohonan->status == 'revisi-survey') @if ($permohonan->status == 'revisi-survey')
<div class="card border border-agi-100 min-w-full"> <div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50" id="basic_settings"> <div class="card-header light:bg-agi-50" id="basic_settings">
<div class="card-title flex flex-row gap-1.5"> <div class="card-title flex flex-row gap-1.5">
Catatan Revisi Catatan Revisi
</div> </div>
@@ -38,7 +38,7 @@
<div class="card border border-agi-100 min-w-full"> <div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50" id="basic_settings"> <div class="card-header light:bg-agi-50" id="basic_settings">
<div class="card-title flex flex-row gap-1.5"> <div class="card-title flex flex-row gap-1.5">
Form Jaminan Form Jaminan
</div> </div>

View File

@@ -7,7 +7,7 @@
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <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" <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') }}"> data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('surveyor.datatables') }}">
<div class="card-header bg-agi-50 py-5 flex-wrap"> <div class="card-header light:bg-agi-50 py-5 flex-wrap">
<h3 class="card-title"> <h3 class="card-title">
Surveyor Surveyor
</h3> </h3>