feat(print-out): hasil inspeksi surveyor

This commit is contained in:
majid
2025-01-31 02:32:55 +07:00
parent d8f0996184
commit d5311a944d
16 changed files with 1155 additions and 579 deletions

View File

@@ -244,6 +244,15 @@ class ActivityController extends Controller
// abort(403, 'Sorry! You are not allowed to view users.');
}
$userRole = $user->roles->pluck('name')->first();
$regionId = null;
// If user is senior-officer, get their regionId
if ($userRole === 'senior-officer') {
$userTeam = TeamsUsers::with('team')->firstWhere('user_id', $user->id);
$regionId = $userTeam?->team->regions_id;
}
// Retrieve data from the database
$query = Permohonan::query();
@@ -289,22 +298,39 @@ class ActivityController extends Controller
// Get filtered count
$filteredRecords = $query->count();
// Get data
$data = null;
$userRole = $user->roles[0]->name ?? null;
if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) {
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian'])
->whereHas('penilaian.userPenilai', function ($q) use ($user) {
$q->where('user_id', $user->id);
})
->get();
} else {
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])
->get();
// Filter by region if user is senior-officer
if ($regionId) {
$query->whereHas('region', function ($q) use ($regionId) {
$q->where('region_id', $regionId);
});
}
// Filter for specific roles
if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) {
$query->whereHas('penilaian.userPenilai', function ($q) use ($user) {
$q->where('user_id', $user->id);
});
}
$totalRecords = $query->count();
// Pagination
if ($request->has('page') && $request->has('size')) {
$page = (int) $request->get('page', 1);
$size = (int) $request->get('size', 10);
$offset = ($page - 1) * $size;
$query->skip($offset)->take($size);
}
// Get filtered count
$filteredRecords = $query->count();
// Get data with necessary relationships
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan'])->get();
// Calculate total pages
$pageCount = ceil($totalRecords / $request->get('size', 10));

View File

@@ -2407,7 +2407,7 @@ class SurveyorController extends Controller
$data['hub_cadeb_penghuni'] => ($data['hub_cadeb_penghuni'] == 'sesuai') ? $data['hub_cadeb_penghuni_sesuai'] : $data['hub_penghuni_tidak_sesuai']
],
'pihak_bank' => $data['pihak_bank'] ?? null,
'nomor_nib' => $data['nomor_nib'] ?? null,
'kordinat_lng' => $data['kordinat_lng'] ?? null,
'kordinat_lat' => $data['kordinat_lat'] ?? null,
]
@@ -3265,33 +3265,33 @@ class SurveyorController extends Controller
if ($checkKesesuaian) {
// Mengecek apakah status kesesuaian adalah 'sesuai'
$isSesuai = ($data[$fieldName] ?? '') === 'sesuai';
// Menggunakan key berdasarkan status kesesuaian
$result = [
$isSesuai ? 'sesuai' : 'tidak_sesuai' => $data[$fieldName] ?? null
];
// Tambahkan field ekstra jika ada
if ($extraField) {
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
}
return $result;
}
// Jika tidak melakukan pengecekan kesesuaian, hanya ambil data berdasarkan fieldName
$result = [
$fieldName => $data[$fieldName] ?? null,
];
// Jika ada extra field, tambahkan ke result
if ($extraField) {
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
}
return $result;
}
public function export(string $type)
{
@@ -3332,12 +3332,13 @@ class SurveyorController extends Controller
->where('dokument_id', $request->input('document_id'))
->first();
if (!$inspeksi) {
return response()->json([
'success' => false,
'message' => 'Data inspeksi tidak ditemukan'
], 404);
}
if (!$inspeksi) {
$inspeksi = new Inspeksi();
$inspeksi->permohonan_id = $request->input('permohonan_id');
$inspeksi->dokument_id = $request->input('document_id');
$inspeksi->data_form = json_encode([]); // Inisialisasi data_form kosong
$inspeksi->save();
}
// Decode data form yang ada
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
@@ -3493,36 +3494,43 @@ class SurveyorController extends Controller
public function print_out_inspeksi($permohonan_id, $dokument_id, $jenis_jaminan_id)
{
$permohonan = $this->getPermohonanJaminanId(
$permohonan_id,
$dokument_id,
$jenis_jaminan_id
);
// Ambil data permohonan dan data umum
$permohonan = $this->getPermohonanJaminanId($permohonan_id, $dokument_id, $jenis_jaminan_id);
$basicData = $this->getCommonData();
// Ambil data inspeksi
$inspeksi = Inspeksi::where('permohonan_id', $permohonan_id)
->where('dokument_id', $dokument_id)
->first();
$forminspeksi = null;
if ($inspeksi) {
$forminspeksi = json_decode($inspeksi->data_form, true);
if (!$inspeksi) {
// Redirect jika inspeksi tidak ditemukan
return redirect()->back()->with('error', 'Data inspeksi tidak ditemukan.');
}
// Cek jika forminspeksi kosong
// Decode data form inspeksi
$forminspeksi = json_decode($inspeksi->data_form, true);
if (!$forminspeksi) {
// Redirect kembali dengan pesan error
return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi');
// Redirect jika data form inspeksi kosong
return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi.');
}
$pdf = PDF::loadView('lpj::surveyor.components.print-out.main', compact(
'permohonan',
'basicData',
'forminspeksi',
));
// Pilih template PDF berdasarkan nama inspeksi
$templateView = strtolower($inspeksi->name) === 'rap'
? 'lpj::surveyor.components.print-out.main'
: 'lpj::surveyor.components.print-out.main';
// Generate PDF
$pdf = PDF::loadView($templateView, compact('permohonan', 'basicData', 'forminspeksi'));
$pdf->setPaper('A4', 'portrait');
return $pdf->download('Laporan_data.pdf');
// Tentukan nama file PDF
$namaDebiture = $permohonan->debiture->name . '-' . $permohonan->nomor_registrasi;
$fileName = 'inspeksi-' . $namaDebiture . '-data.pdf';
return $pdf->download($fileName);
}
}