193 lines
8.1 KiB
PHP
193 lines
8.1 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);
|
|
$subArray = explode(',', $subUnit);
|
|
$klaArray = explode(',', $klasifikasi);
|
|
$unitKerja = UnitKerja::where('statusenabled', true)
|
|
->where('id', $filterUnit)
|
|
->with(['subUnitKerja' => function ($query) use ($katArray, $filterUnit, $subArray, $klaArray) {
|
|
$query->whereIn('id', $subArray)
|
|
->with(['fileDirectory' => function ($q) use ($katArray, $filterUnit, $subArray, $klaArray) {
|
|
$q->when($filterUnit, function ($subQ) use ($filterUnit) {
|
|
$subQ->where('id_unit_kerja', $filterUnit);
|
|
})->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");
|
|
list($id_unit_kerja, $nama_unit_kerja) = explode('/', $value['id_unit_kerja'],2);
|
|
list($id_sub_unit_kerja, $nama_sub_unit_kerja) = explode('/', $value['id_sub_unit_kerja'],2);
|
|
list($master_kategori_directory_id, $nama_kategori) = explode('/', $value['master_kategori_directory_id'],2);
|
|
list($klasifikasi, $nama_klasifikasi) = explode('/', $value['klasifikasi'],2);
|
|
$payload = [
|
|
'master_klasifikasi_directory_id' => $klasifikasi,
|
|
'id_unit_kerja' => $id_unit_kerja,
|
|
'id_sub_unit_kerja' => $id_sub_unit_kerja,
|
|
'master_kategori_directory_id' => $master_kategori_directory_id,
|
|
'pegawai_id_entry' => auth()->user()->id ?? 1,
|
|
'pegawai_nama_entry' => auth()->user()->namalengkap ?? 'tes',
|
|
];
|
|
if($file){
|
|
$imageName = $file->getClientOriginalName();
|
|
$path = "{$nama_unit_kerja}/{$nama_sub_unit_kerja}/{$nama_kategori}/{$nama_klasifikasi}";
|
|
$file->storeAs($path, $imageName, 'file_directory');
|
|
$payload['file'] =$path .'/' .$imageName;
|
|
}
|
|
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{
|
|
$data= $query->where('id', $authUnitKerja)
|
|
->with(['subUnitKerja' => function($query) use($authSubUnitKerja){
|
|
$query->where('id', $authSubUnitKerja);
|
|
}])->select('id', 'name')->get();
|
|
|
|
return response()->json([
|
|
'status' => true,
|
|
'data' => $data
|
|
], 200);
|
|
}
|
|
|
|
$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();
|
|
if(!$data){
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'File tidak ditemukan'
|
|
]);
|
|
}
|
|
$oldPath= public_path('file/' . $data->file);
|
|
$fileInfo = pathinfo($data->file);
|
|
$newFileName = $fileInfo['filename'] . '_deleted.' . $fileInfo['extension'];
|
|
$newPath = public_path('file/' . $fileInfo['dirname'] . '/' . $newFileName);
|
|
if (file_exists($oldPath)) {
|
|
// pastikan folder tujuan ada
|
|
if (!is_dir(dirname($newPath))) {
|
|
mkdir(dirname($newPath), 0777, true);
|
|
}
|
|
rename($oldPath, $newPath);
|
|
}
|
|
|
|
$data->update(['statusenabled' => false, 'file' => $fileInfo['dirname'].'/'. $newFileName]);
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Berhasil menghapus data'
|
|
]);
|
|
}
|
|
}
|