project_directory/app/Http/Controllers/DashboardController.php

167 lines
6.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AksesFile;
use App\Models\FileDirectory;
use App\Models\MasterKategori;
use App\Models\MasterKlasifikasi;
use App\Models\SubUnitKerja;
use App\Models\UnitKerja;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use function PHPUnit\Framework\isEmpty;
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();
$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
];
return view('dashboard.index', $payload);
}
public function dataUnitKerja(){
$authMapping = auth()->user()?->dataUser?->mappingUnitKerjaPegawai[0];
$authUnitKerja = $authMapping->objectunitkerjapegawaifk;
$authSubUnitKerja = $authMapping->objectsubunitkerjapegawaifk;
$kategori = request('kategori');
$filterUnit = request('unitKerja');
$subUnit = request('subUnit');
$klasifikasi = request('klasifikasi');
if($kategori && $filterUnit && $subUnit && $klasifikasi){
$katArray = explode(',', $kategori);
$unitArray = explode(',', $filterUnit);
$subArray = explode(',', $subUnit);
$klaArray = explode(',', $klasifikasi);
$unitKerja = UnitKerja::where('statusenabled', true)
->whereIn('id', $unitArray)
->with(['subUnitKerja' => function ($query) use ($katArray, $unitArray, $subArray, $klaArray) {
$query->whereIn('id', $subArray)
->with(['fileDirectory' => function ($q) use ($katArray, $unitArray, $subArray, $klaArray) {
$q->when(!empty($unitArray), function ($subQ) use ($unitArray) {
$subQ->whereIn('id_unit_kerja', $unitArray);
})->when(!empty($subArray), function ($subQ) use ($subArray) {
$subQ->whereIn('id_sub_unit_kerja', $subArray);
})->when(!empty($katArray), function ($subQ) use ($katArray) {
$subQ->whereIn('master_kategori_directory_id', $katArray);
})->when(!empty($klaArray), function ($subQ) use ($klaArray) {
$subQ->whereIn('master_klasifikasi_directory_id', $klaArray);
});
}]);
}])
->select('id', 'name')
->get();
}
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
$data = [
'unitKerja' => $unitKerja ?? null,
'katDok' => $katDok
];
return response()->json([
'status' => true,
'data' => $data,
], 200);
}
public function store(){
DB::connection('dbDirectory')->beginTransaction();
try {
$datas = request()->input('data');
$result = [];
foreach($datas as $index => $value){
$file = request()->file("data.$index.file");
$payload = [
'master_klasifikasi_directory_id' => $value['klasifikasi'],
'id_unit_kerja' => $value['id_unit_kerja'],
'id_sub_unit_kerja' => $value['id_sub_unit_kerja'],
'master_kategori_directory_id' => $value['master_kategori_directory_id'],
'pegawai_id_entry' => auth()->user()->id ?? 1,
'pegawai_nama_entry' => auth()->user()->namalengkap ?? 'tes',
];
if($file){
$imageName = $file->getClientOriginalName();
Storage::disk('file_directory')->put($imageName, file_get_contents($file));
$payload['file'] =$imageName;
}
$saved = FileDirectory::create($payload);
}
DB::connection('dbDirectory')->commit();
return response()->json([
'status' => true,
'message' => 'Data berhasil disimpan',
'data' => count($result) == 1 ? $result[0] : $result
], 200);
} catch (\Throwable $th) {
DB::connection('dbDirectory')->rollBack();
return response()->json([
'status' => false,
'message' => $th->getMessage()
], 500);
}
}
public function OptionUnitKerja(){
$q = request()->get('q');
$authPegawai = auth()->user()?->dataUser;
$authUnitKerja = optional($authPegawai->mappingUnitKerjaPegawai[0] ?? null)->objectunitkerjapegawaifk;
$authSubUnitKerja = optional($authPegawai->mappingUnitKerjaPegawai[0] ?? null)->objectsubunitkerjapegawaifk;
$aksesFile = AksesFile::where('pegawai_id', $authPegawai->id)
->where('statusenabled', true)
->first();
$query = UnitKerja::where('statusenabled', true);
if($aksesFile){
if($aksesFile->all_akses){
}elseif($aksesFile->unit_akses){
$query->where('id', $aksesFile->unit_akses);
}
}else{
$query->where('id', $authUnitKerja)
->with(['subUnitKerja' => function($query) use($authSubUnitKerja){
$query->where('id', $authSubUnitKerja);
}]);
}
$data = $query->when($q, function ($query, $q){
$query->where('name', 'ILIKE', '%' .$q . '%');
})
->select('id', 'name')->get();
return response()->json([
'status' => true,
'data' => $data
], 200);
}
public function deleteFile(string $id){
$data = FileDirectory::where('file_directory_id', $id)->first();
$data->update(['statusenabled' => false]);
return response()->json([
'success' => true,
'message' => 'Berhasil menghapus data'
]);
}
}