Merge pull request 'main' (#2) from main into production
Reviewed-on: #2
This commit is contained in:
commit
47793b680d
@ -8,14 +8,51 @@ use App\Exports\DashboardExport;
|
|||||||
use App\Exports\DashboardJawabanExport;
|
use App\Exports\DashboardJawabanExport;
|
||||||
use App\Models\Jawaban;
|
use App\Models\Jawaban;
|
||||||
use App\Models\JawabanDetail;
|
use App\Models\JawabanDetail;
|
||||||
|
use App\Models\MappingUnitPegawai;
|
||||||
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;
|
||||||
use Yajra\DataTables\DataTables;
|
use Yajra\DataTables\DataTables;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class AdminController extends Controller
|
class AdminController extends Controller
|
||||||
{
|
{
|
||||||
|
private function unitKey(?string $s):string
|
||||||
|
{
|
||||||
|
if (!$s) return '';
|
||||||
|
|
||||||
|
$s = Str::of($s)->lower()->trim();
|
||||||
|
|
||||||
|
// buang teks dalam kurung: (SIMRS) dll
|
||||||
|
$s = $s->replaceMatches('/\s*\([^)]*\)\s*/u', ' ');
|
||||||
|
|
||||||
|
// expand singkatan penting
|
||||||
|
$s = $s->replaceMatches('/\bksm\b/u', 'kelompok staf medik');
|
||||||
|
$s = $s->replaceMatches('/\btimker\b/u', 'tim kerja');
|
||||||
|
$s = $s->replaceMatches('/\bhumas\b/u', 'hubungan masyarakat');
|
||||||
|
$s = $s->replaceMatches('/\bipt\b/u', 'instalasi perinatal terpadu');
|
||||||
|
$s = $s->replaceMatches('/\bissb\b/u', 'instalasi sterilisasi sentral dan binatu');
|
||||||
|
$s = $s->replaceMatches('/\bipsprs\b/u', 'instalasi pemeliharaan sarana prasarana rumah sakit');
|
||||||
|
$s = $s->replaceMatches('/\binstalasi\s+rawat\s+intensif\s*\/\s*icu\b/u', 'instalasi rawat intensif');
|
||||||
|
$s = $s->replaceMatches(
|
||||||
|
'/\binstalasi\s+kl\s*(?:&|\/)?\s*k3rs\b/u',
|
||||||
|
'instalasi kesehatan lingkungan dan keselamatan dan kesehatan kerja rumah sakit'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// samakan simbol
|
||||||
|
$s = $s->replace(['&', '/', '-', '.', ',', ':', ';'], ' ');
|
||||||
|
|
||||||
|
// samakan kata penghubung
|
||||||
|
$s = $s->replace(' dan ', ' ');
|
||||||
|
|
||||||
|
// rapikan spasi
|
||||||
|
$s = $s->replaceMatches('/\s+/u', ' ')->trim();
|
||||||
|
|
||||||
|
return (string) $s;
|
||||||
|
}
|
||||||
//
|
//
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
@ -86,10 +123,7 @@ class AdminController extends Controller
|
|||||||
"Komite Medik",
|
"Komite Medik",
|
||||||
"Komite Keperawatan",
|
"Komite Keperawatan",
|
||||||
"Komite PPI & PRA",
|
"Komite PPI & PRA",
|
||||||
"KTKL",
|
"KTKL", "KFT", "KEH", "ULP",
|
||||||
"KFT",
|
|
||||||
"KEH",
|
|
||||||
"ULP",
|
|
||||||
"Timker Yankep",
|
"Timker Yankep",
|
||||||
"Timker Yanjang",
|
"Timker Yanjang",
|
||||||
"Timker Perencanaan, Evaluasi dan Program",
|
"Timker Perencanaan, Evaluasi dan Program",
|
||||||
@ -116,12 +150,7 @@ class AdminController extends Controller
|
|||||||
"Instalasi Gawat Darurat",
|
"Instalasi Gawat Darurat",
|
||||||
"Instalasi Verifikasi dan Penjaminan Pasien",
|
"Instalasi Verifikasi dan Penjaminan Pasien",
|
||||||
"Instalasi KL & K3RS",
|
"Instalasi KL & K3RS",
|
||||||
"ISSB",
|
"ISSB", "IPT", "IPJNI", "IPSPRS", "IPPB", "IPPISGB",
|
||||||
"IPT",
|
|
||||||
"IPJNI",
|
|
||||||
"IPSPRS",
|
|
||||||
"IPPB",
|
|
||||||
"IPPISGB",
|
|
||||||
"Instalasi Rawat Jalan Eksekutif",
|
"Instalasi Rawat Jalan Eksekutif",
|
||||||
"Instalasi Teknologi Berbantu (TRB)",
|
"Instalasi Teknologi Berbantu (TRB)",
|
||||||
"Klinik Utama Bintaro",
|
"Klinik Utama Bintaro",
|
||||||
@ -132,35 +161,84 @@ class AdminController extends Controller
|
|||||||
"KSM Gigi & Mulut",
|
"KSM Gigi & Mulut",
|
||||||
"KSM Spesialis Lain",
|
"KSM Spesialis Lain",
|
||||||
"KSM Umum",
|
"KSM Umum",
|
||||||
"Lainnya"
|
"Lainnya",
|
||||||
];
|
];
|
||||||
$query = Jawaban::query()
|
|
||||||
->select([
|
|
||||||
'unit',
|
|
||||||
DB::raw('COUNT(*) as total_unit'),
|
|
||||||
])->whereNotNull('unit');
|
|
||||||
|
|
||||||
|
// 1) Total karyawan per UnitKerja (unik pegawai)
|
||||||
|
$unitPegawai = UnitKerja::query()
|
||||||
|
->where('statusenabled', true)
|
||||||
|
->with([
|
||||||
|
'mappingPegawai' => function ($q) {
|
||||||
|
$q->where('statusenabled', true)
|
||||||
|
->whereHas('pegawai', fn ($p) => $p->where('statusenabled', true)->where('kedudukanfk', 1))
|
||||||
|
->with([
|
||||||
|
'pegawai' => fn ($p) => $p->where('statusenabled', true)->where('kedudukanfk', 1)
|
||||||
|
->select('id', 'namalengkap')
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
])
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$unitTotals = $unitPegawai->map(function ($unit) {
|
||||||
|
$pegawaiUnik = $unit->mappingPegawai
|
||||||
|
->pluck('pegawai')
|
||||||
|
->filter()
|
||||||
|
->unique('id');
|
||||||
|
|
||||||
|
return [
|
||||||
|
'name' => $unit->name,
|
||||||
|
'total_karyawan' => $pegawaiUnik->count(),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// map: key(normalized unit) => total_karyawan
|
||||||
|
$unitTotalMaps = $unitTotals->mapWithKeys(function ($item) {
|
||||||
|
return [$this->unitKey($item['name']) => (int)$item['total_karyawan']];
|
||||||
|
});
|
||||||
|
|
||||||
|
// 2) Query Jawaban (ini yang nanti difilter)
|
||||||
|
$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);
|
|
||||||
}
|
}
|
||||||
$query->groupBy('unit')
|
|
||||||
->havingRaw('COUNT(*) > 0');
|
|
||||||
$rekap = $query->get()->pluck('total_unit', 'unit');
|
|
||||||
|
|
||||||
$data = collect($masterUnits)
|
$jawabanCounts = $query->groupBy('unit')->get();
|
||||||
->filter(fn($unit) => ($rekap[$unit] ?? 0) > 0)
|
|
||||||
->map(fn($unit) => [
|
// Map total karyawan: key(normalized) => total_karyawan (ini dari UnitKerja)
|
||||||
'unit' => $unit,
|
$unitTotalMaps = $unitTotals->mapWithKeys(function ($item) {
|
||||||
'total_unit' => $rekap[$unit],
|
return [$this->unitKey($item['name']) => (int) $item['total_karyawan']];
|
||||||
])
|
});
|
||||||
|
|
||||||
|
// Build data dari JAWABAN langsung (bukan masterUnits)
|
||||||
|
$data = $jawabanCounts->map(function ($row) use ($unitTotalMaps) {
|
||||||
|
|
||||||
|
$key = $this->unitKey($row->unit);
|
||||||
|
$sudahIsi = (int) $row->total_unit;
|
||||||
|
|
||||||
|
if (isset($unitTotalMaps[$key]) && (int)$unitTotalMaps[$key] > 0) {
|
||||||
|
$totalKaryawan = (int) $unitTotalMaps[$key];
|
||||||
|
$progress = $sudahIsi . ' / ' . $totalKaryawan;
|
||||||
|
} else {
|
||||||
|
$totalKaryawan = null; // tidak diketahui
|
||||||
|
$progress = (string) $sudahIsi; // hanya angka, tanpa /0
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'unit' => $row->unit,
|
||||||
|
'total_unit' => $progress
|
||||||
|
];
|
||||||
|
})
|
||||||
->values();
|
->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 = [
|
||||||
@ -261,7 +339,7 @@ class AdminController extends Controller
|
|||||||
->where('a.lms_mutu_soal_detail_id', 51)
|
->where('a.lms_mutu_soal_detail_id', 51)
|
||||||
->where('a.jawaban', 'TIDAK')
|
->where('a.jawaban', 'TIDAK')
|
||||||
->count();
|
->count();
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'msg' => 'Berhasil',
|
'msg' => 'Berhasil',
|
||||||
'data' => $total_tidak
|
'data' => $total_tidak
|
||||||
@ -755,7 +833,7 @@ class AdminController extends Controller
|
|||||||
// array_push($data_setuju_header, 'Jawaban Lainnya');
|
// array_push($data_setuju_header, 'Jawaban Lainnya');
|
||||||
array_push($data_setuju_header, 'Total Responden');
|
array_push($data_setuju_header, 'Total Responden');
|
||||||
array_unshift($data_setuju_report, $data_setuju_header);
|
array_unshift($data_setuju_report, $data_setuju_header);
|
||||||
|
|
||||||
$data_other_report = [];
|
$data_other_report = [];
|
||||||
$data_other_header = ['No', 'Soal'];
|
$data_other_header = ['No', 'Soal'];
|
||||||
foreach ($data_option_other as $key => $value) {
|
foreach ($data_option_other as $key => $value) {
|
||||||
@ -879,7 +957,7 @@ class AdminController extends Controller
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function get_data_pegawai_jawaban(Request $request)
|
public function get_data_pegawai_jawaban(Request $request)
|
||||||
{
|
{
|
||||||
$query = Jawaban::query();
|
$query = Jawaban::query();
|
||||||
@ -893,6 +971,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 .'">
|
||||||
@ -991,7 +1072,7 @@ class AdminController extends Controller
|
|||||||
->where('lms_mutu_soal_detail_id', $value['id'])
|
->where('lms_mutu_soal_detail_id', $value['id'])
|
||||||
->where('jawaban', '!=', null);
|
->where('jawaban', '!=', null);
|
||||||
if($request->unit_kerja) {
|
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');
|
$sub->groupBy('lms_mutu_soal_detail_id');
|
||||||
|
|
||||||
@ -1016,18 +1097,18 @@ class AdminController extends Controller
|
|||||||
->where('d.jawaban', '!=', null)
|
->where('d.jawaban', '!=', null)
|
||||||
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
||||||
if($request->unit_kerja) {
|
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');
|
$result->orderBy('d.lms_mutu_soal_detail_id', 'asc');
|
||||||
|
|
||||||
if(is_array($soal_json['options'])){
|
if(is_array($soal_json['options'])){
|
||||||
if(count($soal_json['options']) > 0){
|
if(count($soal_json['options']) > 0){
|
||||||
foreach ($soal_json['options'] as $v) {
|
foreach ($soal_json['options'] as $v) {
|
||||||
|
|
||||||
if($v != 'Lainnya'){
|
if($v != 'Lainnya'){
|
||||||
$row = (clone $result)->where('d.jawaban', $v)
|
$row = (clone $result)->where('d.jawaban', $v)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if($row) {
|
if($row) {
|
||||||
if($total == 0){
|
if($total == 0){
|
||||||
$total = $row->total_semua;
|
$total = $row->total_semua;
|
||||||
@ -1038,7 +1119,7 @@ class AdminController extends Controller
|
|||||||
'value' => $row->total_jawaban,
|
'value' => $row->total_jawaban,
|
||||||
'total' => $row->total_semua
|
'total' => $row->total_semua
|
||||||
];
|
];
|
||||||
|
|
||||||
array_push($jawaban, $data_per_jawaban);
|
array_push($jawaban, $data_per_jawaban);
|
||||||
} else {
|
} else {
|
||||||
$data_per_jawaban = [
|
$data_per_jawaban = [
|
||||||
@ -1069,11 +1150,11 @@ class AdminController extends Controller
|
|||||||
->where('jawaban', '!=', null)
|
->where('jawaban', '!=', null)
|
||||||
->whereNotIn('d.jawaban', $soal_json['options'])
|
->whereNotIn('d.jawaban', $soal_json['options'])
|
||||||
->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first();
|
->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first();
|
||||||
|
|
||||||
// $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
// $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
||||||
// ->get()
|
// ->get()
|
||||||
// ->toArray();
|
// ->toArray();
|
||||||
|
|
||||||
// foreach ($get_data as $val) {
|
// foreach ($get_data as $val) {
|
||||||
if($get_data){
|
if($get_data){
|
||||||
$data_per_jawaban = [
|
$data_per_jawaban = [
|
||||||
@ -1108,22 +1189,22 @@ class AdminController extends Controller
|
|||||||
array_push($jawaban, $data_per_jawaban);
|
array_push($jawaban, $data_per_jawaban);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data_persoal = [
|
$data_persoal = [
|
||||||
'no_soal' => $soal_json['no'],
|
'no_soal' => $soal_json['no'],
|
||||||
'soal' => $soal_json['soal'],
|
'soal' => $soal_json['soal'],
|
||||||
'jawaban' => $jawaban
|
'jawaban' => $jawaban
|
||||||
];
|
];
|
||||||
|
|
||||||
array_push($data_all, $data_persoal);
|
array_push($data_all, $data_persoal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'data' => $data_all,
|
'data' => $data_all,
|
||||||
'total' => $total
|
'total' => $total
|
||||||
];
|
];
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'msg' => 'Berhasil',
|
'msg' => 'Berhasil',
|
||||||
'data' => $data
|
'data' => $data
|
||||||
@ -1163,7 +1244,7 @@ class AdminController extends Controller
|
|||||||
->where('lms_mutu_soal_detail_id', $value['id'])
|
->where('lms_mutu_soal_detail_id', $value['id'])
|
||||||
->where('jawaban', '!=', null);
|
->where('jawaban', '!=', null);
|
||||||
if($request->unit_kerja) {
|
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');
|
$sub->groupBy('lms_mutu_soal_detail_id');
|
||||||
$result = DB::table('lms_mutu_jawaban_detail AS d')
|
$result = DB::table('lms_mutu_jawaban_detail AS d')
|
||||||
@ -1187,18 +1268,18 @@ class AdminController extends Controller
|
|||||||
->where('d.jawaban', '!=', null)
|
->where('d.jawaban', '!=', null)
|
||||||
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
||||||
if($request->unit_kerja) {
|
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');
|
$result->orderBy('d.lms_mutu_soal_detail_id', 'asc');
|
||||||
|
|
||||||
if(is_array($soal_json['options'])){
|
if(is_array($soal_json['options'])){
|
||||||
if(count($soal_json['options']) > 0){
|
if(count($soal_json['options']) > 0){
|
||||||
foreach ($soal_json['options'] as $v) {
|
foreach ($soal_json['options'] as $v) {
|
||||||
|
|
||||||
if($v != 'Lainnya'){
|
if($v != 'Lainnya'){
|
||||||
$row = (clone $result)->where('d.jawaban', $v)
|
$row = (clone $result)->where('d.jawaban', $v)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if($row) {
|
if($row) {
|
||||||
if($total == 0){
|
if($total == 0){
|
||||||
$total = $row->total_semua;
|
$total = $row->total_semua;
|
||||||
@ -1240,11 +1321,11 @@ class AdminController extends Controller
|
|||||||
->where('jawaban', '!=', null)
|
->where('jawaban', '!=', null)
|
||||||
->whereNotIn('d.jawaban', $soal_json['options'])
|
->whereNotIn('d.jawaban', $soal_json['options'])
|
||||||
->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first();
|
->groupBy('d.lms_mutu_soal_detail_id', 't.total_semua')->first();
|
||||||
|
|
||||||
// $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
// $get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
||||||
// ->get()
|
// ->get()
|
||||||
// ->toArray();
|
// ->toArray();
|
||||||
|
|
||||||
// foreach ($get_data as $val) {
|
// foreach ($get_data as $val) {
|
||||||
if($get_data){
|
if($get_data){
|
||||||
$data_per_jawaban = [
|
$data_per_jawaban = [
|
||||||
@ -1343,7 +1424,7 @@ class AdminController extends Controller
|
|||||||
'value' => 0
|
'value' => 0
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
// set value
|
// set value
|
||||||
foreach ($value['jawaban'] as $v) {
|
foreach ($value['jawaban'] as $v) {
|
||||||
$teks = $v['name'];
|
$teks = $v['name'];
|
||||||
|
|||||||
@ -111,7 +111,7 @@ class SoalController extends Controller
|
|||||||
$formLocked = true;
|
$formLocked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$prefillJawaban = [];
|
$prefillJawaban = [];
|
||||||
return view('soal.index', [
|
return view('soal.index', [
|
||||||
'soal' => $soal,
|
'soal' => $soal,
|
||||||
@ -194,7 +194,7 @@ class SoalController extends Controller
|
|||||||
$namaResponden = $answer;
|
$namaResponden = $answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Str::contains($pertanyaan, 'unit/area kerja anda saat ini')) {
|
if (Str::contains($pertanyaan, 'apa unit/area kerja anda saat ini')) {
|
||||||
$unitKerja = $answer;
|
$unitKerja = $answer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,7 +242,9 @@ class SoalController extends Controller
|
|||||||
'mengisi_tidak' => 0,
|
'mengisi_tidak' => 0,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return redirect()->route('soal.thankyou')
|
return redirect()->route('soal.thankyou')
|
||||||
->with('success', 'Jawaban berhasil disimpan.');
|
->with('success', 'Jawaban berhasil disimpan.');
|
||||||
|
|||||||
@ -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');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
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">
|
<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>
|
||||||
@ -62,7 +63,7 @@
|
|||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||||
@ -87,7 +88,7 @@
|
|||||||
const button = $(event.relatedTarget);
|
const button = $(event.relatedTarget);
|
||||||
const id = button.data('id');
|
const id = button.data('id');
|
||||||
getJawaban(id);
|
getJawaban(id);
|
||||||
|
|
||||||
});
|
});
|
||||||
$('#detail_jawaban').on('hidden.bs.modal', function () {
|
$('#detail_jawaban').on('hidden.bs.modal', function () {
|
||||||
loadLoading();
|
loadLoading();
|
||||||
@ -115,6 +116,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
|
{ data: 'nama_pegawai' },
|
||||||
{ data: 'nama' },
|
{ data: 'nama' },
|
||||||
{ data: 'unit' },
|
{ data: 'unit' },
|
||||||
{ data: 'action' }
|
{ data: 'action' }
|
||||||
@ -173,4 +175,4 @@
|
|||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@ -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']);
|
||||||
@ -30,4 +30,4 @@ Route::middleware('ceklogin')->group(function () {
|
|||||||
Route::get('/admin/dashboard_demografi', [AdminController::class, 'dashboard_demografi']);
|
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/get_data_dashboard_demografi', [AdminController::class, 'get_data_dashboard_demografi']);
|
||||||
Route::post('/admin/report_data_demografi', [AdminController::class, 'download_report_dashboard_demografi']);
|
Route::post('/admin/report_data_demografi', [AdminController::class, 'download_report_dashboard_demografi']);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user