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 @@
-
- - - - - - - - - - - - - - - -
#UnitSub UnitFolderJumlah
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 SuratFileKategoriUnitSub 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 @@