diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
new file mode 100644
index 0000000..9d6e39a
--- /dev/null
+++ b/app/Http/Controllers/DashboardController.php
@@ -0,0 +1,36 @@
+dashboardService = $dashboardService;
+ }
+ /**
+ * Display a listing of the resource.
+ */
+ public function index(Request $request)
+ {
+ // nilai default
+ $start_date = $request->input('start_date', now()->startOfYear()->format('Y-m-d'));
+ $end_date = $request->input('end_date', now()->format('Y-m-d'));
+
+ $validate = $request->validate([
+ 'start_date' => 'nullable|date_format:Y-m-d',
+ 'end_date' => 'nullable|date_format:Y-m-d',
+ ]);
+
+ $dashboard = $this->dashboardService->getDashboardData($start_date, $end_date);
+
+ // dd($dashboard);
+ return view('lpj::dashboard.index', compact('dashboard'));
+ }
+
+}
diff --git a/app/Http/Controllers/LaporanBiayaInternalExternalController.php b/app/Http/Controllers/LaporanBiayaInternalExternalController.php
new file mode 100644
index 0000000..89c3d1c
--- /dev/null
+++ b/app/Http/Controllers/LaporanBiayaInternalExternalController.php
@@ -0,0 +1,23 @@
+laporanDebitureService = app(LaporanDebitureService::class);
+ }
+
+ /**
+ * Display a listing of the resource.
+ */
+ public function index()
+ {
+ $debiture = Debiture::all();
+ return view('lpj::laporan-debiture.index', compact('debiture'));
+ }
+
+
+ public function dataTableForDebiture(Request $request)
+ {
+ return $this->laporanDebitureService->dataForDatatables($request);
+ }
+
+}
diff --git a/app/Http/Controllers/LaporanMonitoringSoController.php b/app/Http/Controllers/LaporanMonitoringSoController.php
new file mode 100644
index 0000000..2e3d9d6
--- /dev/null
+++ b/app/Http/Controllers/LaporanMonitoringSoController.php
@@ -0,0 +1,43 @@
+laporanMonitoringSoService = $laporanMonitoringSoService;
+ }
+
+ /**
+ * Display a listing of the resource.
+ */
+ public function index()
+ {
+ $user = auth()->user()->load('roles');
+ $result = $this->laporanMonitoringSoService->progresPengerjaanLaporan($user);
+ return view('lpj::laporan-monitoring.index', compact('result'));
+ }
+
+ /**
+ * Show details data.
+ * @return Response
+ */
+
+ public function show($id){
+ return view('lpj::laporan-monitoring.show', compact('id'));
+ }
+
+
+ public function dataForDatatablePenilai(Request $request, $id){
+ return $this->laporanMonitoringSoService->showDetailsPermohonan($request, $id);
+ }
+
+}
diff --git a/app/Http/Controllers/LaporanSLAPenilaiController.php b/app/Http/Controllers/LaporanSLAPenilaiController.php
new file mode 100644
index 0000000..4ef6704
--- /dev/null
+++ b/app/Http/Controllers/LaporanSLAPenilaiController.php
@@ -0,0 +1,32 @@
+laporanSLAPenilaiService = app(LaporanSLAPenilaiService::class);
+ }
+
+ /**
+ * Display a listing of the resource.
+ */
+ public function index()
+ {
+ return view('lpj::laporan-sla-penilai.index');
+ }
+
+ public function dataForDatatableSLaPenilai(Request $request)
+ {
+ return $this->laporanSLAPenilaiService->dataForDatatables($request);
+ }
+
+
+}
diff --git a/app/Http/Controllers/LaporanUserController.php b/app/Http/Controllers/LaporanUserController.php
new file mode 100644
index 0000000..7d48559
--- /dev/null
+++ b/app/Http/Controllers/LaporanUserController.php
@@ -0,0 +1,41 @@
+laporanUserService = $laporanUserService;
+ }
+
+ /**
+ * Display a listing of the resource.
+ */
+ public function index()
+ {
+ // $user = $this->laporanUserService->getUserPemohon();
+ return view('lpj::laporan-user.index');
+ }
+
+ public function searchUserPemohon(Request $request)
+ {
+ $search = $request->get('search');
+ $user = $this->laporanUserService->getUserPemohon($search);
+ return response()->json($user);
+ }
+
+ public function dataTableForUserPemohon(Request $request)
+ {
+ return $this->laporanUserService->dataForDatatables($request);
+ }
+
+}
diff --git a/app/Http/Controllers/RekapHarianSoController.php b/app/Http/Controllers/RekapHarianSoController.php
new file mode 100644
index 0000000..5fae8e8
--- /dev/null
+++ b/app/Http/Controllers/RekapHarianSoController.php
@@ -0,0 +1,22 @@
+getTotalLpjInternal($start_date, $end_date);
+ $countLpjExternal = $this->getTotalLpjEksternal($start_date, $end_date);
+ $countResume = $this->getResumeCabang($start_date, $end_date);
+ $countPendapatan = $this->getPendapatanAppraisal($start_date, $end_date);
+
+ return [
+ 'count_lpj_internal' => $countLpjInternal,
+ 'count_lpj_eksternal' => $countLpjExternal,
+ 'count_resume' => $countResume,
+ 'count_pendapatan' => $countPendapatan
+ ];
+
+ }
+
+
+
+ public function getTotalLpjInternal($start_date, $end_date)
+ {
+ $months = $this->getMonthly();
+ $regions = $this->getRegion();
+ $data = [];
+
+ foreach ($months as $index => $month) {
+ $monthNumber = $index + 1;
+ $data[$month] = [];
+
+ foreach ($regions as $region) {
+ if ($monthNumber > now()->month) {
+
+ $data[$month][$region] = [
+ 'total_laporan' => 0,
+ 'total_debiture' => 0,
+ ];
+ } else {
+
+ $totalLaporan = Laporan::whereBetween('created_at', [$start_date, $end_date])
+ ->count();
+ $totalDebitur = Permohonan::whereBetween('created_at', [$start_date, $end_date])
+ ->where('status', 'done')
+ ->distinct()
+ ->count('debiture_id');
+
+
+
+ $data[$month][$region] = [
+ 'total_laporan' => $totalLaporan,
+ 'total_debiture' => $totalDebitur,
+ ];
+ }
+ }
+ }
+ return $data;
+ }
+
+
+
+ public function getPendapatanAppraisal($start_date, $end_date)
+{
+ $months = $this->getMonthly();
+ $data = [];
+
+ foreach ($months as $index => $month) {
+ $monthNumber = $index + 1;
+
+ if ($monthNumber > now()->month) {
+ // Bulan belum terjadi
+ $data[$month] = [
+ 'total_jumlah' => 0,
+ 'total_akumulasi' => 0,
+ ];
+ } else {
+ // Hitung jumlah nominal_bayar pada bulan ini
+ $totalJumlah = Noc::whereYear('tanggal_pembayaran', now()->year)
+ ->whereMonth('tanggal_pembayaran', $monthNumber)
+ ->sum('nominal_bayar');
+
+
+ $data[$month] = [
+ 'total_jumlah' => $totalJumlah,
+ 'total_akumulasi' => $totalJumlah,
+ ];
+ }
+ }
+
+ return $data;
+}
+
+ public function getResumeCabang($start_date, $end_date)
+ {
+ $regions = $this->getRegion();
+ $status = ['batal', 'done'];
+ $data = [];
+
+ foreach ($status as $item) {
+ $data[$item] = [];
+ foreach ($regions as $region) {
+ $totalLaporan = DB::table('laporan')
+ ->join('permohonan', 'laporan.permohonan_id', '=', 'permohonan.id')
+ ->where('permohonan.status', $item)
+ ->whereBetween('laporan.created_at', [$start_date, $end_date])
+ ->count();
+
+ $data[$item][$region] = [
+ 'count_report' => $totalLaporan,
+ ];
+ }
+ }
+
+ return $data;
+
+ }
+ public function getTotalLpjEksternal($start_date, $end_date)
+ {
+ $months = $this->getMonthly();
+ $data = [];
+ foreach ($months as $index => $month) {
+ $monthNumber = $index + 1;
+ if ($monthNumber > now()->month) {
+ $data[$month] = [
+ 'total_laporan' => 0,
+ 'total_debiture' => 0,
+ ];
+ } else {
+ $totalLaporan = Laporan::where('created_at', '>=', $start_date)->where('created_at', '<=', $end_date)->count();
+
+ $totalDebitur = Permohonan::whereBetween('created_at', [$start_date, $end_date])
+ ->where('status', 'done')
+ ->distinct()
+ ->count('debiture_id');
+
+ $data[$month] = [
+ 'total_laporan' => $totalLaporan,
+ 'total_debiture' => $totalDebitur,
+ ];
+ }
+ }
+ return $data;
+
+
+ }
+
+ private function getMonthly()
+ {
+ return [
+ 'januari',
+ 'februari',
+ 'maret',
+ 'april',
+ 'mei',
+ 'juni',
+ 'juli',
+ 'agustus',
+ 'september',
+ 'oktober',
+ 'november',
+ 'desember',
+ ];
+ }
+
+ private function getRegion()
+ {
+ return [
+ 'jabodetabek',
+ 'non-jabodetabek',
+ ];
+ }
+}
diff --git a/app/Services/LaporanDebitureService.php b/app/Services/LaporanDebitureService.php
new file mode 100644
index 0000000..fb27ce6
--- /dev/null
+++ b/app/Services/LaporanDebitureService.php
@@ -0,0 +1,182 @@
+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->debiture_id) && !empty($search->debiture_id)) {
+ $query->where('debiture_id', $search->debiture_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,
+ ]);
+ }
+}
diff --git a/app/Services/LaporanMonitoringSoService.php b/app/Services/LaporanMonitoringSoService.php
new file mode 100644
index 0000000..2eb619f
--- /dev/null
+++ b/app/Services/LaporanMonitoringSoService.php
@@ -0,0 +1,228 @@
+roles->pluck('name')->contains('senior-officer')) {
+ $userTeam = TeamsUsers::with('team')->firstWhere('user_id', $user->id);
+ $regionId = $userTeam?->team->regions_id;
+ $teamId = $userTeam?->teams_id;
+ }
+
+
+ $teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions', 'user.roles'])
+ ->whereHas('team', function ($q) use ($regionId, $teamId) {
+ $q->when($regionId, fn ($q) => $q->where('regions_id', $regionId))
+ ->when($teamId, fn ($q) => $q->where('id', $teamId));
+ })
+ ->where('user_id', '!=', $user->id)
+ ->whereHas('user.roles', fn ($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai']))
+ ->get();
+
+ $teamId = is_array($teamId) ? $teamId : [$teamId];
+
+ $teamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])->whereNotIn(
+ 'id',
+ $teamId
+ )->get();
+
+ return [
+ 'teamsActivity' => $teamsActivity,
+ 'teamPenilai' => $teamPenilai,
+ ];
+ }
+
+
+ public function showDetailsPermohonan($request,$id)
+ {
+ $query = Penilaian::with([
+ 'permohonan',
+ 'permohonan.debiture',
+ 'permohonan.tujuanPenilaian',
+ 'permohonan.debiture.documents.jenisJaminan',
+ 'userPenilai' => function ($query) use ($id) {
+ $query->where('user_id', $id);
+ },
+ 'permohonan.penilai',
+ 'permohonan.approveEo',
+ 'permohonan.approveDd',
+ 'permohonan.approveSo',
+
+ ])
+ ->whereHas('userPenilai', function ($q) use ($id) {
+ $q->where('user_id', $id);
+ })
+ ->whereHas('permohonan', function ($q) {
+ $q->whereIn('status', [
+ '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'
+ ]);
+ });
+
+
+
+ // Filter pencarian
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('nomor_registrasi', 'LIKE', "%$search%")
+ ->orWhere('status', 'LIKE', "%$search%");
+ });
+ }
+
+ // Sorting
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Hitung total records
+ $totalRecords = $query->count();
+
+ // Pagination
+ $size = $request->get('size', 10);
+ $page = $request->get('page', 1);
+ $offset = ($page - 1) * $size;
+
+ // Ambil data dengan pagination
+ $data = $query->skip($offset)->take($size)->get();
+
+ $data = $data->map(function ($item) {
+ $jeniAsset = null;
+ $statusPembayaran = trim(strtolower($item->permohonan->status_bayar ?? ''));
+ $tujuanPenilaian = $item->permohonan->tujuanPenilaian->name ?? null;
+ $plafond = $item->permohonan->nilaiPlafond->name ?? null;
+
+ $now = Carbon::now();
+ $type_report = $item->permohonan->penilai->type ?? "";
+
+ $hari = $hariPaparan = 0;
+
+ if ($type_report == "sederhana") {
+ $hari = 2;
+ $item->paparan = 'Tidak Ada';
+ } else {
+ if ($plafond == '< 2M') {
+ $item->paparan = 'Tidak Ada';
+ $hari = 3;
+ } elseif ($plafond == '2 M - 5 M') {
+ $hari = 3;
+ $hariPaparan = 2;
+ } else {
+ $hari = 5;
+ $hariPaparan = 3;
+ }
+ }
+
+ if ($tujuanPenilaian == 'RAP') {
+ $hari = 2;
+ $hariPaparan = 2;
+ }
+
+
+ if ($item->permohonan && $item->permohonan->debiture) {
+ $jeniAsset = $item->permohonan->debiture->documents->first() ?? null;
+ }
+
+ /*$hariTambahan = 0;
+
+ if ($tujuanPenilaian == 'RAP') {
+ $hariTambahan = 2;
+ } else {
+ if ($statusPembayaran == 'sudah_bayar') {
+ $hariTambahan = 1; // H+1 untuk yang sudah bayar
+ } else {
+ $hariTambahan = 2; // H+2 untuk yang belum bayar
+ }
+ }*/
+
+ $tanggalMulai = $item->waktu_penilaian;
+
+ if ($tanggalMulai) {
+ if (!$tanggalMulai instanceof Carbon) {
+ $tanggalMulai = Carbon::parse($tanggalMulai);
+ }
+ $hariKerjaBerikutnya = hitungHariKerja($tanggalMulai->toDateString(), $tanggalMulai->copy()->addDays(1));
+ $hariKerjaBerikutnya = max($hariKerjaBerikutnya, 1);
+ $tanggalMulai = $tanggalMulai->copy()->addDays($hariKerjaBerikutnya);
+
+ // Konversi string tanggal ke objek Carbon jika belum
+ if (!$tanggalMulai instanceof Carbon) {
+ $tanggalMulai = Carbon::parse($tanggalMulai);
+ }
+
+ // Hitung tanggal selesai berdasarkan hari tambahan
+ $tanggalSelesai = $tanggalMulai->copy()->addDays($hari);
+ $tanggalPaparan = $tanggalMulai->copy()->addDays($hariPaparan);
+
+ // Hitung hari kerja
+ $hariKerja = hitungHariKerja($tanggalMulai->toDateString(), $tanggalSelesai->toDateString());
+ $hariKerja = max($hariKerja, $hari);
+
+ $hariKerjaPaparan = hitungHariKerja($tanggalMulai->toDateString(), $tanggalPaparan->toDateString());
+ $hariKerjaPaparan = max($hariKerjaPaparan, $hariPaparan);
+
+ // Set due date SLA
+ $dueDateSla = $tanggalMulai->copy()->addDays($hariKerja);
+ $dueDateSlaPaparan = $tanggalMulai->copy()->addDays($hariKerjaPaparan);
+
+ // Cek apakah sudah melewati due date
+ /*if ($now->greaterThan($dueDateSla)) {
+ $item->due_date_sla = null;
+ } else {
+ $item->due_date_sla = $dueDateSla->toDateString();
+ }*/
+
+ $item->due_date_sla = $dueDateSla->toDateString();
+ $item->paparan = $dueDateSlaPaparan->toDateString();
+ } else {
+ $item->due_date_sla = null;
+ $item->paparan = null;
+
+ }
+
+ return $item;
+ });
+
+ $filteredRecords = $data->count();
+ $pageCount = ceil($totalRecords / $size);
+
+ // Return data dalam bentuk JSON
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $page,
+ 'totalCount' => $totalRecords,
+ 'data' => $data
+ ]);
+ }
+}
diff --git a/app/Services/LaporanSLAPenilaiService.php b/app/Services/LaporanSLAPenilaiService.php
new file mode 100644
index 0000000..9010ceb
--- /dev/null
+++ b/app/Services/LaporanSLAPenilaiService.php
@@ -0,0 +1,128 @@
+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()
+ ]);
+ }
+
+
+ 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(', '),
+
+ 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
+ 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '',
+ '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,
+ ]);
+ }
+}
diff --git a/app/Services/LaporanUserService.php b/app/Services/LaporanUserService.php
new file mode 100644
index 0000000..c53dd59
--- /dev/null
+++ b/app/Services/LaporanUserService.php
@@ -0,0 +1,198 @@
+whereNotNull('permohonan.nomor_registrasi')
+ ->when($search, function ($query) use ($search) {
+ $query->where('users.name', 'like', "%$search%");
+ })
+ ->select('users.id', 'users.name')
+ ->distinct()
+ ->orderBy('users.name')
+ ->limit(20)
+ ->get();
+ }
+
+
+ public function dataForDatatables(Request $request)
+ {
+
+ // 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->user_id) && !empty($search->user_id)) {
+ $query->where('user_id', $search->user_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,
+ ]);
+ }
+}
diff --git a/app/Services/RekapHarianService.php b/app/Services/RekapHarianService.php
new file mode 100644
index 0000000..de3924e
--- /dev/null
+++ b/app/Services/RekapHarianService.php
@@ -0,0 +1,63 @@
+ $jenis) {
+
+ $totalLaporanDebiture = $this->totalLaporanDebiture();
+ $totalKunjunganDebiture = $this->totalKunjunganDebiture();
+ $totalKunjunganLokasi = $this->totalKunjunganLokasi();
+
+
+ $grandTotal = [
+ 'laporan_debiture' => 0,
+ 'debiture' => 0,
+ 'lokasi' => 0,
+ 'pipeline' => 0
+ ];
+ }
+ return $grandTotal;
+
+ }
+
+
+ private function totalLaporanDebiture()
+ {
+ $query = [
+ 'jenis_penilaian_id' => 1,
+ 'total' => 2
+ ];
+ return $query;
+ }
+
+ public function totalKunjunganDebiture()
+ {
+ $query = [
+ 'jenis_penilaian_id' => 1,
+ 'total' => 2
+ ];
+ return $query;
+ }
+
+ public function totalKunjunganLokasi()
+ {
+ $query = [
+ 'jenis_penilaian_id' => 1,
+ 'total' => 2
+ ];
+ return $query;
+ }
+}
diff --git a/module.json b/module.json
index 7b1f5f6..fc81e7f 100644
--- a/module.json
+++ b/module.json
@@ -115,6 +115,122 @@
"EO Appraisal",
"senior-officer"
]
+ },
+ {
+ "title": "Rekap Harian So",
+ "path": "rekap-harian-so",
+ "icon": "ki-filled ki-filter-tablet text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "senior-officer"
+ ]
+ }, {
+ "title": "Laporan Biaya Lpj",
+ "path": "laporan-biaya",
+ "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"
+ ],
+ "sub": [
+ {
+ "title": "Intenal",
+ "path": "laporan-biaya.internal",
+ "icon": "ki-filled ki-two-credit-cart text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "pemohon-ao",
+ "pemohon-eo",
+ "admin",
+ "DD Appraisal",
+ "EO Appraisal",
+ "senior-officer"
+ ]
+ },
+ {
+ "title": "External",
+ "path": "laporan-biaya.external",
+ "icon": "ki-filled ki-two-credit-cart text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "pemohon-ao",
+ "pemohon-eo",
+ "admin",
+ "DD Appraisal",
+ "EO Appraisal",
+ "senior-officer"
+ ]
+ }
+ ]
+ },{
+ "title": "Laporan Debitur",
+ "path": "laporan-debiture",
+ "icon": "ki-filled ki-filter-tablet text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "senior-officer"
+ ]
+ },
+ {
+ "title": "Laporan User",
+ "path": "laporan-user",
+ "icon": "ki-filled ki-filter-tablet text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "senior-officer"
+ ]
+ },
+ {
+ "title": "Laporan Monitoring so",
+ "path": "laporan-monitoring",
+ "icon": "ki-filled ki-filter-tablet text-lg text-primary",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator",
+ "senior-officer"
+ ]
+ },
+ {
+ "title": "Laporan SLA Penilai",
+ "path": "laporan-sla-penilai",
+ "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/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php
new file mode 100644
index 0000000..5b71ae7
--- /dev/null
+++ b/resources/views/dashboard/index.blade.php
@@ -0,0 +1,293 @@
+@extends('layouts.main')
+
+@section('content')
+
+
+
+
+
+ Dashboard
+
+
+
+ Selamat datang, {{ auth()->user()->name }}
+
+
+
+
+
+
+
+
+ @foreach ($dashboard['count_resume'] as $status => $count)
+ @php
+
+ $gradientFrom = $status === 'batal' ? 'from-red-50' : 'from-amber-50';
+ $gradientTo = $status === 'batal' ? 'to-red-100' : 'to-amber-100';
+ $borderColor = $status === 'batal' ? 'border-red-200' : 'border-amber-200';
+ $iconBg = $status === 'batal' ? 'bg-red-500' : 'bg-amber-500';
+ $iconColor = $status === 'batal' ? 'text-red-500' : 'text-amber-500';
+ $textColor = $status === 'batal' ? 'text-red-800' : 'text-amber-800';
+ $cardTitle = $status === 'batal' ? 'Batal dari Cabang' : 'Menunggu Keputusan Cabang';
+ @endphp
+
+
+
+
+
+
+
+
+
Jabodetabek
+
+ {{ $count['jabodetabek']['count_report'] ?? 0 }}
+
+
+
+
+
+
+
+
+
+
+
Luar Jabodetabek
+
+ {{ $count['non-jabodetabek']['count_report'] ?? 0 }}
+
+
+
+
+
+
+
+
+
+
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+ |
+ Bulan
+ |
+
+ Jumlah
+ |
+
+ Akumulasi
+ |
+
+
+
+ @foreach ($dashboard['count_pendapatan'] as $month => $data)
+
+
+ |
+ {{ ucfirst($month) }}
+ |
+
+
+
+ {{ $data['total_jumlah'] ?? '-' }}
+ |
+
+
+
+ {{ $data['total_akumulasi'] ?? '-' }}
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Bulan
+ |
+
+ Jabodetabek
+ |
+
+ Luar Jabodetabek
+ |
+
+
+ |
+ Laporan
+ |
+
+ Debitur
+ |
+
+ Laporan
+ |
+
+ Debitur
+ |
+
+
+
+ @foreach ($dashboard['count_lpj_internal'] as $month => $regions)
+
+ |
+ {{ ucfirst($month) }}
+ |
+
+ {{ $regions['jabodetabek']['total_laporan'] ?? '-' }}
+ |
+
+ {{ $regions['jabodetabek']['total_debiture'] ?? '-' }}
+ |
+
+ {{ $regions['non-jabodetabek']['total_laporan'] ?? '-' }}
+ |
+
+ {{ $regions['non-jabodetabek']['total_debiture'] ?? '-' }}
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Bulan
+ |
+
+ Laporan
+ |
+
+ Debitur
+ |
+
+
+
+ @foreach ($dashboard['count_lpj_eksternal'] as $month => $data)
+
+
+ |
+ {{ ucfirst($month) }}
+ |
+
+
+
+ {{ $data['total_laporan'] ?? '-' }}
+ |
+
+
+
+ {{ $data['total_debiture'] ?? '-' }}
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/laporan-biaya/external.blade.php b/resources/views/laporan-biaya/external.blade.php
new file mode 100644
index 0000000..bc59c17
--- /dev/null
+++ b/resources/views/laporan-biaya/external.blade.php
@@ -0,0 +1,499 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-hasil-penilaian-jaminan-internal-external') }}
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/laporan-biaya/internal.blade.php b/resources/views/laporan-biaya/internal.blade.php
new file mode 100644
index 0000000..860f8cc
--- /dev/null
+++ b/resources/views/laporan-biaya/internal.blade.php
@@ -0,0 +1,499 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-hasil-penilaian-jaminan-internal-external') }}
+@endsection
+
+@section('content')
+ S
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/laporan-debiture/index.blade.php b/resources/views/laporan-debiture/index.blade.php
new file mode 100644
index 0000000..3b36763
--- /dev/null
+++ b/resources/views/laporan-debiture/index.blade.php
@@ -0,0 +1,480 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-debiture') }}
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/laporan-monitoring/index.blade.php b/resources/views/laporan-monitoring/index.blade.php
new file mode 100644
index 0000000..95ad19e
--- /dev/null
+++ b/resources/views/laporan-monitoring/index.blade.php
@@ -0,0 +1,89 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-monitoring') }}
+@endsection
+
+@section('content')
+
+@endsection
diff --git a/resources/views/laporan-monitoring/show.blade.php b/resources/views/laporan-monitoring/show.blade.php
new file mode 100644
index 0000000..ca836b7
--- /dev/null
+++ b/resources/views/laporan-monitoring/show.blade.php
@@ -0,0 +1,211 @@
+ @extends('layouts.main')
+
+ @section('breadcrumbs')
+ {{ Breadcrumbs::render(request()->route()->getName()) }}
+ @endsection
+
+ @section('content')
+
+ @endsection
+
+ @push('scripts')
+
+ @endpush
diff --git a/resources/views/laporan-sla-penilai/index.blade.php b/resources/views/laporan-sla-penilai/index.blade.php
new file mode 100644
index 0000000..1515a15
--- /dev/null
+++ b/resources/views/laporan-sla-penilai/index.blade.php
@@ -0,0 +1,295 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-sla-penilai') }}
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/laporan-user/index.blade.php b/resources/views/laporan-user/index.blade.php
new file mode 100644
index 0000000..5f2e629
--- /dev/null
+++ b/resources/views/laporan-user/index.blade.php
@@ -0,0 +1,518 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('laporan-user') }}
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+
+
+@endpush
diff --git a/resources/views/rekap-harian-so/index.blade.php b/resources/views/rekap-harian-so/index.blade.php
new file mode 100644
index 0000000..2cc100e
--- /dev/null
+++ b/resources/views/rekap-harian-so/index.blade.php
@@ -0,0 +1,58 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('rekap-harian-so') }}
+@endsection
+@section('content')
+
+@endsection
diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php
index b10d65e..e890842 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','');
+ $trail->push('Laporan', '');
});
Breadcrumbs::for('laporan.sederhana.index', function (BreadcrumbTrail $trail) {
@@ -731,11 +731,11 @@ Breadcrumbs::for('laporan-admin-kredit', function ($trail) {
$trail->push('Laporan Admin Kredit', route('laporan-admin-kredit.index'));
});
- // Laporan Admin Kredit Edit
- Breadcrumbs::for('laporan-admin-kredit-edit', function (BreadcrumbTrail $trail, $laporanAdminKredit) {
- $trail->parent('laporan-admin-kredit');
- $trail->push('Edit', route('laporan-admin-kredit.edit', $laporanAdminKredit->id));
- });
+// Laporan Admin Kredit Edit
+Breadcrumbs::for('laporan-admin-kredit-edit', function (BreadcrumbTrail $trail, $laporanAdminKredit) {
+ $trail->parent('laporan-admin-kredit');
+ $trail->push('Edit', route('laporan-admin-kredit.edit', $laporanAdminKredit->id));
+});
Breadcrumbs::for('bank-data', function ($trail) {
$trail->push('Bank Data', route('bank-data.index'));
@@ -746,20 +746,45 @@ Breadcrumbs::for('laporan-penilai-jaminan', function ($trail) {
$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-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-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'));
- });
+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'));
+});
+Breadcrumbs::for('rekap-harian-so', function ($trail) {
+ $trail->push('Rekap Harian');
+});
+
+
+Breadcrumbs::for('laporan-user', function ($trail) {
+ $trail->push('Laporan User Pemohonan', route('laporan-user.index'));
+});
+
+Breadcrumbs::for('laporan-monitoring', function ($trail) {
+ $trail->push('Laporan Monitoring', route('laporan-monitoring.index'));
+});
+
+Breadcrumbs::for('laporan-monitoring.show', function ($trail) {
+ $trail->parent('laporan-monitoring');
+ $trail->push('Detail');
+});
+
+Breadcrumbs::for('laporan-debiture', function ($trail) {
+ $trail->push('Laporan Debiture', route('laporan-debiture.index'));
+});
+
+Breadcrumbs::for('laporan-sla-penilai', function ($trail) {
+ $trail->push('Laporan SLA Penilai', route('laporan-sla-penilai.index'));
+});
// add andy
require __DIR__ . '/breadcrumbs_registrasi.php';
diff --git a/routes/web.php b/routes/web.php
index 14fd007..76e0df1 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -22,11 +22,11 @@ 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\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;
use Modules\Lpj\Http\Controllers\PembatalanController;
use Modules\Lpj\Http\Controllers\PemilikJaminanController;
@@ -44,6 +44,14 @@ use Modules\Lpj\Http\Controllers\TenderController;
use Modules\Lpj\Http\Controllers\TujuanPenilaianController;
use Modules\Lpj\Http\Controllers\TujuanPenilaianKJPPController;
use Modules\Lpj\Http\Controllers\LaporanPenilaiJaminanController;
+use Modules\Lpj\Http\Controllers\RekapHarianSoController;
+use Modules\Lpj\Http\Controllers\LaporanBiayaInternalExternalController;
+use Modules\Lpj\Http\Controllers\LaporanMonitoringSoController;
+use Modules\Lpj\Http\Controllers\LaporanDebitureController;
+use Modules\Lpj\Http\Controllers\LaporanUserController;
+use Modules\Lpj\Http\Controllers\LaporanSLAPenilaiController;
+
+
// use Modules\Lpj\Http\Controllers\ActivityController;
@@ -661,7 +669,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('noc/pembayaran', [NocController::class, 'pembayaran'])->name('noc.pembayaran.index');
Route::get('noc/penyelesaian', [NocController::class, 'penyelesaian'])->name('noc.penyelesaian.index');
- Route::post('noc/penyelesaian',[NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian');
+ Route::post('noc/penyelesaian', [NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian');
Route::resource('noc', NocController::class);
@@ -685,6 +693,7 @@ Route::middleware(['auth'])->group(function () {
Route::put('{id}', [LaporanAdminKreditController::class,'update'])->name('update');
});
+
Route::name('bank-data.')->prefix('bank-data')->group(function () {
Route::get('datatables', [BankDataController::class, 'dataForDatatables'])->name('datatables');
});
@@ -697,7 +706,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('export', [LaporanPenilaiJaminanController::class, 'export'])->name('export');
});
- Route::prefix('laporan-permohonan')->name('laporan-permohonan.')->group(function() {
+ Route::prefix('laporan-permohonan')->name('laporan-permohonan.')->group(function () {
Route::get('datatables', [LaporanPermohonanController::class, 'dataForDatatables'])->name('data');
Route::get('export', [LaporanPermohonanController::class, 'export'])->name('export');
Route::get('/', [LaporanPermohonanController::class, 'index'])->name('index');
@@ -710,18 +719,53 @@ Route::middleware(['auth'])->group(function () {
Route::get('/export', [LaporanPembatalanController::class, 'export'])->name('export');
});
- Route::prefix('laporan-penilaian-jaminan')->name('laporan-penilaian-jaminan.')->group(function() {
+ 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::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');
});
+ // rekap harian so
+ Route::resource('rekap-harian-so', RekapHarianSoController::class);
+
+ // laporan biaya
+ Route::prefix('laporan-biaya')->name('laporan-biaya.')->group(function () {
+ Route::get('internal', [LaporanBiayaInternalExternalController::class, 'showLaporanBiayaInternal'])->name('internal.index');
+ Route::get('external', [LaporanBiayaInternalExternalController::class, 'showLaporanBiayaExternal'])->name('external.index');
+ });
+
+ // laporan user
+ Route::prefix('laporan-user')->name('laporan-user.')->group(function () {
+ Route::get('/', [LaporanUserController::class, 'index'])->name('index');
+ Route::get('api/user-pemohon', [LaporanUserController::class, 'searchUserPemohon'])->name('api.user-pemohon');
+ Route::get('datatables', [LaporanUserController::class, 'dataTableForUserPemohon'])->name('datatables');
+ });
+
+ // laporan monitoring
+ Route::prefix('laporan-monitoring')->name('laporan-monitoring.')->group(function () {
+ Route::get('/', [LaporanMonitoringSoController::class, 'index'])->name('index');
+ Route::get('/{id}/detail', [LaporanMonitoringSoController::class, 'show'])->name('show');
+ Route::get('datatables/{id}', [LaporanMonitoringSoController::class, 'dataForDatatablePenilai'])->name('datatables');
+ });
+
+ // laporan debiture
+ Route::prefix('laporan-debiture')->name('laporan-debiture.')->group(function () {
+ Route::get('/', [LaporanDebitureController::class, 'index'])->name('index');
+ Route::get('datatables', [LaporanDebitureController::class, 'dataTableForDebiture'])->name('datatables');
+ });
+
+ // laporan sla
+ Route::prefix('laporan-sla-penilai')->name('laporan-sla-penilai.')->group(function () {
+ Route::get('/', [LaporanSLAPenilaiController::class, 'index'])->name('index');
+ Route::get('datatables', [LaporanSLAPenilaiController::class, 'dataForDatatableSLaPenilai'])->name('datatables');
+ });
+
});
require __DIR__ . '/registrasi.php';