Compare commits
2 Commits
b39bf4d666
...
34776eb33a
| Author | SHA1 | Date | |
|---|---|---|---|
| 34776eb33a | |||
| fd7d268e8a |
@ -9,6 +9,7 @@ use App\Exports\DashboardJawabanExport;
|
||||
use App\Models\Jawaban;
|
||||
use App\Models\JawabanDetail;
|
||||
use App\Models\SoalDetail;
|
||||
use App\Models\UnitKerja;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
@ -77,90 +78,23 @@ class AdminController extends Controller
|
||||
return view('admin.dashboard', $data);
|
||||
}
|
||||
|
||||
public function get_data_pegawai_sudah_survey(Request $request)
|
||||
{
|
||||
$masterUnits = [
|
||||
"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"
|
||||
];
|
||||
$query = Jawaban::query()
|
||||
->select([
|
||||
'unit',
|
||||
DB::raw('COUNT(*) as total_unit'),
|
||||
])->whereNotNull('unit');
|
||||
public function get_data_pegawai_sudah_survey(Request $request) {
|
||||
$masterUnits = ["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"];
|
||||
|
||||
|
||||
if ($request->unit_kerja) {
|
||||
$query = Jawaban::query() ->select([ 'unit', DB::raw('COUNT(*) as total_unit'), ])->whereNotNull('unit');
|
||||
|
||||
if ($request->unit_kerja) {
|
||||
$query->whereIn('unit', (array) $request->unit_kerja);
|
||||
$masterUnits = array_intersect($masterUnits, $request->unit_kerja);
|
||||
}
|
||||
$query->groupBy('unit')
|
||||
->havingRaw('COUNT(*) > 0');
|
||||
$query->groupBy('unit') ->havingRaw('COUNT(*) > 0');
|
||||
$rekap = $query->get()->pluck('total_unit', 'unit');
|
||||
|
||||
$data = collect($masterUnits)
|
||||
->filter(fn($unit) => ($rekap[$unit] ?? 0) > 0)
|
||||
->map(fn($unit) => [
|
||||
'unit' => $unit,
|
||||
'total_unit' => $rekap[$unit],
|
||||
])
|
||||
->values();
|
||||
|
||||
$data = collect($masterUnits)->filter(fn($unit) => ($rekap[$unit] ?? 0) > 0)->map(fn($unit) => [ 'unit' => $unit, 'total_unit' => $rekap[$unit], ])->values();
|
||||
return DataTables::of($data)->make(true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function download_report_data_pegawai_sudah_survey(Request $request)
|
||||
{
|
||||
$masterUnits = [
|
||||
@ -261,7 +195,7 @@ class AdminController extends Controller
|
||||
->where('a.lms_mutu_soal_detail_id', 51)
|
||||
->where('a.jawaban', 'TIDAK')
|
||||
->count();
|
||||
|
||||
|
||||
return response()->json([
|
||||
'msg' => 'Berhasil',
|
||||
'data' => $total_tidak
|
||||
@ -755,7 +689,7 @@ class AdminController extends Controller
|
||||
// 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) {
|
||||
@ -879,7 +813,7 @@ class AdminController extends Controller
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function get_data_pegawai_jawaban(Request $request)
|
||||
{
|
||||
$query = Jawaban::query();
|
||||
@ -893,6 +827,9 @@ class AdminController extends Controller
|
||||
}
|
||||
|
||||
return DataTables::of($query)
|
||||
->addColumn('nama_pegawai', function($row){
|
||||
return $row?->pegawai?->nama ?? '-';
|
||||
})
|
||||
->addColumn('action', function ($row) {
|
||||
return '
|
||||
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#detail_jawaban" data-id="'. $row->id .'">
|
||||
@ -991,7 +928,7 @@ class AdminController extends Controller
|
||||
->where('lms_mutu_soal_detail_id', $value['id'])
|
||||
->where('jawaban', '!=', null);
|
||||
if($request->unit_kerja) {
|
||||
$sub->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
||||
$sub->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
||||
}
|
||||
$sub->groupBy('lms_mutu_soal_detail_id');
|
||||
|
||||
@ -1016,18 +953,18 @@ class AdminController extends Controller
|
||||
->where('d.jawaban', '!=', null)
|
||||
->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->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;
|
||||
@ -1038,7 +975,7 @@ class AdminController extends Controller
|
||||
'value' => $row->total_jawaban,
|
||||
'total' => $row->total_semua
|
||||
];
|
||||
|
||||
|
||||
array_push($jawaban, $data_per_jawaban);
|
||||
} else {
|
||||
$data_per_jawaban = [
|
||||
@ -1069,11 +1006,11 @@ class AdminController extends Controller
|
||||
->where('jawaban', '!=', null)
|
||||
->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 = [
|
||||
@ -1108,22 +1045,22 @@ class AdminController extends Controller
|
||||
array_push($jawaban, $data_per_jawaban);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$data_persoal = [
|
||||
'no_soal' => $soal_json['no'],
|
||||
'soal' => $soal_json['soal'],
|
||||
'jawaban' => $jawaban
|
||||
];
|
||||
|
||||
|
||||
array_push($data_all, $data_persoal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'data' => $data_all,
|
||||
'total' => $total
|
||||
];
|
||||
|
||||
|
||||
return response()->json([
|
||||
'msg' => 'Berhasil',
|
||||
'data' => $data
|
||||
@ -1163,7 +1100,7 @@ class AdminController extends Controller
|
||||
->where('lms_mutu_soal_detail_id', $value['id'])
|
||||
->where('jawaban', '!=', null);
|
||||
if($request->unit_kerja) {
|
||||
$sub->whereIn('lms_mutu_jawaban.unit', $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')
|
||||
@ -1187,18 +1124,18 @@ class AdminController extends Controller
|
||||
->where('d.jawaban', '!=', null)
|
||||
->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->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;
|
||||
@ -1240,11 +1177,11 @@ class AdminController extends Controller
|
||||
->where('jawaban', '!=', null)
|
||||
->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 = [
|
||||
@ -1343,7 +1280,7 @@ class AdminController extends Controller
|
||||
'value' => 0
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
// set value
|
||||
foreach ($value['jawaban'] as $v) {
|
||||
$teks = $v['name'];
|
||||
|
||||
@ -244,6 +244,8 @@ class SoalController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return redirect()->route('soal.thankyou')
|
||||
->with('success', 'Jawaban berhasil disimpan.');
|
||||
}
|
||||
|
||||
@ -9,11 +9,15 @@ class Jawaban extends Model
|
||||
protected $connection = 'dbLmsMutu';
|
||||
protected $table = 'public.lms_mutu_jawaban';
|
||||
protected $guarded = ['id'];
|
||||
protected $with = ['jawabanDetail'];
|
||||
protected $with = ['jawabanDetail', 'pegawai'];
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
public function jawabanDetail(){
|
||||
return $this->hasMany(JawabanDetail::class, 'lms_mutu_jawaban_id', 'id');
|
||||
}
|
||||
|
||||
public function pegawai(){
|
||||
return $this->belongsTo(Pegawai::class, 'pegawai_id', 'id');
|
||||
}
|
||||
}
|
||||
|
||||
18
app/Models/MappingUnitPegawai.php
Normal file
18
app/Models/MappingUnitPegawai.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class MappingUnitPegawai extends Model
|
||||
{
|
||||
protected $connection = 'dbSmartv1'; // nama connection di config/database.php
|
||||
protected $table = 'mappegawaijabatantounitkerja_m'; // atau 'public.pegawai_m' kalau pakai schema
|
||||
protected $primaryKey = 'id';
|
||||
protected $with = ['pegawai'];
|
||||
|
||||
public function pegawai(){
|
||||
return $this->belongsTo(Pegawai::class, 'objectpegawaifk', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
15
app/Models/Pegawai.php
Normal file
15
app/Models/Pegawai.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Pegawai extends Model
|
||||
{
|
||||
protected $connection = 'dbSmartv1'; // nama connection di config/database.php
|
||||
protected $table = 'pegawai_m'; // atau 'public.pegawai_m' kalau pakai schema
|
||||
protected $primaryKey = 'id';
|
||||
public $timestamps = false;
|
||||
|
||||
|
||||
}
|
||||
18
app/Models/UnitKerja.php
Normal file
18
app/Models/UnitKerja.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UnitKerja extends Model
|
||||
{
|
||||
protected $connection = 'dbSmartv1'; // nama connection di config/database.php
|
||||
protected $table = 'unitkerjapegawai_m'; // atau 'public.pegawai_m' kalau pakai schema
|
||||
protected $primaryKey = 'id';
|
||||
protected $with = ['mappingPegawai'];
|
||||
|
||||
public function mappingPegawai(){
|
||||
return $this->hasMany(MappingUnitPegawai::class, 'objectunitkerjapegawaifk', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
@ -44,6 +44,7 @@
|
||||
<thead class="bg-primary" id="table_header">
|
||||
<tr>
|
||||
<th class="text-white fs-5">Nama Pegawai</th>
|
||||
<th class="text-white fs-5">Inisial Pegawai</th>
|
||||
<th class="text-white fs-5">Unit Kerja</th>
|
||||
<th class="text-white fs-5">Action</th>
|
||||
</tr>
|
||||
@ -62,7 +63,7 @@
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
@ -87,7 +88,7 @@
|
||||
const button = $(event.relatedTarget);
|
||||
const id = button.data('id');
|
||||
getJawaban(id);
|
||||
|
||||
|
||||
});
|
||||
$('#detail_jawaban').on('hidden.bs.modal', function () {
|
||||
loadLoading();
|
||||
@ -115,6 +116,7 @@
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ data: 'nama_pegawai' },
|
||||
{ data: 'nama' },
|
||||
{ data: 'unit' },
|
||||
{ data: 'action' }
|
||||
@ -173,4 +175,4 @@
|
||||
`);
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@endsection
|
||||
|
||||
@ -17,7 +17,7 @@ Route::middleware('ceklogin')->group(function () {
|
||||
Route::get('/admin', [AdminController::class, 'index']);
|
||||
Route::post('/admin/get_data_pegawai_sudah_survey', [AdminController::class, 'get_data_pegawai_sudah_survey']);
|
||||
Route::post('/admin/get_data_pegawai_tidak_mau_survey', [AdminController::class, 'data_tidak_mau_survey']);
|
||||
Route::get('/admin/dashboard_jawaban', [AdminController::class, 'dashboard_analisis']);
|
||||
// Route::get('/admin/dashboard_jawaban', [AdminController::class, 'dashboard_analisis']);
|
||||
Route::post('/admin/get_data_dashboard_jawaban', [AdminController::class, 'get_data_dashboard_analisis']);
|
||||
Route::post('/admin/report', [AdminController::class, 'download_report_data_pegawai_sudah_survey']);
|
||||
Route::get('/admin/dashboard_analisis', [AdminController::class, 'dashboard_analisis']);
|
||||
@ -30,4 +30,4 @@ Route::middleware('ceklogin')->group(function () {
|
||||
Route::get('/admin/dashboard_demografi', [AdminController::class, 'dashboard_demografi']);
|
||||
Route::post('/admin/get_data_dashboard_demografi', [AdminController::class, 'get_data_dashboard_demografi']);
|
||||
Route::post('/admin/report_data_demografi', [AdminController::class, 'download_report_dashboard_demografi']);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user