Compare commits

...

2 Commits

Author SHA1 Message Date
34776eb33a dashboard detail jawaban pegawai 2025-12-12 13:17:35 +07:00
fd7d268e8a - 2025-12-12 10:32:43 +07:00
8 changed files with 101 additions and 105 deletions

View File

@ -9,6 +9,7 @@ use App\Exports\DashboardJawabanExport;
use App\Models\Jawaban; use App\Models\Jawaban;
use App\Models\JawabanDetail; use App\Models\JawabanDetail;
use App\Models\SoalDetail; use App\Models\SoalDetail;
use App\Models\UnitKerja;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
@ -77,90 +78,23 @@ class AdminController extends Controller
return view('admin.dashboard', $data); return view('admin.dashboard', $data);
} }
public function get_data_pegawai_sudah_survey(Request $request) 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"];
$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');
$query = Jawaban::query() ->select([ 'unit', DB::raw('COUNT(*) as total_unit'), ])->whereNotNull('unit');
if ($request->unit_kerja) { if ($request->unit_kerja) {
$query->whereIn('unit', (array) $request->unit_kerja); $query->whereIn('unit', (array) $request->unit_kerja);
$masterUnits = array_intersect($masterUnits, $request->unit_kerja); $masterUnits = array_intersect($masterUnits, $request->unit_kerja);
} }
$query->groupBy('unit') $query->groupBy('unit') ->havingRaw('COUNT(*) > 0');
->havingRaw('COUNT(*) > 0');
$rekap = $query->get()->pluck('total_unit', 'unit'); $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); return DataTables::of($data)->make(true);
} }
public function download_report_data_pegawai_sudah_survey(Request $request) public function download_report_data_pegawai_sudah_survey(Request $request)
{ {
$masterUnits = [ $masterUnits = [
@ -893,6 +827,9 @@ class AdminController extends Controller
} }
return DataTables::of($query) return DataTables::of($query)
->addColumn('nama_pegawai', function($row){
return $row?->pegawai?->nama ?? '-';
})
->addColumn('action', function ($row) { ->addColumn('action', function ($row) {
return ' return '
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#detail_jawaban" data-id="'. $row->id .'"> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#detail_jawaban" data-id="'. $row->id .'">

View File

@ -244,6 +244,8 @@ class SoalController extends Controller
} }
} }
return redirect()->route('soal.thankyou') return redirect()->route('soal.thankyou')
->with('success', 'Jawaban berhasil disimpan.'); ->with('success', 'Jawaban berhasil disimpan.');
} }

View File

@ -9,11 +9,15 @@ class Jawaban extends Model
protected $connection = 'dbLmsMutu'; protected $connection = 'dbLmsMutu';
protected $table = 'public.lms_mutu_jawaban'; protected $table = 'public.lms_mutu_jawaban';
protected $guarded = ['id']; protected $guarded = ['id'];
protected $with = ['jawabanDetail']; protected $with = ['jawabanDetail', 'pegawai'];
public $timestamps = false; public $timestamps = false;
public function jawabanDetail(){ public function jawabanDetail(){
return $this->hasMany(JawabanDetail::class, 'lms_mutu_jawaban_id', 'id'); return $this->hasMany(JawabanDetail::class, 'lms_mutu_jawaban_id', 'id');
} }
public function pegawai(){
return $this->belongsTo(Pegawai::class, 'pegawai_id', 'id');
}
} }

View 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
View 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
View 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');
}
}

View File

@ -44,6 +44,7 @@
<thead class="bg-primary" id="table_header"> <thead class="bg-primary" id="table_header">
<tr> <tr>
<th class="text-white fs-5">Nama Pegawai</th> <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">Unit Kerja</th>
<th class="text-white fs-5">Action</th> <th class="text-white fs-5">Action</th>
</tr> </tr>
@ -115,6 +116,7 @@
} }
}, },
columns: [ columns: [
{ data: 'nama_pegawai' },
{ data: 'nama' }, { data: 'nama' },
{ data: 'unit' }, { data: 'unit' },
{ data: 'action' } { data: 'action' }

View File

@ -17,7 +17,7 @@ Route::middleware('ceklogin')->group(function () {
Route::get('/admin', [AdminController::class, 'index']); 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_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::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/get_data_dashboard_jawaban', [AdminController::class, 'get_data_dashboard_analisis']);
Route::post('/admin/report', [AdminController::class, 'download_report_data_pegawai_sudah_survey']); 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_analisis', [AdminController::class, 'dashboard_analisis']);