middleware('auth'); $this->repository = $datasetRepository; } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function dashboard() { $data['title'] = 'Dashboard'; $data['route'] = $this->route; if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->where('tahun',date('Y'))->where('status',1)->count(); $data['datasetTambahan'] = DatasetTambahan::where('status',1)->orderBy('DatasetId','DESC')->where('tahun',date('Y'))->count(); $data['datasetInstansi'] = Instansi::selectRaw(" SUM( CASE WHEN resource_data IS NULL OR json_array_length(resource_data) = 0 THEN 1 ELSE json_array_length(resource_data) END ) as total_resource ") ->value('total_resource'); $data['total'] = Instansi::join('dataset as d', 'd.instansi_id', '=', 'ms_instansi.MsInstansiId') ->whereRaw("ms_instansi.resource_data IS NOT NULL AND EXISTS ( SELECT 1 FROM jsonb_array_elements_text(ms_instansi.resource_data::jsonb) AS r(value) WHERE r.value = d.ms_tabel_data_id::text ) ")->distinct('ms_instansi.MsInstansiId') ->count('ms_instansi.MsInstansiId'); }else{ $data['dataset'] = Dataset::where('status',1)->orderBy('DatasetId','DESC')->whereIn('instansi_id',[session('instansi_id')])->where('tahun',date('Y'))->count(); $data['datasetTambahan'] = DatasetTambahan::where('status',1)->whereIn('instansi_id',[session('instansi_id')])->where('tahun',date('Y'))->count(); $data['datasetInstansi'] = Instansi::where('MsInstansiId',session('instansi_id'))->selectRaw(" SUM( CASE WHEN resource_data IS NULL OR json_array_length(resource_data) = 0 THEN 1 ELSE json_array_length(resource_data) END ) as total_resource ") ->value('total_resource'); $data['total'] = Instansi::where('MsInstansiId',session('instansi_id'))->join('dataset as d', 'd.instansi_id', '=', 'ms_instansi.MsInstansiId') ->whereRaw("ms_instansi.resource_data IS NOT NULL AND EXISTS ( SELECT 1 FROM jsonb_array_elements_text(ms_instansi.resource_data::jsonb) AS r(value) WHERE r.value = d.ms_tabel_data_id::text ) ")->distinct('ms_instansi.MsInstansiId') ->count('ms_instansi.MsInstansiId'); } $data['instansi'] = Instansi::count(); $data['tabelData'] = tabelData::count(); return view($this->template.'.dashboard',$data); } public function dataset($alias) { $data['title'] = 'Dashboard'; $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->limit(10)->get(); $data['group'] = Group::where('MsGroupId','!=',1)->get(); $data['alias'] = $alias; return view($this->template.'.dataset',$data); } function gridInstansiUtama(Request $request){ $instansi = Instansi::where('MsInstansiId',session('instansi_id'))->first(); $data = TabelData::whereIn('MsTabelDataId',json_decode($instansi->resource_data))->get(); $_data = []; foreach ($data as $key => $row) { //cek upload $status = ''; $cek = Dataset::where('instansi_id',session('instansi_id'))->where('ms_tabel_data_id',$row->MsTabelDataId)->where('tahun',date('Y'))->first(); if(@$cek){ if(@$cek->status == 1){ $status = ' Valid'; }elseif(@$cek->status == 0){ $status = 'Menunggu Verifikasi'; }elseif(@$cek->status == 2){ $status = 'Verifikasi Ditolak'; } $action = ''; }else{ $status = 'Belum Unggah'; $action = ''; } $_data[] = [ 'no' => $key+1, 'action' => $action, 'name' => 'Tabel '.@$row->nomor_tabel.' - '.@$row->name, 'status' => @$status, ]; } return response()->json($_data); } function gridInstansiTambahan(Request $request){ $data = DatasetTambahan::whereIn('instansi_id',[session('instansi_id')])->get(); $_data = []; foreach ($data as $key => $row) { $_data[] = [ 'no' => $key+1, 'name' => @$row->name, ]; } return response()->json($_data); } public function gridTabel(Request $request) { if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $data = Instansi::all(); }else{ $data = Instansi::where('MsInstansiId',session('instansi_id'))->get(); } // $data = User::with(['group'])->orderBy('id','DESC')->get(); $_data = []; foreach ($data as $key => $row) { $resource = json_decode($row->resource_data); $countresource = @$resource ? count($resource) : '0'; $dataset = 0; if(@$resource){ $dataset = Dataset::whereIn('ms_tabel_data_id',$resource)->count(); } $persentase = $countresource > 0 ? round(($dataset/$countresource)*100) : '0'; $btn = ''.$dataset.'/'.$countresource.''; if($persentase == 0){ $percent = ''.$persentase.'%'; }elseif($persentase > 0 && $persentase <= 50){ $percent = ''.$persentase.'%'; }else{ $percent = ''.$persentase.'%'; } $_data[] = [ 'no' => $key+1, 'name' => @$row->name, // 'dataset' => tabelInstansi(@$row->MsInstansiId), 'dataset' => $btn, 'persentase' => $percent, ]; } // return response()->json($_data); // Return the data as a JSON response return response()->json($_data); } public function grid(Request $request) { if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $data = Dataset::orderBy('DatasetId','DESC')->limit(10)->get(); }else{ $data = Dataset::orderBy('DatasetId','DESC')->limit(10)->whereIn('created_by',[auth()->user()->id,1])->get(); } // $data = User::with(['group'])->orderBy('id','DESC')->get(); $_data = []; foreach ($data as $key => $row) { $action = ''; $action .= '
'; $action .= ''; $action .= '
'; $status = ''; if($row->status == 1){ $status = ''; }else{ $status = ''; } $_data[] = [ 'no' => $key+1, 'id' => encode_id($row->id), 'name' => @$row->name, 'publik' => @$row->publik, 'tahun' => @$row->tahun, 'created_at' => date('d-m-Y H:i:s',strtotime(@$row->created_at)), 'instansi' => @$row->instansi->name, 'action' => @$action, 'status' => @$status, ]; } // return response()->json($_data); // Return the data as a JSON response return response()->json($_data); } public function gridResource(Request $request) { if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $data = TabelData::with(['dataset'])->where('show_dashboard',1)->get(); }else{ $data = TabelData::with(['dataset'])->whereHas('dataset',function($query){ $query->where('instansi_id',session('instansi_id')); })->where('show_dashboard',1)->get(); } // $data = User::with(['group'])->orderBy('id','DESC')->get(); $_data = []; foreach ($data as $key => $row) { $action = ''; if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $action .= 'Lihat Data'; }else{ $action .= 'Lihat Data'; } $_data[] = [ 'no' => $key+1, 'id' => encode_id($row->id), 'name' => @$row->name, 'jumlah' => $row->dataset->count(), 'action' => @$action, ]; } // return response()->json($_data); // Return the data as a JSON response return response()->json($_data); } public function datasetGrid($alias,Request $request) { if((session('group_id') == 1) || (session('group_alias') == 'admin')){ $data = Dataset::whereHas('instansi',function($query) use ($alias){ $query->where('parent','ilike','%'.$alias.'%'); })->orderBy('DatasetId','DESC')->get(); }else{ $data = Dataset::whereHas('instansi',function($query) use ($alias){ $query->where('parent','ilike','%'.$alias.'%'); })->orderBy('DatasetId','DESC')->whereIn('created_by',[auth()->user()->id,1])->get(); } // $data = User::with(['group'])->orderBy('id','DESC')->get(); $_data = []; foreach ($data as $key => $row) { $action = ''; $action .= '
'; $action .= ''; $action .= '
'; $status = ''; if($row->status == 1){ $status = ''; }else{ $status = ''; } $_data[] = [ 'no' => $key+1, 'id' => encode_id($row->id), 'name' => @$row->name, 'publik' => @$row->publik, 'tahun' => @$row->tahun, 'created_at' => date('d-m-Y H:i:s',strtotime(@$row->created_at)), 'instansi' => @$row->instansi->name, 'action' => @$action, 'status' => @$status, ]; } // return response()->json($_data); // Return the data as a JSON response return response()->json($_data); } function resource($id){ $keyId = decode_id($id); $data['id'] = $id; $data['title'] = 'Dashboard'; $data['dataset'] = Dataset::where('template_id',$keyId)->pluck('instansi_id')->toArray(); $data['instansi'] = Instansi::whereIn('MsInstansiId',$data['dataset'])->paginate(9); return view($this->template.'.resource',$data); } function resource_instansi($instansi_id,$id){ $data['id'] = decode_id($id); $data['instansi_id'] = decode_id($instansi_id); $data['dataset'] = Dataset::with(['template'])->where('instansi_id',decode_id($instansi_id))->where('template_id',decode_id($id))->first(); $data['template'] = TabelData::where('MsTemplateId',decode_id($id))->first(); $data['title'] = 'Dashboard '.@$data['dataset']->template->name; return view($this->template.'.resource_detail',$data); } function apiChart($templateId,$instansi_id){ $template = TabelData::where('MsTemplateId',decode_id($templateId))->first(); $dataset = Dataset::with(['template'])->where('instansi_id',decode_id($instansi_id))->where('template_id',decode_id($templateId))->first(); $filename = pathinfo($template->template_url, PATHINFO_FILENAME); $modelClass = "App\\Models\\Dataset\\Dataset" . ucfirst($filename); $insert = $this->repository->getChartData($modelClass,$dataset->DatasetId,decode_id($templateId)); return $insert; } }