main
ilhamwara 2025-05-05 11:05:24 +07:00
parent d864e63ed5
commit a77de644f4
15 changed files with 160 additions and 72 deletions

View File

@ -3,6 +3,7 @@
use App\Models\Master\MasterMenu;
use App\Models\Master\MasterAccessMenu;
use App\Models\Kuesioner;
use App\Models\KuesionerLog;
use App\Models\Master\FormKriteria;
use App\Models\Penilaian;
use App\Models\User;
@ -213,6 +214,19 @@ if (!function_exists('getNilai')) {
return @$nilai ? @$nilai->skor : 0;
}
}
if (!function_exists('kuesionerLogStatus')) {
/**
* @param $val
*
* @return string
*/
function kuesionerLogStatus($KuesionerId)
{
$log = KuesionerLog::where('kuesioner_id',$KuesionerId)->orderBy('KuesionerLogId','DESC')->first();
$progress = '<span class="badge badge-warning">'.str_replace('_',' ',\Str::title($log->step)).'</span>';
return $progress;
}
}
if (!function_exists('status_kuesioner')) {
/**
@ -225,14 +239,15 @@ if (!function_exists('status_kuesioner')) {
//0 = Belum di Verifikasi Dinas
//1 = Sudah Diusulkan Oleh Dinas atau Sudin
//2 = Approve Dokumen
//3 = Ditolak Dokumen
//1 = Sudah di Verifikasi Dinas -> Hold Menunggu Usulan
//2 = Ditolak Oleh Dinas
//3 = selesai kelengkapan data
//4 = Validasi Diteruskan
//5 = Validasi Dikembalikan
//6 = Terbit SK
//3 = Kirim Ke Penilai Kota ( Proses Penilaian )
//4 = Selesai Penilaian Kota
//5 = Dikembalikan Penilaian Kota ke Sekolah
//6 = Selesai Penilaian Provinsi
//7 = Dikembalikan Penilaian Provinsi ke Kota
//8 = Selesai Penilaian Nasional
//9 = Selesai Penilaian Mandiri
//10 = Selesai Final
//11 = Terbit SK
}
}
@ -640,12 +655,16 @@ if (!function_exists('formKriteria')) {
function formKriteria($page_number,$sekolah_id = null)
{
$kriteria = FormKriteria::where('page_number',$page_number)->get();
$html = '';
if(@$sekolah_id){
$idSekolah = @$sekolah_id;
}else{
$idSekolah = session('sekolah_id');
}
$kuesioner = Kuesioner::where('ms_sekolah_id',$idSekolah)->where('tahun',date('Y'))->first();
foreach($kriteria as $keyKriteria => $data){
if(session('group_alias') == 'sekolah'){
@ -794,6 +813,17 @@ if (!function_exists('formKriteria')) {
$html .= '</div>';
$html .= '</div>';
$html .= '</div>';
if($kuesioner->status == 5){
$catatan = Penilaian::where('key','catatan')->where('page_number',$page_number)->where('ms_sekolah_id',$idSekolah)->where('status',1)->first();
$html .= '<div class="card mb-2 removeFormKriteria">';
// $html .= '<input type="hidden" name="key" value="'.encode_id($page_number).'">';
$html .= '<div class="card-body">';
$html .= '<h6><b>Catatan</b></h6>';
$html .= '<p>'.json_decode($catatan->value).'</p>';
$html .= '</div>';
$html .= '</div>';
}
}else{
$html .= '<div class="card mb-2 removeFormKriteria">';

View File

@ -60,7 +60,7 @@ class AjaxController extends Controller
}
public function getSekolahSK(Request $request)
{
$kuesioner = Kuesioner::where('level',($request->data-1))->where('tahun',date('Y'))->where('status',4)->get();
$kuesioner = Kuesioner::where('level',($request->data-1))->where('tahun',date('Y'))->where('status',10)->get();
$data = [];
foreach ($kuesioner as $key => $value) {
$data[$key]['id'] = encode_id($value->ms_sekolah_id);

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Kuesioner;
use App\Models\KuesionerLog;
use App\Models\ProfileSekolah;
use App\Models\Master\FormKriteria;
use App\Models\Penilaian;
@ -44,6 +45,7 @@ class HomeController extends Controller
$data['page'] = FormKriteria::select('page_number')->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->count();
$data['penilaian'] = Penilaian::select('page_number')->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->count();
$data['sk'] = SK::where('tahun',date('Y'))->where('sekolah','like','%'.session('sekolah_id').'%')->first();
$data['log'] = KuesionerLog::where('kuesioner_id',@$data['kuesioner']->KuesionerId)->orderBy('created_at','DESC')->first();
return view($this->template.'.sekolah', $data);
}else{
@ -53,10 +55,10 @@ class HomeController extends Controller
$data['total_usulan_nasional'] = Kuesioner::where('tahun',date('Y'))->where('level',2)->count();
$data['total_usulan_mandiri'] = Kuesioner::where('tahun',date('Y'))->where('level',3)->count();
$data['total_sekolah_kab'] = Kuesioner::where('tahun',date('Y'))->where('level',0)->where('status',6)->count();
$data['total_sekolah_prov'] = Kuesioner::where('tahun',date('Y'))->where('level',1)->where('status',6)->count();
$data['total_sekolah_nasional'] = Kuesioner::where('tahun',date('Y'))->where('level',2)->where('status',6)->count();
$data['total_sekolah_mandiri'] = Kuesioner::where('tahun',date('Y'))->where('level',3)->where('status',6)->count();
$data['total_sekolah_kab'] = Kuesioner::where('tahun',date('Y'))->where('level',0)->where('status',11)->count();
$data['total_sekolah_prov'] = Kuesioner::where('tahun',date('Y'))->where('level',1)->where('status',11)->count();
$data['total_sekolah_nasional'] = Kuesioner::where('tahun',date('Y'))->where('level',2)->where('status',11)->count();
$data['total_sekolah_mandiri'] = Kuesioner::where('tahun',date('Y'))->where('level',3)->where('status',11)->count();
$data['route'] = 'modules';
return view($this->template.'.admin', $data);
}

View File

@ -105,9 +105,6 @@ class CSAKController extends Controller
$penilaian .= '<span style="width:100%;" class="text-left badge badge-primary"> Kota : '.getNilaiAll('kota',$row->ms_sekolah_id).'</span></br>';
// $penilaian .= '<span style="width:100%;" class="text-left badge badge-success"> Provinsi : '.getNilaiAll('provinsi',$row->ms_sekolah_id).'</span></br>';
$log = KuesionerLog::where('kuesioner_id',$row->KuesionerId)->orderBy('created_at','DESC')->first();
$progress = '<span class="badge badge-warning">'.str_replace('_',' ',\Str::title($log->step)).'</span>';
$sekolah = '';
$sekolah .= @$row->sekolah->nama_sekolah.'<br>';
$sekolah .= '<span class="badge badge-success">'.@$row->profile->tingkat->name.'</span>&nbsp;';
@ -122,7 +119,7 @@ class CSAKController extends Controller
'wilayah' => $row->sekolah->kabupaten->name,
'penghargaan' => $penghargaan,
'penilaian' => $penilaian,
'progress' => $progress,
'progress' => kuesionerLogStatus($row->KuesionerId),
'action' => $action,
];
@ -145,21 +142,6 @@ class CSAKController extends Controller
public function store(Request $request)
{
$sekolahId = decode_id($request->sekolah);
$dokumen = DokumenAdministrasi::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->first();
if((@$dokumen->nama_dalam_sk == 0) || (@$dokumen->sk_ttd == 0) || (@$dokumen->waktu_penetapan == 0)){
return response()->json(['status' => false,'message' => 'Data Dokumen Administrasi Belum Diisi!']);
}
if($request['validasi'] == 1){
$step = 'validasi_usulan_diteruskan';
$status = 4;
}elseif($request['validasi'] == 2){
$step = 'validasi_usulan_dikembalikan';
$status = 5;
}else{
return response()->json(['validasi' => false,'message' => 'Maaf Terjadi Kesalahan Dalam Input Data!']);
}
$soal = Penilaian::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray();
$penilaian = Penilaian::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->where('status',1)->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray();
@ -168,21 +150,56 @@ class CSAKController extends Controller
return response()->json(['validasi' => false,'message' => 'Maaf Penilaian Belum Lengkap!']);
}
$kuesioner = Kuesioner::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->first();
$kuesioner->catatan_usulan = $request['catatan_validasi'];
$kuesioner->status = $status;
$kuesioner->save();
if($request['validasi'] == 1){
//kuesioner log
$log = new KuesionerLog;
$log->kuesioner_id = $kuesioner->KuesionerId;
$log->ms_sekolah_id = $kuesioner->ms_sekolah_id;
$log->npsn = $kuesioner->npsn;
$log->ms_group_id = session('group_id');
$log->step = @$step;
$log->status = $status;
$log->created_by = auth()->user()->id;
$log->save();
$kuesioner = Kuesioner::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->first();
$kuesioner->catatan_usulan = $request['catatan_validasi'];
$kuesioner->status = 10; // selesai final, karena usulannya ke kota dari yang belum ada jadi langsung selesai tidak ada naik ke provinsi
$kuesioner->save();
//kuesioner log
$log = new KuesionerLog;
$log->kuesioner_id = $kuesioner->KuesionerId;
$log->ms_sekolah_id = $kuesioner->ms_sekolah_id;
$log->npsn = $kuesioner->npsn;
$log->ms_group_id = session('group_id');
$log->step = 'selesai_penilaian_kota';
$log->status = 4;
$log->created_by = auth()->user()->id;
$log->save();
//kuesioner log final
$log = new KuesionerLog;
$log->kuesioner_id = $kuesioner->KuesionerId;
$log->ms_sekolah_id = $kuesioner->ms_sekolah_id;
$log->npsn = $kuesioner->npsn;
$log->ms_group_id = session('group_id');
$log->step = 'selesai_final';
$log->status = 10;
$log->created_by = auth()->user()->id;
$log->save();
}elseif($request['validasi'] == 2){
$kuesioner = Kuesioner::where('ms_sekolah_id',$sekolahId)->where('tahun',date('Y'))->first();
$kuesioner->catatan_usulan = $request['catatan_validasi'];
$kuesioner->status = 5;
$kuesioner->save();
//kuesioner log
$log = new KuesionerLog;
$log->kuesioner_id = $kuesioner->KuesionerId;
$log->ms_sekolah_id = $kuesioner->ms_sekolah_id;
$log->npsn = $kuesioner->npsn;
$log->ms_group_id = session('group_id');
$log->step = 'dikembalikan_penilaian_kota';
$log->status = 5;
$log->created_by = auth()->user()->id;
$log->save();
}else{
return response()->json(['validasi' => false,'message' => 'Maaf Terjadi Kesalahan Dalam Input Data!']);
}
return response()->json(['status' => true,'message' => 'Berhasil update data!']);
}

View File

@ -50,6 +50,7 @@ class SKController extends Controller
$_data[] = [
'no' => $key+1,
'id' => encode_id($row->id),
'nomor_sk' => $row->nomor_sk,
'judul' => $row->nama,
'sekolah' => listSekolah($row->sekolah),
'tahun' => $row->tahun,
@ -85,6 +86,7 @@ class SKController extends Controller
// dd($request->all());
try {
Validator::make($request->all(), [
'nomor_sk' => 'max:200',
'judul' => 'max:200',
'tanggal_penetapan' => 'date',
'jenis_usulan' => 'required',
@ -150,6 +152,7 @@ class SKController extends Controller
],[
'tahun' => date('Y'),
'nama' => @$request->nama,
'nomor_sk' => @$request->nomor_sk,
'tanggal_penetapan' => $request->tanggal_penetapan,
'jenis_usulan' => $request->jenis_usulan,
'file' => $filePath,
@ -163,6 +166,7 @@ class SKController extends Controller
'jenis_usulan' => $request->jenis_usulan,
],[
'tahun' => date('Y'),
'nomor_sk' => @$request->nomor_sk,
'nama' => @$request->nama,
'tanggal_penetapan' => $request->tanggal_penetapan,
'jenis_usulan' => $request->jenis_usulan,
@ -174,8 +178,8 @@ class SKController extends Controller
foreach($request->sekolah as $sekolah){
$kuesioner = Kuesioner::where('ms_sekolah_id',decode_id($sekolah))->where('status',4)->where('tahun',date('Y'))->first();
$kuesioner->status = 6;
$kuesioner = Kuesioner::where('ms_sekolah_id',decode_id($sekolah))->where('status',10)->where('tahun',date('Y'))->first();
$kuesioner->status = 11;
$kuesioner->save();
//kuesioner log
@ -184,8 +188,8 @@ class SKController extends Controller
$log->ms_sekolah_id = $kuesioner->ms_sekolah_id;
$log->npsn = $kuesioner->npsn;
$log->ms_group_id = session('group_id');
$log->step = 'penetapan_sk';
$log->status = 6;
$log->step = 'terbit_sk';
$log->status = 11;
$log->created_by = auth()->user()->id;
$log->save();
}

View File

@ -100,8 +100,13 @@ class ProfileController extends Controller
$penilaian = '';
$penilaian .= '<span style="width:100%;" class="text-left badge badge-secondary"> Sekolah : '.getNilaiAll('sekolah',$row->MsSekolahId).'</span></br>';
$penilaian .= '<span style="width:100%;" class="text-left badge badge-primary"> Kota : '.getNilaiAll('kota',$row->MsSekolahId).'</span></br>';
$penilaian .= '<span style="width:100%;" class="text-left badge badge-success"> Provinsi : '.getNilaiAll('provinsi',$row->MsSekolahId).'</span></br>';
if(($row->level+1) == 1){
$penilaian .= '<span style="width:100%;" class="text-left badge badge-primary"> Kota : '.getNilaiAll('kota',$row->MsSekolahId).'</span></br>';
}
if(($row->level+1) == 2){
$penilaian .= '<span style="width:100%;" class="text-left badge badge-primary"> Kota : '.getNilaiAll('kota',$row->MsSekolahId).'</span></br>';
$penilaian .= '<span style="width:100%;" class="text-left badge badge-success"> Provinsi : '.getNilaiAll('provinsi',$row->MsSekolahId).'</span></br>';
}
$_data[] = [
'no' => $key+1,

View File

@ -13,6 +13,7 @@ return new class extends Migration
{
Schema::create('sk', function (Blueprint $table) {
$table->id('SkId');
$table->string('nomor_sk')->nullable();
$table->string('nama')->nullable();
$table->json('sekolah');
$table->year('tahun');

View File

@ -143,14 +143,18 @@
</div>
@endif
</div>
@if(@$sk)
@if(@$kuesioner)
<table class="table table-bordered">
<tr class="bg-success text-white">
<th><b>Status Usulan</b></th>
<th><b>Penghargaan Terakhir</b></th>
<th><b>Tanggal Penetapan SK</b></th>
<th><b>Lampiran SK</b></th>
</tr>
<tr>
<td style="vertical-align: middle;">
<span class="badge badge-warning">{{str_replace('_',' ',\Str::title($log->step))}}</span>
</td>
<td style="vertical-align: middle;">
<?php
if(@$sk->jenis_usulan == 0){
@ -168,7 +172,11 @@
{!!$penghargaan!!}
</td>
<td style="vertical-align: middle;">{{@$sk->tanggal_penetapan}}</td>
<td style="vertical-align: middle;"><a download href="'.asset('uploads/'.@$sk->file).'" class="btn btn-sm btn-warning" style="width: 100%;"><i class="fal fa-download"></i> SK Adiwiyata</a></td>
<td style="vertical-align: middle;">
@if(@$sk)
<a download href="'.asset('uploads/'.@$sk->file).'" class="btn btn-sm btn-warning" style="width: 100%;"><i class="fal fa-download"></i> SK Adiwiyata</a>
@endif
</td>
</tr>
</table>
@endif

View File

@ -142,7 +142,7 @@
<th data-field="npsn">NPSN</th>
<th data-field="nama">Nama Sekolah</th>
<th data-field="wilayah">Wilayah</th>
<th data-field="penghargaan">Penghargaan Terakhir</th>
<!-- <th data-field="penghargaan">Penghargaan Terakhir</th> -->
<th data-field="status">Status</th>
</tr>
</thead>

View File

@ -143,13 +143,13 @@
<th data-field="nama">Nama Sekolah</th>
<th data-field="wilayah">Wilayah</th>
<th data-field="status_level">Status Level</th>
<th data-field="tanggal_level">Tanggal Level</th>
<th data-field="penghargaan">Penghargaan Terakhir</th>
<th data-field="dok">DOK Administrasi</th>
<!-- <th data-field="tanggal_level">Tanggal Level</th> -->
<!-- <th data-field="penghargaan">Penghargaan Terakhir</th> -->
<!-- <th data-field="dok">DOK Administrasi</th> -->
<th data-field="kriteria">Pemenuhan Kriteria</th>
<th data-field="jenis_usulan">Jenis Usulan</th>
<th data-field="usulkan_csa">Usulkan CSA</th>
<th data-field="perpanjang_csa">Perpanjangan CSA</th>
<!-- <th data-field="perpanjang_csa">Perpanjangan CSA</th> -->
</tr>
</thead>
<tbody></tbody>

View File

@ -339,14 +339,6 @@
<tr>
<th colspan="2" class="table-info">Berdasarkan data usulan yang dilengkapi, dinyatakan bahwa {{@$sekolah->nama_sekolah}} :</th>
</tr>
<tr>
<td>Nilai Dokumen Administrasi</td>
<td>0</td>
</tr>
<tr>
<td>Nilai Pemenuhan Kriteria</td>
<td>0</td>
</tr>
<tr>
<td>Validasi</td>
<td>

View File

@ -129,7 +129,7 @@
</div>
<div class="card-footer">
@if(session('group_alias') == 'sekolah')
@if($kuesioner->status == 1)
@if(($kuesioner->status == 1) || ($kuesioner->status == 5))
<button id="btnSave" class="btn btn-success"><i class="fal fa-save"></i>&nbsp;Simpan Data</button>
@endif
@endif
@ -145,7 +145,7 @@
<script type="text/javascript" src="{{asset('assets/js/formplugins/dropzone/dropzone.js')}}"></script>
<script type="text/javascript">
@if(session('group_alias') == 'sekolah')
@if($kuesioner->status != 1)
@if(($kuesioner->status != 1) && ($kuesioner->status != 5))
$('.dropzone').remove();
@endif
@endif
@ -265,7 +265,7 @@
});
@if(session('group_alias') == 'sekolah')
@if($kuesioner->status != 1)
@if(($kuesioner->status != 1) && ($kuesioner->status != 5))
$('.dropzone').remove();
@endif
@endif
@ -296,6 +296,7 @@
let formData = {};
let allData = {};
let isValid = true; // Flag validasi
let isMultiple = true; // Flag validasi
currentForm.forEach(field => {
let name = field.name.replace(/\[\]$/, ''); // Hapus "[]" di akhir nama input
@ -315,7 +316,7 @@
let name = $(this).attr('name');
let value = $(this).val()?.trim(); // Pastikan nilai di-trim untuk menghindari spasi kosong
if (type === 'radio' || type === 'checkbox') {
if (type === 'radio') {
// Validasi radio: setidaknya satu opsi harus dipilih
if ($(`input[name="${name}"]:checked`).length === 0) {
isValid = false;
@ -323,6 +324,16 @@
} else {
$(`input[name="${name}"]`).closest('.custom-control-input').removeClass("is-invalid");
}
}else if(type === 'checkbox'){
if ($(`input[name="${name}"]:checked`).length === 0) {
isValid = false;
$(`input[name="${name}"]`).closest('.custom-control-input').addClass("is-invalid");
}else if ($(`input[name="${name}"]:checked`).length === 1) {
isMultiple = false;
$(`input[name="${name}"]`).closest('.custom-control-input').addClass("is-invalid");
} else {
$(`input[name="${name}"]`).closest('.custom-control-input').removeClass("is-invalid");
}
} else {
// Validasi input teks atau lainnya
if (!value) {
@ -341,6 +352,12 @@
return;
}
if (!isMultiple) {
toastr.error("Harap isi minimal lebih dari 1 isian", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
// alert(".");
return;
}
$.ajax({
url: "{{route($route.'.store')}}", // Ganti dengan URL API-mu
type: 'POST', // Bisa juga 'POST' kalau perlu

View File

@ -287,12 +287,19 @@
</li>
</ul>
@if(session('group_alias') == 'sekolah')
@if($kuesioner->status == 1)
@if(($kuesioner->status == 1) || ($kuesioner->status == 5))
<div class="custom-control custom-checkbox m-2">
<input type="checkbox" class="custom-control-input is-required check" id="true" value="1" name="check">
<label class="custom-control-label" for="true">Dengan ini menyatakan bahwa kelengkapan data sudah benar.</label>
</div>
<button class="btn btn-success btnSend">Kirim Data</button>
@if(@$kuesioner->status == 5)
<div class="alert alert-danger mt-2">
Status : {!!kuesionerLogStatus(@$kuesioner->KuesionerId)!!} <br>
<p class="mb-0"><i>Pastikan isian sudah diperbaiki sebelum dikirim kembali</i></p>
</div>
@endif
@endif
@endif
</div>

View File

@ -19,6 +19,10 @@
<input type="text" name="nama" class="form-control">
<small class="text-muted"><i>(Opsional)</i></small>
</div>
<div class="form-group">
<label class="label">Nomor SK</label>
<input type="text" name="nomor_sk" class="form-control" required>
</div>
<div class="form-group">
<label class="label">Tanggal Penetapan SK</label>
<input type="date" name="tanggal_penetapan" class="form-control" required>

View File

@ -144,6 +144,7 @@
<th data-field="no">No</th>
<th data-field="judul">Judul SK</th>
<th data-field="sekolah">Sekolah</th>
<th data-field="nomor_sk">Nomor SK</th>
<th data-field="tanggal_penetapan">Tanggal Penetapan SK</th>
<th data-field="tahun">Tahun</th>
<th data-field="jenis_usulan">Jenis Usulan</th>