From a928c180d775b58a73a1bb411cea4593b0608596 Mon Sep 17 00:00:00 2001 From: Muhammad Thoriq Date: Thu, 4 Dec 2025 09:13:20 +0700 Subject: [PATCH] report excel --- app/Exports/DashboardAnalisisExport.php | 29 + app/Exports/DashboardAnalisisSheetExport.php | 64 ++ app/Exports/DashboardExport.php | 59 ++ app/Exports/DashboardJawabanExport.php | 61 ++ app/Http/Controllers/AdminController.php | 566 +++++++++++++++-- composer.json | 1 + composer.lock | 591 +++++++++++++++++- resources/views/admin/dashboard.blade.php | 28 +- .../views/admin/dashboard_analisis.blade.php | 155 ++++- .../views/admin/dashboard_jawaban.blade.php | 176 ++++++ .../views/layouts/template_admin.blade.php | 16 +- routes/web.php | 7 + 12 files changed, 1677 insertions(+), 76 deletions(-) create mode 100644 app/Exports/DashboardAnalisisExport.php create mode 100644 app/Exports/DashboardAnalisisSheetExport.php create mode 100644 app/Exports/DashboardExport.php create mode 100644 app/Exports/DashboardJawabanExport.php create mode 100644 resources/views/admin/dashboard_jawaban.blade.php diff --git a/app/Exports/DashboardAnalisisExport.php b/app/Exports/DashboardAnalisisExport.php new file mode 100644 index 0000000..88ead4e --- /dev/null +++ b/app/Exports/DashboardAnalisisExport.php @@ -0,0 +1,29 @@ +data1 = $data1; + $this->data2 = $data2; + $this->data3 = $data3; + } + + public function sheets(): array + { + return [ + new DashboardAnalisisSheetExport($this->data1, 'Nomor 12-25 & 40-46'), + new DashboardAnalisisSheetExport($this->data2, 'Nomor 35'), + new DashboardAnalisisSheetExport($this->data3, 'Nomor 26-39 (selain nomor 35)'), + ]; + } +} diff --git a/app/Exports/DashboardAnalisisSheetExport.php b/app/Exports/DashboardAnalisisSheetExport.php new file mode 100644 index 0000000..ff3a6ce --- /dev/null +++ b/app/Exports/DashboardAnalisisSheetExport.php @@ -0,0 +1,64 @@ +data = $data; + $this->title = $title; + } + + /** STREAMING ROW PER ROW */ + public function generator(): Generator + { + foreach ($this->data as $row) { + yield $row; + } + } + + /** STYLING */ + public function styles(Worksheet $sheet) + { + $lastRow = $sheet->getHighestRow(); + $lastColumn = $sheet->getHighestColumn(); + + $range = 'A1:' . $lastColumn . $lastRow; + + // Border + $sheet->getStyle($range)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => Border::BORDER_THIN, + ], + ], + ]); + + // Header style + $sheet->getStyle('A1:' . $lastColumn . '1')->applyFromArray([ + 'font' => ['bold' => true], + 'fill' => [ + 'fillType' => 'solid', + 'color' => ['rgb' => 'FFFF00'], + ], + ]); + + return []; + } + + public function title(): string + { + return $this->title; + } +} \ No newline at end of file diff --git a/app/Exports/DashboardExport.php b/app/Exports/DashboardExport.php new file mode 100644 index 0000000..12fda06 --- /dev/null +++ b/app/Exports/DashboardExport.php @@ -0,0 +1,59 @@ +data = $data; + } + /** + * @return \Illuminate\Support\Collection + */ + public function array(): array + { + return $this->data; + } + + public function styles(Worksheet $sheet) + { + // Hitung jumlah row yang dihasilkan + $lastRow = $sheet->getHighestRow(); + $lastColumn = $sheet->getHighestColumn(); + + // Range seluruh data, misal A1:C20 + $range = 'A1:' . $lastColumn . $lastRow; + + // Terapkan border + $sheet->getStyle($range)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => Border::BORDER_THIN, + 'color' => ['rgb' => '000000'], // warna hitam + ], + ], + ]); + + // Optional: header kuning + bold + $sheet->getStyle('A1:' . $lastColumn . '1')->applyFromArray([ + 'font' => [ + 'bold' => true, + ], + 'fill' => [ + 'fillType' => 'solid', + 'color' => ['rgb' => 'FFFF00'], // header kuning + ], + ]); + + return []; + } +} diff --git a/app/Exports/DashboardJawabanExport.php b/app/Exports/DashboardJawabanExport.php new file mode 100644 index 0000000..c391d7f --- /dev/null +++ b/app/Exports/DashboardJawabanExport.php @@ -0,0 +1,61 @@ +header = $header; // row pertama (judul kolom) + $this->rows = $rows; // data lainnya + } + + public function generator(): Generator + { + // 1. Row header + yield $this->header; + + // 2. Row lain (streaming) + foreach ($this->rows as $row) { + yield $row; + } + } + + public function styles(Worksheet $sheet) + { + $lastRow = $sheet->getHighestRow(); + $lastColumn = $sheet->getHighestColumn(); + $range = 'A1:' . $lastColumn . $lastRow; + + // Border + $sheet->getStyle($range)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => Border::BORDER_THIN, + ], + ], + ]); + + // Header style + $sheet->getStyle('A1:' . $lastColumn . '1')->applyFromArray([ + 'font' => [ + 'bold' => true, + ], + 'fill' => [ + 'fillType' => 'solid', + 'color' => ['rgb' => 'FFFF00'], + ], + ]); + + return []; + } +} diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 6f860bf..a065452 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -2,10 +2,15 @@ namespace App\Http\Controllers; +use App\Exports\DashboardAnalisisExport; +use App\Exports\DashboardExport; +use App\Exports\DashboardJawabanExport; use App\Models\Jawaban; +use App\Models\JawabanDetail; use App\Models\SoalDetail; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Maatwebsite\Excel\Facades\Excel; use Yajra\DataTables\DataTables; class AdminController extends Controller @@ -83,7 +88,35 @@ class AdminController extends Controller $query->whereIn('unit', $request->unit_kerja); } - return DataTables::of($query)->make(true); + return DataTables::of($query) + ->addColumn('action', function ($row) { + return ' + + '; + }) + ->make(true); + + } + + public function download_report_data_pegawai_sudah_survey(Request $request) + { + $query = Jawaban::query(); + $query->select('nama', 'unit', 'tanggal_isi'); + + if ($request->nama_pegawai) { + $query->where('nama', 'ILIKE', '%' . $request->nama_pegawai . '%'); + } + + if ($request->select_unit_kerja) { + $query->whereIn('unit', $request->select_unit_kerja); + } + + $data = $query->get()->toArray(); + array_unshift($data, ['Nama Pegawai', 'Unit Kerja', 'Tanggal Isi']); + + return Excel::download(new DashboardExport($data), 'data pegawai yang sudah survey.xlsx'); } @@ -147,15 +180,84 @@ class AdminController extends Controller return view('admin.dashboard_analisis', $data); } + public function dashboard_jawaban() + { + $data['list_unit_kerja'] = [ + "Direktur Utama dan Direksi", + "Satuan Pengawas Internal", + "Komite Mutu", + "Komite Medik", + "Komite Keperawatan", + "Komite PPI & PRA", + "KTKL", + "KFT", + "KEH", + "ULP", + "Timker Yankep", + "Timker Yanjang", + "Timker Perencanaan, Evaluasi dan Program", + "Timker Hukum dan Humas", + "Timker Yanmed", + "Timker Perencanaan dan Evaluasi Anggaran", + "Timker Akutansi dan BMN", + "Timker Organisasi dan Sumber Daya Manusia", + "Timker TU & RT", + "Timker Diklat", + "Timker Penelitian", + "Timker Pelaksanan Keuangan", + "Instalasi Rawat Inap", + "Instalasi Rawat Jalan Reguler", + "Instalasi Rawat Intensif / ICU", + "Instalasi Rehabilitasi Medik", + "Instalasi Gizi", + "Instalasi Laboratorium Terpadu", + "Instalasi Sistem Informasi Manajemen Rumah Sakit (SIMRS)", + "Instalasi Bedah Sentral", + "Instalasi Radiologi", + "Instalasi Farmasi", + "Instalasi Rekam Medis", + "Instalasi Gawat Darurat", + "Instalasi Verifikasi dan Penjaminan Pasien", + "Instalasi KL & K3RS", + "ISSB", + "IPT", + "IPJNI", + "IPSPRS", + "IPPB", + "IPPISGB", + "Instalasi Rawat Jalan Eksekutif", + "Instalasi Teknologi Berbantu (TRB)", + "Klinik Utama Bintaro", + "KSM Anak", + "KSM Obstetri & Ginekologi", + "KSM Bedah", + "KSM Anestesi", + "KSM Gigi & Mulut", + "KSM Spesialis Lain", + "KSM Umum", + "Lainnya (Mahasiswa dan Outsourcing)" + ]; + return view('admin.dashboard_jawaban', $data); + } + public function get_data_dashboard_analisis(Request $request) { try { $soal = SoalDetail::all()->sortBy('id')->values()->toArray(); $data = []; + $data_option_setuju = []; + $data_option_selalu = []; + $data_option_other = []; + $total = 0; + foreach ($soal as $key => $value) { $jawaban = []; $soal_json = json_decode($value['soal'], true); + if($soal_json['is_analitic'] == 0){ + continue; + } + $sub = DB::table('lms_mutu_jawaban_detail') ->select('lms_mutu_soal_detail_id', DB::raw('COUNT(*) AS total_semua')) ->join( @@ -193,68 +295,386 @@ class AdminController extends Controller $result->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja); } $result->orderBy('d.lms_mutu_soal_detail_id', 'asc'); - - if(count($soal_json['options']) > 0){ - foreach ($soal_json['options'] as $v) { + + if(is_array($soal_json['options'])){ + if(count($soal_json['options']) > 0){ + foreach ($soal_json['options'] as $v) { + + if($v != 'Lainnya'){ + $row = (clone $result)->where('d.jawaban', $v) + ->first(); + + if($row) { + if($total == 0){ + $total = $row->total_semua; + } + $data_per_jawaban = [ + 'name' => $v, + 'percent' => (float) $row->percent, + 'value' => $row->total_jawaban, + 'total' => $row->total_semua + ]; - if($v != 'Lainnya'){ - $row = (clone $result)->where('d.jawaban', $v) - ->first(); - - if($row) { - $data_per_jawaban = [ - 'name' => $v, - 'y' => (float) $row->percent, - 'value' => $row->total_jawaban, - 'total' => $row->total_semua - ]; - - array_push($jawaban, $data_per_jawaban); + array_push($jawaban, $data_per_jawaban); + } else { + $data_per_jawaban = [ + 'name' => $v, + 'percent' => 0 + ]; + array_push($jawaban, $data_per_jawaban); + } } else { - $data_per_jawaban = [ - 'name' => $v, - 'y' => 0 - ]; - array_push($jawaban, $data_per_jawaban); - } - } else { - $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options']) - ->get() - ->toArray(); - - foreach ($get_data as $val) { - $data_per_jawaban = [ - 'name' => $val->jawaban, - 'y' => (float) $val->percent, - 'value' => $val->total_jawaban, - 'total' => $val->total_semua - ]; + $get_data = DB::table('lms_mutu_jawaban_detail AS d') + ->joinSub($sub, 't', function($join) { + $join->on('t.lms_mutu_soal_detail_id', '=', 'd.lms_mutu_soal_detail_id'); + }) + ->join( + 'lms_mutu_jawaban', + 'd.lms_mutu_jawaban_id', + '=', + 'lms_mutu_jawaban.id' + ) + ->selectRaw( + "d.lms_mutu_soal_detail_id, + STRING_AGG(d.jawaban, ', ') AS jawaban_gabungan, + t.total_semua, + COUNT(*) AS total_jawaban, + ROUND((COUNT(*)::numeric / t.total_semua::numeric) * 100) AS percent" + ) + ->where('d.lms_mutu_soal_detail_id', $value['id']) + ->whereNotIn('d.jawaban', $soal_json['options']) + ->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first(); + + // $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options']) + // ->get() + // ->toArray(); + + // foreach ($get_data as $val) { + if($get_data){ + $data_per_jawaban = [ + 'name' => 'Lainnya', + 'percent' => (float) $get_data->percent, + 'value' => $get_data->total_jawaban, + 'total' => $get_data->total_semua, + 'jawaban' => $get_data->jawaban_gabungan + ]; + } else { + $data_per_jawaban = [ + 'name' => 'Lainnya', + 'percent' => 0, + 'value' => 0, + 'jawaban' => '-' + ]; + } + // } array_push($jawaban, $data_per_jawaban); } } + } else { + $get_data = $result->get() + ->toArray(); + foreach ($get_data as $val) { + $data_per_jawaban = [ + 'name' => $val->jawaban, + 'percent' => (float) $val->percent, + 'value' => $val->total_jawaban, + 'total' => $val->total_semua + ]; + array_push($jawaban, $data_per_jawaban); + } } - } else { - $get_data = $result->get() - ->toArray(); - foreach ($get_data as $val) { - $data_per_jawaban = [ - 'name' => $val->jawaban, - 'y' => (float) $val->percent, - 'value' => $val->total_jawaban, - 'total' => $val->total_semua - ]; - array_push($jawaban, $data_per_jawaban); + + $data_persoal = [ + 'no_soal' => $soal_json['no'], + 'soal' => $soal_json['soal'], + 'jawaban' => $jawaban + ]; + + if(in_array('Sangat Tidak Setuju', $soal_json['options'])) { + array_push($data_option_setuju, $data_persoal); + } else if(in_array('Selalu', $soal_json['options'])) { + array_push($data_option_selalu, $data_persoal); + } else { + array_push($data_option_other, $data_persoal); } } - - $data_persoal = [ - 'soal' => $soal_json['soal'], - 'jawaban' => $jawaban - ]; - - array_push($data, $data_persoal); } + + $data = [ + 'option_setuju' => $data_option_setuju, + 'option_other' => $data_option_other, + 'option_selalu' => $data_option_selalu, + 'total' => $total + ]; + return response()->json([ + 'msg' => 'Berhasil', + 'data' => $data + ], 200); + } catch (\ErrorException $th) { + dd($th); + return response()->json([ + 'msg' => 'Oops something wrong!', + 'data' => null, + 'msg_dev' => $th + ], 500); + } + } + + public function report_data_dashboard_analisis(Request $request) + { + try { + $soal = SoalDetail::all()->sortBy('id')->values()->toArray(); + + $data_option_setuju = []; + $data_option_selalu = []; + $data_option_other = []; + $total = 0; + + foreach ($soal as $key => $value) { + $jawaban = []; + $soal_json = json_decode($value['soal'], true); + if($soal_json['is_analitic'] == 0){ + continue; + } + + $sub = DB::table('lms_mutu_jawaban_detail') + ->select('lms_mutu_soal_detail_id', DB::raw('COUNT(*) AS total_semua')) + ->join( + 'lms_mutu_jawaban', + 'lms_mutu_jawaban_detail.lms_mutu_jawaban_id', + '=', + 'lms_mutu_jawaban.id' + ) + ->where('lms_mutu_soal_detail_id', $value['id']); + if($request->unit_kerja) { + $sub->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja); + } + $sub->groupBy('lms_mutu_soal_detail_id'); + + $result = DB::table('lms_mutu_jawaban_detail AS d') + ->joinSub($sub, 't', function($join) { + $join->on('t.lms_mutu_soal_detail_id', '=', 'd.lms_mutu_soal_detail_id'); + }) + ->join( + 'lms_mutu_jawaban', + 'd.lms_mutu_jawaban_id', + '=', + 'lms_mutu_jawaban.id' + ) + ->selectRaw( + 'd.lms_mutu_soal_detail_id, + d.jawaban, + COUNT(*) AS total_jawaban, + t.total_semua, + ROUND((COUNT(*)::numeric / t.total_semua::numeric) * 100) AS percent' + ) + ->where('d.lms_mutu_soal_detail_id', $value['id']) + ->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua'); + if($request->unit_kerja) { + $result->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja); + } + $result->orderBy('d.lms_mutu_soal_detail_id', 'asc'); + if(is_array($soal_json['options'])){ + if(count($soal_json['options']) > 0){ + foreach ($soal_json['options'] as $v) { + + if($v != 'Lainnya'){ + $row = (clone $result)->where('d.jawaban', $v) + ->first(); + + if($row) { + if($total == 0){ + $total = $row->total_semua; + } + $data_per_jawaban = [ + 'name' => $v, + 'percent' => (float) $row->percent, + 'value' => $row->total_jawaban, + 'total' => $row->total_semua + ]; + + array_push($jawaban, $data_per_jawaban); + } else { + $data_per_jawaban = [ + 'name' => $v, + 'percent' => 0 + ]; + array_push($jawaban, $data_per_jawaban); + } + } else { + $get_data = DB::table('lms_mutu_jawaban_detail AS d') + ->joinSub($sub, 't', function($join) { + $join->on('t.lms_mutu_soal_detail_id', '=', 'd.lms_mutu_soal_detail_id'); + }) + ->join( + 'lms_mutu_jawaban', + 'd.lms_mutu_jawaban_id', + '=', + 'lms_mutu_jawaban.id' + ) + ->selectRaw( + "d.lms_mutu_soal_detail_id, + STRING_AGG(d.jawaban, ', ') AS jawaban_gabungan, + t.total_semua, + COUNT(*) AS total_jawaban, + ROUND((COUNT(*)::numeric / t.total_semua::numeric) * 100) AS percent" + ) + ->where('d.lms_mutu_soal_detail_id', $value['id']) + ->whereNotIn('d.jawaban', $soal_json['options']) + ->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first(); + + // $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options']) + // ->get() + // ->toArray(); + + // foreach ($get_data as $val) { + if($get_data){ + $data_per_jawaban = [ + 'name' => 'Lainnya', + 'percent' => (float) $get_data->percent, + 'value' => $get_data->total_jawaban, + 'total' => $get_data->total_semua, + 'jawaban' => $get_data->jawaban_gabungan + ]; + } else { + $data_per_jawaban = [ + 'name' => 'Lainnya', + 'percent' => 0, + 'value' => 0, + 'jawaban' => '-' + ]; + } + // } + array_push($jawaban, $data_per_jawaban); + } + } + } else { + $get_data = $result->get() + ->toArray(); + foreach ($get_data as $val) { + $data_per_jawaban = [ + 'name' => $val->jawaban, + 'percent' => (float) $val->percent, + 'value' => $val->total_jawaban, + 'total' => $val->total_semua + ]; + array_push($jawaban, $data_per_jawaban); + } + } + + $data_persoal = [ + 'no_soal' => $soal_json['no'], + 'soal' => $soal_json['soal'], + 'jawaban' => $jawaban + ]; + + if(in_array('Sangat Tidak Setuju', $soal_json['options'])) { + array_push($data_option_setuju, $data_persoal); + } else if(in_array('Selalu', $soal_json['options'])) { + array_push($data_option_selalu, $data_persoal); + } else { + array_push($data_option_other, $data_persoal); + } + } + } + + $data_setuju_report = []; + $data_setuju_header = ['No', 'Soal']; + foreach ($data_option_setuju as $key => $value) { + $data['no'] = $value['no_soal']; + $data['soal'] = $value['soal']; + foreach ($value['jawaban'] as $k => $v) { + if(!in_array($v['name'], $data_setuju_header)){ + array_push($data_setuju_header, $v['name']); + } + if($v['percent'] > 0){ + $data[$v['name']] = $v['percent'] . '%/ '. $v['value']. ' Orang'; + } else { + $data[$v['name']] = '-'; + } + + if($v['name'] == 'Lainnya') { + $data['jawaban_lainnya'] = $v['jawaban']; + } + } + $data['total'] = $total; + array_push($data_setuju_report, $data); + } + array_push($data_setuju_header, 'Jawaban Lainnya'); + array_push($data_setuju_header, 'Total Responden'); + array_unshift($data_setuju_report, $data_setuju_header); + + $data_other_report = []; + $data_other_header = ['No', 'Soal']; + foreach ($data_option_other as $key => $value) { + $data_other['no'] = $value['no_soal']; + $data_other['soal'] = $value['soal']; + foreach ($value['jawaban'] as $k => $v) { + if(!in_array($v['name'], $data_other_header)){ + array_push($data_other_header, $v['name']); + } + if($v['percent'] > 0){ + $data_other[$v['name']] = $v['percent'] . '%/ '. $v['value']. ' Orang'; + } else { + $data_other[$v['name']] = '-'; + } + } + $data_other['total'] = $total; + array_push($data_other_report, $data_other); + } + array_push($data_other_header, 'Total Responden'); + array_unshift($data_other_report, $data_other_header); + + $data_selalu_report = []; + $data_selalu_header = ['No', 'Soal']; + foreach ($data_option_selalu as $key => $value) { + $data_selalu['no'] = $value['no_soal']; + $data_selalu['soal'] = $value['soal']; + foreach ($value['jawaban'] as $k => $v) { + if(!in_array($v['name'], $data_selalu_header)){ + array_push($data_selalu_header, $v['name']); + } + if($v['percent'] > 0){ + $data_selalu[$v['name']] = $v['percent'] . '%/ '. $v['value']. ' Orang'; + } else { + $data_selalu[$v['name']] = '-'; + } + + if($v['name'] == 'Lainnya') { + $data_selalu['jawaban_lainnya'] = $v['jawaban']; + } + } + $data_selalu['total'] = $total; + array_push($data_selalu_report, $data_selalu); + } + array_push($data_selalu_header, 'Jawaban Lainnya'); + array_push($data_selalu_header, 'Total Responden'); + array_unshift($data_selalu_report, $data_selalu_header); + + // $data = [ + // 'option_setuju' => $data_option_setuju, + // 'option_other' => $data_option_other, + // 'option_selalu' => $data_option_selalu, + // 'total' => $total + // ]; + + return Excel::download(new DashboardAnalisisExport($data_setuju_report, $data_other_report, $data_selalu_report), 'data analisis.xlsx'); + } catch (\ErrorException $th) { + dd($th); + return response()->json([ + 'msg' => 'Oops something wrong!', + 'data' => null, + 'msg_dev' => $th + ], 500); + } + } + + public function get_jawaban($jawaban_id) + { + try { + $data = JawabanDetail::where('lms_mutu_jawaban_id', $jawaban_id)->join('lms_mutu_soal_detail', 'lms_mutu_soal_detail_id', '=', 'lms_mutu_soal_detail.id')->get()->toArray(); + return response()->json([ 'msg' => 'Berhasil', 'data' => $data @@ -267,4 +687,44 @@ class AdminController extends Controller ], 500); } } + + public function download_report_data_jawaban_pegawai(Request $request) + { + $query = Jawaban::query(); + $query->select('id', 'nama', 'unit'); + + if ($request->nama_pegawai) { + $query->where('nama', 'ILIKE', '%' . $request->nama_pegawai . '%'); + } + + if ($request->select_unit_kerja) { + $query->whereIn('unit', $request->select_unit_kerja); + } + + $data = $query->get()->toArray(); + $data_header = ['Nama Pegawai', 'Unit Kerja']; + + foreach ($data as $key => &$value) { + $data_jawaban = JawabanDetail::select( + 'lms_mutu_jawaban_detail.*', + DB::raw("lms_mutu_soal_detail.soal->>'soal' as soal"), + DB::raw("lms_mutu_soal_detail.soal->>'no' as no") + )->where('lms_mutu_jawaban_id', $value['id'])->join('lms_mutu_soal_detail', 'lms_mutu_soal_detail_id', '=', 'lms_mutu_soal_detail.id')->orderBy('id', 'asc')->get()->toArray(); + + foreach ($data_jawaban as $k => $v) { + if(count($data_jawaban) > 10){ + if(!in_array($v['soal'], $data_header)){ + array_push($data_header, $v['soal']); + } + } + $data[$key][$v['soal']] = $v['jawaban']; + } + + unset($value['id']); + unset($value['jawaban_detail']); + } + + return Excel::download(new DashboardJawabanExport($data_header, $data), 'data jawaban pegawai.xlsx'); + + } } diff --git a/composer.json b/composer.json index 4e10e5f..51f2b74 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,7 @@ "php": "^8.2", "laravel/framework": "^11.31", "laravel/tinker": "^2.9", + "maatwebsite/excel": "^3.1", "yajra/laravel-datatables-oracle": "11.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 6116130..f2de464 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7ae784044cc087af521c6abbb3c6e2c8", + "content-hash": "42467f26d79bbcb1e4920c457fffa7b7", "packages": [ { "name": "brick/math", @@ -135,6 +135,162 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "composer/pcre", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.3", @@ -508,6 +664,67 @@ ], "time": "2025-03-06T22:45:56+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.19.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf", + "shasum": "" + }, + "require": { + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0" + }, + "time": "2025-10-17T16:34:55+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -2012,6 +2229,272 @@ ], "time": "2025-11-18T12:17:23+00:00" }, + { + "name": "maatwebsite/excel", + "version": "3.1.67", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e508e34a502a3acc3329b464dad257378a7edb4d", + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d", + "shasum": "" + }, + "require": { + "composer/semver": "^3.3", + "ext-json": "*", + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0", + "php": "^7.0||^8.0", + "phpoffice/phpspreadsheet": "^1.30.0", + "psr/simple-cache": "^1.0||^2.0||^3.0" + }, + "require-dev": { + "laravel/scout": "^7.0||^8.0||^9.0||^10.0", + "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + }, + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.67" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2025-08-26T09:13:16+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.2" + }, + "require-dev": { + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^11.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2025-01-27T12:07:53+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" + }, { "name": "monolog/monolog", "version": "3.9.0", @@ -2519,6 +3002,112 @@ ], "time": "2025-11-20T02:34:59+00:00" }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.30.1", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "fa8257a579ec623473eabfe49731de5967306c4c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fa8257a579ec623473eabfe49731de5967306c4c", + "reference": "fa8257a579ec623473eabfe49731de5967306c4c", + "shasum": "" + }, + "require": { + "composer/pcre": "^1||^2||^3", + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.15", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": ">=7.4.0 <8.5.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.3", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.1" + }, + "time": "2025-10-26T16:01:04+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.4", diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 8774923..ddc4d1f 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -2,6 +2,11 @@ @section('title', 'Dashboard | Mutu RSAB Harapan Kita') @section('custom_css') + @endsection @section('content') @@ -10,10 +15,6 @@
Dashboard
-
- - -
-
+
Cari
+
+ @csrf + +
Download Excel
+
@@ -54,6 +64,14 @@ $('#search_button').click(function(){ $('#table').DataTable().ajax.reload(); }); + + $('#export_form_button').click(function() { + let select_unit_kerja = $('#select_unit_kerja').val(); + $('[name="select_unit_kerja[]"]').val(select_unit_kerja); + + $('#export_form').submit(); + }) + generateTable(); }); diff --git a/resources/views/admin/dashboard_analisis.blade.php b/resources/views/admin/dashboard_analisis.blade.php index 02559a4..20d32bd 100644 --- a/resources/views/admin/dashboard_analisis.blade.php +++ b/resources/views/admin/dashboard_analisis.blade.php @@ -18,13 +18,22 @@ @endforeach
-
+
Cari
+
+ @csrf + +
Download Excel
+
-
+
@@ -39,10 +48,17 @@ $('#search_button').click(function(){ get_data_analisis(); }) + + $('#export_form_button').click(function() { + let select_unit_kerja = $('#select_unit_kerja').val(); + $('[name="unit_kerja[]"]').val(select_unit_kerja); + + $('#export_form').submit(); + }) }); function get_data_analisis() { - $('#body_chart').html(`
+ $('#body_table').html(`
@@ -54,19 +70,138 @@
`); $.ajax({ - url: "{{ url('/admin/get_data_dashboard_jawaban') }}", + url: "{{ url('/admin/get_data_dashboard_analisis') }}", type: "POST", data: { unit_kerja: $('#select_unit_kerja').val(), _token: "{{ csrf_token() }}" }, success: function(res) { - $('#body_chart').html(""); - res.data.forEach((element, index) => { - const id = `chart_analisis_${index}`; - $('#body_chart').append(`
`); - generateChart(element.jawaban, id, element.soal); - }); + const data = res.data; + $('#body_table').html(""); + + let stringTable = ''; + + //option setuju + if(data.option_setuju.length > 0){ + stringTable += '
'; + stringTable += ''; + stringTable += ` + + + + + + + + + + + + + `; + stringTable += ''; + data.option_setuju.forEach((element, index) => { + stringTable += ` + + + `; + element.jawaban.forEach(e => { + if(e.percent > 0){ + stringTable += ``; + } else { + stringTable += ``; + } + if(e.name == 'Lainnya') { + stringTable += ``; + } + }); + stringTable += ``; + stringTable += ``; + }); + stringTable += ''; + stringTable += '
NoSoalSangat Tidak SetujuTidak SetujuNetralSetujuSangat SetujuLainnyaJawaban LainnyaTotal Responden
${element.no_soal}${element.soal}${e.percent}%/${e.value} Orang-${e.jawaban}${data.total}
'; + stringTable += '
'; + } + + if(data.option_other.length > 0){ + stringTable += '
'; + stringTable += ''; + stringTable += ` + + + + + + + + + + + `; + stringTable += ''; + data.option_other.forEach((element, index) => { + stringTable += ` + + + `; + element.jawaban.forEach(e => { + if(e.percent > 0){ + stringTable += ``; + } else { + stringTable += ``; + } + }); + stringTable += ``; + stringTable += ``; + }); + stringTable += ''; + stringTable += '
NoSoalTidak Ada1 - 2 laporan3 - 5 laporan6 - 10 laporan> 10 laporanTotal Responden
${element.no_soal}${element.soal}${e.percent}%/${e.value} Orang-${data.total}
'; + stringTable += '
'; + } + + if(data.option_selalu.length > 0){ + stringTable += '
'; + stringTable += ''; + stringTable += ` + + + + + + + + + + + + + `; + stringTable += ''; + data.option_selalu.forEach((element, index) => { + stringTable += ` + + + `; + element.jawaban.forEach(e => { + if(e.percent > 0){ + stringTable += ``; + } else { + stringTable += ``; + } + if(e.name == 'Lainnya') { + stringTable += ``; + } + }); + stringTable += ``; + stringTable += ``; + }); + stringTable += ''; + stringTable += '
NoSoalTidak PernahJarangKadang-kadangSeringSelaluLainnyaJawaban LainnyaTotal Responden
${element.no_soal}${element.soal}${e.percent}%/${e.value} Orang-${e.jawaban}${data.total}
'; + stringTable += '
'; + } + + $('#body_table').html(stringTable); } }); } diff --git a/resources/views/admin/dashboard_jawaban.blade.php b/resources/views/admin/dashboard_jawaban.blade.php new file mode 100644 index 0000000..feb6ab8 --- /dev/null +++ b/resources/views/admin/dashboard_jawaban.blade.php @@ -0,0 +1,176 @@ +@extends('layouts.template_admin') + +@section('title', 'Dashboard Jawaban | Mutu RSAB Harapan Kita') +@section('custom_css') + +@endsection + +@section('content') +
+
+
Dashboard Jawaban
+
+
+
+ + +
+
+
+ Cari +
+
+ @csrf + +
Download Excel
+
+
+
+
+
+ + + + + + + + +
Nama PegawaiUnit KerjaAction
+
+
+
+
+
+ +@endsection + +@section('custom_js') + +@endsection \ No newline at end of file diff --git a/resources/views/layouts/template_admin.blade.php b/resources/views/layouts/template_admin.blade.php index 7ec360e..3b5cda5 100644 --- a/resources/views/layouts/template_admin.blade.php +++ b/resources/views/layouts/template_admin.blade.php @@ -99,7 +99,7 @@ - @@ -228,11 +234,7 @@ } function setNameAccount() { - const decode = parseJwt(); - - if(decode){ - $('#name_account').html(decode.nama_pegawai); - } + $('#name_account').html('Admin Survey'); } diff --git a/routes/web.php b/routes/web.php index 1527f24..93d1fb9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,3 +14,10 @@ Route::post('/admin/get_data_pegawai_sudah_survey', [AdminController::class, 'ge Route::get('/admin/dashboard_jawaban', [AdminController::class, 'dashboard_analisis']); Route::post('/admin/get_data_dashboard_jawaban', [AdminController::class, 'get_data_dashboard_analisis']); Route::get('/redirect-smart', [SoalController::class, 'redirectSmart']); +Route::post('/admin/report', [AdminController::class, 'download_report_data_pegawai_sudah_survey']); +Route::get('/admin/dashboard_analisis', [AdminController::class, 'dashboard_analisis']); +Route::get('/admin/dashboard_jawaban', [AdminController::class, 'dashboard_jawaban']); +Route::get('/admin/detail_jawaban/{jawaban_id}', [AdminController::class, 'get_jawaban']); +Route::post('/admin/get_data_dashboard_analisis', [AdminController::class, 'get_data_dashboard_analisis']); +Route::post('/admin/report_data_analisis', [AdminController::class, 'report_data_dashboard_analisis']); +Route::post('/admin/report_jawaban', [AdminController::class, 'download_report_data_jawaban_pegawai']); \ No newline at end of file