addAws #2
@ -1084,25 +1084,23 @@ class DashboardController extends Controller
|
||||
'action_by' => $status && $status === "approved" ? auth()->user()->objectpegawaifk : null,
|
||||
'action_at' => $status && $status === "approved" ? now() : null
|
||||
];
|
||||
$imageName = trim((string) $uploadedFile->getClientOriginalName());
|
||||
if ($imageName === '') {
|
||||
$ext = $uploadedFile->getClientOriginalExtension();
|
||||
$imageName = $ext ? (Str::uuid()->toString() . '.' . $ext) : Str::uuid()->toString();
|
||||
}
|
||||
$fd = FileDirectory::create($payload);
|
||||
$path = "{$nama_unit_kerja}/{$nama_sub_unit_kerja}/{$nama_kategori}";
|
||||
$disk = Storage::disk('s3');
|
||||
|
||||
$imageName = $this->buildStoredFileName(
|
||||
$fd->nama_dokumen ?? null,
|
||||
$fd->file_directory_id,
|
||||
$uploadedFile->getClientOriginalExtension()
|
||||
);
|
||||
$disk->putFileAs(
|
||||
$path,
|
||||
$uploadedFile,
|
||||
$imageName,
|
||||
['visibility' => 'private'] // atau 'public'
|
||||
['visibility' => 'private']
|
||||
);
|
||||
|
||||
$payload['file'] = $path . '/' . $imageName;
|
||||
|
||||
|
||||
$fd = FileDirectory::create($payload);
|
||||
$fd->update([
|
||||
'file' => $path . '/' . $imageName
|
||||
]);
|
||||
|
||||
if(!$isAtasan){
|
||||
$uploaderName = auth()->user()?->dataUser?->namalengkap ?? 'Pengguna';
|
||||
@ -1441,7 +1439,7 @@ class DashboardController extends Controller
|
||||
}
|
||||
|
||||
public function pendingFile(){
|
||||
return view('pendingFile.index', ['title' => 'Data Pending']);
|
||||
return view('pendingFile.index', ['title' => 'Data Persetujuan']);
|
||||
}
|
||||
|
||||
public function dataPendingFile(){
|
||||
@ -1825,7 +1823,7 @@ class DashboardController extends Controller
|
||||
->select('master_kategori_directory_id', 'nama_kategori_directory')
|
||||
->get();
|
||||
return view('pengajuanFile.index', [
|
||||
'title' => 'Data Pending',
|
||||
'title' => 'Data Persetujuan',
|
||||
'katDok' => $katDok
|
||||
]);
|
||||
}
|
||||
@ -1984,7 +1982,14 @@ class DashboardController extends Controller
|
||||
if ($targetUnit && $targetSub && $targetKategori) {
|
||||
$folderPath = "{$targetUnit}/{$targetSub}/{$targetKategori}";
|
||||
}
|
||||
$imageName = $uploadedFile->getClientOriginalName();
|
||||
$namaDokumenForFile = array_key_exists('nama_dokumen', $payload)
|
||||
? $payload['nama_dokumen']
|
||||
: $data->nama_dokumen;
|
||||
$imageName = $this->buildStoredFileName(
|
||||
$namaDokumenForFile,
|
||||
$data->file_directory_id,
|
||||
$uploadedFile->getClientOriginalExtension()
|
||||
);
|
||||
$path = $folderPath ? "{$folderPath}" : '';
|
||||
$disk = Storage::disk('s3');
|
||||
$oldFile = $data->file;
|
||||
@ -1998,6 +2003,32 @@ class DashboardController extends Controller
|
||||
if ($oldFile && $oldFile !== $payload['file'] && $disk->exists($oldFile)) {
|
||||
$disk->delete($oldFile);
|
||||
}
|
||||
} elseif (array_key_exists('nama_dokumen', $payload)) {
|
||||
$oldFile = (string) $data->file;
|
||||
$fileInfo = pathinfo($oldFile);
|
||||
$folderPath = $fileInfo['dirname'] ?? '';
|
||||
if ($folderPath === '.' || $folderPath === DIRECTORY_SEPARATOR) {
|
||||
$folderPath = '';
|
||||
}
|
||||
$currentExt = $fileInfo['extension'] ?? null;
|
||||
$newFileName = $this->buildStoredFileName(
|
||||
$payload['nama_dokumen'],
|
||||
$data->file_directory_id,
|
||||
$currentExt
|
||||
);
|
||||
$newFilePath = ($folderPath ? $folderPath . '/' : '') . $newFileName;
|
||||
|
||||
if ($oldFile !== '' && $oldFile !== $newFilePath) {
|
||||
$disk = Storage::disk('s3');
|
||||
if ($disk->exists($oldFile)) {
|
||||
if ($disk->exists($newFilePath)) {
|
||||
$disk->delete($newFilePath);
|
||||
}
|
||||
$disk->copy($oldFile, $newFilePath);
|
||||
$disk->delete($oldFile);
|
||||
$payload['file'] = $newFilePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
$payload['status_action'] = 'revised';
|
||||
|
||||
@ -2036,7 +2067,7 @@ class DashboardController extends Controller
|
||||
|
||||
$payloadLog = [
|
||||
'file_directory_id' => $data->file_directory_id,
|
||||
'pegawai_id_entry' => $data->pegawai_nama_entry,
|
||||
'pegawai_id_entry' => $data->pegawai_id_entry,
|
||||
'pegawai_nama_entry' => $data->pegawai_nama_entry,
|
||||
'entry_at' => now(),
|
||||
'file' => $data->file,
|
||||
@ -2064,6 +2095,22 @@ class DashboardController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
private function buildStoredFileName(?string $namaDokumen, $fileDirectoryId, ?string $extension = null): string
|
||||
{
|
||||
$id = trim((string) $fileDirectoryId);
|
||||
$rawNama = trim((string) ($namaDokumen ?? ''));
|
||||
if ($rawNama !== '') {
|
||||
$safeNama = preg_replace('/[^A-Za-z0-9_-]+/', '_', $rawNama);
|
||||
$safeNama = trim((string) $safeNama, '_');
|
||||
$baseName = ($safeNama !== '' ? $safeNama : $id) . '_' . $id;
|
||||
} else {
|
||||
$baseName = $id;
|
||||
}
|
||||
|
||||
$ext = strtolower(trim((string) ($extension ?? '')));
|
||||
return $ext !== '' ? "{$baseName}.{$ext}" : $baseName;
|
||||
}
|
||||
|
||||
// public function historyPengajuan(){
|
||||
// $data = FileDirectory::where('statusenabled', true)->where('pegawai_id_entry', auth()->user()->objectpegawaifk)->get();
|
||||
// return $data;
|
||||
|
||||
@ -316,7 +316,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
});
|
||||
}
|
||||
if (titleEl) {
|
||||
titleEl.textContent = tableState.mode === 'history' ? 'Log History' : 'Data Pending';
|
||||
titleEl.textContent = tableState.mode === 'history' ? 'Log History' : 'Data Persetujuan';
|
||||
}
|
||||
if (tabPendingEl && tabHistoryEl) {
|
||||
tabPendingEl.classList.toggle('d-none', tableState.mode === 'history');
|
||||
|
||||
@ -97,7 +97,7 @@
|
||||
</li> --}}
|
||||
|
||||
{{-- MASTER --}}
|
||||
@if(auth()->user()->akses && auth()->user()->akses->master_akses)
|
||||
@if(auth()->user()->dataUser->mappingUnitKerjaPegawai()->where('objectunitkerjapegawaifk', 43)->exists())
|
||||
<li class="nav-small-cap"><span class="hide-menu">Master</span></li>
|
||||
|
||||
<li class="sidebar-item has-sub {{ $openMaster ? 'open' : '' }}">
|
||||
|
||||
@ -5,12 +5,12 @@
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex align-items-center justify-content-between">
|
||||
<h4 class="mb-0" id="pendingTitle">Data Pending</h4>
|
||||
<h4 class="mb-0" id="pendingTitle">Data Persetujuan</h4>
|
||||
</div>
|
||||
<div class="card-body p-3">
|
||||
<ul class="nav nav-tabs mb-3" id="pengajuanTabs">
|
||||
<li class="nav-item">
|
||||
<button class="nav-link active" type="button" data-mode="pengajuan">Data Pending</button>
|
||||
<button class="nav-link active" type="button" data-mode="pengajuan">Data Persetujuan</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link" type="button" data-mode="history">Log History</button>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user