diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
index 7018669..74fe837 100644
--- a/app/Http/Controllers/DashboardController.php
+++ b/app/Http/Controllers/DashboardController.php
@@ -20,29 +20,90 @@ use ZipArchive;
use function PHPUnit\Framework\isEmpty;
+class PdfFpdiWithAlpha extends Fpdi
+{
+ protected array $extgstates = [];
+
+ public function SetAlpha(float $alpha, string $blendMode = 'Normal'): void
+ {
+ $alpha = max(0.0, min(1.0, $alpha));
+ $gs = $this->AddExtGState([
+ 'ca' => $alpha,
+ 'CA' => $alpha,
+ 'BM' => '/' . $blendMode
+ ]);
+ $this->SetExtGState($gs);
+ }
+
+ protected function AddExtGState(array $parms): int
+ {
+ $n = count($this->extgstates) + 1;
+ $this->extgstates[$n]['parms'] = $parms;
+ return $n;
+ }
+
+ protected function SetExtGState(int $gs): void
+ {
+ $this->_out(sprintf('/GS%d gs', $gs));
+ }
+
+ protected function _putextgstates(): void
+ {
+ foreach ($this->extgstates as $i => $extgstate) {
+ $this->_newobj();
+ $this->extgstates[$i]['n'] = $this->n;
+ $this->_put('< $v) {
+ $this->_put('/' . $k . ' ' . $v);
+ }
+ $this->_put('>>');
+ $this->_put('endobj');
+ }
+ }
+
+ protected function _putresourcedict(): void
+ {
+ parent::_putresourcedict();
+ if (empty($this->extgstates)) {
+ return;
+ }
+ $this->_put('/ExtGState <<');
+ foreach ($this->extgstates as $k => $extgstate) {
+ $this->_put('/GS' . $k . ' ' . $extgstate['n'] . ' 0 R');
+ }
+ $this->_put('>>');
+ }
+
+ protected function _putresources(): void
+ {
+ $this->_putextgstates();
+ parent::_putresources();
+ }
+}
+
class DashboardController extends Controller
{
- public function index(){
- $katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
- $klasifikasiDok = MasterKlasifikasi::where('statusenabled', true)->select('master_klasifikasi_directory_id', 'nama_klasifikasi_directory')->get();
- $prefillFilter = session()->pull('dashboard_prefill');
+ // public function index(){
+ // $katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
+ // $klasifikasiDok = MasterKlasifikasi::where('statusenabled', true)->select('master_klasifikasi_directory_id', 'nama_klasifikasi_directory')->get();
+ // $prefillFilter = session()->pull('dashboard_prefill');
- $authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
- $authUnitKerja = $authMapping->objectunitkerjapegawaifk;
- $authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
+ // $authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
+ // $authUnitKerja = $authMapping->objectunitkerjapegawaifk;
+ // $authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
- $allAkses = AksesFile::where(['statusenabled' => true, 'pegawai_id' => auth()->user()?->dataUser->id])->first();
- $payload = [
- 'title' => 'Dashboard',
- 'katDok' => $katDok,
- 'klasifikasiDok' => $klasifikasiDok,
- 'authUnitKerja' => $authUnitKerja,
- 'authSubUnitKerja' => $authSubUnitKerja,
- 'allAkses' => $allAkses ?? null,
- 'prefillFilter' => $prefillFilter
- ];
- return view('dashboard.index', $payload);
- }
+ // $allAkses = AksesFile::where(['statusenabled' => true, 'pegawai_id' => auth()->user()?->dataUser->id])->first();
+ // $payload = [
+ // 'title' => 'Dashboard',
+ // 'katDok' => $katDok,
+ // 'klasifikasiDok' => $klasifikasiDok,
+ // 'authUnitKerja' => $authUnitKerja,
+ // 'authSubUnitKerja' => $authSubUnitKerja,
+ // 'allAkses' => $allAkses ?? null,
+ // 'prefillFilter' => $prefillFilter
+ // ];
+ // return view('dashboard.index', $payload);
+ // }
public function setDashboardPrefill(Request $request)
{
@@ -63,6 +124,55 @@ class DashboardController extends Controller
]);
}
+ public function index(){
+ $katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
+ $authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
+ $authUnitKerja = $authMapping->objectunitkerjapegawaifk;
+ $authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
+ $data = [
+ 'title' => 'Dashboard',
+ 'katDok' => $katDok,
+ 'authUnitKerja' => $authUnitKerja,
+ 'authSubUnitKerja' => $authSubUnitKerja,
+ ];
+ return view('dataUnit.index', $data);
+ }
+
+ public function dataUnitInternal(){
+ $perPage = (int) request('per_page', 10);
+ $authUnitId = auth()->user()->dataUser?->mappingUnitKerjaPegawai[0]?->objectunitkerjapegawaifk;
+ $keyword = request('keyword');
+ $query = FileDirectory::where('statusenabled', true)
+ ->where(function($subQuery){
+ $subQuery->where('status_action', '!=', 'rejected')->whereNotNull('status_action');
+ })
+ ->where('id_unit_kerja', $authUnitId)->where('permission_file', false)
+ ->when($keyword, function ($q) use ($keyword) {
+ $q->where(function ($sub) use ($keyword) {
+ $sub->where('file', 'ILIKE', "%{$keyword}%")
+ ->orWhere('no_dokumen', 'ILIKE', "%{$keyword}%");
+ });
+ });
+
+ $data = $query->orderBy('entry_at', 'desc')
+ ->paginate($perPage);
+
+ $payload = [
+ 'status' => true,
+ 'message' => 'Berhasil mendapatkan data',
+ 'data' => $data->items(),
+ 'pagination' => [
+ 'current_page' => $data->currentPage(),
+ 'next_page' => $data->hasMorePages() ? $data->currentPage() + 1 : null,
+ 'has_more' => $data->hasMorePages(),
+ 'last_page' => $data->lastPage(),
+ 'per_page' => $data->perPage(),
+ 'total' => $data->total(),
+ ]
+ ];
+ return response()->json($payload);
+ }
+
public function dataUnitKerja(){
$user = auth()->user()?->dataUser;
$entryPegawaiId = auth()->user()?->objectpegawaifk;
@@ -459,7 +569,7 @@ class DashboardController extends Controller
}
- public function dashboardVersion2(){
+ public function dataUmum(){
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
$authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
$authUnitKerja = $authMapping->objectunitkerjapegawaifk;
@@ -470,7 +580,7 @@ class DashboardController extends Controller
'authUnitKerja' => $authUnitKerja,
'authSubUnitKerja' => $authSubUnitKerja,
];
- return view('dashboardV2.index', $data);
+ return view('dataUmum.index', $data);
}
public function dataDocumentLast(){
@@ -643,8 +753,9 @@ class DashboardController extends Controller
private function watermarkCenterAndStream(string $pdfPath, string $stampFile)
{
- $pdf = new Fpdi();
+ $pdf = new PdfFpdiWithAlpha();
$pageCount = $pdf->setSourceFile($pdfPath);
+ $opacity = $this->getWatermarkOpacity();
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
$tplId = $pdf->importPage($pageNo);
@@ -660,7 +771,9 @@ class DashboardController extends Controller
$x = ($size['width'] - $stampW) / 2;
$y = ($size['height'] - $stampH) / 2;
+ $pdf->SetAlpha($opacity);
$pdf->Image($stampFile, $x, $y, $stampW, $stampH);
+ $pdf->SetAlpha(1);
}
$output = $pdf->Output('S');
@@ -706,8 +819,9 @@ class DashboardController extends Controller
private function watermarkCenterToFile(string $pdfPath, string $stampFile, string $outputPath): void
{
- $pdf = new Fpdi();
+ $pdf = new PdfFpdiWithAlpha();
$pageCount = $pdf->setSourceFile($pdfPath);
+ $opacity = $this->getWatermarkOpacity();
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
$tplId = $pdf->importPage($pageNo);
@@ -722,12 +836,19 @@ class DashboardController extends Controller
$x = ($size['width'] - $stampW) / 2;
$y = ($size['height'] - $stampH) / 2;
+ $pdf->SetAlpha($opacity);
$pdf->Image($stampFile, $x, $y, $stampW, $stampH);
+ $pdf->SetAlpha(1);
}
$pdf->Output($outputPath, 'F');
}
+ private function getWatermarkOpacity(): float
+ {
+ return 0.2;
+ }
+
private function cleanupTempFiles(array $tempFiles): void
{
foreach ($tempFiles as $file) {
diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php
index a3a8908..992572b 100644
--- a/resources/views/dashboard/index.blade.php
+++ b/resources/views/dashboard/index.blade.php
@@ -280,7 +280,9 @@
});
}
-
+ if(e.target.matches('#btn-view-full')){
+ window.open(`/file-preview/${idDirectory}`, '_blank');
+ }
});
diff --git a/resources/views/dashboard/modal/view.blade.php b/resources/views/dashboard/modal/view.blade.php
index bf83862..5789117 100644
--- a/resources/views/dashboard/modal/view.blade.php
+++ b/resources/views/dashboard/modal/view.blade.php
@@ -13,9 +13,9 @@
-
--}}
diff --git a/resources/views/dashboard/recap.blade.php b/resources/views/dashboard/recap.blade.php
index 03c5a01..8a73ba0 100644
--- a/resources/views/dashboard/recap.blade.php
+++ b/resources/views/dashboard/recap.blade.php
@@ -9,150 +9,12 @@
Rekap Dokumen
Ringkasan jumlah file per Unit dan Folder
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- | # |
- Unit |
- Sub Unit |
- Folder |
- Jumlah |
-
-
-
-
- | Memuat data... |
-
-
-
-
-
+ @include('dataUnit.section.recap', ['showRecapTitle' => false])
@endsection
-
-
diff --git a/resources/views/dataUmum/index.blade.php b/resources/views/dataUmum/index.blade.php
new file mode 100644
index 0000000..26d4eb8
--- /dev/null
+++ b/resources/views/dataUmum/index.blade.php
@@ -0,0 +1,869 @@
+@extends('layout.main')
+
+@section('body_main')
+
+
+
+
+
+
+
+
Data Unit
+
+
+
+
+
+
+
+
+
+
+
+
+
Memuat data...
+
+
+
+
+
+ | Nomor Surat |
+ File |
+ Kategori |
+ Unit |
+ Sub Unit |
+ Tanggal Upload |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @include('dataUmum.modal.create')
+ @include('dataUmum.modal.view')
+
+@endsection
diff --git a/resources/views/dashboardV2/modal/create.blade.php b/resources/views/dataUmum/modal/create.blade.php
similarity index 100%
rename from resources/views/dashboardV2/modal/create.blade.php
rename to resources/views/dataUmum/modal/create.blade.php
diff --git a/resources/views/dashboardV2/modal/view.blade.php b/resources/views/dataUmum/modal/view.blade.php
similarity index 94%
rename from resources/views/dashboardV2/modal/view.blade.php
rename to resources/views/dataUmum/modal/view.blade.php
index bf83862..5789117 100644
--- a/resources/views/dashboardV2/modal/view.blade.php
+++ b/resources/views/dataUmum/modal/view.blade.php
@@ -13,9 +13,9 @@
-
--}}
diff --git a/resources/views/dashboardV2/index.blade.php b/resources/views/dataUnit/index.blade.php
similarity index 78%
rename from resources/views/dashboardV2/index.blade.php
rename to resources/views/dataUnit/index.blade.php
index 7c04cae..a81aaf9 100644
--- a/resources/views/dashboardV2/index.blade.php
+++ b/resources/views/dataUnit/index.blade.php
@@ -1,96 +1,199 @@
@extends('layout.main')
@section('body_main')
- @include('dashboardV2.modal.create')
- @include('dashboardV2.modal.view')
+ @include('dataUnit.modal.create')
+ @include('dataUnit.modal.view')
diff --git a/resources/views/layout/partials/sidenav.blade.php b/resources/views/layout/partials/sidenav.blade.php
index a6f5b53..6d52951 100644
--- a/resources/views/layout/partials/sidenav.blade.php
+++ b/resources/views/layout/partials/sidenav.blade.php
@@ -22,17 +22,23 @@
{{-- HOME --}}
- --}}
+
@@ -75,7 +81,7 @@
@endif
{{-- RECAP --}}
-
+ {{--
-
+ --}}
{{-- MASTER --}}
@if(auth()->user()->akses && auth()->user()->akses->master_akses)
@@ -138,6 +144,28 @@
.sidebar-submenu { padding-left: 2.7rem; }
.sidebar-submenu .sidebar-link { padding: 6px 0; font-size: 13px; opacity: .9; }
+ .sidebar-item .sidebar-link {
+ border-radius: 10px;
+ transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
+ }
+
+ .sidebar-item .sidebar-link:hover,
+ .sidebar-item .sidebar-link:focus {
+ background: #eef2ff;
+ color: #1e40af;
+ box-shadow: 0 8px 18px rgba(30, 64, 175, 0.12);
+ }
+
+ .sidebar-item .sidebar-link:focus-visible {
+ outline: 2px solid rgba(59, 130, 246, 0.6);
+ outline-offset: 2px;
+ }
+
+ .sidebar-item .sidebar-link:hover i,
+ .sidebar-item .sidebar-link:focus i {
+ color: #1e40af;
+ }
+
.sidebar-item.has-sub .sidebar-arrow { transition: transform .2s ease; }
.sidebar-item.has-sub.open .sidebar-arrow { transform: rotate(90deg); }
@@ -185,4 +213,3 @@
});
}
-
diff --git a/routes/web.php b/routes/web.php
index d4d46f6..1cc0b29 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -12,8 +12,9 @@ use Illuminate\Support\Facades\Route;
Route::middleware(['auth'])->group(function(){
Route::get('/', [DashboardController::class, 'index']);
- Route::get('/new', [DashboardController::class, 'dashboardVersion2']);
- Route::get('/last-document', [DashboardController::class, 'dataDocumentLast']);
+ Route::get('/data-internal', [DashboardController::class, 'dataUnitInternal']);
+ Route::get('/data-umum', [DashboardController::class, 'dataUmum']);
+ Route::get('/datatable-umum', [DashboardController::class, 'dataDocumentLast']);
Route::post('/uploadv2', [DashboardController::class, 'storeVersion2']);
Route::get('/file-preview/{id}', [DashboardController::class, 'dataPdf']);
Route::post('/upload', [DashboardController::class, 'store']);