diff --git a/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php b/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php new file mode 100644 index 0000000..b30e800 --- /dev/null +++ b/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php @@ -0,0 +1,288 @@ +request = $request; + } + + public function collection() + { + $query = Permohonan::query(); + $query = $query->where('status', 'done'); + + // Apply date range filter if provided + if ($this->request->has('start_date') || $this->request->has('end_date')) { + $query->whereBetween('tanggal_permohonan', [ + $this->request->start_date ?? '1900-01-01', + $this->request->end_date ?? now()->toDateString() + ]); + } + + // Apply branch filter if provided + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $query->where('branch_id', $this->request->branch_id); + } + + if ($this->request->has('penilai_id') && !empty($this->request->penilai_id)) { + $request = $this->request; // Store in a local variable + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($request) { + $q->where('user_id', $request->penilai_id); + }); + } + + // Apply search filter if provided + if ($this->request->has('search') && !empty($this->request->search)) { + $search = $this->request->search; + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Default ordering + $query->orderBy('nomor_registrasi', 'asc'); + + return $query->get(); + } + + protected $rowNumber = 0; + + public function map($permohonan): array + { + $this->rowNumber++; + $luas_tanah = 0; + $luas_bangunan = 0; + $nilai_tanah = 0; + $nilai_bangunan = 0; + $npw = 0; + $nilai_liquidasi = 0; + + if (isset($permohonan->penilai->lpj)) { + $lpj = json_decode($permohonan->penilai->lpj, true); + $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); + + $luas_tanah = $lpj['luas_tanah'] ?? 0; + $luas_bangunan = $lpj['luas_bangunan'] ?? 0; + $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); + $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); + $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); + } + + return [ + $this->rowNumber, + $permohonan->nomor_registrasi, + $permohonan->tanggal_permohonan, + $permohonan->debiture->branch->name, + $permohonan->creator->name, + $permohonan->debiture->cif, + $permohonan->debiture->name, + $permohonan->jenisPenilaian->name, + $permohonan->tujuanPenilaian->name, + $permohonan->jenisFasilitasKredit->name, + $permohonan->documents->pluck('jenisJaminan.name')->unique()->implode(', '), + $permohonan->documents->map(function ($document) { + return formatAlamat($document); + })->unique()->implode(', '), + $permohonan->documents->flatMap(function ($document) { + return $document->detail->map(function ($detail) { + return (!empty($detail->dokumen_nomor) && is_array($detail->dokumen_nomor)) + ? ($detail->jenisLegalitasJaminan->name ?? '') . "\n" . implode(', ', $detail->dokumen_nomor) + : null; + }); + })->filter()->unique()->implode(', '), + $permohonan->documents->pluck('pemilik.name')->unique()->implode(', '), + $luas_tanah . ' m²', + formatRupiah($nilai_tanah, 2), + $luas_bangunan . ' m²', + formatRupiah($nilai_bangunan, 2), + formatRupiah($permohonan->nilai_njop ?? 0, 2), + formatRupiah($npw, 2), + formatRupiah($nilai_liquidasi, 2), + $permohonan->documents->map(function ($document) { + return formatTanggalIndonesia($document->created_at); + })->first(), + '', // tanggal_spk + '', // nomor_spk + '', // tanggal_rencana_kunjungan + $permohonan->penilaian->tanggal_kunjungan ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '', + '', // tanggal_delivered + '', // jangka_waktu_sla + ($permohonan->approval_dd_at || $permohonan->approval_eo_at) ? + formatTanggalIndonesia($permohonan->approval_dd_at ?? $permohonan->approval_eo_at) : '', + $permohonan->penilaian->tanggal_kunjungan ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '', + $permohonan->penilaian->_user_penilai->userPenilaiTeam->name ?? '', + $permohonan->penilaian->teams ?? '', + '', // saran + '' // catatan + ]; + } + + public function headings(): array + { + return [ + 'No', + 'Nomor Registrasi', + 'Tanggal Permohonan', + 'Cabang', + 'Pemohon', + 'CIF', + 'Nama Debitur', + 'Jenis Penilaian', + 'Tujuan Penilaian', + 'Jenis Fasilitas Kredit', + 'Jenis Agunan', + 'Alamat Agunan', + 'Bukti Kepemilikan', + 'Nama Pemilik', + 'Luas Tanah', + 'Nilai Tanah', + 'Luas Bangunan', + 'Nilai Bangunan', + 'Nilai NJOP', + 'Nilai Pasar Wajar', + 'Nilai Likuidasi', + 'Tanggal Dokumen Diterima', + 'Tanggal SPK', + 'Nomor SPK', + 'Tanggal Rencana Kunjungan', + 'Tanggal Kunjungan', + 'Tanggal Delivered', + 'Jangka Waktu SLA', + 'Tanggal Laporan', + 'Tanggal Review', + 'Nama Penilai', + 'Nama Team Leader', + 'Saran', + 'Catatan' + ]; + } + + /** + * @return string + */ + public function title(): string + { + return 'Laporan Hasil Penilaian Jaminan Internal & External'; + } + + /** + * @return string + */ + public function startCell(): string + { + return 'A7'; + } + + /** + * @return array + */ + public function registerEvents(): array + { + return [ + AfterSheet::class => function(AfterSheet $event) { + // Get the sheet + $sheet = $event->sheet->getDelegate(); + + // Set the title + $sheet->setCellValue('A1', 'LAPORAN PENILAIAN JAMINAN'); + $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16); + + // Merge cells for title + $sheet->mergeCells('A1:AH1'); + $sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the branch information if filtered + $branchInfo = ''; + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $branch = Branch::find($this->request->branch_id); + if ($branch) { + $branchInfo = 'Cabang: ' . $branch->name; + $sheet->setCellValue('A2', $branchInfo); + $sheet->mergeCells('A2:AH2'); + $sheet->getStyle('A2')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + $sheet->getStyle('A2')->getFont()->setBold(true); + } + } + + // Set the period + $startDate = $this->request->start_date ?? ''; + $endDate = $this->request->end_date ?? ''; + + $rowIndex = $branchInfo ? 3 : 2; + + if ($startDate && $endDate) { + $startDateFormatted = Carbon::parse($startDate)->format('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->format('d F Y'); + $sheet->setCellValue('A' . $rowIndex, 'Periode: ' . $startDateFormatted . ' - ' . $endDateFormatted); + } else { + $sheet->setCellValue('A' . $rowIndex, 'Periode: Semua Data'); + } + $sheet->mergeCells('A' . $rowIndex . ':AH' . $rowIndex); + $sheet->getStyle('A' . $rowIndex)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the date of export + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, 'Tanggal Export: ' . Carbon::now()->format('d F Y H:i:s')); + + // Set the user who exported + $rowIndex++; + $userName = Auth::user() ? Auth::user()->name : 'System'; + $sheet->setCellValue('A' . $rowIndex, 'Diexport oleh: ' . $userName); + + // Add a blank line + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, ''); + + // Style the header row + $headerRange = 'A7:' . $sheet->getHighestColumn() . '7'; + $sheet->getStyle($headerRange)->getFont()->setBold(true); + $sheet->getStyle($headerRange)->getFill() + ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) + ->getStartColor()->setARGB('FFCCCCCC'); + + // Auto-size columns - fixed to handle columns beyond Z + $highestColumn = $sheet->getHighestColumn(); + $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); + + for ($i = 1; $i <= $highestColumnIndex; $i++) { + $currentColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($i); + $sheet->getColumnDimension($currentColumn)->setAutoSize(true); + } + + // Add borders to all cells with data + $dataRange = 'A7:' . $sheet->getHighestColumn() . $sheet->getHighestRow(); + $sheet->getStyle($dataRange)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN); + + // Center align the header row + $sheet->getStyle($headerRange)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set text wrap for header cells + $sheet->getStyle($headerRange)->getAlignment()->setWrapText(true); + }, + ]; + } + } diff --git a/app/Exports/LaporanPembatalanExport.php b/app/Exports/LaporanPembatalanExport.php new file mode 100644 index 0000000..b44afe2 --- /dev/null +++ b/app/Exports/LaporanPembatalanExport.php @@ -0,0 +1,102 @@ +request = $request; + } + + public function collection() + { + $query = PermohonanPembatalan::where('status', 'batal'); + + if (!Auth::user()->hasAnyRole(['administrator'])) { + $query = $query->whereHas('permohonan', function ($q) { + $q->where('branch_id', Auth::user()->branch_id); + }); + } + + // Apply search filter if provided + if ($this->request->has('search') && !empty($this->request->get('search'))) { + $search = $this->request->get('search'); + $query->where(function ($q) use ($search) { + $q->whereHas('permohonan', function ($subq) use ($search) { + $subq->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $subq->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $subq->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + }); + $q->orWhere('alasan', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Filter by date range if provided + if ($this->request->has('start_date') || $this->request->has('end_date')) { + $query->whereBetween('created_at', [ + $this->request->get('start_date') ?? '1900-01-01', + $this->request->get('end_date') ?? now()->toDateString() + ]); + } + + // Filter by status if provided + if ($this->request->has('status') && !empty($this->request->get('status'))) { + $query->where('status', $this->request->get('status')); + } + + // Filter by branch if provided + if ($this->request->has('branch_id') && !empty($this->request->get('branch_id'))) { + $query->whereHas('permohonan', function ($q) { + $q->where('branch_id', $this->request->get('branch_id')); + }); + } + + return $query->orderBy('created_at', 'desc') + ->get(); + } + + public function headings(): array + { + return [ + 'No. Registrasi', + 'Tanggal Permohonan', + 'Tanggal Pembatalan', + 'Cabang', + 'Pemohon', + 'Debitur', + 'Alasan Pembatalan', + 'Status', + 'Diajukan Oleh', + 'Disetujui Oleh', + 'Tanggal Disetujui' + ]; + } + + public function map($pembatalan): array + { + return [ + $pembatalan->permohonan->nomor_registrasi ?? '-', + $pembatalan->permohonan->tanggal_permohonan ? date('d-m-Y', strtotime($pembatalan->permohonan->tanggal_permohonan)) : '-', + date('d-m-Y', strtotime($pembatalan->created_at)), + $pembatalan->permohonan->branch->name ?? '-', + $pembatalan->permohonan->user->name ?? '-', + $pembatalan->permohonan->debiture->name ?? '-', + $pembatalan->alasan_pembatalan, + $pembatalan->status, + $pembatalan->user->name ?? '-', + $pembatalan->authorized_by ? $pembatalan->authorizedUser->name : '-', + $pembatalan->authorized_at ? formatTanggalIndonesia(strtotime($pembatalan->authorized_at),1) : '-' + ]; + } + } diff --git a/app/Exports/LaporanPenilaianJaminanExport.php b/app/Exports/LaporanPenilaianJaminanExport.php new file mode 100644 index 0000000..1e063fa --- /dev/null +++ b/app/Exports/LaporanPenilaianJaminanExport.php @@ -0,0 +1,245 @@ +request = $request; + } + + public function collection() + { + $query = Permohonan::query(); + $query = $query->where('status', 'done'); + + // Apply date range filter if provided + if ($this->request->has('start_date') || $this->request->has('end_date')) { + $query->whereBetween('tanggal_permohonan', [ + $this->request->start_date ?? '1900-01-01', + $this->request->end_date ?? now()->toDateString() + ]); + } + + // Apply branch filter if provided + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $query->where('branch_id', $this->request->branch_id); + } + + if ($this->request->has('penilai_id') && !empty($this->request->penilai_id)) { + $request = $this->request; // Store in a local variable + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($request) { + $q->where('user_id', $request->penilai_id); + }); + } + + // Apply search filter if provided + if ($this->request->has('search') && !empty($this->request->search)) { + $search = $this->request->search; + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Default ordering + $query->orderBy('nomor_registrasi', 'asc'); + + return $query->with(['debiture.branch'])->get(); + } + + protected $rowNumber = 0; + + public function map($permohonan): array + { + $this->rowNumber++; + $luas_tanah = 0; + $luas_bangunan = 0; + $nilai_tanah = 0; + $nilai_bangunan = 0; + $npw = 0; + $nilai_liquidasi = 0; + + if (isset($permohonan->penilai->lpj)) { + $lpj = json_decode($permohonan->penilai->lpj, true); + $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); + + $luas_tanah = $lpj['luas_tanah'] ?? 0; + $luas_bangunan = $lpj['luas_bangunan'] ?? 0; + $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); + $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); + $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); + } + + return [ + $this->rowNumber, + $permohonan->nomor_registrasi, + $permohonan->tanggal_permohonan, + $permohonan->debiture->branch->name, + $permohonan->debiture->name, + $permohonan->creator->name, + $permohonan->tujuanPenilaian->name, + $permohonan->documents->pluck('jenisJaminan.name')->unique()->implode(', '), + $permohonan->documents->map(function ($document) { + return formatAlamat($document); + })->unique()->implode(', '), + $luas_tanah . ' m²', + formatRupiah($nilai_tanah, 2), + $luas_bangunan . ' m²', + formatRupiah($nilai_bangunan, 2), + ($permohonan->approval_dd_at || $permohonan->approval_eo_at) ? + formatTanggalIndonesia($permohonan->approval_dd_at ?? $permohonan->approval_eo_at) : '', + $permohonan->penilaian->tanggal_kunjungan ? + formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '', + formatRupiah($npw, 2), + formatRupiah($nilai_liquidasi, 2), + $permohonan->penilaian->_user_penilai->userPenilaiTeam->name, + ]; + } + + public function headings(): array + { + return [ + 'No', + 'Nomor Registrasi', + 'Tanggal Permohonan', + 'Cabang', + 'Nama Debitur', + 'Pemohon', + 'Tujuan Penilaian', + 'Jenis Agunan', + 'Alamat Agunan', + 'Luas Tanah', + 'Nilai Tanah', + 'Luas Bangunan', + 'Nilai Bangunan', + 'Tanggal Laporan', + 'Tanggal Review', + 'Nilai Pasar Wajar', + 'Nilai Likuidasi', + 'Nama Penilai', + ]; + } + + /** + * @return string + */ + public function title(): string + { + return 'Laporan Penilaian Jaminan'; + } + + /** + * @return string + */ + public function startCell(): string + { + return 'A7'; + } + + /** + * @return array + */ + public function registerEvents(): array + { + return [ + AfterSheet::class => function(AfterSheet $event) { + // Get the sheet + $sheet = $event->sheet->getDelegate(); + + // Set the title + $sheet->setCellValue('A1', 'LAPORAN PENILAIAN JAMINAN'); + $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16); + + // Merge cells for title + $sheet->mergeCells('A1:R1'); + $sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the branch information if filtered + $branchInfo = ''; + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $branch = Branch::find($this->request->branch_id); + if ($branch) { + $branchInfo = 'Cabang: ' . $branch->name; + $sheet->setCellValue('A2', $branchInfo); + $sheet->mergeCells('A2:R2'); + $sheet->getStyle('A2')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + $sheet->getStyle('A2')->getFont()->setBold(true); + } + } + + // Set the period + $startDate = $this->request->start_date ?? ''; + $endDate = $this->request->end_date ?? ''; + + $rowIndex = $branchInfo ? 3 : 2; + + if ($startDate && $endDate) { + $startDateFormatted = Carbon::parse($startDate)->format('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->format('d F Y'); + $sheet->setCellValue('A' . $rowIndex, 'Periode: ' . $startDateFormatted . ' - ' . $endDateFormatted); + } else { + $sheet->setCellValue('A' . $rowIndex, 'Periode: Semua Data'); + } + $sheet->mergeCells('A' . $rowIndex . ':R' . $rowIndex); + $sheet->getStyle('A' . $rowIndex)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the date of export + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, 'Tanggal Export: ' . Carbon::now()->format('d F Y H:i:s')); + + // Set the user who exported + $rowIndex++; + $userName = Auth::user() ? Auth::user()->name : 'System'; + $sheet->setCellValue('A' . $rowIndex, 'Diexport oleh: ' . $userName); + + // Add a blank line + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, ''); + + // Style the header row + $headerRange = 'A7:' . $sheet->getHighestColumn() . '7'; + $sheet->getStyle($headerRange)->getFont()->setBold(true); + $sheet->getStyle($headerRange)->getFill() + ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) + ->getStartColor()->setARGB('FFCCCCCC'); + + // Auto-size columns + foreach(range('A', $sheet->getHighestColumn()) as $column) { + $sheet->getColumnDimension($column)->setAutoSize(true); + } + + // Add borders to all cells with data + $dataRange = 'A7:' . $sheet->getHighestColumn() . $sheet->getHighestRow(); + $sheet->getStyle($dataRange)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN); + + // Center align the header row + $sheet->getStyle($headerRange)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set text wrap for header cells + $sheet->getStyle($headerRange)->getAlignment()->setWrapText(true); + }, + ]; + } + } diff --git a/app/Exports/LaporanPermohonanExport.php b/app/Exports/LaporanPermohonanExport.php index e7f4f1d..96cd369 100644 --- a/app/Exports/LaporanPermohonanExport.php +++ b/app/Exports/LaporanPermohonanExport.php @@ -19,8 +19,7 @@ public function collection() { - $query = Permohonan::with(['user', 'branch', 'tujuanPenilaian', 'jenisFasilitasKredit', 'jenisPenilaian']) - ->select('permohonan.*'); + $query = Permohonan::query(); // Apply role-based filtering if (!Auth::user()->hasAnyRole(['administrator'])) { diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index b51161f..67ca619 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -1,560 +1,580 @@ translatedFormat('d F Y'); + function formatTanggalIndonesia($date, $time = false) + { + Carbon::setLocale('id'); + try { + $waktu = Carbon::parse($date); + if (!$time) { + return $waktu->translatedFormat('d F Y'); + } + return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB'; + } catch (Throwable $e) { + return $date; } - return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB'; - } catch (\Throwable $e) { - return $date; + } -} + + function formatRupiah($number, $decimals = 0) + { + $number = (float) $number; + return 'Rp ' . number_format($number, $decimals, ',', '.'); + } -function formatRupiah($number,$decimals = 0) -{ - $number = (float) $number; - return 'Rp ' . number_format($number, $decimals, ',', '.'); -} + function formatAlamat($alamat) + { + return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->village->postal_code ?? ''); + } + // andy add + function checkActiveDateRangePenawaran($id) + { + $penawaran = PenawaranTender::find($id); -function formatAlamat($alamat) -{ - return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->village->postal_code ?? ''); -} + $start_date = strtotime($penawaran->start_date); + $end_date = strtotime($penawaran->end_date); + $todays_date = strtotime(now()); + //$todays_date = strtotime("+1 day", strtotime(now())); -// andy add -function checkActiveDateRangePenawaran($id) -{ - $penawaran = PenawaranTender::find($id); - - $start_date = strtotime($penawaran->start_date); - $end_date = strtotime($penawaran->end_date); - $todays_date = strtotime(now()); - //$todays_date = strtotime("+1 day", strtotime(now())); - - $allow = true; - if ($todays_date >= $start_date && $todays_date <= $end_date) { - //Penawaran dibuka $allow = true; - } else { - if ($todays_date < $start_date) { - //Penawaran Belum dibuka + if ($todays_date >= $start_date && $todays_date <= $end_date) { + //Penawaran dibuka $allow = true; } else { - //Penawaran sudah ditutup + if ($todays_date < $start_date) { + //Penawaran Belum dibuka + $allow = true; + } else { + //Penawaran sudah ditutup + $allow = false; + } + } + + return $allow; + } + + function checkKelengkapanDetailKJPP($id) + { + $allow = true; + // DB::enableQueryLog(); + // detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap? + $query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where( + function ($query) { + // no_proposal + $query->orWhere('no_proposal', '', ""); + $query->orWhereNull('no_proposal'); + + // tgl_proposal + $query->orWhere('tgl_proposal', '', ""); + $query->orWhereNull('tgl_proposal'); + + $query->orWhere('biaya_penawaran', '', ""); + $query->orWhereNull('biaya_penawaran'); + + $query->orWhere('attachment', '', ""); + $query->orWhereNull('attachment'); + + $query->orWhere('dokumen_persetujuan', '', ""); + $query->orWhereNull('dokumen_persetujuan'); + }, + )->get(); + // $sql = DB::getQueryLog(); + + + if (sizeof($query) > 0) { $allow = false; } + + return $allow; } - return $allow; -} + // convert + function convertSlug($slug) + { + $words = explode('-', $slug); -function checkKelengkapanDetailKJPP($id) -{ - $allow = true; - // DB::enableQueryLog(); - // detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap? - $query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where( - function ($query) { - // no_proposal - $query->orWhere('no_proposal', '', ""); - $query->orWhereNull('no_proposal'); + foreach ($words as $index => $word) { + $words[$index] = strtoupper($word); + } - // tgl_proposal - $query->orWhere('tgl_proposal', '', ""); - $query->orWhereNull('tgl_proposal'); - - $query->orWhere('biaya_penawaran', '', ""); - $query->orWhereNull('biaya_penawaran'); - - $query->orWhere('attachment', '', ""); - $query->orWhereNull('attachment'); - - $query->orWhere('dokumen_persetujuan', '', ""); - $query->orWhereNull('dokumen_persetujuan'); - }, - )->get(); - // $sql = DB::getQueryLog(); - - - if (sizeof($query) > 0) { - $allow = false; + return implode(' ', $words); } - return $allow; -} + // generate last penawaran.code + function onLastnumberCodePenawaran() + : string + { + // ambil code terakhir + $maxCode = PenawaranTender::max('code'); + // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC + // $penawaran = PenawaranTender::latest()->first(); + $penawaran = PenawaranTender::where('code', '=', $maxCode)->first(); + $code_penawaran_last = ''; -// convert -function convertSlug($slug) -{ - $words = explode('-', $slug); - - foreach ($words as $index => $word) { - $words[$index] = strtoupper($word); - } - - return implode(' ', $words); -} - -// generate last penawaran.code -function onLastnumberCodePenawaran(): string -{ - // ambil code terakhir - $maxCode = PenawaranTender::max('code'); - // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC - // $penawaran = PenawaranTender::latest()->first(); - $penawaran = PenawaranTender::where('code', '=', $maxCode)->first(); - $code_penawaran_last = ''; - - // nomor di set 0001 - $noUrutAkhirString = sprintf("%04s", 1); - if ($penawaran) { - $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric - $isNP = substr($maxCode, 0, 2); - if ((8 == strlen($maxCode)) && ("NP" == $isNP) && (isNumeric($isNum))) { - $code_penawaran_last = substr($maxCode, -4); - $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; - $year_now = Carbon::now()->year; - if ($year_now == $year_penawaran_last) { - $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); + // nomor di set 0001 + $noUrutAkhirString = sprintf("%04s", 1); + if ($penawaran) { + $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric + $isNP = substr($maxCode, 0, 2); + if ((8 == strlen($maxCode)) && ("NP" == $isNP) && (isNumeric($isNum))) { + $code_penawaran_last = substr($maxCode, -4); + $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; + $year_now = Carbon::now()->year; + if ($year_now == $year_penawaran_last) { + $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); + } + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 } - // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 + + } + + return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; + } + + function isNumeric($str) + { + return ctype_digit($str); + } + + // generate last penawaran.no_spk + function onLastnumberCodePenawaranSPK($jenis_laporan_code) + : string + { + + // 20241124_001 ==> spk_no_core + // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 + // 001 / PJ / JKT / XI / FR / 2024 + $maxCode = PenawaranTender::max('spk_no_core'); + $penawaran = PenawaranTender::where('spk_no_core', '=', $maxCode)->first(); + $no_spk_penawaran_last = ''; + $year_penawaran_last = ''; + $year_now = Carbon::now()->year; + // nomor di set 001 + $noUrutAkhirString = sprintf("%03s", 1); + if ($penawaran) { + $no_spk_penawaran_last = substr($maxCode, -3); + $year_penawaran_last = substr($maxCode, 0, 4); + + if ($year_now == $year_penawaran_last) { + $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); + } + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 + } + + $month = onRomawi(Carbon::now()->month); + + $lastSPK = $noUrutAkhirString . ' / PJ / JKT / ' . $month . ' / ' . $jenis_laporan_code . ' / ' . $year_now; + return $lastSPK; + } + + function onRomawi(int $bln) + : string + { + switch ($bln) { + case 1: + return "I"; + break; + case 2: + return "II"; + break; + case 3: + return "III"; + break; + case 4: + return "IV"; + break; + case 5: + return "V"; + break; + case 6: + return "VI"; + break; + case 7: + return "VII"; + break; + case 8: + return "VIII"; + break; + case 9: + return "IX"; + break; + case 10: + return "X"; + break; + case 11: + return "XI"; + break; + case 12: + return "XII"; + break; + } } - return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; -} - -function isNumeric($str) -{ - return ctype_digit($str); -} - -// generate last penawaran.no_spk -function onLastnumberCodePenawaranSPK($jenis_laporan_code): string -{ - - // 20241124_001 ==> spk_no_core - // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 - // 001 / PJ / JKT / XI / FR / 2024 - $maxCode = PenawaranTender::max('spk_no_core'); - $penawaran = PenawaranTender::where('spk_no_core', '=', $maxCode)->first(); - $no_spk_penawaran_last = ''; - $year_penawaran_last = ''; - $year_now = Carbon::now()->year; - // nomor di set 001 - $noUrutAkhirString = sprintf("%03s", 1); - if ($penawaran) { - $no_spk_penawaran_last = substr($maxCode, -3); - $year_penawaran_last = substr($maxCode, 0, 4); - - if ($year_now == $year_penawaran_last) { - $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); + function penyebut($nilai) + { + $nilai = abs($nilai); + $huruf = [ + "", + "satu", + "dua", + "tiga", + "empat", + "lima", + "enam", + "tujuh", + "delapan", + "sembilan", + "sepuluh", + "sebelas" + ]; + $temp = ""; + if ($nilai < 12) { + $temp = " " . $huruf[$nilai]; + } else if ($nilai < 20) { + $temp = penyebut($nilai - 10) . " belas"; + } else if ($nilai < 100) { + $temp = penyebut($nilai / 10) . " puluh" . penyebut($nilai % 10); + } else if ($nilai < 200) { + $temp = " seratus" . penyebut($nilai - 100); + } else if ($nilai < 1000) { + $temp = penyebut($nilai / 100) . " ratus" . penyebut($nilai % 100); + } else if ($nilai < 2000) { + $temp = " seribu" . penyebut($nilai - 1000); + } else if ($nilai < 1000000) { + $temp = penyebut($nilai / 1000) . " ribu" . penyebut($nilai % 1000); + } else if ($nilai < 1000000000) { + $temp = penyebut($nilai / 1000000) . " juta" . penyebut($nilai % 1000000); + } else if ($nilai < 1000000000000) { + $temp = penyebut($nilai / 1000000000) . " milyar" . penyebut(fmod($nilai, 1000000000)); + } else if ($nilai < 1000000000000000) { + $temp = penyebut($nilai / 1000000000000) . " trilyun" . penyebut(fmod($nilai, 1000000000000)); } - // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 + return $temp; } - $month = onRomawi(Carbon::now()->month); - - $lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now; - return $lastSPK; -} - -function onRomawi(int $bln): string -{ - switch ($bln) { - case 1: - return "I"; - break; - case 2: - return "II"; - break; - case 3: - return "III"; - break; - case 4: - return "IV"; - break; - case 5: - return "V"; - break; - case 6: - return "VI"; - break; - case 7: - return "VII"; - break; - case 8: - return "VIII"; - break; - case 9: - return "IX"; - break; - case 10: - return "X"; - break; - case 11: - return "XI"; - break; - case 12: - return "XII"; - break; - - } - -} - -function penyebut($nilai) -{ - $nilai = abs($nilai); - $huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"); - $temp = ""; - if ($nilai < 12) { - $temp = " ". $huruf[$nilai]; - } elseif ($nilai < 20) { - $temp = penyebut($nilai - 10). " belas"; - } elseif ($nilai < 100) { - $temp = penyebut($nilai / 10)." puluh". penyebut($nilai % 10); - } elseif ($nilai < 200) { - $temp = " seratus" . penyebut($nilai - 100); - } elseif ($nilai < 1000) { - $temp = penyebut($nilai / 100) . " ratus" . penyebut($nilai % 100); - } elseif ($nilai < 2000) { - $temp = " seribu" . penyebut($nilai - 1000); - } elseif ($nilai < 1000000) { - $temp = penyebut($nilai / 1000) . " ribu" . penyebut($nilai % 1000); - } elseif ($nilai < 1000000000) { - $temp = penyebut($nilai / 1000000) . " juta" . penyebut($nilai % 1000000); - } elseif ($nilai < 1000000000000) { - $temp = penyebut($nilai / 1000000000) . " milyar" . penyebut(fmod($nilai, 1000000000)); - } elseif ($nilai < 1000000000000000) { - $temp = penyebut($nilai / 1000000000000) . " trilyun" . penyebut(fmod($nilai, 1000000000000)); - } - return $temp; -} - -function terbilang($nilai) -{ - if ($nilai < 0) { - $hasil = "minus ". trim(penyebut($nilai)); - } else { - $hasil = trim(penyebut($nilai)); - } - return $hasil; -} -// andy add - - -function hitungHariKerja($tanggalMulai, $tanggalSelesai) -{ - $tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay(); - $tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay(); - - $hariKerja = 0; - $tanggalSekarang = $tanggalMulai->copy(); - - while ($tanggalSekarang <= $tanggalSelesai) { - // Cek apakah hari ini bukan Sabtu atau Minggu dan bukan hari libur - if (!$tanggalSekarang->isWeekend() && !in_array($tanggalSekarang->format('Y-m-d'), holidays())) { - $hariKerja++; + function terbilang($nilai) + { + if ($nilai < 0) { + $hasil = "minus " . trim(penyebut($nilai)); + } else { + $hasil = trim(penyebut($nilai)); } - $tanggalSekarang->addDay(); + return $hasil; } - return $hariKerja; -} + // andy add -function holidays() -{ - return HolidayCalendar::pluck('date')->map( - function ($item) { - return Carbon::parse($item)->format('Y-m-d'); - }, - )->toArray(); -} -function countPermohonanForUser($userId) -{ - $validStatuses = [ - 'assign', - 'survey-completed', - 'proses-laporan', - 'paparan', - 'proses-paparan', - 'revisi-laporan', - 'revisi-paparan', - 'survey', - 'proses-survey', - 'request-reschedule', - 'reschedule', - 'rejected-reschedule', - 'approved-reschedule', - 'revisi-survey', - 'revisi-pembayaran' - ]; + function hitungHariKerja($tanggalMulai, $tanggalSelesai) + { + $tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay(); + $tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay(); - $result = Penilaian::whereHas('userPenilai', function ($query) use ($userId) { - $query->where('user_id', $userId); - }) - ->whereHas('permohonan', function ($query) use ($validStatuses) { - $query->whereIn('status', $validStatuses); + $hariKerja = 0; + $tanggalSekarang = $tanggalMulai->copy(); + + while ($tanggalSekarang <= $tanggalSelesai) { + // Cek apakah hari ini bukan Sabtu atau Minggu dan bukan hari libur + if (!$tanggalSekarang->isWeekend() && !in_array($tanggalSekarang->format('Y-m-d'), holidays())) { + $hariKerja++; + } + $tanggalSekarang->addDay(); + } + + return $hariKerja; + } + + function holidays() + { + return HolidayCalendar::pluck('date')->map( + function ($item) { + return Carbon::parse($item)->format('Y-m-d'); + }, + )->toArray(); + } + + function countPermohonanForUser($userId) + { + $validStatuses = [ + 'assign', + 'survey-completed', + 'proses-laporan', + 'paparan', + 'proses-paparan', + 'revisi-laporan', + 'revisi-paparan', + 'survey', + 'proses-survey', + 'request-reschedule', + 'reschedule', + 'rejected-reschedule', + 'approved-reschedule', + 'revisi-survey', + 'revisi-pembayaran' + ]; + + $result = Penilaian::whereHas('userPenilai', function ($query) use ($userId) { + $query->where('user_id', $userId); }) - ->get() - ->groupBy(function ($item) { - // Pastikan mengakses properti dari model yang valid - return $item->userPenilai->first()->user_id . '-' . $item->permohonan->id; - }) - ->map(function ($group) { - return [ - 'statuses' => $group->pluck('permohonan.status')->unique()->values()->all(), - ]; - }); + ->whereHas('permohonan', function ($query) use ($validStatuses) { + $query->whereIn('status', $validStatuses); + }) + ->get() + ->groupBy(function ($item) { + // Pastikan mengakses properti dari model yang valid + return $item->userPenilai->first()->user_id . '-' . $item->permohonan->id; + }) + ->map(function ($group) { + return [ + 'statuses' => $group->pluck('permohonan.status')->unique()->values()->all(), + ]; + }); - return $result->count(); -} - - -function getMaxFileSize($jenis) -{ - $jenisDokumen = JenisDokumen::where('name', $jenis)->first(); - if (!$jenisDokumen) { - return 2048; - } - //konversi ke KB (1 MB = 1024 KB) - $maxSizeInKB = (int) $jenisDokumen->max_size * 1024; - - return $maxSizeInKB; -} - -function getUser($userId) -{ - return User::find($userId); -} - -function generateLpjUniqueCode($randomLength = 6) -{ - - $year = date('y'); - $month = str_pad(date('m'), 2, '0', STR_PAD_LEFT); - $day = str_pad(date('d'), 2, '0', STR_PAD_LEFT); - - // Generate random numbers - $randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT); - - // Concatenate components to create the custom code - return $year . $month . $day . $randomNumber; -} - -function checkRegionUserName($userId) -{ - $region = TeamsUsers::where('user_id', $userId)->first(); - if ($region) { - return $region->team->regions->name; - } else { - return null; - } -} - -function getNomorLaporan($permohonanId, $documentId, $type = 'nomor_laporan') -{ - - $laporan = Laporan::where([ - 'permohonan_id' => $permohonanId, - 'dokumen_jaminan_id' => $documentId, - ])->first(); - - if (!$laporan) { - return $type == 'nomor_laporan' ? '-' : null; + return $result->count(); } - return $type == 'nomor_laporan' ? $laporan->nomor_laporan : $laporan->created_at; -} -function getCustomField($param) -{ - if (is_numeric($param)) { - $field = CustomField::find($param); - } else { - $field = CustomField::where(['name' => $param])->first(); - } - if ($field) { - return $field; - } else { - return null; - } -} -function getWilayahName($code, $type) -{ - try { - $wilayah = null; + function getMaxFileSize($jenis) + { + $jenisDokumen = JenisDokumen::where('name', $jenis)->first(); + if (!$jenisDokumen) { + return 2048; + } + //konversi ke KB (1 MB = 1024 KB) + $maxSizeInKB = (int) $jenisDokumen->max_size * 1024; - if (!$code) { + return $maxSizeInKB; + } + + function getUser($userId) + { + return User::find($userId); + } + + function generateLpjUniqueCode($randomLength = 6) + { + + $year = date('y'); + $month = str_pad(date('m'), 2, '0', STR_PAD_LEFT); + $day = str_pad(date('d'), 2, '0', STR_PAD_LEFT); + + // Generate random numbers + $randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT); + + // Concatenate components to create the custom code + return $year . $month . $day . $randomNumber; + } + + function checkRegionUserName($userId) + { + $region = TeamsUsers::where('user_id', $userId)->first(); + if ($region) { + return $region->team->regions->name; + } else { + return null; + } + } + + function getNomorLaporan($permohonanId, $documentId, $type = 'nomor_laporan') + { + + $laporan = Laporan::where([ + 'permohonan_id' => $permohonanId, + 'dokumen_jaminan_id' => $documentId, + ])->first(); + + if (!$laporan) { + return $type == 'nomor_laporan' ? '-' : null; + } + + return $type == 'nomor_laporan' ? $laporan->nomor_laporan : $laporan->created_at; + } + + function getCustomField($param) + { + if (is_numeric($param)) { + $field = CustomField::find($param); + } else { + $field = CustomField::where(['name' => $param])->first(); + } + if ($field) { + return $field; + } else { + return null; + } + } + + function getWilayahName($code, $type) + { + try { + $wilayah = null; + + if (!$code) { + return null; + } + + switch ($type) { + case 'province': + $wilayah = Province::where('code', $code)->first(); + return $wilayah ? $wilayah->name : null; + + case 'city': + $wilayah = City::where('code', $code)->first(); + return $wilayah ? $wilayah->name : null; + + case 'district': + $wilayah = District::where('code', $code)->first(); + return $wilayah ? $wilayah->name : null; + + case 'village': + $wilayah = Village::where('code', $code)->first(); + return $wilayah ? $wilayah->name : null; + + default: + return null; + } + } catch (Exception $e) { return null; } - - switch ($type) { - case 'province': - $wilayah = Province::where('code', $code)->first(); - return $wilayah ? $wilayah->name : null; - - case 'city': - $wilayah = City::where('code', $code)->first(); - return $wilayah ? $wilayah->name : null; - - case 'district': - $wilayah = District::where('code', $code)->first(); - return $wilayah ? $wilayah->name : null; - - case 'village': - $wilayah = Village::where('code', $code)->first(); - return $wilayah ? $wilayah->name : null; - - default: - return null; - } - } catch (\Exception $e) { - return null; } -} -function formatLabel($key) -{ + function formatLabel($key) + { + + static $labelCache = []; + if (isset($labelCache[$key])) { + return $labelCache[$key]; + } + + $customLabel = CustomField::where('name', $key)->first(); + $labelCache[$key] = $customLabel->label ?? ucwords(str_replace('_', ' ', $key)); - static $labelCache = []; - if (isset($labelCache[$key])) { return $labelCache[$key]; } - $customLabel = CustomField::where('name', $key)->first(); - $labelCache[$key] = $customLabel->label ?? ucwords(str_replace('_', ' ', $key)); + function calculateSLA($permohonan, $type) + { + if (!$type) { + return null; + } - return $labelCache[$key]; -} + $nilai_plafond = in_array($permohonan->nilai_plafond_id, [2, 3]); + $nilai_plafond_2 = in_array($permohonan->nilai_plafond_id, [1]); -function calculateSLA($permohonan, $type) -{ - if (!$type) { - return null; + $slaMap = [ + 'resume' => $nilai_plafond ? 2 : null, + 'paparan' => $nilai_plafond ? 2 : null, + 'standard' => $nilai_plafond ? 3 : null, + 'sederhana' => $nilai_plafond ? 2 : null, + 'paparan' => $nilai_plafond_2 ? 3 : null, + 'rap' => 3, + 'memo' => $nilai_plafond ? 1 : null + ]; + + if ($type === 'paparan' && isset($permohonan->tujuanPenilaian->name) && $permohonan->tujuanPenilaian->name === 'rap') { + return 2; + } + + return $slaMap[$type] ?? null; } - $nilai_plafond = in_array($permohonan->nilai_plafond_id, [2, 3]); - $nilai_plafond_2 = in_array($permohonan->nilai_plafond_id, [1]); - $slaMap = [ - 'resume' => $nilai_plafond ? 2 : null, - 'paparan' => $nilai_plafond ? 2 : null, - 'standard' => $nilai_plafond ? 3 : null, - 'sederhana' => $nilai_plafond ? 2 : null, - 'paparan' => $nilai_plafond_2 ? 3 : null, - 'rap' => 3, - 'memo' => $nilai_plafond ? 1 : null - ]; - - if ($type === 'paparan' && isset($permohonan->tujuanPenilaian->name) && $permohonan->tujuanPenilaian->name === 'rap') { - return 2; - } - - return $slaMap[$type] ?? null; -} - - -/** + /** * Menghitung total nilai berdasarkan key dan jenis legalitas. * - * @param array $detailsArray + * @param array $detailsArray * @param string $key - * @param int $jenisLegalitas + * @param int $jenisLegalitas + * * @return int */ -function calculateTotalLuas($detailsArray, $key, $jenisLegalitas, $defaultJenisLegalitas, $fallbackJenisLegalitas) -{ - $total = 0; + function calculateTotalLuas($detailsArray, $key, $jenisLegalitas, $defaultJenisLegalitas, $fallbackJenisLegalitas) + { + $total = 0; - if ($detailsArray) { - foreach ($detailsArray as $item) { - if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $jenisLegalitas) { - $details = json_decode($item->details, true); - - if (is_array($details)) { - foreach ($details as $detail) { - if (isset($detail[$key])) { - $total += (int) $detail[$key]; - } - } - } - } - } - - // Jika total masih 0, gunakan jenis jaminan ppjb - if ($total === 0) { + if ($detailsArray) { foreach ($detailsArray as $item) { - if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $defaultJenisLegalitas) { + if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $jenisLegalitas) { $details = json_decode($item->details, true); if (is_array($details)) { foreach ($details as $detail) { - if (isset($detail[$key]) && $detail[$key] !== null) { + if (isset($detail[$key])) { $total += (int) $detail[$key]; } } } } } + + // Jika total masih 0, gunakan jenis jaminan ppjb + if ($total === 0) { + foreach ($detailsArray as $item) { + if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $defaultJenisLegalitas) { + $details = json_decode($item->details, true); + + if (is_array($details)) { + foreach ($details as $detail) { + if (isset($detail[$key]) && $detail[$key] !== null) { + $total += (int) $detail[$key]; + } + } + } + } + } + } + + // jika total masih kosong juga maka gunakan ppb + if ($total === 0 && $fallbackJenisLegalitas !== null) { + foreach ($detailsArray as $item) { + if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $fallbackJenisLegalitas) { + $details = json_decode($item->details, true); + + if (is_array($details)) { + foreach ($details as $detail) { + if (isset($detail[$key]) && $detail[$key] !== null) { + $total += (int) $detail[$key]; + } + } + } + } + } + } } - // jika total masih kosong juga maka gunakan ppb - if ($total === 0 && $fallbackJenisLegalitas !== null) { - foreach ($detailsArray as $item) { - if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $fallbackJenisLegalitas) { - $details = json_decode($item->details, true); - - if (is_array($details)) { - foreach ($details as $detail) { - if (isset($detail[$key]) && $detail[$key] !== null) { - $total += (int) $detail[$key]; - } - } - } - } - } - } + return $total > 0 ? $total : 0; } - return $total > 0 ? $total : 0; -} + function ubahNomorHp($nomorHp) + { -function ubahNomorHp($nomorHp) { - - $nomorHp = preg_replace('/\D/', '', $nomorHp); - if (strpos($nomorHp, '62') === 0) { - $nomorBaru = substr($nomorHp, 0, 5) . "xxxxx"; - return '+' . $nomorBaru; - } elseif (strpos($nomorHp, '0') === 0) { + $nomorHp = preg_replace('/\D/', '', $nomorHp); + if (strpos($nomorHp, '62') === 0) { + $nomorBaru = substr($nomorHp, 0, 5) . "xxxxx"; + return '+' . $nomorBaru; + } else if (strpos($nomorHp, '0') === 0) { $nomorBaru = substr($nomorHp, 0, 5) . "xxxxxx"; return $nomorBaru; diff --git a/app/Http/Controllers/LaporanAdminKreditController.php b/app/Http/Controllers/LaporanAdminKreditController.php index f9adfca..a9a17aa 100644 --- a/app/Http/Controllers/LaporanAdminKreditController.php +++ b/app/Http/Controllers/LaporanAdminKreditController.php @@ -19,12 +19,7 @@ */ public function index() { - $permohonan = Permohonan::with([ - 'documents.jenisJaminan', - 'penilaian._user_penilai', - 'penilai', - 'documents.detail.jenisLegalitasJaminan' - ])->where(['status' => 'done'])->get(); + $permohonan = Permohonan::where(['status' => 'done'])->get(); foreach ($permohonan as $_permohonan) { $npw = 0; if (isset($_permohonan->penilai->lpj)) { diff --git a/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php new file mode 100644 index 0000000..3bac546 --- /dev/null +++ b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php @@ -0,0 +1,211 @@ +user) || !$this->user->can('laporan-admin-kredit.view')) { + //abort(403, 'Sorry! You are not allowed to view laporan admin kredit.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + $query = $query->where('status', 'done'); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = json_decode($request->get('search')); + + if (isset($search->start_date) || isset($search->end_date)) { + $query->whereBetween('tanggal_permohonan', [ + $search->start_date ?? '1900-01-01', + $search->end_date ?? now()->toDateString() + ]); + } + + // Filter by branch if provided + if (isset($search->branch_id) && !empty($search->branch_id)) { + $query->where('branch_id', $search->branch_id); + } + + if (isset($search->penilai_id) && !empty($search->penilai_id)) { + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function ($q) use ($search) { + $q->where('user_id', $search->penilai_id); + }); + } + + if (isset($search->search)) { + + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); + }); + } + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['debiture.branch'])->get(); + + $data = $data->map(function ($permohonan) { + $luas_tanah = 0; + $luas_bangunan = 0; + $nilai_tanah = 0; + $nilai_bangunan = 0; + $npw = 0; + $nilai_liquidasi = 0; + + if (isset($permohonan->penilai->lpj)) { + $lpj = json_decode($permohonan->penilai->lpj, true); + $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); + + $luas_tanah = $lpj['luas_tanah'] ?? 0; + $luas_bangunan = $lpj['luas_bangunan'] ?? 0; + // Calculate nilai_tanah dynamically by looking for all keys that start with 'nilai_tanah_' + $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); + + $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); + $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); + } + + return [ + 'id' => $permohonan->id, + 'nomor_registrasi' => $permohonan->nomor_registrasi, + 'jenis_penilaian' => $permohonan->jenisPenilaian?->name, + 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, + 'jenis_fasilitas_kredit' => $permohonan->jenisFasilitasKredit?->name, + 'branch' => $permohonan->debiture->branch?->name, + 'pemohon' => $permohonan->creator?->name, + 'cif' => $permohonan->debiture->cif, + 'name' => $permohonan->debiture?->name, + 'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name') + ->unique() + ->implode(', '), + 'alamat_agunan' => $permohonan->documents?->map(function ($document) { + return formatAlamat($document); + })->unique()->implode(', '), + 'bukti_kepemilikan' => (function() use ($permohonan) { + $legalitasItems = $permohonan->documents?->flatMap(function ($document) { + return $document->detail->map(function ($detail) { + // Jika tidak ada jenis legalitas jaminan, lewati + if (empty($detail->jenisLegalitasJaminan)) { + return null; + } + + // Hanya tampilkan detail yang memiliki dokumen_jaminan + if (empty($detail->dokumen_jaminan)) { + return null; + } + + // Tampilkan nama legalitas jaminan saja + return $detail->jenisLegalitasJaminan->name ?? ''; + }); + })->filter()->unique()->values()->toArray(); + + // Buat daftar bernomor + $result = ''; + foreach ($legalitasItems as $index => $item) { + $result .= ($index + 1) . '. ' . $item . "\n"; + } + + return $result; + })(), + 'nama_pemilik' => $permohonan->documents?->pluck('pemilik.name') + ->unique() + ->implode(', '), + 'luas_tanah' => $luas_tanah . ' m²', + 'nilai_tanah' => formatRupiah($nilai_tanah, 2), + 'luas_bangunan' => $luas_bangunan . ' m²', + 'nilai_bangunan' => formatRupiah($nilai_bangunan, 2), + 'nilai_njop' => formatRupiah($permohonan->nilai_njop, 2), + 'nilai_pasar_wajar' => formatRupiah($npw, 2), + 'nilai_likuidasi' => formatRupiah($nilai_liquidasi, 2), + 'tanggal_documen_diterima' => $permohonan->documents?->map(function ($document) { + return $document->created_at->format('d-m-Y'); + }), + 'tanggal_spk' => '', + 'nomor_spk' => '', + 'tanggal_rencana_kunjunagn' => '', + 'tanggal_kunjungan' => '', + 'taggal_delivered' => '', + 'jangka_waktu_sla' => '', + 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, + 'nama_team_leader' => $permohonan->penilaian?->teams, + 'saran' => '', + 'catatan' => '', + + + 'tanggal_permohonan' => $permohonan->tanggal_permohonan, + 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', + 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '', + ]; + }); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function export(Request $request) + { + return Excel::download(new LaporanHasilPenilaianJaminanInternalExternalExport($request), 'laporan_hasil_penilaian_jaminan_internal_external.xlsx'); + } + } diff --git a/app/Http/Controllers/LaporanPembatalanController.php b/app/Http/Controllers/LaporanPembatalanController.php new file mode 100644 index 0000000..3f8fc5f --- /dev/null +++ b/app/Http/Controllers/LaporanPembatalanController.php @@ -0,0 +1,140 @@ +user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = PermohonanPembatalan::query(); + + + if (!Auth::user()->hasAnyRole(['administrator'])) { + $query = $query->whereHas('permohonan', function ($q) { + $q->where('branch_id', Auth::user()->branch_id); + }); + } + + $query = $query->orderBy('created_at', 'desc'); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = json_decode($request->get('search')); + + if (isset($search->start_date) || isset($search->end_date)) { + $query->whereBetween('created_at', [ + $search->start_date ?? '1900-01-01', + $search->end_date ?? now()->toDateString() + ]); + } + + // Filter by branch if provided + if (isset($search->branch_id) && !empty($search->branch_id)) { + $query->whereHas('permohonan', function ($q) use ($search) { + $q->where('branch_id', $search->branch_id); + }); + } + + if (isset($search->search)) { + $query->where(function ($q) use ($search) { + $q->whereHas('permohonan', function ($subq) use ($search) { + $subq->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); + $subq->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); + $subq->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); + }); + $q->orWhere('alasan_pembatalan', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); + }); + } + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->get(); + + $data = $data->map(function ($item) { + return [ + 'id' => $item->id, + 'nomor_registrasi' => $item->permohonan->nomor_registrasi ?? '-', + 'tanggal_permohonan' => $item->permohonan->tanggal_permohonan ? date('d-m-Y', strtotime($item->permohonan->tanggal_permohonan)) : '-', + 'tanggal_pembatalan' => date('d-m-Y', strtotime($item->created_at)), + 'cabang' => $item->permohonan->branch->name ?? '-', + 'pemohon' => $item->permohonan->user->name ?? '-', + 'debitur' => $item->permohonan->debiture->name ?? '-', + 'alasan_pembatalan' => $item->alasan_pembatalan, + 'status' => $item->status, + 'diajukan_oleh' => $item->user->name ?? '-', + 'disetujui_oleh' => $item->authorized_by ? $item->authorizedUser->name : '-', + 'tanggal_disetujui' => $item->authorized_at ? formatTanggalIndonesia(strtotime($item->authorized_at),1) : '-' + ]; + }); + + + // Calculate the page count + $pageCount = ceil($totalRecords / $size); + + // Calculate the current page number + $currentPage = max(1, $request->get('page', 1)); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + } diff --git a/app/Http/Controllers/LaporanPenilaianJaminanController.php b/app/Http/Controllers/LaporanPenilaianJaminanController.php new file mode 100644 index 0000000..9596161 --- /dev/null +++ b/app/Http/Controllers/LaporanPenilaianJaminanController.php @@ -0,0 +1,161 @@ +user) || !$this->user->can('laporan-admin-kredit.view')) { + //abort(403, 'Sorry! You are not allowed to view laporan admin kredit.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + $query = $query->where('status', 'done'); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = json_decode($request->get('search')); + + if (isset($search->start_date) || isset($search->end_date)) { + $query->whereBetween('tanggal_permohonan', [ + $search->start_date ?? '1900-01-01', + $search->end_date ?? now()->toDateString() + ]); + } + + // Filter by branch if provided + if (isset($search->branch_id) && !empty($search->branch_id)) { + $query->where('branch_id', $search->branch_id); + } + + if (isset($search->penilai_id) && !empty($search->penilai_id)) { + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($search) { + $q->where('user_id', $search->penilai_id); + }); + } + + if (isset($search->search)) { + + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); + }); + } + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['debiture.branch'])->get(); + + $data = $data->map(function ($permohonan) { + $luas_tanah = 0; + $luas_bangunan = 0; + $nilai_tanah = 0; + $nilai_bangunan = 0; + $npw = 0; + $nilai_liquidasi = 0; + if (isset($permohonan->penilai->lpj)) { + $lpj = json_decode($permohonan->penilai->lpj, true); + $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); + + $luas_tanah = $lpj['luas_tanah'] ?? 0; + $luas_bangunan = $lpj['luas_bangunan'] ?? 0; + // Calculate nilai_tanah dynamically by looking for all keys that start with 'nilai_tanah_' + $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); + + $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); + $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); + } + + return [ + 'id' => $permohonan->id, + 'nomor_registrasi' => $permohonan->nomor_registrasi, + 'tanggal_permohonan' => $permohonan->tanggal_permohonan, + 'branch' => $permohonan->debiture?->branch?->name, + 'name' => $permohonan->debiture?->name, + 'pemohon' => $permohonan->creator?->name, + 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, + 'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name')->unique()->implode(', '), + 'alamat_agunan' => $permohonan->documents?->map(function ($document) { + return formatAlamat($document); + })->unique()->implode(', '), + 'luas_tanah' => $luas_tanah . ' m²', + 'nilai_tanah' => formatRupiah($nilai_tanah,2), + 'luas_bangunan' => $luas_bangunan . ' m²', + 'nilai_bangunan' => formatRupiah($nilai_bangunan,2), + 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', + 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '', + 'nilai_pasar_wajar' => formatRupiah($npw,2), + 'nilai_likuidasi' => formatRupiah($nilai_liquidasi,2), + 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, + ]; + }); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function export(Request $request) + { + return Excel::download(new LaporanPenilaianJaminanExport($request), 'laporan_penilaian_jaminan.xlsx'); + } + } diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index bcb66ce..87a50b8 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -63,14 +63,14 @@ $permohonan = Permohonan::find(request()->get('permohonan_id')); if ($permohonan) { $permohonan->status_bayar = request()->get('status_bayar'); - if($permohonan->jenis_penilaian_id==2) { + if ($permohonan->jenis_penilaian_id == 2) { $permohonan->status = $status; } $permohonan->save(); // andy add, update status penawaran.status='spk' // $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first(); - if($permohonan->jenis_penilaian_id==2) { + if ($permohonan->jenis_penilaian_id == 2) { PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([ 'status' => $status, 'updated_by' => Auth::id(), @@ -109,7 +109,7 @@ /** * Display the specified resource. */ - public function show($id) {} + public function show($id) { } /** * Show the form for editing the specified resource. @@ -117,7 +117,7 @@ public function edit($id) { $persetujuanPenawaran = PersetujuanPenawaran::where('id', $id)->with( - ['penawaran.detail', 'penawaran.permohonan.debiture','permohonan'], + ['penawaran.detail', 'penawaran.permohonan.debiture', 'permohonan'], )->first(); return view('lpj::noc.form', compact('persetujuanPenawaran')); } @@ -173,18 +173,20 @@ $filteredRecords = $query->count(); // Get the data for the current page - $data = $query - ->with( - [ - 'penawaran.permohonan.debiture', - 'penawaran.permohonan.branch', - 'permohonan.debiture', - 'permohonan.branch', - 'penawaran.detail', - 'penawaran.persetujuan', - ], - )->get(); + $data = $query->get(); + $data = $data->map(function ($persetujuanPenawaran) { + return [ + 'id' => $persetujuanPenawaran->id, + 'nomor_registrasi' => $persetujuanPenawaran->permohonan->nomor_registrasi ?? $persetujuanPenawaran->penawaran->nomor_registrasi, + 'nama_debitur' => $persetujuanPenawaran->permohonan->debiture->name ?? $persetujuanPenawaran->penawaran->permohonan->debiture->name, + 'cabang' => $persetujuanPenawaran->permohonan->branch->name ?? $persetujuanPenawaran->penawaran->permohonan->branch->name, + 'tanggal_setor' => formatTanggalIndonesia($persetujuanPenawaran->created_at, true), + 'nominal_bayar' => format_currency($persetujuanPenawaran->nominal_bayar ?? 0), + 'bukti_ksl' => $persetujuanPenawaran->bukti_ksl ?? null, + 'tanggal_penyelesaian' => formatTanggalIndonesia($persetujuanPenawaran->updated_at, true), + ]; + }); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index f6fe6de..1c8eaa8 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -263,8 +263,7 @@ class PembayaranController extends Controller $subquery->select('permohonan_id') ->from('persetujuan_penawaran') ->whereNotNull('permohonan_id'); - }) - ->orWhere('status', 'revisi-pembayaran'); + }); }); diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index c6372f3..0c5c05b 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -22,11 +22,13 @@ use Modules\Lpj\Models\NilaiPlafond; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaian; +use Modules\Lpj\Notifications\PermohonanNotif; use Modules\Lpj\Services\PermohonanHistoryService; use Illuminate\Support\Facades\Auth; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; use Modules\Lpj\Models\Penilaian; +use Modules\Usermanagement\Models\User; class PermohonanController extends Controller { @@ -205,6 +207,7 @@ class PermohonanController extends Controller $search = $request->get('search'); $query->where(function ($q) use ($search) { $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('mig_mst_lpj_nomor_jaminan', 'LIKE', '%' . $search . '%'); $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); diff --git a/app/Models/Analisa.php b/app/Models/Analisa.php index 4134384..8266122 100644 --- a/app/Models/Analisa.php +++ b/app/Models/Analisa.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\AnalisaFactory; -class Analisa extends Model +class Analisa extends Base { use HasFactory; protected $table = 'analisa'; diff --git a/app/Models/AnalisaFakta.php b/app/Models/AnalisaFakta.php index 63015a6..d1bb7e2 100644 --- a/app/Models/AnalisaFakta.php +++ b/app/Models/AnalisaFakta.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\AnalisaFaktaFactory; -class AnalisaFakta extends Model +class AnalisaFakta extends Base { use HasFactory; diff --git a/app/Models/AnalisaLingkungan.php b/app/Models/AnalisaLingkungan.php index 59a2962..5129109 100644 --- a/app/Models/AnalisaLingkungan.php +++ b/app/Models/AnalisaLingkungan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\AnalisaLingkunganFactory; -class AnalisaLingkungan extends Model +class AnalisaLingkungan extends Base { use HasFactory; diff --git a/app/Models/AnalisaTanahBagunan.php b/app/Models/AnalisaTanahBagunan.php index 32c7791..21b4d85 100644 --- a/app/Models/AnalisaTanahBagunan.php +++ b/app/Models/AnalisaTanahBagunan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\AnalisaTanahBagunanFactory; -class AnalisaTanahBagunan extends Model +class AnalisaTanahBagunan extends Base { use HasFactory; diff --git a/app/Models/AnalisaUnit.php b/app/Models/AnalisaUnit.php index 4c0b3a7..5213b39 100644 --- a/app/Models/AnalisaUnit.php +++ b/app/Models/AnalisaUnit.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\AnalisaUnitFactory; -class AnalisaUnit extends Model +class AnalisaUnit extends Base { use HasFactory; diff --git a/app/Models/Base.php b/app/Models/Base.php index eb7b4d8..63f172b 100644 --- a/app/Models/Base.php +++ b/app/Models/Base.php @@ -7,6 +7,7 @@ use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; use Wildside\Userstamps\Userstamps; + use Illuminate\Notifications\Notifiable; /** @@ -14,7 +15,7 @@ */ class Base extends Model { - use LogsActivity, SoftDeletes, Userstamps; + use LogsActivity, SoftDeletes, Userstamps, Notifiable; protected $connection; diff --git a/app/Models/BentukTanah.php b/app/Models/BentukTanah.php index 38729af..33a9fd9 100644 --- a/app/Models/BentukTanah.php +++ b/app/Models/BentukTanah.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\BentukTanahFactory; -class BentukTanah extends Model +class BentukTanah extends Base { use HasFactory; diff --git a/app/Models/BentukUnit.php b/app/Models/BentukUnit.php index 0c93b1d..080ed6d 100644 --- a/app/Models/BentukUnit.php +++ b/app/Models/BentukUnit.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\BentukUnitFactory; -class BentukUnit extends Model +class BentukUnit extends Base { use HasFactory; diff --git a/app/Models/Denah.php b/app/Models/Denah.php index 390b233..d3a566f 100644 --- a/app/Models/Denah.php +++ b/app/Models/Denah.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\DenahFactory; -class Denah extends Model +class Denah extends Base { use HasFactory; diff --git a/app/Models/FasilitasObjek.php b/app/Models/FasilitasObjek.php index a8fcda6..7cf7b78 100644 --- a/app/Models/FasilitasObjek.php +++ b/app/Models/FasilitasObjek.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\FasilitasObjekFactory; -class FasilitasObjek extends Model +class FasilitasObjek extends Base { use HasFactory; diff --git a/app/Models/FotoJaminan.php b/app/Models/FotoJaminan.php index 940ecfe..e7df96b 100644 --- a/app/Models/FotoJaminan.php +++ b/app/Models/FotoJaminan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\FotoJaminanFactory; -class FotoJaminan extends Model +class FotoJaminan extends Base { use HasFactory; diff --git a/app/Models/FotoObjekJaminan.php b/app/Models/FotoObjekJaminan.php index c344373..6a31313 100644 --- a/app/Models/FotoObjekJaminan.php +++ b/app/Models/FotoObjekJaminan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\FotoObjekJaminanFactory; -class FotoObjekJaminan extends Model +class FotoObjekJaminan extends Base { use HasFactory; diff --git a/app/Models/GolonganMasySekitar.php b/app/Models/GolonganMasySekitar.php index a4d1f9a..45288b1 100644 --- a/app/Models/GolonganMasySekitar.php +++ b/app/Models/GolonganMasySekitar.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\GolonganMasySekitarFactory; -class GolonganMasySekitar extends Model +class GolonganMasySekitar extends Base { use HasFactory; diff --git a/app/Models/Inspeksi.php b/app/Models/Inspeksi.php index e6d253d..38a6f05 100644 --- a/app/Models/Inspeksi.php +++ b/app/Models/Inspeksi.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\InspeksiFactory; -class Inspeksi extends Model +class Inspeksi extends Base { use HasFactory; diff --git a/app/Models/JenisBangunan.php b/app/Models/JenisBangunan.php index a4cd930..f4e9302 100644 --- a/app/Models/JenisBangunan.php +++ b/app/Models/JenisBangunan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\JenisBangunanFactory; -class JenisBangunan extends Model +class JenisBangunan extends Base { use HasFactory; diff --git a/app/Models/JenisKapal.php b/app/Models/JenisKapal.php index 169d29d..96dec5f 100644 --- a/app/Models/JenisKapal.php +++ b/app/Models/JenisKapal.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\JenisKapalFactory; -class JenisKapal extends Model +class JenisKapal extends Base { use HasFactory; diff --git a/app/Models/JenisKendaraan.php b/app/Models/JenisKendaraan.php index 1846e02..4328e71 100644 --- a/app/Models/JenisKendaraan.php +++ b/app/Models/JenisKendaraan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\JenisKendaraanFactory; -class JenisKendaraan extends Model +class JenisKendaraan extends Base { use HasFactory; diff --git a/app/Models/JenisPenilaian.php b/app/Models/JenisPenilaian.php index f072a82..7c2649b 100644 --- a/app/Models/JenisPenilaian.php +++ b/app/Models/JenisPenilaian.php @@ -5,7 +5,7 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Modules\Lpj\Database\Factories\JenisPenilaianFactory; use Modules\Lpj\Models\Penilaian; -class JenisPenilaian extends Model +class JenisPenilaian extends Base { /** diff --git a/app/Models/JenisPesawat.php b/app/Models/JenisPesawat.php index 226c8b0..9e08c68 100644 --- a/app/Models/JenisPesawat.php +++ b/app/Models/JenisPesawat.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\JenisPesawatFactory; -class JenisPesawat extends Model +class JenisPesawat extends Base { use HasFactory; diff --git a/app/Models/JenisUnit.php b/app/Models/JenisUnit.php index 744ca80..2d47154 100644 --- a/app/Models/JenisUnit.php +++ b/app/Models/JenisUnit.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\JenisUnitFactory; -class JenisUnit extends Model +class JenisUnit extends Base { use HasFactory; diff --git a/app/Models/KetinggianTanah.php b/app/Models/KetinggianTanah.php index 9cd282d..2edbc5b 100644 --- a/app/Models/KetinggianTanah.php +++ b/app/Models/KetinggianTanah.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\KetinggianTanahFactory; -class KetinggianTanah extends Model +class KetinggianTanah extends Base { use HasFactory; diff --git a/app/Models/KondisiBangunan.php b/app/Models/KondisiBangunan.php index 0fa0f86..05aebb0 100644 --- a/app/Models/KondisiBangunan.php +++ b/app/Models/KondisiBangunan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\KondisiBangunanFactory; -class KondisiBangunan extends Model +class KondisiBangunan extends Base { use HasFactory; diff --git a/app/Models/KondisiFisikTanah.php b/app/Models/KondisiFisikTanah.php index bc3a33d..89b6907 100644 --- a/app/Models/KondisiFisikTanah.php +++ b/app/Models/KondisiFisikTanah.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\KondisiFisikTanahFactory; -class KondisiFisikTanah extends Model +class KondisiFisikTanah extends Base { use HasFactory; diff --git a/app/Models/KonturTanah.php b/app/Models/KonturTanah.php index ea53872..b5a4369 100644 --- a/app/Models/KonturTanah.php +++ b/app/Models/KonturTanah.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\KonturTanahFactory; -class KonturTanah extends Model +class KonturTanah extends Base { use HasFactory; diff --git a/app/Models/LaluLintasLokasi.php b/app/Models/LaluLintasLokasi.php index 0ab213a..ec2d286 100644 --- a/app/Models/LaluLintasLokasi.php +++ b/app/Models/LaluLintasLokasi.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\LaluLintasLokasiFactory; -class LaluLintasLokasi extends Model +class LaluLintasLokasi extends Base { use HasFactory; protected $table = 'lalu_lintas_lokasi'; diff --git a/app/Models/Lantai.php b/app/Models/Lantai.php index 3330df1..8629cc9 100644 --- a/app/Models/Lantai.php +++ b/app/Models/Lantai.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\LokasiUnitFactory; -class Lantai extends Model +class Lantai extends Base { use HasFactory; diff --git a/app/Models/LantaiUnit.php b/app/Models/LantaiUnit.php index b40a5c3..d96945b 100644 --- a/app/Models/LantaiUnit.php +++ b/app/Models/LantaiUnit.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\LantaiUnitFactory; -class LantaiUnit extends Model +class LantaiUnit extends Base { use HasFactory; diff --git a/app/Models/Laporan.php b/app/Models/Laporan.php index 5065294..b1f2320 100644 --- a/app/Models/Laporan.php +++ b/app/Models/Laporan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\LaporanFactory; -class Laporan extends Model +class Laporan extends Base { use HasFactory; diff --git a/app/Models/Lingkungan.php b/app/Models/Lingkungan.php index a7b55a2..bcd81bf 100644 --- a/app/Models/Lingkungan.php +++ b/app/Models/Lingkungan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\LingkunganFactory; -class Lingkungan extends Model +class Lingkungan extends Base { use HasFactory; diff --git a/app/Models/MerupakanDaerah.php b/app/Models/MerupakanDaerah.php index 983cc49..e436f93 100644 --- a/app/Models/MerupakanDaerah.php +++ b/app/Models/MerupakanDaerah.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\MerupakanDaerahFactory; -class MerupakanDaerah extends Model +class MerupakanDaerah extends Base { use HasFactory; diff --git a/app/Models/ModelAlatBerat.php b/app/Models/ModelAlatBerat.php index 63b9b0f..213a8ed 100644 --- a/app/Models/ModelAlatBerat.php +++ b/app/Models/ModelAlatBerat.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\ModelAlatBeratFactory; -class ModelAlatBerat extends Model +class ModelAlatBerat extends Base { use HasFactory; diff --git a/app/Models/ObjekJaminan.php b/app/Models/ObjekJaminan.php index 7b9f63a..093e80d 100644 --- a/app/Models/ObjekJaminan.php +++ b/app/Models/ObjekJaminan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\ObjekJaminanFactory; -class ObjekJaminan extends Model +class ObjekJaminan extends Base { use HasFactory; diff --git a/app/Models/PenawaranDetailTenderLog.php b/app/Models/PenawaranDetailTenderLog.php index d29ff58..f1594bd 100644 --- a/app/Models/PenawaranDetailTenderLog.php +++ b/app/Models/PenawaranDetailTenderLog.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; // use Modules\Lpj\Database\Factories\PenawaranDetailTenderFactory; -class PenawaranDetailTenderLog extends Model +class PenawaranDetailTenderLog extends Base { use HasFactory; @@ -22,7 +22,7 @@ class PenawaranDetailTenderLog extends Model { return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id'); } - + public function penawarandetail(): BelongsTo { return $this->belongsTo(PenawaranDetailTender::class, 'detail_penawaran_id', 'id'); diff --git a/app/Models/Penilai.php b/app/Models/Penilai.php index 08cfbad..d1a75f8 100644 --- a/app/Models/Penilai.php +++ b/app/Models/Penilai.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\PenilaiFactory; -class Penilai extends Model +class Penilai extends Base { use HasFactory; diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index 88679b7..cf7cc3d 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -10,7 +10,7 @@ use Modules\Lpj\Models\Teams; use Modules\Lpj\Models\Permohonan; use Modules\Usermanagement\Models\User; -class Penilaian extends Model +class Penilaian extends Base { /** * The attributes that are mass assignable. @@ -32,6 +32,17 @@ class Penilaian extends Model return $this->belongsTo(Teams::class, 'teams_id', 'id'); } + public function teamLeader(){ + return $this->belongsTo(Teams::class, 'teams_id', 'id') + ->with(['teamsUsers' => function($query) { + $query->whereHas('user', function($q) { + $q->whereHas('roles', function($r) { + $r->where('name', 'senior-officer'); + }); + })->with('user'); + }]); + } + public function userPenilai() { return $this->hasMany(PenilaianTeam::class, 'penilaian_id', 'id'); diff --git a/app/Models/PenilaianTeam.php b/app/Models/PenilaianTeam.php index adcd268..0b6079b 100644 --- a/app/Models/PenilaianTeam.php +++ b/app/Models/PenilaianTeam.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PenilaianTeamFactory; -class PenilaianTeam extends Model +class PenilaianTeam extends Base { use HasFactory; diff --git a/app/Models/Perizinan.php b/app/Models/Perizinan.php index 34048d4..4f7c3c8 100644 --- a/app/Models/Perizinan.php +++ b/app/Models/Perizinan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\PerizinanFactory; -class Perizinan extends Model +class Perizinan extends Base { use HasFactory; diff --git a/app/Models/PerkerasanJalan.php b/app/Models/PerkerasanJalan.php index 2c7b0b1..e34f29d 100644 --- a/app/Models/PerkerasanJalan.php +++ b/app/Models/PerkerasanJalan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PerkerasanJalanFactory; -class PerkerasanJalan extends Model +class PerkerasanJalan extends Base { use HasFactory; diff --git a/app/Models/PermohonanJaminan.php b/app/Models/PermohonanJaminan.php index 86e4b3f..f72236c 100644 --- a/app/Models/PermohonanJaminan.php +++ b/app/Models/PermohonanJaminan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PermohonanJaminanFactory; -class PermohonanJaminan extends Model +class PermohonanJaminan extends Base { use HasFactory; protected $table = 'dokumen_jaminan'; diff --git a/app/Models/PermohonanPembatalan.php b/app/Models/PermohonanPembatalan.php index 1197b2f..6626d08 100644 --- a/app/Models/PermohonanPembatalan.php +++ b/app/Models/PermohonanPembatalan.php @@ -5,7 +5,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; - use Modules\Lpj\Models\Permohonan; use Modules\Usermanagement\Models\User; class PermohonanPembatalan extends Base @@ -44,7 +43,11 @@ return $this->belongsTo(Permohonan::class, 'permohonan_id'); } - public function creator(){ + public function user(){ return $this->belongsTo(User::class, 'created_by'); } + + public function authorizedUser(){ + return $this->belongsTo(User::class, 'authorized_by'); + } } diff --git a/app/Models/PosisiKavling.php b/app/Models/PosisiKavling.php index 25e17bc..980c812 100644 --- a/app/Models/PosisiKavling.php +++ b/app/Models/PosisiKavling.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PosisiKavlingFactory; -class PosisiKavling extends Model +class PosisiKavling extends Base { use HasFactory; diff --git a/app/Models/PosisiUnit.php b/app/Models/PosisiUnit.php index 7b5a392..9f6d339 100644 --- a/app/Models/PosisiUnit.php +++ b/app/Models/PosisiUnit.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\PosisiUnitFactory; -class PosisiUnit extends Model +class PosisiUnit extends Base { use HasFactory; diff --git a/app/Models/Regions.php b/app/Models/Regions.php index f5aef83..2bccee2 100644 --- a/app/Models/Regions.php +++ b/app/Models/Regions.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\RegionsFactory; use Modules\Lpj\Models\Teams; -class Regions extends Model +class Regions extends Base { use HasFactory; diff --git a/app/Models/RuteJaminan.php b/app/Models/RuteJaminan.php index 9b88940..8bae958 100644 --- a/app/Models/RuteJaminan.php +++ b/app/Models/RuteJaminan.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\RuteJaminanFactory; -class RuteJaminan extends Model +class RuteJaminan extends Base { use HasFactory; diff --git a/app/Models/SLA.php b/app/Models/SLA.php deleted file mode 100644 index 3646abf..0000000 --- a/app/Models/SLA.php +++ /dev/null @@ -1,18 +0,0 @@ -permohonan = $permohonan; + $this->message = $message; + } + + /** + * Get the notification's delivery channels. + */ + public function via($notifiable) + : array + { + return ['mail', 'database']; + } + + /** + * Get the mail representation of the notification. + */ + public function toMail($notifiable) + : MailMessage + { + return (new MailMessage) + ->line('The introduction to the notification.') + ->action('Notification Action', 'https://laravel.com') + ->line('Thank you for using our application!'); + } + + /** + * Get the array representation of the notification. + */ + public function toArray($notifiable) + : array + { + return [ + 'data' => $this->permohonan, + 'message' => $this->message, + ]; + } + } diff --git a/app/Services/PermohonanHistoryService.php b/app/Services/PermohonanHistoryService.php index 05bf609..723eb42 100644 --- a/app/Services/PermohonanHistoryService.php +++ b/app/Services/PermohonanHistoryService.php @@ -4,6 +4,8 @@ namespace Modules\Lpj\Services; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\PermohonanHistory; +use Modules\Lpj\Notifications\PermohonanNotif; +use Modules\Usermanagement\Models\User; class PermohonanHistoryService { @@ -21,6 +23,8 @@ class PermohonanHistoryService 'user_id' => auth()->id(), ]); + $this->createNotification($permohonan, $status, $beforeRequest, $afterRequest); + } catch (\Exception $e) { // Log the error \Log::error('Error creating PermohonanHistory: ' . $e->getMessage()); @@ -34,4 +38,25 @@ class PermohonanHistoryService throw new \Exception('Failed to create PermohonanHistory: ' . $e->getMessage()); } } + + private function createNotification(Permohonan $permohonan, string $status, array $beforeRequest, array $afterRequest) + { + $beforeStatus = ''; + if(!empty($beforeRequest)){ + $beforeStatus = $beforeRequest['status'] ?? ''; + } + + if($beforeStatus !== $status){ + if($status === 'order'){ + $users = User::where(['branch_id' => $permohonan->branch_id])->whereHas('roles',function($q){ + $q->where('name', 'pemohon-eo'); + })->get(); + + foreach ($users as $user) { + $message = "telah diorder oleh {$permohonan->creator->name}, Mohon Lakukan konfirmasi"; + $user->notify(new PermohonanNotif($permohonan,$message)); + } + } + } + } } diff --git a/database/migrations/2024_08_12_024448_create_currencies_table.php b/database/migrations/2024_08_12_024448_create_currencies_table.php deleted file mode 100644 index ec92b59..0000000 --- a/database/migrations/2024_08_12_024448_create_currencies_table.php +++ /dev/null @@ -1,40 +0,0 @@ -id(); - $table->string('code', 3)->unique(); - $table->string('name'); - $table->integer('decimal_places')->default(2); - $table->boolean('status')->default(true)->nullable(); - $table->timestamps(); - $table->timestamp('authorized_at')->nullable(); - $table->char('authorized_status', 1)->nullable(); - $table->softDeletes(); - - $table->unsignedBigInteger('created_by')->nullable(); - $table->unsignedBigInteger('updated_by')->nullable(); - $table->unsignedBigInteger('deleted_by')->nullable(); - $table->unsignedBigInteger('authorized_by')->nullable(); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - : void - { - Schema::dropIfExists('currencies'); - } - }; diff --git a/database/migrations/2024_10_15_101204_create_detail_penawaran_logs_table.php b/database/migrations/2024_10_15_101204_create_detail_penawaran_logs_table.php index 730a0b1..414098b 100644 --- a/database/migrations/2024_10_15_101204_create_detail_penawaran_logs_table.php +++ b/database/migrations/2024_10_15_101204_create_detail_penawaran_logs_table.php @@ -21,10 +21,10 @@ return new class extends Migration $table->string('dokumen_persetujuan')->nullable(); $table->boolean('status')->nullable(); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - $table->timestamps(); - $table->timestamp('deleted_at')->nullable(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); diff --git a/database/migrations/2024_10_16_153543_create_analisa_table.php b/database/migrations/2024_10_16_153543_create_analisa_table.php index 2a86af2..5004d6a 100644 --- a/database/migrations/2024_10_16_153543_create_analisa_table.php +++ b/database/migrations/2024_10_16_153543_create_analisa_table.php @@ -19,12 +19,12 @@ return new class extends Migration $table->string('luas'); $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php index 2c0cf23..e99bf6d 100644 --- a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php +++ b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php @@ -29,14 +29,12 @@ return new class extends Migration $table->string('sifat_bangunan'); $table->string('sarana_pelengkap'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153613_create_analisa_unit_table.php b/database/migrations/2024_10_16_153613_create_analisa_unit_table.php index 7638518..2592687 100644 --- a/database/migrations/2024_10_16_153613_create_analisa_unit_table.php +++ b/database/migrations/2024_10_16_153613_create_analisa_unit_table.php @@ -25,14 +25,12 @@ return new class extends Migration $table->string('bentuk_unit'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153727_create_spek_bagunan_analisa_table.php b/database/migrations/2024_10_16_153727_create_spek_bagunan_analisa_table.php index 9da658b..a1efa9a 100644 --- a/database/migrations/2024_10_16_153727_create_spek_bagunan_analisa_table.php +++ b/database/migrations/2024_10_16_153727_create_spek_bagunan_analisa_table.php @@ -19,15 +19,13 @@ return new class extends Migration $table->unsignedBigInteger('analisa_tanah_bangunan_id'); $table->foreign('analisa_tanah_bangunan_id')->references('id')->on('analisa_tanah_bangunan'); - $table->char('authorized_status', 1); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); - $table->unsignedBigInteger('created_by'); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153743_create_spek_bagunan_analisa_detail_table.php b/database/migrations/2024_10_16_153743_create_spek_bagunan_analisa_detail_table.php index e3f190b..8c39da9 100644 --- a/database/migrations/2024_10_16_153743_create_spek_bagunan_analisa_detail_table.php +++ b/database/migrations/2024_10_16_153743_create_spek_bagunan_analisa_detail_table.php @@ -19,15 +19,13 @@ return new class () extends Migration { $table->unsignedBigInteger('spek_bangunan_analisa_id'); $table->foreign('spek_bangunan_analisa_id')->references('id')->on('spek_bagunan_analisa'); - $table->char('authorized_status', 1); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); - $table->unsignedBigInteger('created_by'); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153811_create_analisa_fakta_table.php b/database/migrations/2024_10_16_153811_create_analisa_fakta_table.php index 7e05782..58f9252 100644 --- a/database/migrations/2024_10_16_153811_create_analisa_fakta_table.php +++ b/database/migrations/2024_10_16_153811_create_analisa_fakta_table.php @@ -37,15 +37,13 @@ return new class () extends Migration { $table->string('lng'); $table->text('keterangan'); - $table->char('authorized_status', 1); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at - $table->unsignedBigInteger('created_by'); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153831_create_analisa_lingkungan_table.php b/database/migrations/2024_10_16_153831_create_analisa_lingkungan_table.php index e0c5e22..10aa119 100644 --- a/database/migrations/2024_10_16_153831_create_analisa_lingkungan_table.php +++ b/database/migrations/2024_10_16_153831_create_analisa_lingkungan_table.php @@ -30,15 +30,13 @@ return new class () extends Migration { $table->string('merupakan_daerah'); $table->string('fasilitas_dekat_object'); - $table->char('authorized_status', 1); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at - $table->unsignedBigInteger('created_by'); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153841_create_denah_table.php b/database/migrations/2024_10_16_153841_create_denah_table.php index 71475ff..273ee33 100644 --- a/database/migrations/2024_10_16_153841_create_denah_table.php +++ b/database/migrations/2024_10_16_153841_create_denah_table.php @@ -20,14 +20,12 @@ return new class () extends Migration { $table->string('luas'); $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php b/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php index 3c7f514..8b793e2 100644 --- a/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php +++ b/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php @@ -18,14 +18,12 @@ return new class () extends Migration { $table->string('pendamping'); $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php b/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php index 3d02a38..5bfde6d 100644 --- a/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php +++ b/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php @@ -21,14 +21,12 @@ return new class () extends Migration { $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_153945_create_lingkungan_table.php b/database/migrations/2024_10_16_153945_create_lingkungan_table.php index 58f4289..8363ee1 100644 --- a/database/migrations/2024_10_16_153945_create_lingkungan_table.php +++ b/database/migrations/2024_10_16_153945_create_lingkungan_table.php @@ -20,14 +20,12 @@ return new class () extends Migration { $table->string('foto_linkungan'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_16_155227_create_rute_jaminan_table.php b/database/migrations/2024_10_16_155227_create_rute_jaminan_table.php index 6db988e..35fb839 100644 --- a/database/migrations/2024_10_16_155227_create_rute_jaminan_table.php +++ b/database/migrations/2024_10_16_155227_create_rute_jaminan_table.php @@ -21,14 +21,12 @@ return new class () extends Migration { $table->string('foto_rute'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - - $table->timestamps(); // created_at and updated_at + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); } diff --git a/database/migrations/2024_10_22_064209_create_lantai_unit_table.php b/database/migrations/2024_10_22_064209_create_lantai_unit_table.php index bf3c8c0..243f75b 100644 --- a/database/migrations/2024_10_22_064209_create_lantai_unit_table.php +++ b/database/migrations/2024_10_22_064209_create_lantai_unit_table.php @@ -18,13 +18,12 @@ return new class extends Migration $table->string('foto_lantai_unit'); $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); - $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); - - $table->timestamp('deleted_at')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); }); diff --git a/database/migrations/2024_10_28_095337_create_s_l_as_table.php b/database/migrations/2024_10_28_095337_create_s_l_as_table.php deleted file mode 100644 index bf5549c..0000000 --- a/database/migrations/2024_10_28_095337_create_s_l_as_table.php +++ /dev/null @@ -1,27 +0,0 @@ -id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('sla'); - } -}; diff --git a/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php b/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php deleted file mode 100644 index 814024d..0000000 --- a/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php +++ /dev/null @@ -1,28 +0,0 @@ -id(); - - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('label_name_inspeksi'); - } -}; diff --git a/module.json b/module.json index ee72503..bf9626d 100644 --- a/module.json +++ b/module.json @@ -30,6 +30,23 @@ "senior-officer" ] }, + { + "title": "Laporan Pembatalan", + "path": "laporan-pembatalan", + "icon": "ki-filled ki-filter-tablet text-lg text-primary", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "DD Appraisal", + "EO Appraisal", + "senior-officer" + ] + }, { "title": "Laporan Admin Kredit", "path": "laporan-admin-kredit", @@ -64,6 +81,40 @@ "EO Appraisal", "senior-officer" ] + }, + { + "title": "Laporan Pernilaan Jaminan", + "path": "laporan-penilaian-jaminan", + "icon": "ki-filled ki-filter-tablet text-lg text-primary", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "DD Appraisal", + "EO Appraisal", + "senior-officer" + ] + }, + { + "title": "Laporan Hasil Pernilaan Jaminan Internal & External", + "path": "laporan-hasil-penilaian-jaminan-internal-external", + "icon": "ki-filled ki-filter-tablet text-lg text-primary", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "DD Appraisal", + "EO Appraisal", + "senior-officer" + ] } ], "otorisator": [ diff --git a/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php new file mode 100644 index 0000000..f67fb41 --- /dev/null +++ b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php @@ -0,0 +1,489 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('laporan-hasil-penilaian-jaminan-internal-external') }} +@endsection + +@section('content') +
+ +
+
+

Filter Laporan

+
+
+ +
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + Export to Excel + +
+
+
+ + +
+
+

+ Laporan Hasil Penilaian Jaminan Internal & External +

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + Cabang + + + Pemohon + + + CIF + + + Nama Debitur + + + Jenis Penilaian + + + Tujuan Penilaian + + + Jenis Fasilitas Kredit + + + Jenis Agunan + + + Alamat Agunan + + + Bukti Kepemilikan + + + Nama Pemilik + + + Luas Tanah + + + Nilai Tanah + + + Luas Bangunan + + + Nilai Bangunan + + + Nilai NJOP + + + Nilai Pasar Wajar + + + Nilai Likuidasi + + + Tanggal Dokumen Diterima + + + Tanggal SPK + + + Nomor SPK + + + Tanggal Rencana Kunjungan + + + Tanggal Kunjungan + + + Tanggal Delivered + + + Jangka Waktu SLA + + + Tanggal Laporan + + + Tanggal Review + + + Nama Penilai + + + Nama Team Leader + + + Saran + + + Catatan + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/laporan_pembatalan/index.blade.php b/resources/views/laporan_pembatalan/index.blade.php new file mode 100644 index 0000000..60f9dad --- /dev/null +++ b/resources/views/laporan_pembatalan/index.blade.php @@ -0,0 +1,283 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{-- {{ Breadcrumbs::render('laporan-pembatalan') }}--}} +@endsection + +@section('content') +
+
+
+

