diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 7dadd27..81da6d0 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -967,12 +967,30 @@ class DashboardController extends Controller $keyword = request('keyword'); $start = request('start_date'); $end = request('end_date'); - $authUnit = auth()->user()->masterPersetujuan->details->pluck('unit_pegawai_id')->unique()->toArray(); + // $authUnit = auth()->user()->masterPersetujuan->details->pluck('unit_pegawai_id')->unique()->toArray(); + + // $query = FileDirectory::where('statusenabled', true)->where(function($q){ + // $q->where('status_action', '!=', 'approved') + // ->orWhereNull('status_action'); + // })->whereIn('id_unit_kerja', $authUnit)->orderBy('entry_at','desc'); + $mapping = MappingUnitKerjaPegawai::where('statusenabled', true) + // ->where('objectatasanlangsungfk', auth()->user()->dataUser->id) + ->where('objectatasanlangsungfk', 22924) + ->get(['objectpegawaifk']); + $objectpegawaifk = $mapping->pluck('objectpegawaifk') + ->values() + ->all(); + $keyword = request('keyword'); + $query = FileDirectory::where('statusenabled', true) + ->where('status_action', '!=', 'approved') + ->whereIn('pegawai_id_entry', $objectpegawaifk) + ->when($keyword, function ($q) use ($keyword) { + $q->where(function ($sub) use ($keyword) { + $sub->where('file', 'ILIKE', "%{$keyword}%") + ->orWhere('no_dokumen', 'ILIKE', "%{$keyword}%"); + }); + }); - $query = FileDirectory::where('statusenabled', true)->where(function($q){ - $q->where('status_action', '!=', 'approved') - ->orWhereNull('status_action'); - })->whereIn('id_unit_kerja', $authUnit)->orderBy('entry_at','desc'); if($keyword){ $query->where(function($q) use ($keyword){ $q->where('file', 'ILIKE', "%{$keyword}%") @@ -1114,10 +1132,20 @@ class DashboardController extends Controller public function countDataPending(){ try { - $query = FileDirectory::where('statusenabled', true) - ->whereNull('status_action'); - $authUnit = auth()->user()->masterPersetujuan->details->pluck('unit_pegawai_id')->unique()->toArray(); - $count= $query->whereIn('id_unit_kerja', $authUnit)->count(); + $mapping = MappingUnitKerjaPegawai::where('statusenabled', true) + // ->where('objectatasanlangsungfk', auth()->user()->dataUser->id) + ->where('objectatasanlangsungfk', 22924) + ->get(['objectpegawaifk']); + $objectpegawaifk = $mapping->pluck('objectpegawaifk') + ->values() + ->all(); + $count = FileDirectory::where('statusenabled', true)->whereIn('pegawai_id_entry', $objectpegawaifk) + ->where(function($q){ + $q->whereNotIn('status_action', ['approved', 'rejected'])->orWhereNull('status_action'); + })->count(); + // $authUnit = auth()->user()->masterPersetujuan->details->pluck('unit_pegawai_id')->unique()->toArray(); + // $count= $query->whereIn('id_unit_kerja', $authUnit)->count(); + // $count = $query-> return response()->json([ 'status' => true, 'count' => $count, diff --git a/app/Http/Controllers/LogActivityController.php b/app/Http/Controllers/LogActivityController.php index fe3703f..f7a2a14 100644 --- a/app/Http/Controllers/LogActivityController.php +++ b/app/Http/Controllers/LogActivityController.php @@ -3,7 +3,10 @@ namespace App\Http\Controllers; use App\Models\LogActivity; +use App\Models\MappingUnitKerjaPegawai; +use App\Models\FileDirectory; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class LogActivityController extends Controller { @@ -19,20 +22,25 @@ class LogActivityController extends Controller $keyword = request('keyword'); $start = request('start_date'); $end = request('end_date'); + $mapping = MappingUnitKerjaPegawai::where('statusenabled', true) + ->where('objectpegawaifk', auth()->user()->dataUser->id) + ->get(['objectunitkerjapegawaifk', 'objectsubunitkerjapegawaifk']); + $unitIds = $mapping->pluck('objectunitkerjapegawaifk') + ->filter() // buang null + ->unique() + ->values() + ->all(); + $query = FileDirectory::withCount(['viewLogs as total_views' => function($q){ + $q->select(DB::raw('COUNT(DISTINCT pegawai_id_entry)')); + }]) + ->where('statusenabled', true) + ->where('status_action', 'approved') + ->whereIn('id_unit_kerja', $unitIds) + ->orderBy('entry_at','desc'); - $query = LogActivity::query() - ->orderBy('entry_at','desc'); - if(auth()->user()->masterPersetujuan){ - $authUnit = auth()->user()->masterPersetujuan->details->pluck('unit_pegawai_id')->unique()->toArray(); - $query = $query->whereIn('id_unit_kerja', $authUnit); - }else{ - $query = $query->where('pegawai_id_entry', auth()->user()->objectpegawaifk); - } if($keyword){ $query->where(function($q) use ($keyword){ - $q->where('pegawai_nama_entry', 'ILIKE', "%{$keyword}%") - ->orWhere('action_type', 'ILIKE', "%{$keyword}%") - ->orWhere('file', 'ILIKE', "%{$keyword}%") + $q->where('file', 'ILIKE', "%{$keyword}%") ->orWhere('no_dokumen', 'ILIKE', "%{$keyword}%"); }); } @@ -46,13 +54,16 @@ class LogActivityController extends Controller $paginated = $query->paginate($perPage); $data = $paginated->getCollection()->map(function($item){ + $parts = array_values(array_filter(explode('/', $item->file))); return [ - 'pegawai_nama_entry' => $item->pegawai_nama_entry, - 'action_type' => $item->action_type, - 'file' => $item->file, - 'no_dokumen' => $item->no_dokumen ?? $item->fileDirectory->no_dokumen ?? '-', + 'id' => $item->file_directory_id, + 'file' => end($parts), + 'no_dokumen' => $item->no_dokumen ?? '-', + 'unit' => $parts[0], + 'sub_unit' => $parts[1], + 'kategori' => $parts[2], 'entry_at' => $item->entry_at, - 'unit_name' => $item->unit_name ?? '-', + 'total_views' => $item->total_views ?? 0, ]; }); @@ -69,4 +80,40 @@ class LogActivityController extends Controller ] ]); } + + public function detailByFile($fileDirectoryId) + { + $perPage = max(1, (int) request('per_page', 10)); + $keyword = request('keyword'); + + $query = LogActivity::select( + 'pegawai_id_entry', + 'pegawai_nama_entry', + DB::raw('COUNT(*) as total_open'), + DB::raw('MAX(entry_at) as last_open') + ) + ->where('file_directory_id', $fileDirectoryId) + ->where('statusenabled', true) + ->where('action_type', 'Membuka Dokumen') + ->groupBy('pegawai_id_entry', 'pegawai_nama_entry') + ->orderByDesc('total_open'); + + if($keyword){ + $query->havingRaw('pegawai_nama_entry ILIKE ?', ["%{$keyword}%"]); + } + + $paginated = $query->paginate($perPage); + $logs = $paginated->items(); + + return response()->json([ + 'status' => true, + 'data' => $logs, + 'pagination' => [ + 'current_page' => $paginated->currentPage(), + 'last_page' => $paginated->lastPage(), + 'per_page' => $paginated->perPage(), + 'total' => $paginated->total(), + ] + ]); + } } diff --git a/app/Models/FileDirectory.php b/app/Models/FileDirectory.php index a75dcbe..0ae403f 100644 --- a/app/Models/FileDirectory.php +++ b/app/Models/FileDirectory.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use App\Models\LogActivity; class FileDirectory extends Model { @@ -12,4 +13,11 @@ class FileDirectory extends Model protected $primaryKey = 'file_directory_id'; protected $guarded = ['file_directory_id']; + public function viewLogs() + { + return $this->hasMany(LogActivity::class, 'file_directory_id', 'file_directory_id') + ->where('statusenabled', true) + ->where('action_type', 'Membuka Dokumen'); + } + } diff --git a/resources/views/logActivity/index.blade.php b/resources/views/logActivity/index.blade.php index e38c0bf..1de69c0 100644 --- a/resources/views/logActivity/index.blade.php +++ b/resources/views/logActivity/index.blade.php @@ -40,18 +40,19 @@
-| Nama | -Unit | -Aktivitas | No Dokumen | -Tanggal | +File | +Kategori | +Unit | +Sub Unit | +Jumlah Pegawai Melihat |
|---|