main
ilhamwara 2025-03-12 11:49:51 +07:00
parent b1dbd6c997
commit 19667aeb83
34 changed files with 1597 additions and 193 deletions

View File

@ -4,6 +4,347 @@ use App\Models\Master\MasterMenu;
use App\Models\Master\MasterAccessMenu;
use App\Models\Kuesioner;
use App\Models\Master\FormKriteria;
use App\Models\Penilaian;
if (!function_exists('hitungSkor')) {
/**
* @param $val
*
* @return string
*/
function hitungSkor($key,$val,$lainnya = [])
{
$skor = 0;
$countLainnya = 0;
if(@$lainnya){
$countLainnya = count(array_filter($lainnya, function ($value) {
return !is_null($value);
}));
}
if($key == 'rencana_gerakan_pblhs'){
if($val == "Sesuai dengan Laporan EDS dan hasil IPMLH."){
$skor = 3;
}elseif($val == "Sesuai dengan Laporan EDS atau hasil IPMLH."){
$skor = 2;
}elseif($val == "Tidak sesuai dengan Laporan EDS dan hasil IPMLH."){
$skor = 1;
}else{
$skor = 0;
}
}elseif($key == 'pihak_terlibat_pblhs'){
$array3 = ["Kepala Sekolah", "Dewan pendidik", "Komite sekolah", "Peserta Didik", "Masyarakat"];
$array2 = ["Kepala Sekolah", "Dewan pendidik", "Komite sekolah", "Peserta Didik"];
$array1 = ["Kepala Sekolah", "Dewan pendidik", "Komite sekolah"];
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif (!array_diff($array2, $val) && !array_diff($val, $array2)) {
$skor = 2;
} elseif (!array_diff($array1, $val) && !array_diff($val, $array1)) {
$skor = 1;
} else {
$skor = 0;
}
}elseif($key == 'dokumen_ktsp'){
$array3 = ["Visi", "Misi", "Tujuan", "Program pengembangan diri"];
$array2 = ["Visi", "Misi", "Tujuan"];
$array22 = ["Visi", "Misi", "Program pengembangan diri"];
$array1 = ["Visi", "Misi","Tujuan", "Program pengembangan diri tidak memuat"];
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif ((!array_diff($array2, $val) && !array_diff($val, $array2)) || (!array_diff($array22, $val) && !array_diff($val, $array22))) {
$skor = 2;
} elseif (!array_diff($array1, $val) && !array_diff($val, $array1)) {
$skor = 1;
} else {
$skor = 0;
}
}elseif($key == 'aspek_prlh'){
if(count($val) >= 5){
$skor = 5;
}elseif(count($val) == 4){
$skor = 4;
}elseif(count($val) == 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}elseif(count($val) == 1){
$skor = 1;
}else{
$skor = 0;
}
}elseif($key == 'jumlah_rpp'){
if($val > 80){
$skor = 5;
}elseif(($val > 60) && ($val < 80)){
$skor = 4;
}elseif(($val > 40) && ($val < 60)){
$skor = 3;
}elseif(($val > 20) && ($val < 40)){
$skor = 2;
}elseif($val <= 20){
$skor = 1;
}else{
$skor = 0;
}
}elseif($key == 'unsur_warga_partisipasi'){
if(count($val) <= 4){
$skor = 1;
}elseif((count($val) >= 4) && ($countLainnya == 1)){
$skor = 2;
}elseif((count($val) >= 4) && ($countLainnya == 2)){
$skor = 3;
}elseif((count($val) >= 4) && ($countLainnya == 3)){
$skor = 4;
}elseif((count($val) >= 4) && ($countLainnya >= 4)){
$skor = 5;
}else{
$skor = 0;
}
}elseif($key == 'upaya_pemeliharaan'){
if(count($val) >= 7){
$skor = 5;
}elseif(count($val) == 6){
$skor = 4;
}elseif(count($val) == 5){
$skor = 3;
}elseif(count($val) == 4){
$skor = 2;
}elseif(count($val) <= 3){
$skor = 1;
}
}elseif($key == 'pelihara_kebersihan'){
$array3 = ["Sekolah bersih", "Sanitasi berfungsi", "Drainase berfungsi"];
$array2 = ["Sekolah bersih", "Sanitasi berfungsi"];
$array22 = ["Sekolah bersih", "Drainase berfungsi"];
if(!empty($val) && !is_array($val)){
$val = array($val);
}
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif ((!array_diff($array2, $val) && !array_diff($val, $array2)) || (!array_diff($array22, $val) && !array_diff($val, $array22))) {
$skor = 2;
} else {
$skor = 1;
}
}elseif($key == 'upaya_pengurangan_timbulan'){
if(count($val) >= 7){
$skor = 5;
}elseif(count($val) == 6){
$skor = 4;
}elseif(count($val) == 5){
$skor = 3;
}elseif(count($val) == 4){
$skor = 2;
}elseif(count($val) <= 3){
$skor = 1;
}
}elseif($key == 'upaya_daur_ulang_sampah'){
if(count($val) >= 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}elseif(count($val) == 1){
$skor = 1;
}
}elseif($key == 'pihak_terlibat_pemindahan_sampah'){
$array3 = ["Peserta didik", "Kader Adiwiyata", "Petugas kebersihan"];
$array2 = ["Peserta didik", "Kader Adiwiyata"];
$array1 = ["Petugas kebersihan"];
if(!empty($val) && !is_array($val)){
$val = array($val);
}
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif ((!array_diff($array2, $val) && !array_diff($val, $array2))) {
$skor = 2;
}elseif ((!array_diff($array1, $val) && !array_diff($val, $array1))) {
$skor = 1;
}
}elseif($key == 'kegiatan_penghijauan'){
$array3 = ["Penanaman", "Pemeliharaan", "Pembibitan"];
$array2 = ["Penanaman", "Pemeliharaan"];
$array1 = ["Penanaman"];
if(!empty($val) && !is_array($val)){
$val = array($val);
}
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif ((!array_diff($array2, $val) && !array_diff($val, $array2))) {
$skor = 2;
}elseif ((!array_diff($array1, $val) && !array_diff($val, $array1))) {
$skor = 1;
}
}elseif($key == 'warga_sekolah'){
if(count($val) >= 5){
$skor = 5;
}elseif(count($val) == 4){
$skor = 4;
}elseif(count($val) == 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}elseif(count($val) <= 1){
$skor = 1;
}
}elseif($key == 'upaya_konservasi_air'){
if(count($val) >= 7){
$skor = 5;
}elseif(count($val) == 6){
$skor = 4;
}elseif(count($val) == 5){
$skor = 3;
}elseif(count($val) == 4){
$skor = 2;
}elseif(count($val) <= 3){
$skor = 1;
}
}elseif($key == 'upaya_konservasi_energi'){
if(count($val) >= 7){
$skor = 5;
}elseif(count($val) == 6){
$skor = 4;
}elseif(count($val) == 5){
$skor = 3;
}elseif(count($val) == 4){
$skor = 2;
}elseif(count($val) <= 3){
$skor = 1;
}
}elseif($key == 'jumlah_karya_inovatif'){
if($val >= 5){
$skor = 3;
}elseif(($val >= 3) || ($val <= 4)){
$skor = 2;
}elseif(($val >= 1) || ($val <= 2)){
$skor = 1;
}
}elseif($key == 'aksi_penerapan_prlh'){
if(count($val) >= 4){
$skor = 5;
}elseif(count($val) == 3){
$skor = 4;
}elseif(count($val) == 2){
$skor = 3;
}elseif(count($val) == 1){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'pemilahan_sampah'){
if($val == 'Sampah terpilah dan terkelola dengan baik'){
$skor = 3;
}elseif($val == 'Sampah terpilah namun tidak terkelola dengan baik'){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'jejaring_kerja'){
if(count($val) >= 5){
$skor = 5;
}elseif(count($val) == 4){
$skor = 4;
}elseif(count($val) == 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'kegiatan_kampanye'){
if(count($val) >= 5){
$skor = 5;
}elseif(count($val) == 4){
$skor = 4;
}elseif(count($val) == 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'media'){
if($val >= 5){
$skor = 3;
}elseif(($val >= 3) || ($val <= 4)){
$skor = 2;
}elseif(($val >= 1) || ($val <= 2)){
$skor = 1;
}
}elseif($key == 'jumlah_kader'){
if($val > 20){
$skor = 5;
}elseif(($val > 15) || ($val <= 20)){
$skor = 4;
}elseif(($val > 10) || ($val <= 15)){
$skor = 3;
}elseif(($val > 5) || ($val <= 10)){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'kegiatan_kader_adiwiyata'){
if(count($val) >= 5){
$skor = 5;
}elseif(count($val) == 4){
$skor = 4;
}elseif(count($val) == 3){
$skor = 3;
}elseif(count($val) == 2){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'frekuensi_pelaksanaan'){
if($val == '3 kali dalam 1 tahun'){
$skor = 3;
}elseif($val == '2 kali dalam 1 tahun'){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'rencana_kegiatan_pblhs'){
if($val > 80){
$skor = 5;
}elseif(($val > 60) || ($val <= 80)){
$skor = 4;
}elseif(($val > 40) || ($val <= 60)){
$skor = 3;
}elseif(($val > 20) || ($val <= 40)){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'unsur_pemantauan_evaluasi'){
$array3 = ["Kepala sekolah", "Dewan Pendidik", "Komite sekolah","Peserta Didik","Masyarakat"];
$array2 = ["Kepala sekolah", "Dewan Pendidik", "Komite sekolah","Peserta Didik"];
$array1 = ["Kepala sekolah", "Dewan Pendidik", "Komite sekolah"];
if(!empty($val) && !is_array($val)){
$val = array($val);
}
if (!array_diff($array3, $val) && !array_diff($val, $array3)) {
$skor = 3;
} elseif ((!array_diff($array2, $val) && !array_diff($val, $array2))) {
$skor = 2;
}elseif ((!array_diff($array1, $val) && !array_diff($val, $array1))) {
$skor = 1;
}
}
//
return $skor;
}
}
if (!function_exists('formKriteria')) {
/**
@ -17,7 +358,7 @@ if (!function_exists('formKriteria')) {
$html = '';
foreach($kriteria as $keyKriteria => $data){
$nameOption = 'option_number_'.$keyKriteria;
$penilaian = Penilaian::where('key',$data->key)->first();
$html .= '<div class="card mb-2 removeFormKriteria">';
$html .= '<div class="card-body">';
@ -27,13 +368,13 @@ if (!function_exists('formKriteria')) {
if($data->type == 'textarea'){
$html .= '<div class="form-group m-2">';
$html .= '<textarea class="form-control" name="'.$nameOption.'"></textarea>';
$html .= '<textarea class="form-control is-required" name="input_'.$data->key.'"></textarea>';
$html .= '</div>';
}elseif($data->type == 'freetext'){
$html .= '<div class="form-group m-2">';
$html .= '<input type="text" class="form-control" name="'.$nameOption.'">';
$html .= '<input type="text" class="form-control is-required" name="input_'.$data->key.'">';
$html .= '</div>';
}elseif($data->type == 'checkbox'){
@ -43,7 +384,7 @@ if (!function_exists('formKriteria')) {
$key = 'number_'.$keyKriteria.'_'.$keyOption;
$html .= '<div class="custom-control custom-checkbox m-2">';
$html .= '<input type="checkbox" class="custom-control-input" id="'.$key.'" value="'.$dataOption.'" name="'.$nameOption.'">';
$html .= '<input type="checkbox" class="custom-control-input is-required" id="'.$key.'" value="'.$dataOption.'" name="input_'.$data->key.'[]">';
$html .= '<label class="custom-control-label" for="'.$key.'">'.$dataOption.'</label>';
$html .= '</div>';
}
@ -55,14 +396,14 @@ if (!function_exists('formKriteria')) {
$key = 'number_'.$keyKriteria.'_'.$keyOption;
$html .= '<div class="custom-control custom-radio m-2">';
$html .= '<input type="radio" class="custom-control-input" id="'.$key.'" value="'.$dataOption.'" name="'.$nameOption.'">';
$html .= '<input type="radio" class="custom-control-input is-required" id="'.$key.'" value="'.$dataOption.'" name="input_'.$data->key.'">';
$html .= '<label class="custom-control-label" for="'.$key.'">'.$dataOption.'</label>';
$html .= '</div>';
}
}elseif($data->type == 'number'){
$html .= '<div class="form-group m-2">';
$html .= '<input type="text" class="form-control numberInput" name="'.$nameOption.'">';
$html .= '<input type="text" class="form-control is-required numberInput" name="input_'.$data->key.'">';
$html .= '</div>';
}
@ -70,14 +411,13 @@ if (!function_exists('formKriteria')) {
$html .= '</div>';
if($data->active_lainnya == 1){
$nameOptionLainnya = 'lainnya_number_'.$keyKriteria;
$html .= '<div class="card mb-2 removeFormKriteria">';
$html .= '<div class="card-body">';
$html .= '<h6><b>'.$data->judul_lainnya.'</b></h6>';
for($i = 1; $i <= $data->number_answer_lainnya; $i++){
$html .= '<div class="form-group m-2">';
$html .= '<input type="text" class="form-control" placeholder="Jawaban" name="'.$nameOptionLainnya.'">';
$html .= '<input type="text" class="form-control" placeholder="Jawaban" name="input_lainnya[]">';
$html .= '</div>';
}
$html .= '</div>';
@ -85,6 +425,17 @@ if (!function_exists('formKriteria')) {
}
}
$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>Link Google Drive (folder/File penyimpanan bukti)</b></h6>';
$html .= '<div class="form-group">';
$html .= '<input type="text" class="form-control" name="input_link_grdive" placeholder="Link Google Drive (folder penyimpanan bukti)">';
$html .= '<small><i>Contoh link : https://example.com</i></small>';
$html .= '</div>';
$html .= '</div>';
$html .= '</div>';
return $html;
}
}
@ -98,6 +449,7 @@ if (!function_exists('levelAdiwiyata')) {
function levelAdiwiyata($npsn)
{
$kuesioner = Kuesioner::where('npsn',$npsn)->where('tahun',date('Y'))->first();
$data = null;
if(@$kuesioner){
$data = $kuesioner;
}else{
@ -106,20 +458,20 @@ if (!function_exists('levelAdiwiyata')) {
}
$level = '';
if($data->level == 0){
if(($data->level == 0) && ($data->tim_adiwiyata == 2) && ($data->info_pblhs == 2) ){
if(@$data->level == 0){
if((@$data->level == 0) && (@$data->tim_adiwiyata == 2) && (@$data->info_pblhs == 2) ){
$level = '2';
}elseif(($data->level == 0) && ($data->tim_adiwiyata == 2)){
}elseif((@$data->level == 0) && (@$data->tim_adiwiyata == 2)){
$level = '1';
}else{
$level = '0';
}
}elseif($data->level == 1){
}elseif(@$data->level == 1){
$level = '3';
}elseif($data->level == 2){
}elseif(@$data->level == 2){
$level = '4';
}else{
$level = '4';
$level = '0';
}
return $level;

View File

@ -4,6 +4,10 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Master\FormKriteria;
use App\Models\Master\Provinsi;
use App\Models\Master\Kabupaten;
use App\Models\Master\Kecamatan;
use App\Models\Master\Sekolah;
class AjaxController extends Controller
{
@ -14,4 +18,45 @@ class AjaxController extends Controller
return response()->json(['status' => true, 'data' => $data,'title' => $title->kategori]);
}
public function getKabupaten(Request $request)
{
$_data = [];
if(@$request->id){
$keyId = decode_id($request->id);
$data = Kabupaten::where('ms_provinsi_id',$keyId)->get();
foreach($data as $k => $val){
$_data[$k]['id'] = encode_id($val->MsKabupatenId);
$_data[$k]['name'] = $val->name;
}
}
return response()->json(['status' => true, 'data' => $_data]);
}
public function getKecamatan(Request $request)
{
$_data = [];
if(@$request->id){
$keyId = decode_id($request->id);
$data = Kecamatan::where('ms_kabupaten_id',$keyId)->get();
foreach($data as $k => $val){
$_data[$k]['id'] = encode_id($val->MsKecamatanId);
$_data[$k]['name'] = $val->name;
}
}
return response()->json(['status' => true, 'data' => $_data]);
}
public function getSekolah(Request $request)
{
$_data = [];
if(@$request->id){
$keyId = decode_id($request->id);
$data = Sekolah::where('ms_kecamatan_id',$keyId)->get();
foreach($data as $k => $val){
$_data[$k]['id'] = encode_id($val->MsSekolahId);
$_data[$k]['name'] = $val->nama_sekolah;
$_data[$k]['npsn'] = $val->npsn;
}
}
return response()->json(['status' => true, 'data' => $_data]);
}
}

View File

@ -0,0 +1,145 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use App\Models\Master\Provinsi;
use App\Models\Master\Kabupaten;
use App\Models\Master\Kecamatan;
use App\Models\Master\Sekolah;
use App\Models\Master\MasterTingkatSekolah;
class ApiController extends Controller
{
public function getProvince()
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dapo.dikdasmen.go.id/rekap/dataSekolah?id_level_wilayah=0&kode_wilayah=000000&semester_id=20242',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response);
$_data = [];
foreach($data as $k => $val){
$_data = Provinsi::updateOrCreate([
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah)
],[
'name' => str_replace('Prov. ','',$val->nama),
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah),
]);
}
echo "-- DONE --";
}
public function getKabupaten()
{
$prov = Provinsi::where('kode_wilayah','010000')->first();
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dapo.dikdasmen.go.id/rekap/dataSekolah?id_level_wilayah=1&kode_wilayah=010000&semester_id=20242',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response);
$_data = [];
foreach($data as $k => $val){
$_data = Kabupaten::updateOrCreate([
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah),
],[
'ms_provinsi_id' => $prov->MsProvinsiId,
'name' => str_replace('Kab. ','',$val->nama),
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah),
]);
}
echo "-- DONE --";
}
public function getKecamatan()
{
//get kabupaten jakarta
$prov = Provinsi::where('kode_wilayah','010000')->first();
$kab = Kabupaten::where('ms_provinsi_id',$prov->MsProvinsiId)->get();
foreach($kab as $data){
$response = Http::timeout(300)->withoutVerifying()->get('https://dapo.dikdasmen.go.id/rekap/dataSekolah?id_level_wilayah=2&kode_wilayah='.$data->kode_wilayah.'&semester_id=20242');
$kec = json_decode($response->body());
foreach($kec as $val){
$_data = Kecamatan::updateOrCreate([
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah),
],[
'ms_provinsi_id' => $prov->MsProvinsiId,
'ms_kabupaten_id' => $data->MsKabupatenId,
'name' => str_replace('Kec. ','',$val->nama),
'kode_wilayah' => str_replace(' ', '', $val->kode_wilayah),
]);
}
}
echo "-- DONE --";
}
public function getSekolah()
{
$type = request()->type;
$level = MasterTingkatSekolah::where('name',strtoupper($type))->first();
//get kabupaten jakarta
$prov = Provinsi::where('kode_wilayah','010000')->first();
$kab = Kabupaten::where('ms_provinsi_id',$prov->MsProvinsiId)->get();
foreach($kab as $data){
$kec = Kecamatan::where('ms_kabupaten_id',$data->MsKabupatenId)->get();
foreach($kec as $dataKec){
$response = Http::timeout(300)->withoutVerifying()->get('https://dapo.dikdasmen.go.id/rekap/progresSP?id_level_wilayah=3&kode_wilayah='.$dataKec->kode_wilayah.'&semester_id=20242&bentuk_pendidikan_id='.$type);
$dataSekolah = json_decode($response->body());
foreach($dataSekolah as $val){
$_data = Sekolah::updateOrCreate([
'npsn' => $val->npsn,
],[
'ms_provinsi_id' => $prov->MsProvinsiId,
'ms_kabupaten_id' => $data->MsKabupatenId,
'ms_kecamatan_id' => $dataKec->MsKecamatanId,
'ms_tingkat_sekolah_id' => $level->MsTingkatSekolahId,
'status' => $val->status_sekolah,
'nama_sekolah' => $val->nama,
'npsn' => $val->npsn,
]);
}
}
}
echo "-- DONE --";
}
}

View File

@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Master\Sekolah;
class CustomLoginController extends Controller
{
@ -40,12 +41,13 @@ class CustomLoginController extends Controller
'username' => $user->username,
'name' => $user->name,
'email' => $user->email,
'npsn' => @$user->sekolah->npsn,
'tingkat_sekolah' => @$user->sekolah->tingkat->name,
'status_sekolah' => @$user->sekolah->status_sekolah,
'alamat_sekolah' => @$user->sekolah->alamat_sekolah,
'kontak_person' => @$user->sekolah->kontak_person,
'telp' => @$user->sekolah->telp,
'sekolah_id' => @$user->profile->sekolah->MsSekolahId,
'npsn' => @$user->profile->npsn,
'tingkat_sekolah' => @$user->profile->tingkat->name,
'status_sekolah' => @$user->profile->status_sekolah,
'alamat_sekolah' => @$user->profile->alamat_sekolah,
'kontak_person' => @$user->profile->kontak_person,
'telp' => @$user->profile->telp,
'currYear' => date('Y'),
'group_id' => @$user->ms_group_id,
'group_alias' => @$user->group->alias,
@ -74,12 +76,13 @@ class CustomLoginController extends Controller
'username' => $user->username,
'name' => $user->name,
'email' => $user->email,
'npsn' => @$user->sekolah->npsn,
'tingkat_sekolah' => @$user->sekolah->tingkat->name,
'status_sekolah' => @$user->sekolah->status_sekolah,
'alamat_sekolah' => @$user->sekolah->alamat_sekolah,
'kontak_person' => @$user->sekolah->kontak_person,
'telp' => @$user->sekolah->telp,
'sekolah_id' => @$user->profile->sekolah->MsSekolahId,
'npsn' => @$user->profile->npsn,
'tingkat_sekolah' => @$user->profile->tingkat->name,
'status_sekolah' => @$user->profile->status_sekolah,
'alamat_sekolah' => @$user->profile->alamat_sekolah,
'kontak_person' => @$user->profile->kontak_person,
'telp' => @$user->profile->telp,
'currYear' => date('Y'),
'group_id' => @$user->ms_group_id,
'group_alias' => @$user->group->alias,

View File

@ -10,24 +10,31 @@ use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Master\MasterGroupUser;
use App\Models\Master\Provinsi;
use App\Models\Master\Sekolah;
use App\Models\ProfileSekolah as Profile;
class CustomRegisterController extends Controller
{
public function index()
{
return view('auth.register');
$data['provinsi'] = Provinsi::where('kode_wilayah','010000')->get();
return view('auth.register',$data);
}
public function post_register(Request $request)
{
try {
Validator::make($request->all(), [
'email' => 'required|unique:users|email',
'name' => 'required|max:50',
'npsn' => 'required',
'tingkat_sekolah' => 'required',
'status_sekolah' => 'required',
// 'name' => 'required|max:50',
'provinsi' => 'required',
'kabupaten' => 'required',
'kecamatan' => 'required',
'sekolah' => 'required',
// 'tingkat_sekolah' => 'required',
// 'status_sekolah' => 'required',
'alamat_sekolah' => 'required',
'kontak_person' => 'required',
'telp' => 'required',
@ -39,6 +46,8 @@ class CustomRegisterController extends Controller
'password.regex' => 'Format Kata Sandi harus mengandung minimal Huruf Besar, Huruf Kecil, Angka, Spesial Karakter',
])->validate();
$cek = Profile::where('npsn',$request->npsn)->count();
if($cek > 0){
return redirect('register')->with([
@ -47,18 +56,27 @@ class CustomRegisterController extends Controller
]);
}
$sekolah = Sekolah::find(decode_id($request->sekolah));
$user = new User;
$user->email = $request->email;
$user->username = $request->npsn;
$user->username = $sekolah->npsn;
$user->password = Hash::make($request->password);
$user->name = $request->name;
$user->name = $sekolah->nama_sekolah;
$user->ms_group_id = 2;
$user->save();
$profile = new Profile;
$profile->user_id = $user->id;
$profile->npsn = $request->npsn;
$profile->ms_tingkat_sekolah_id = $request->tingkat_sekolah;
$profile->status_sekolah = $request->status_sekolah;
$profile->ms_provinsi_id = decode_id($request->provinsi);
$profile->ms_kabupaten_id = decode_id($request->kabupaten);
$profile->ms_kecamatan_id = decode_id($request->kecamatan);
$profile->ms_sekolah_id = decode_id($request->sekolah);
$profile->npsn = $sekolah->npsn;
$profile->ms_tingkat_sekolah_id = $sekolah->ms_tingkat_sekolah_id;
$profile->status_sekolah = $sekolah->status;
$profile->alamat_sekolah = $request->alamat_sekolah;
$profile->kontak_person = $request->kontak_person;
$profile->telp = $request->telp;

View File

@ -141,4 +141,13 @@ class FormKriteriaController extends Controller
// dd(request()->all());
}
public function delete($id)
{
$keyId = decode_id($id);
$form = FormKriteria::where('MsFormKriteriaId',$keyId)->delete();
return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']);
}
}

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Kuesioner;
use App\Models\Master\FormKriteria;
use App\Models\Penilaian;
class KriteriaController extends Controller
{
@ -23,4 +24,87 @@ class KriteriaController extends Controller
return view($this->template.'.form',$data);
}
public function store(Request $request)
{
// dd();
$data = $request['data'];
$_value = [];
foreach ($data as $key => $value) {
if (strpos($key, 'input_') === 0) {
$_value[$key] = $value;
if($key == 'input_unsur_warga_partisipasi'){
$skor = hitungSkor(str_replace('input_','','input_unsur_warga_partisipasi'),$value,$data['input_lainnya']);
}elseif($key == 'input_jumlah_timbulan'){
$sebelum = $data['input_jumlah_timbulan'];
$sekarang = $data['input_ratarata_jumlah_timbulan'];
$pengurangan = $sebelum - $sekarang;
$persentase = $sebelum > 0 ? ($pengurangan / $sebelum) * 100 : 0;
if($persentase > 80){
$skor = 5;
}elseif(($persentase > 60) || ($persentase <= 80)){
$skor = 4;
}elseif(($persentase > 40) || ($persentase <= 60)){
$skor = 3;
}elseif(($persentase > 20) || ($persentase <= 40)){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'input_jumlah_pohon'){
$pohon = $data['input_jumlah_pohon'];
$warga = $data['input_jumlah_warga_sekolah'];
$persentase = $warga > 0 ? ($pohon / $warga) * 100 : 0;
if($persentase > 80){
$skor = 5;
}elseif(($persentase > 60) || ($persentase <= 80)){
$skor = 4;
}elseif(($persentase > 40) || ($persentase <= 60)){
$skor = 3;
}elseif(($persentase > 20) || ($persentase <= 40)){
$skor = 2;
}else{
$skor = 1;
}
}elseif($key == 'input_kondisi_kebersihan'){
$kebersihan = $data['input_kondisi_kebersihan'];
$drainase = $data['input_kondisi_drainase'];
if ($kebersihan == "Bersih" && $drainase == "Bersih") {
$skor = 3; // Lingkungan bersih dan drainase berfungsi
} elseif (($kebersihan == "Bersih" && $drainase == "Kurang Bersih") || ($kebersihan == "Kurang Bersih" && $drainase == "Bersih")) {
$skor = 2; // Salah satu kondisi kurang baik
} else {
$skor = 1; // Lingkungan kurang bersih dan drainase tidak berfungsi
}
}else{
$skor = hitungSkor(str_replace('input_','',$key),$value);
}
$penilaian[$key] = Penilaian::updateOrCreate([
'tahun' => date('Y'),
'ms_sekolah_id' => session('sekolah_id'),
'npsn' => session('npsn'),
'page_number' => decode_id($data['key']),
'key' => str_replace('input_','',$key),
],[
'user_id' => auth()->user()->id,
'ms_sekolah_id' => session('sekolah_id'),
'npsn' => session('npsn'),
'page_number' => decode_id($data['key']),
'key' => str_replace('input_','',$key),
'value' => json_encode($value),
'status' => 0,
'skor' => $skor,
'tahun' => date('Y'),
'created_by' => auth()->user()->id,
]);
}
}
}
}

View File

@ -24,24 +24,24 @@ class ProfileController extends Controller
$profile = Profile::where('user_id',auth()->user()->id)->first();
$jumlah = json_decode($profile->data_jumlah);
$data['jumlah_peserta_didik'] = $jumlah->jumlah_peserta_didik;
$data['jumlah_tenaga_pendidik'] = $jumlah->jumlah_tenaga_pendidik;
$data['jumlah_tenaga_kependidikan'] = $jumlah->jumlah_tenaga_kependidikan;
$data['jumlah_warga_sekolah_lainnya'] = $jumlah->jumlah_warga_sekolah_lainnya;
$data['jumlah_biopori'] = $jumlah->jumlah_biopori;
$data['jumlah_sumur_resapan'] = $jumlah->jumlah_sumur_resapan;
$data['jumlah_pohon'] = $jumlah->jumlah_pohon;
$data['jumlah_peserta_didik'] = @$jumlah->jumlah_peserta_didik;
$data['jumlah_tenaga_pendidik'] = @$jumlah->jumlah_tenaga_pendidik;
$data['jumlah_tenaga_kependidikan'] = @$jumlah->jumlah_tenaga_kependidikan;
$data['jumlah_warga_sekolah_lainnya'] = @$jumlah->jumlah_warga_sekolah_lainnya;
$data['jumlah_biopori'] = @$jumlah->jumlah_biopori;
$data['jumlah_sumur_resapan'] = @$jumlah->jumlah_sumur_resapan;
$data['jumlah_pohon'] = @$jumlah->jumlah_pohon;
$air = json_decode($profile->penghematan_air);
$data['air_sebelum_pblhs'] = $air->air_sebelum_pblhs;
$data['air_setelah_pblhs'] = $air->air_setelah_pblhs;
$data['air_sebelum_pblhs'] = @$air->air_sebelum_pblhs;
$data['air_setelah_pblhs'] = @$air->air_setelah_pblhs;
$listrik = json_decode($profile->penghematan_listrik);
$data['listrik_sebelum_pblhs'] = $listrik->listrik_sebelum_pblhs;
$data['listrik_setelah_pblhs'] = $listrik->listrik_setelah_pblhs;
$data['luas_ruangan_ac'] = $listrik->luas_ruangan_ac;
$data['luas_ruangan_non_ac'] = $listrik->luas_ruangan_non_ac;
$data['jumlah_kader'] = $listrik->jumlah_kader;
$data['listrik_sebelum_pblhs'] = @$listrik->listrik_sebelum_pblhs;
$data['listrik_setelah_pblhs'] = @$listrik->listrik_setelah_pblhs;
$data['luas_ruangan_ac'] = @$listrik->luas_ruangan_ac;
$data['luas_ruangan_non_ac'] = @$listrik->luas_ruangan_non_ac;
$data['jumlah_kader'] = @$listrik->jumlah_kader;
return view($this->template.'.sekolah', $data);
}else{

View File

@ -0,0 +1,25 @@
<?php
namespace App\Models\Master;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Kabupaten extends Model
{
use HasFactory;
protected $table = 'ms_kabupaten';
protected $primaryKey = 'MsKabupatenId';
protected $fillable = [
'ms_provinsi_id',
'name',
'kode_wilayah',
];
public function provinsi()
{
return $this->belongsTo('\App\Models\Master\Provinsi','ms_provinsi_id','MsProvinsiId');
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace App\Models\Master;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Kecamatan extends Model
{
use HasFactory;
protected $table = 'ms_kecamatan';
protected $primaryKey = 'MsKecamatanId';
protected $fillable = [
'ms_provinsi_id',
'ms_kabupaten_id',
'name',
'kode_wilayah',
];
public function provinsi()
{
return $this->belongsTo('\App\Models\Master\Provinsi','ms_provinsi_id','MsProvinsiId');
}
public function kabupaten()
{
return $this->belongsTo('\App\Models\Master\Kabupaten','ms_kabupaten_id','MsKabupatenId');
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Models\Master;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Kelurahan extends Model
{
use HasFactory;
protected $table = 'ms_kelurahan';
protected $primaryKey = 'MsKelurahanId';
protected $fillable = [
'ms_provinsi_id',
'ms_kabupaten_id',
'ms_kecamatan_id',
'name',
'kode_wilayah',
];
public function provinsi()
{
return $this->belongsTo('\App\Models\Master\Provinsi','ms_provinsi_id','MsProvinsiId');
}
public function kabupaten()
{
return $this->belongsTo('\App\Models\Master\Kabupaten','ms_kabupaten_id','MsKabupatenId');
}
public function kecamatan()
{
return $this->belongsTo('\App\Models\Master\Kecamatan','ms_kecamatan_id','MsKecamatanId');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Models\Master;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Provinsi extends Model
{
use HasFactory;
protected $table = 'ms_provinsi';
protected $primaryKey = 'MsProvinsiId';
protected $fillable = [
'name',
'kode_wilayah',
];
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Models\Master;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Sekolah extends Model
{
use HasFactory;
protected $table = 'ms_sekolah';
protected $primaryKey = 'MsSekolahId';
protected $fillable = [
'ms_provinsi_id',
'ms_kabupaten_id',
'ms_kecamatan_id',
'ms_tingkat_sekolah_id',
'status',
'nama_sekolah',
'npsn',
'alamat_sekolah',
'lat',
'long',
];
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Penilaian extends Model
{
use HasFactory;
protected $table = 'penilaian';
protected $primaryKey = 'PenilaianId';
protected $fillable = [
'ms_sekolah_id',
'npsn',
// 'ms_form_kriteria_id',
'key',
'page_number',
'value',
'skor',
'status',
'tahun',
'created_by',
];
}

View File

@ -14,6 +14,10 @@ class ProfileSekolah extends Model
protected $fillable = [
'user_id',
'npsn',
'ms_provinsi_id',
'ms_kabupaten_id',
'ms_kecamatan_id',
'ms_sekolah_id',
'ms_tingkat_sekolah_id',
'status_sekolah',
'alamat_sekolah',
@ -30,4 +34,9 @@ class ProfileSekolah extends Model
{
return $this->belongsTo(\App\Models\Master\MasterTingkatSekolah::class,'ms_tingkat_sekolah_id','MsTingkatSekolahId');
}
public function sekolah()
{
return $this->belongsTo(\App\Models\Master\Sekolah::class,'ms_sekolah_id','MsSekolahId');
}
}

View File

@ -46,7 +46,7 @@ class User extends Authenticatable
'email_verified_at' => 'datetime',
];
public function sekolah()
public function profile()
{
return $this->belongsTo(ProfileSekolah::class,'id','user_id');
}

View File

@ -0,0 +1,40 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('penilaian', function (Blueprint $table) {
$table->id('PenilaianId');
$table->integer('ms_sekolah_id');
$table->string('npsn');
// $table->integer('ms_form_kriteria_id');
$table->string('key')->nullable();
$table->integer('page_number');
$table->json('value')->nullable();
$table->integer('skor')->default(0);
$table->integer('status')->nullable();
$table->year('tahun')->nullable();
$table->integer('created_by');
$table->timestamps();
$table->foreign('created_by')->references('id')->on('users')->cascadeOnDelete();
$table->foreign('ms_sekolah_id')->references('MsSekolahId')->on('ms_sekolah')->cascadeOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('penilaians');
}
};

View File

@ -0,0 +1,39 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('ms_sekolah', function (Blueprint $table) {
$table->id('MsSekolahId');
$table->integer('ms_provinsi_id');
$table->integer('ms_kabupaten_id');
$table->integer('ms_kecamatan_id');
$table->integer('ms_tingkat_sekolah_id');
$table->string('status')->nullable();
$table->string('nama_sekolah');
$table->string('npsn');
$table->text('alamat_sekolah')->nullable();
$table->text('lat')->nullable();
$table->text('long')->nullable();
$table->timestamps();
$table->foreign('ms_tingkat_sekolah_id')->references('MsTingkatSekolahId')->on('ms_tingkat_sekolah')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sekolahs');
}
};

View File

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('ms_provinsi', function (Blueprint $table) {
$table->id('MsProvinsiId');
$table->string('name');
$table->string('kode_wilayah');
$table->timestampsTz();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('provinsis');
}
};

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('ms_kabupaten', function (Blueprint $table) {
$table->id('MsKabupatenId');
$table->integer('ms_provinsi_id');
$table->string('name');
$table->string('kode_wilayah');
$table->timestampsTz();
$table->foreign('ms_provinsi_id')->references('MsProvinsiId')->on('ms_provinsi')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('kabupatens');
}
};

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('ms_kecamatan', function (Blueprint $table) {
$table->id('MsKecamatanId');
$table->integer('ms_provinsi_id');
$table->integer('ms_kabupaten_id');
$table->string('name');
$table->string('kode_wilayah');
$table->timestampsTz();
$table->foreign('ms_provinsi_id')->references('MsProvinsiId')->on('ms_provinsi')->onDelete('cascade');
$table->foreign('ms_kabupaten_id')->references('MsKabupatenId')->on('ms_kabupaten')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('kecamatans');
}
};

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('ms_kelurahan', function (Blueprint $table) {
$table->id('MsKelurahanId');
$table->integer('ms_provinsi_id');
$table->integer('ms_kabupaten_id');
$table->integer('ms_kecamatan_id');
$table->string('name');
$table->string('kode_wilayah');
$table->timestampsTz();
$table->foreign('ms_provinsi_id')->references('MsProvinsiId')->on('ms_provinsi')->onDelete('cascade');
$table->foreign('ms_kabupaten_id')->references('MsKabupatenId')->on('ms_kabupaten')->onDelete('cascade');
$table->foreign('ms_kecamatan_id')->references('MsKecamatanId')->on('ms_kecamatan')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('kelurahans');
}
};

View File

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('ms_sekolah', function (Blueprint $table) {
$table->foreign('ms_provinsi_id')->references('MsProvinsiId')->on('ms_provinsi')->onDelete('cascade');
$table->foreign('ms_kabupaten_id')->references('MsKabupatenId')->on('ms_kabupaten')->onDelete('cascade');
$table->foreign('ms_kecamatan_id')->references('MsKecamatanId')->on('ms_kecamatan')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('ms_sekolah', function (Blueprint $table) {
//
});
}
};

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('profile', function (Blueprint $table) {
$table->integer('ms_provinsi_id');
$table->integer('ms_kabupaten_id');
$table->integer('ms_sekolah_id');
$table->foreign('ms_provinsi_id')->references('MsProvinsiId')->on('ms_provinsi')->onDelete('cascade');
$table->foreign('ms_kabupaten_id')->references('MsKabupatenId')->on('ms_kabupaten')->onDelete('cascade');
$table->foreign('ms_sekolah_id')->references('MsSekolahId')->on('ms_sekolah')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('profile', function (Blueprint $table) {
//
});
}
};

View File

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('profile', function (Blueprint $table) {
$table->integer('ms_kecamatan_id');
$table->foreign('ms_kecamatan_id')->references('MsKecamatanId')->on('ms_kecamatan')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('profile', function (Blueprint $table) {
//
});
}
};

View File

@ -21,6 +21,7 @@
<link rel="mask-icon" href="https://banksampah.jakarta.go.id/images/logo-dinas.ico" color="#5bbad5">
<!-- Optional: page related CSS-->
<link rel="stylesheet" media="screen, print" href="{{asset('assets/css/fa-brands.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/formplugins/select2/select2.bundle.css')}}">
</head>
<body>
<div class="page-wrapper">
@ -46,27 +47,50 @@
@include('include.alert')
<form method="POST" action="{{url('register')}}">
{{csrf_field()}}
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">NPSN</label>
<div class="col-12 pr-1">
<input maxlength="8" type="text" value="{{old('npsn')}}" name="npsn" class="form-control @error('npsn') is-invalid @enderror numberInput" placeholder="Masukan NPSN Sekolah" required>
@error('npsn')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
<small class="text-primary"><i>Pastikan NPSN Telah Sesuai</i></small>
</div>
<div class="row">
<div class="col-md-12">
<div id="loading-spinner" style="display: none; text-align: center;">
<img src="{{ asset('assets/spinner.gif') }}" alt="Loading..." width="20">
</div>
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">Nama Sekolah</label>
<label class="col-xl-12 form-label" for="fname">Provinsi</label>
<div class="col-12 pr-1">
<input type="text" value="{{old('name')}}" name="name" class="form-control @error('name') is-invalid @enderror" placeholder="Masukan Nama Sekolah" required>
@error('name')
<select name="provinsi" class="form-control select2 @error('provinsi') provinsi is-invalid @enderror" id="provinsi">
<option value="0">- PILIH PROVINSI -</option>
@foreach($provinsi as $datProv)
<option value="{{encode_id($datProv->MsProvinsiId)}}">{{$datProv->name}}</option>
@endforeach
</select>
@error('provinsi')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">Kabupaten</label>
<div class="col-12 pr-1">
<select name="kabupaten" class="form-control select2 @error('kabupaten') kabupaten is-invalid @enderror" id="kabupaten" required>
<option value="0">- PILIH KABUPATEN/KOTA -</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">Kecamatan</label>
<div class="col-12 pr-1">
<select name="kecamatan" class="form-control select2 @error('kecamatan') kecamatan is-invalid @enderror" id="kecamatan" required>
<option value="0">- PILIH KECAMATAN -</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">Sekolah</label>
<div class="col-12 pr-1">
<select name="sekolah" class="form-control select2 @error('sekolah') sekolah is-invalid @enderror" id="sekolah" required>
<option value="0">- PILIH SEKOLAH -</option>
</select>
</div>
</div>
<div class="form-group d-none row">
<label class="col-xl-12 form-label" for="fname">Tingkat Sekolah</label>
<div class="col-12 pr-1">
<select name="tingkat_sekolah" class="form-control @error('tingkat_sekolah') is-invalid @enderror">
@ -88,10 +112,10 @@
@enderror
</div>
</div>
<div class="form-group row">
<div class="form-group d-none row">
<label class="col-xl-12 form-label" for="fname">Status Sekolah</label>
<div class="col-12 pr-1">
<select name="status_sekolah" class="form-control @error('status_sekolah') is-invalid @enderror" required>
<select name="status_sekolah" class="form-control @error('status_sekolah') is-invalid @enderror">
<option value="" data-select2-id="3">-Pilih Status Sekolah-</option>
<option value="Negeri">Negeri</option>
<option value="Swasta">Swasta</option>
@ -101,6 +125,25 @@
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-xl-12 form-label" for="fname">NPSN</label>
<div class="col-12 pr-1">
<input maxlength="8" readonly type="text" value="{{old('npsn')}}" name="npsn" class="form-control @error('npsn') is-invalid @enderror numberInput npsn" placeholder="">
@error('npsn')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
<div class="form-group d-none row">
<label class="col-xl-12 form-label" for="fname">Nama Sekolah</label>
<div class="col-12 pr-1">
<input type="text" value="{{old('name')}}" name="name" class="form-control @error('name') is-invalid @enderror" placeholder="Masukan Nama Sekolah">
@error('name')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
<div class="form-group">
<label class="form-label" for="emailverify">Alamat Sekolah</label>
<input type="text" value="{{old('alamat_sekolah')}}" name="alamat_sekolah" class="form-control @error('alamat_sekolah') is-invalid @enderror" placeholder="Masukan Alamat Sekolah, Nama Jalan / Dusun / RT-RW" required>
@ -145,7 +188,6 @@
Kata Sandi harus mengandung Minimal 8 karakter, maksimal 15 karakter, <br>setidaknya 1 huruf kecil dan huruf besar, angka dan simbol
</div>
</div>
<div class="form-group">
<input type="checkbox" name="check" required> Dengan ini menyatakan bahwa isian registrasi diatas sudah benar.
@error('check')
@ -162,6 +204,12 @@
Sudah punya akun? <a href="{{url('login')}}">Login</a>
</span>
</div>
</div>
</div>
</form>
</div>
</div>
@ -176,8 +224,10 @@
</div>
<script src="{{asset('assets/js/vendors.bundle.js')}}"></script>
<script src="{{asset('assets/js/app.bundle.js')}}"></script>
<script src="{{asset('assets/js/formplugins/select2/select2.bundle.js')}}"></script>
<script>
$(document).ready(function() {
$('.select2').select2();
$('.numberInput').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
});
@ -211,6 +261,139 @@
// Perform ajax submit here...
});
function clear(elementId) {
$('#' + elementId).empty();
$('#' + elementId).select2();
}
$('#sekolah').on('select2:select', function(e) {
let npsn = $(this).find(':selected').attr('data-npsn');
$('.npsn').val(npsn);
});
$('select').on("select2:selecting", function(e) {
var selectorOrigin = this.id;
var id = e.params.args.data.id;
if(selectorOrigin=='provinsi'){
$('#loading-spinner').show();
clear('kabupaten');
selector = 'kabupaten';
url_to = 'kabupaten';
getSelect(id, selector, url_to);
}
if(selectorOrigin=='kabupaten'){
$('#loading-spinner').show();
clear('kecamatan');
selector = 'kecamatan';
url_to = 'kecamatan';
getSelect(id, selector, url_to);
}
if(selectorOrigin=='kecamatan'){
$('#loading-spinner').show();
clear('sekolah');
selector = 'sekolah';
url_to = 'sekolah';
getSelect(id, selector, url_to);
}
});
function getSelect(id, selectTo, urlTo, selected = "") {
id = id;
var base_url = "{{url('/')}}";
//alert(id);
destino = "#" + selectTo;
valor = $('#' + id).find(":selected").val();
$.ajax({
method: "POST",
url: base_url + "/get/" + urlTo,
data: {
_token: '{{csrf_token()}}',
id: id
}
})
.done(function(msg) {
obj = msg.data;
if (obj.length > 0) {
//Clear the current options
$(destino).empty();
if(selectTo=='kabupaten'){
$(destino).append('<option value="">-PILIH KABUPATEN/KOTA-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
$(destino).append('<option value=' + value + '>' + text + '</option>');
});
console.log(selected)
if (selected) {
$(destino).val(selected).trigger('change');
selected = "";
}
}
if(selectTo=='kecamatan'){
$(destino).append('<option value="">-PILIH KECAMATAN-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
$(destino).append('<option value=' + value + '>' + text + '</option>');
});
console.log(selected)
if (selected) {
$(destino).val(selected).trigger('change');
selected = "";
}
}
if(selectTo=='sekolah'){
$(destino).append('<option value="">-PILIH SEKOLAH-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
npsn = obj[index].npsn;
$(destino).append('<option data-npsn="'+npsn+'" value=' + value + '>' + text + '</option>');
});
console.log(selected)
if (selected) {
$(destino).val(selected).trigger('change');
selected = "";
}
}
} else {
if(selectTo=='provinsi'){
$(destino).empty().append('<option value="0">-PILIH PROVINSI-</option>').select2("val", "0");
}
if(selectTo=='kabupaten'){
$(destino).empty().append('<option value="0">-PILIH KABUPATEN/KOTA-</option>').select2("val", "0");
}
if(selectTo=='kecamatan'){
$(destino).empty().append('<option value="0">-PILIH KECAMATAN-</option>').select2("val", "0");
}
if(selectTo=='sekolah'){
$(destino).empty().append('<option value="0">-PILIH SEKOLAH-</option>').select2("val", "0");
}
}
$('#loading-spinner').hide();
});
return false;
}
</script>
</body>
</html>

View File

@ -22,6 +22,7 @@
<link rel="stylesheet" type="text/css" href="{{asset('assets/css/bootstrap-table.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/sweetalert.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/toast.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/formplugins/select2/select2.bundle.css')}}">
<style type="text/css">
.info-card .info-card-text{
text-shadow:none;
@ -114,8 +115,10 @@
<script type="text/javascript" src="{{asset('assets/js/bootstrap-table.min.js')}}"></script>
<script src="{{ asset('assets/js/sweetalert.min.js') }}"></script>
<script src="{{asset('assets/js/toast.min.js')}}"></script>
<script src="{{asset('assets/js/formplugins/select2/select2.bundle.js')}}"></script>
<script>
$(document).ready(function() {
$('.select2').select2();
$('.numberInput').on('input', function() {
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
});

View File

@ -71,7 +71,7 @@
</div>
<div class="col-9 col-md-9">
<div class="level rounded-plus bg-fusion-50 width-1 height-1 d-inline-block bg-success">
<h4>Level 4</h4>
<h4>Level {{levelAdiwiyata(session('npsn'))}}</h4>
</div>
</div>
</div>

View File

@ -56,17 +56,17 @@
<div class="col-12 pr-1">
<select name="tingkat_sekolah" class="form-control @error('tingkat_sekolah') is-invalid @enderror">
<option value="" data-select2-id="3">-Pilih Tingkat Sekolah-</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 1 ? 'selected' : ''}} value="1" data-select2-id="11">SD</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 2 ? 'selected' : ''}} value="2" data-select2-id="12">SMP</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 3 ? 'selected' : ''}} value="3" data-select2-id="13">SMA</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 4 ? 'selected' : ''}} value="4" data-select2-id="14">SMK</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 5 ? 'selected' : ''}} value="5" data-select2-id="15">MI</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 6 ? 'selected' : ''}} value="6" data-select2-id="16">MTs</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 7 ? 'selected' : ''}} value="7" data-select2-id="17">MA</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 8 ? 'selected' : ''}} value="8" data-select2-id="18">SD LB</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 9 ? 'selected' : ''}} value="9" data-select2-id="19">SMP LB</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 10 ? 'selected' : ''}} value="10" data-select2-id="20">SMA LM</option>
<option {{@$item->sekolah->ms_tingkat_sekolah_id == 11 ? 'selected' : ''}} value="11" data-select2-id="21">SLB Khusus</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 1 ? 'selected' : ''}} value="1" data-select2-id="11">SD</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 2 ? 'selected' : ''}} value="2" data-select2-id="12">SMP</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 3 ? 'selected' : ''}} value="3" data-select2-id="13">SMA</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 4 ? 'selected' : ''}} value="4" data-select2-id="14">SMK</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 5 ? 'selected' : ''}} value="5" data-select2-id="15">MI</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 6 ? 'selected' : ''}} value="6" data-select2-id="16">MTs</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 7 ? 'selected' : ''}} value="7" data-select2-id="17">MA</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 8 ? 'selected' : ''}} value="8" data-select2-id="18">SD LB</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 9 ? 'selected' : ''}} value="9" data-select2-id="19">SMP LB</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 10 ? 'selected' : ''}} value="10" data-select2-id="20">SMA LM</option>
<option {{@$item->profile->ms_tingkat_sekolah_id == 11 ? 'selected' : ''}} value="11" data-select2-id="21">SLB Khusus</option>
</select>
@error('tingkat_sekolah')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@ -80,8 +80,8 @@
<div class="col-12 pr-1">
<select name="status_sekolah" class="form-control @error('status_sekolah') is-invalid @enderror" required>
<option value="" data-select2-id="3">-Pilih Status Sekolah-</option>
<option {{@$item->sekolah->status_sekolah == 'Negeri' ? 'selected' : ''}} value="Negeri">Negeri</option>
<option {{@$item->sekolah->status_sekolah == 'Swasta' ? 'selected' : ''}} value="Swasta">Swasta</option>
<option {{@$item->profile->status_sekolah == 'Negeri' ? 'selected' : ''}} value="Negeri">Negeri</option>
<option {{@$item->profile->status_sekolah == 'Swasta' ? 'selected' : ''}} value="Swasta">Swasta</option>
</select>
@error('status_sekolah')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@ -93,7 +93,7 @@
<div class="form-group">
<label class="col-xl-12 form-label" for="emailverify">Alamat Sekolah</label>
<div class="col-12 pr-1">
<input type="text" value="{{@$item->sekolah->alamat_sekolah ? @$item->sekolah->alamat_sekolah : old('alamat_sekolah')}}" name="alamat_sekolah" class="form-control @error('alamat_sekolah') is-invalid @enderror" placeholder="Masukan Alamat Sekolah, Nama Jalan / Dusun / RT-RW" required>
<input type="text" value="{{@$item->profile->alamat_sekolah ? @$item->profile->alamat_sekolah : old('alamat_sekolah')}}" name="alamat_sekolah" class="form-control @error('alamat_sekolah') is-invalid @enderror" placeholder="Masukan Alamat Sekolah, Nama Jalan / Dusun / RT-RW" required>
@error('alamat_sekolah')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
@ -104,7 +104,7 @@
<div class="form-group">
<label class="col-xl-12 form-label" for="emailverify">Kontak Person</label>
<div class="col-12 pr-1">
<input type="text" value="{{@$item->sekolah->kontak_person ? @$item->sekolah->kontak_person : old('kontak_person')}}" name="kontak_person" class="form-control @error('kontak_person') is-invalid @enderror" placeholder="Masukan Kontak Person" required>
<input type="text" value="{{@$item->profile->kontak_person ? @$item->profile->kontak_person : old('kontak_person')}}" name="kontak_person" class="form-control @error('kontak_person') is-invalid @enderror" placeholder="Masukan Kontak Person" required>
@error('kontak_person')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
@ -115,7 +115,7 @@
<div class="form-group">
<label class="col-xl-12 form-label" for="emailverify">Telp/WA</label>
<div class="col-12 pr-1">
<input type="text" value="{{@$item->sekolah->telp ? @$item->sekolah->telp : old('telp')}}" name="telp" class="form-control @error('telp') is-invalid @enderror numberInput" maxlength="16" placeholder="Masukan Telp/WA" required>
<input type="text" value="{{@$item->profile->telp ? @$item->profile->telp : old('telp')}}" name="telp" class="form-control @error('telp') is-invalid @enderror numberInput" maxlength="16" placeholder="Masukan Telp/WA" required>
@error('telp')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror

View File

@ -60,7 +60,7 @@
</div>
<div class="col-9 col-md-9">
<div class="level rounded-plus bg-fusion-50 width-1 height-1 d-inline-block bg-success">
<h4>Level 4</h4>
<h4>Level {{levelAdiwiyata(session('npsn'))}}</h4>
</div>
</div>
</div>

View File

@ -58,7 +58,7 @@
</ul>
</div>
@endif
<form method="POST" action="{{route($route.'.store')}}" id="form">
<form method="POST" id="form">
{{csrf_field()}}
<div class="card">
<div class="card-body">
@ -84,6 +84,12 @@
</tr>
</table>
</div>
<div class="col-md-12">
<div class="alert alert-warning">
<p class="mb-0"><i class="fal fa-info-circle"></i>&nbsp;Anda Belum Melakukan Finalisasi Proses Data Kriteria</p>
<p class="mb-0"><i class="fal fa-info-circle"></i>&nbsp;Klik <b class="text-danger">Resume</b> untuk melakukan Finalisasi Proses Data Kriteria</p>
</div>
</div>
<div class="col-md-12" style="background: rgba(23, 162, 184, 0.2) !important;">
<ul class="pageNumber">
@foreach($page as $hal)
@ -98,28 +104,19 @@
<h6 class="mb-0"><b class="changeTitle">I. Perencanaan Gerakan PBLHS</b></h6>
</div>
</div>
<div class="col-md-12">
<div class="col-md-12 bodyInput">
<div id="loading-spinner" style="display: none; text-align: center;">
<img src="{{ asset('assets/spinner.gif') }}" alt="Loading..." width="20">
</div>
<div class="changeForm">
{!! formKriteria(1) !!}
</div>
<div class="card mb-2">
<div class="card-body">
<h6><b>Link Google Drive (folder/File penyimpanan bukti)</b></h6>
<div class="form-group">
<input type="text" class="form-control" name="link_grdive" placeholder="Link Google Drive (folder penyimpanan bukti)">
<small><i>Contoh link : https://example.com</i></small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button class="btn btn-success"><i class="fal fa-save"></i>&nbsp;Simpan Data</button>
<button id="btnSave" class="btn btn-success"><i class="fal fa-save"></i>&nbsp;Simpan Data</button>
</div>
</div>
@ -167,5 +164,83 @@
}
});
});
$('#btnSave').on('click',function(e){
e.preventDefault();
let currentForm = $("#form").serializeArray();
console.log(currentForm);
let formData = {};
let allData = {};
let isValid = true; // Flag validasi
currentForm.forEach(field => {
let name = field.name.replace(/\[\]$/, ''); // Hapus "[]" di akhir nama input
if (allData[name]) {
if (!Array.isArray(allData[name])) {
allData[name] = [allData[name]];
}
allData[name].push(field.value);
} else {
allData[name] = field.value;
}
});
$('.is-required').each(function () {
let type = $(this).attr('type');
let name = $(this).attr('name');
let value = $(this).val()?.trim(); // Pastikan nilai di-trim untuk menghindari spasi kosong
if (type === 'radio' || type === 'checkbox') {
// Validasi radio: setidaknya satu opsi harus dipilih
if ($(`input[name="${name}"]:checked`).length === 0) {
isValid = 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) {
isValid = false;
$(this).addClass("is-invalid");
} else {
$(this).removeClass("is-invalid");
}
}
});
// Jika validasi gagal, hentikan submit
if (!isValid) {
toastr.error("Harap isi semua field yang wajib diisi", '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
data: {
_token:'{{csrf_token()}}',
data: allData
}, // Kirim number sebagai parameter
dataType: 'json', // Format respons JSON
beforeSend: function () {
$('#loading-spinner').show(); // Menampilkan spinner
},
success: function (response) {
console.log('Response:', response);
},
error: function (xhr, status, error) {
console.error('AJAX Error:', status, error);
alert('Failed to fetch data!');
},
complete: function () {
$('#loading-spinner').hide(); // Sembunyikan spinner setelah request selesai
}
});
});
</script>
@endsection

View File

@ -2,6 +2,7 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\ApiController;
/*
|--------------------------------------------------------------------------
@ -17,3 +18,10 @@ use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('getProvince',[ApiController::class,'getProvince']);
Route::get('getKabupaten',[ApiController::class,'getKabupaten']);
Route::get('getKecamatan',[ApiController::class,'getKecamatan']);
Route::get('getSekolah',[ApiController::class,'getSekolah']);
// Route::get('getKabupaten',[ApiController::class,'getKabupaten']);

View File

@ -32,6 +32,7 @@ Route::name('master.')->prefix('master')->group(function () {
Route::get('/update/{id?}',[FormKriteriaController::class,'update'])->name('update');
Route::post('/store',[FormKriteriaController::class,'store'])->name('store');
Route::get('/grid',[FormKriteriaController::class,'grid'])->name('grid');
Route::get('delete/{id?}',[FormKriteriaController::class,'delete'])->name('delete');
});
});

View File

@ -5,6 +5,7 @@ use App\Http\Middleware\Session;
use App\Http\Controllers\Auth\CustomLoginController;
use App\Http\Controllers\Auth\CustomRegisterController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\AjaxController;
/*
|--------------------------------------------------------------------------
@ -21,6 +22,9 @@ Route::post('login',[CustomLoginController::class,'post_login'])->name('post_log
Route::get('register',[CustomRegisterController::class,'index'])->name('register');
Route::post('register',[CustomRegisterController::class,'post_register'])->name('post_register');
Route::post('get/kabupaten',[AjaxController::class,'getKabupaten'])->name('getKabupaten');
Route::post('get/kecamatan',[AjaxController::class,'getKecamatan'])->name('getKecamatan');
Route::post('get/sekolah',[AjaxController::class,'getSekolah'])->name('getSekolah');
Route::middleware(Session::class)->name('modules.')->group(function () {