+ Laporan Pembatalan +

+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + Tanggal Pembatalan + + + Cabang + + + Pemohon + + + Debitur + + + Alasan Pembatalan + + + Status + + + Diajukan Oleh + + + Disetujui Oleh + + + Tanggal Disetujui + +
+
+ +
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/laporan_penilaian_jaminan/index.blade.php b/resources/views/laporan_penilaian_jaminan/index.blade.php new file mode 100644 index 0000000..6b76321 --- /dev/null +++ b/resources/views/laporan_penilaian_jaminan/index.blade.php @@ -0,0 +1,354 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('laporan-penilaian-jaminan') }} +@endsection + +@section('content') +
+ +
+
+

Filter Laporan

+
+
+ +
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + Export to Excel + +
+
+
+ + +
+
+

+ Laporan Penilaian Jaminan +

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + Cabang + + + Pemohon + + + Nama Debitur + + + Tujuan Penilaian + + + Jenis Agunan + + + Alamat Agunan + + + Luas Tanah + + + Nilai Tanah + + + Luas Bangunan + + + Nilai Bangunan + + + Tanggal Laporan + + + Tanggal Review + + + Nilai Pasar Wajar + + + Nilai Likuidasi + + + Nama Penilai + +
+
+ +
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/laporan_permohonan/index.blade.php b/resources/views/laporan_permohonan/index.blade.php index ffb183b..011e0f0 100644 --- a/resources/views/laporan_permohonan/index.blade.php +++ b/resources/views/laporan_permohonan/index.blade.php @@ -1,7 +1,7 @@ @extends('layouts.main') @section('breadcrumbs') - {{-- {{ Breadcrumbs::render('laporan-permohonan') }}--}} + {{ Breadcrumbs::render('laporan-permohonan') }} @endsection @section('content') diff --git a/resources/views/noc/index.blade.php b/resources/views/noc/index.blade.php index 65269c7..b2867c4 100644 --- a/resources/views/noc/index.blade.php +++ b/resources/views/noc/index.blade.php @@ -123,50 +123,19 @@ }, }, nomor_registrasi: { - title: 'Nomor Registrasi', - render: (item, data) => { - if(data.permohonan) { - return `${data.permohonan.nomor_registrasi}`; - } else if(data.penawaran) { - return `${data.penawaran.permohonan.nomor_registrasi}`; - } - return ''; - }, + title: 'Nomor Registrasi' }, nama_debitur: { title: 'Nama Debitur', - render: (item, data) => { - if(data.permohonan) { - return `${data.permohonan.debiture.name}`; - } else if(data.penawaran) { - return `${data.penawaran.permohonan.debiture.name}`; - } - return ''; - - }, }, cabang: { title: 'Cabang', - render: (item, data) => { - if(data.permohonan) { - return `${data.permohonan.branch.name}`; - } else if(data.penawaran) { - return `${data.penawaran.permohonan.branch.name}`; - } - return ''; - }, }, tanggal_setor: { title: 'Tanggal Setor', - render: (item, data) => { - return `${window.formatTanggalIndonesia(data.created_at)}`; - }, }, nominal_bayar: { title: 'Nominal Bayar', - render: (item, data) => { - return `${window.formatRupiah(data.nominal_bayar)}`; - }, }, bukti_ksl: { title: 'Bukti KSL', @@ -182,12 +151,6 @@ }, tanggal_penyelesaian: { title: 'Tanggal Penyelesaian', - render: (item, data) => { - if(data.status==1) { - return `${window.formatTanggalIndonesia(data.updated_at)}`; - } - return "-"; - }, }, actions: { title: 'Action', diff --git a/resources/views/penilai/components/foto-jaminan.blade.php b/resources/views/penilai/components/foto-jaminan.blade.php index 002e072..d8ad12e 100644 --- a/resources/views/penilai/components/foto-jaminan.blade.php +++ b/resources/views/penilai/components/foto-jaminan.blade.php @@ -31,7 +31,8 @@ /* Image Styling */ .photo-item img { width: auto; - height: 400px; + max-width: 100%; + height: auto; max-height: 400px; object-fit: contain; background-color: #f0f0f0; @@ -59,7 +60,6 @@ } .photo-image { - width: 100; height: 400px; max-height: 400px; } diff --git a/resources/views/penilai/components/print-resume.blade.php b/resources/views/penilai/components/print-resume.blade.php index de2290a..d61d1c3 100644 --- a/resources/views/penilai/components/print-resume.blade.php +++ b/resources/views/penilai/components/print-resume.blade.php @@ -1,5 +1,36 @@ @include('lpj::penilai.components.header') +@php + $data = ''; + foreach ($permohonan->documents as $dokumen) { + $data .= $dokumen->jenisJaminan->name . ', '; + + $penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first(); + $surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first(); + $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; + } + } + } + } + } + } + use Modules\Usermanagement\Models\User; + $penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first(); + + $data = rtrim($data, ', '); +@endphp
diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 11e7dfa..38b0a6b 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -41,6 +41,10 @@ Nomor Registrasi +
+ Nomor LPJ Lama + + Tanggal Permohonan @@ -141,6 +145,9 @@ nomor_registrasi: { title: 'Nomor Registrasi', }, + mig_mst_lpj_nomor_jaminan: { + title: 'Nomor LPJ Lama', + }, tanggal_permohonan: { title: 'Tanggal Permohonan', render: (item, data) => { diff --git a/resources/views/surveyor/js/utils.blade.php b/resources/views/surveyor/js/utils.blade.php index 580fc70..8da858a 100644 --- a/resources/views/surveyor/js/utils.blade.php +++ b/resources/views/surveyor/js/utils.blade.php @@ -309,7 +309,7 @@ } - function checkLaporan(permohonanId, documentId, inspeksiId, jaminanId, statusLpj) { + function checkLaporan(permohonanId, documentId, inspeksiId, statusLpj) { // showLoadingSwal('Tunggu...'); fetch( `{{ url('/penilai/check-laporan') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}` @@ -318,7 +318,7 @@ .then(data => { if (data.status) { window.location.href = - `{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=${statusLpj}&type=${data.status}`; + `{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&statusLpj=${statusLpj}&type=${data.status}`; } else { // Jika laporan belum ada, tampilkan pesan peringatan Swal.fire({ diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 9fc2ce3..d3fab80 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -572,7 +572,7 @@ Breadcrumbs::for('otorisator.show', function (BreadcrumbTrail $trail, $id, $type Breadcrumbs::for('laporan', function (BreadcrumbTrail $trail) { - $trail->push('Laporan', route('laporan.sederhana.index')); + $trail->push('Laporan',''); }); Breadcrumbs::for('laporan.sederhana.index', function (BreadcrumbTrail $trail) { @@ -728,9 +728,26 @@ Breadcrumbs::for('laporan-admin-kredit', function ($trail) { Breadcrumbs::for('bank-data', function ($trail) { $trail->push('Bank Data', route('bank-data.index')); }); + Breadcrumbs::for('laporan-penilai-jaminan', function ($trail) { + $trail->parent('laporan'); $trail->push('Laporan Penilai Jaminan', route('laporan-penilai-jaminan.index')); }); + Breadcrumbs::for('laporan-permohonan', function ($trail) { + $trail->parent('laporan'); + $trail->push('Laporan Permohnan', route('laporan-permohonan.index')); + }); + + Breadcrumbs::for('laporan-penilaian-jaminan', function ($trail) { + $trail->parent('laporan'); + $trail->push('Laporan Penilaian Jaminan', route('laporan-penilaian-jaminan.index')); + }); + + Breadcrumbs::for('laporan-hasil-penilaian-jaminan-internal-external', function ($trail) { + $trail->parent('laporan'); + $trail->push('Laporan Hasil Penilaian Jaminan Internal External', route('laporan-hasil-penilaian-jaminan-internal-external.index')); + }); + // add andy require __DIR__ . '/breadcrumbs_registrasi.php'; diff --git a/routes/web.php b/routes/web.php index 8d079e5..a7a181d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -22,6 +22,9 @@ use Modules\Lpj\Http\Controllers\LampiranDokumenController; use Modules\Lpj\Http\Controllers\LaporanAdminKreditController; use Modules\Lpj\Http\Controllers\LaporanController; use Modules\Lpj\Http\Controllers\LaporanExternalController; + use Modules\Lpj\Http\Controllers\LaporanHasilPenilaianJaminanInternalExternalController; + use Modules\Lpj\Http\Controllers\LaporanPembatalanController; + use Modules\Lpj\Http\Controllers\LaporanPenilaianJaminanController; use Modules\Lpj\Http\Controllers\LaporanPermohonanController; use Modules\Lpj\Http\Controllers\NilaiPlafondController; use Modules\Lpj\Http\Controllers\NocController; @@ -692,6 +695,25 @@ Route::middleware(['auth'])->group(function () { Route::get('/', [LaporanPermohonanController::class, 'index'])->name('index'); }); + // Laporan Pembatalan routes + Route::prefix('laporan-pembatalan')->name('laporan-pembatalan.')->group(function () { + Route::get('/', [LaporanPembatalanController::class, 'index'])->name('index'); + Route::get('/data', [LaporanPembatalanController::class, 'dataForDatatables'])->name('data'); + Route::get('/export', [LaporanPembatalanController::class, 'export'])->name('export'); + }); + + Route::prefix('laporan-penilaian-jaminan')->name('laporan-penilaian-jaminan.')->group(function() { + Route::get('datatables', [LaporanPenilaianJaminanController::class, 'dataForDatatables'])->name('data'); + Route::get('export', [LaporanPenilaianJaminanController::class, 'export'])->name('export'); + Route::get('/', [LaporanPenilaianJaminanController::class, 'index'])->name('index'); + }); + + Route::prefix('laporan-hasil-penilaian-jaminan-internal-external')->name('laporan-hasil-penilaian-jaminan-internal-external.')->group(function() { + Route::get('datatables', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'dataForDatatables'])->name('data'); + Route::get('export', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'export'])->name('export'); + Route::get('/', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'index'])->name('index'); + }); + }); require __DIR__ . '/registrasi.php';