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/RekapHarianSoController.php b/app/Http/Controllers/RekapHarianSoController.php new file mode 100644 index 0000000..8d1a7ed --- /dev/null +++ b/app/Http/Controllers/RekapHarianSoController.php @@ -0,0 +1,67 @@ +getTotalLpjInternal($start_date, $end_date); + $countLpjExternal = $this->getTotalLpjEksternal($start_date, $end_date); + $countResume = $this->getResumeCabang($start_date, $end_date); + + return [ + 'count_lpj_internal' => $countLpjInternal, + 'count_lpj_eksternal' => $countLpjExternal, + 'count_resume' => $countResume + ]; + + } + + + + 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(); + + + + $data[$month][$region] = [ + 'total_laporan' => $totalLaporan, + 'total_debiture' => 20, + ]; + } + } + } + return $data; + } + + + + public function getPendapatanAppraisal() + { + + } + + 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 = Laporan::where('created_at', '>=', $start_date)->where('created_at', '<=', $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(); + $data[$month] = [ + 'total_laporan' => $totalLaporan, + 'total_debiture' => 20, + ]; + } + } + 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/module.json b/module.json index bf9626d..221879c 100644 --- a/module.json +++ b/module.json @@ -115,6 +115,18 @@ "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" + ] } ], "otorisator": [ diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php new file mode 100644 index 0000000..8fb0a68 --- /dev/null +++ b/resources/views/dashboard/index.blade.php @@ -0,0 +1,369 @@ +@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 + +
+
+
+
+ +
+

{{ $cardTitle }}

+
+
+
+
+
+
+
+

Jabodetabek

+ + {{ $count['jabodetabek']['count_report'] ?? 0 }} + +
+
+ +
+
+
+
+
+
+

Luar Jabodetabek

+ + {{ $count['non-jabodetabek']['count_report'] ?? 0 }} + +
+
+ +
+
+
+
+
+
+ @endforeach + +
+ +
+
+
+
+
+ +
+

Pendapatan Appraisal

+
+ +
+
+
+
+ +
+
+
+ + +
+ +
+
+
+
+ +
+

Laporan Internal

+
+
+
+
+ + + + + + + + + + + + + + + + @foreach ($dashboard['count_lpj_internal'] as $month => $regions) + + + + + + + + @endforeach + + +
+ Bulan + + Jabodetabek + + Luar Jabodetabek +
+ Laporan + + Debitur + + Laporan + + Debitur +
+ {{ ucfirst($month) }} + + {{ $regions['jabodetabek']['total_laporan'] ?? '-' }} + + {{ $regions['jabodetabek']['total_debiture'] ?? '-' }} + + {{ $regions['non-jabodetabek']['total_laporan'] ?? '-' }} + + {{ $regions['non-jabodetabek']['total_debiture'] ?? '-' }} +
+
+
+
+ + +
+
+
+
+ +
+

Laporan Eksternal

+
+
+
+
+ + + + + + + + + + @foreach ($dashboard['count_lpj_eksternal'] as $month => $data) + + + + + + + + + + + @endforeach + + +
+ Bulan + + Laporan + + Debitur +
+ {{ ucfirst($month) }} + + {{ $data['total_laporan'] ?? '-' }} + + {{ $data['total_debiture'] ?? '-' }} +
+
+
+
+
+
+ + + + + + + +@endsection 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..85f0930 --- /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') +
+
+
+

+ Rekap Harian {{ date('Y-m-d') }} +

+
+
+
+ + + + + + + + + + + + + + + @foreach ($tujuan_penilaian as $jenis) + + + + + + + + @endforeach + + + + + + + + + + + + +
JenisLaporan (Debitur)KunjunganPipeline (Proses/Debitur)
DebiturLokasi
{{ $jenis->name }}{{ $jenis->laporan_debitur ?? '' }}{{ $jenis->kunjungan_debitur ?? '' }}{{ $jenis->kunjungan_lokasi ?? '' }}{{ $jenis->pipeline ?? '' }}
Lokasi
TOTAL{{ $totals['laporan_debitur'] ?? '' }}{{ $totals['kunjungan_debitur'] ?? '' }}{{ $totals['kunjungan_lokasi'] ?? '' }}{{ $totals['pipeline'] ?? '' }}
+
+
+
+
+@endsection diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 2e9f08c..00b40c4 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) { @@ -678,10 +678,10 @@ Breadcrumbs::for('noc.edit', function (BreadcrumbTrail $trail) { $trail->push('Proses NOC'); }); - Breadcrumbs::for('noc.penyelesaian', function (BreadcrumbTrail $trail) { - $trail->parent('noc'); - $trail->push('Proses Memo Penyelesaian NOC'); - }); +Breadcrumbs::for('noc.penyelesaian', function (BreadcrumbTrail $trail) { + $trail->parent('noc'); + $trail->push('Proses Memo Penyelesaian NOC'); +}); Breadcrumbs::for('laporan-external', function (BreadcrumbTrail $trail) { $trail->push('Laporan External', route('laporan-external.index')); @@ -724,11 +724,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')); @@ -739,20 +739,24 @@ 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'); +}); // add andy require __DIR__ . '/breadcrumbs_registrasi.php'; diff --git a/routes/web.php b/routes/web.php index d04fe9a..4dfbe61 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,7 @@ 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\ActivityController; @@ -654,8 +655,8 @@ Route::middleware(['auth'])->group(function () { Route::get('noc/datatables', [NocController::class, 'dataForDatatables']) ->name('noc.datatables'); - Route::get('noc/penyelesaian',[NocController::class, 'show'])->name('noc.penyelesaian'); - Route::post('noc/penyelesaian',[NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian'); + Route::get('noc/penyelesaian', [NocController::class, 'show'])->name('noc.penyelesaian'); + Route::post('noc/penyelesaian', [NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian'); Route::resource('noc', NocController::class); @@ -680,6 +681,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'); }); @@ -692,7 +694,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'); @@ -705,18 +707,19 @@ 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'); }); + Route::resource('rekap-harian-so', RekapHarianSoController::class); }); require __DIR__ . '/registrasi.php';