411 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Facades\Validator;
 | |
| use Illuminate\Support\Facades\DB;
 | |
| use Illuminate\Support\Facades\Auth;
 | |
| use Illuminate\Support\Facades\Hash;
 | |
| use App\Models\ProfileSekolah as Profile;
 | |
| use App\Models\Kuesioner;
 | |
| use App\Models\KuesionerLog;
 | |
| use App\Models\Master\Provinsi;
 | |
| use App\Models\Master\Sekolah;
 | |
| 
 | |
| class KuesionerController extends Controller
 | |
| {
 | |
|     protected $template = 'modules.kuesioner';
 | |
|     protected $route = 'modules.kuesioner';
 | |
| 
 | |
|     public function index()
 | |
|     {
 | |
|         permission('is_read', $this->route, 'module',true);
 | |
| 
 | |
| 
 | |
|         if(session('group_alias') == 'sekolah'){
 | |
| 
 | |
|             $data['profile'] = Profile::where('ms_sekolah_id',session('sekolah_id'))->first();
 | |
|             if(!@$data['profile']->data_jumlah && !@$data['profile']->penghematan_air && !@$data['profile']->penghematan_listrik){
 | |
|                 return redirect('profile-sekolah/')->with([
 | |
|                     'message' => 'Silahkan lengkapi data profile sekolah',
 | |
|                     'type'    => 'error',
 | |
|                 ]);
 | |
|             }
 | |
| 
 | |
|             return redirect('kuesioner/update/'.encode_id(session('sekolah_id')));
 | |
|         }
 | |
| 
 | |
|         $data['provinsi'] = Provinsi::where('kode_wilayah','010000')->get();
 | |
|         $data['title'] = 'Kuesioner Leveling';
 | |
|         $data['route'] = $this->route;    
 | |
|         return view($this->template.'.index', $data);
 | |
|     }
 | |
| 
 | |
|     public function grid(Request $request)
 | |
|     {
 | |
|         $kuesioner = Kuesioner::orderBy('created_at','DESC')->get();
 | |
|         foreach ($kuesioner as $key => $row) {
 | |
| 
 | |
|             $action = '';
 | |
| 
 | |
|             if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){
 | |
|                 $action .= '<a href="'.url('kuesioner/update/'.encode_id($row->ms_sekolah_id)).'" data-toggle="tooltip" title="View Data" class="btn btn-xs btn-block btn-primary"><i class="fal fa-eye text-white"></i></a>';
 | |
|                 if(session('group_alias') == 'dinas'){
 | |
|                     if($row->status == 0){
 | |
|                         $action .= '<a href="#" data-href="'.url('kuesioner/verifikasi/'.encode_id($row->KuesionerId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-success verifikasi"><i class="fal fa-check text-white"></i></a>';
 | |
|                         $action .= '<a href="#" data-href="'.url('kuesioner/tolak/'.encode_id($row->KuesionerId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-danger tolak"><i class="fal fa-times text-white"></i></a>';
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if($row->level == 0){
 | |
|                 $penghargaan = '<i class="fal fa-trophy"></i> Belum Pernah';
 | |
|             }elseif($row->level == 1){
 | |
|                 $penghargaan = '<i class="fal fa-trophy"></i> Adiwiyata Kab/Kota';
 | |
|             }elseif($row->level == 2){
 | |
|                 $penghargaan = '<i class="fal fa-trophy"></i> Adiwiyata Provinsi';
 | |
|             }elseif($row->level == 3){
 | |
|                 $penghargaan = '<i class="fal fa-trophy"></i> Adiwiyata Nasional';
 | |
|             }elseif($row->level == 4){
 | |
|                 $penghargaan = '<i class="fal fa-trophy"></i> Adiwiyata Mandiri';
 | |
|             }
 | |
| 
 | |
|             $status = '';
 | |
|             if($row->status == 0){
 | |
|                 $status = '<span class="badge badge-info">Belum Diverifikasi</span>';
 | |
|             }elseif($row->status == 1){
 | |
|                 $status = '<span class="badge badge-success">Sudah Diverifikasi</span>';
 | |
|             }elseif($row->status == 2){
 | |
|                 $status = '<span class="badge badge-danger">Ditolak</span>';
 | |
|             }else{
 | |
|                 $log  = KuesionerLog::where('kuesioner_id',$row->KuesionerId)->orderBy('created_at','DESC')->first();
 | |
|                 $status = '<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> ';
 | |
|             $sekolah .= '<span class="badge badge-primary mt-1">'.@$row->profile->status_sekolah.'</span> ';
 | |
|             $sekolah .= '<span class="badge badge-secondary text-left mt-1">'.@$row->profile->alamat_sekolah.'</span> ';
 | |
| 
 | |
|             $_data[] = [
 | |
|                 'no'                => $key+1,
 | |
|                 'id'                => encode_id($row->id),
 | |
|                 'npsn'              => $row->sekolah->npsn,
 | |
|                 'nama'              => $sekolah,
 | |
|                 'status_level'      => '<span style="width:100%" class="badge badge-secondary">Level '.levelAdiwiyata($row->npsn).'</span>',
 | |
|                 'wilayah'           => $row->sekolah->kabupaten->name,
 | |
|                 'alamat_sekolah'    => $row->sekolah->alamat_sekolah,
 | |
|                 'tingkat_sekolah'   => $row->sekolah->tingkat->name,
 | |
|                 'status_sekolah'    => $row->sekolah->status,
 | |
|                 'alamat_sekolah'    => $row->profile->alamat_sekolah,
 | |
|                 'penghargaan'       => $penghargaan,
 | |
|                 'status'            => $status,
 | |
|                 'action'            => $action,
 | |
|             ];
 | |
| 
 | |
|         }
 | |
| 
 | |
|         return response()->json($_data);
 | |
|     }
 | |
| 
 | |
|     public function update($id = null)
 | |
|     {
 | |
|         permission('is_read', $this->route, 'module',true);
 | |
| 
 | |
|         $keyId = @$id ? decode_id(@$id) : session('sekolah_id');
 | |
| 
 | |
|         $data['title'] = 'Kuesioner Leveling';
 | |
|         $data['route'] = $this->route;    
 | |
|         $kuesioner     = Kuesioner::where('ms_sekolah_id',$keyId)->where('tahun',date('Y'))->first();
 | |
|         if(@$kuesioner){
 | |
|             $data['kuesioner'] = $kuesioner;
 | |
|         }else{
 | |
|             $kuesioner         = Kuesioner::where('ms_sekolah_id',$keyId)->where('tahun',(date('Y')-1))->first();
 | |
|             $data['kuesioner'] = $kuesioner;
 | |
|         }
 | |
| 
 | |
|         $sekolah = Sekolah::where('MsSekolahId',$keyId)->first();
 | |
| 
 | |
|         $data['nama_sekolah']   = @$sekolah->nama_sekolah;
 | |
|         $data['npsn']           = @$sekolah->npsn;
 | |
|         $data['status']         = @$sekolah->status;
 | |
|         $data['alamat_sekolah'] = @$sekolah->profile->alamat_sekolah;
 | |
|         $data['tingkat']        = @$sekolah->profile->tingkat->name;
 | |
| 
 | |
|         $media                                         = json_decode(@$kuesioner->media);
 | |
|         $data['selectedMediaValues']                   = collect($media)->pluck('value')->toArray(); // Ambil value yang dipilih
 | |
|         $data['selectedMediaTexts']                    = collect($media)->keyBy('name');
 | |
| 
 | |
|         $materi                                        = json_decode(@$kuesioner->materi);
 | |
|         $data['selectedMateriValues']                  = collect($materi)->pluck('value')->toArray(); // Ambil value yang dipilih
 | |
|         $data['selectedMateriTexts']                   = collect($materi)->keyBy('name');
 | |
| 
 | |
|         $komitmen                                      = json_decode(@$kuesioner->komitmen);
 | |
|         $data['selectedKomitmenValues']                = collect($komitmen)->pluck('value')->toArray(); // Ambil value yang dipilih
 | |
|         $data['selectedKomitmenTexts']                 = collect($komitmen)->keyBy('name');
 | |
| 
 | |
|         $kegiatan_lingkungan                           = json_decode(@$kuesioner->kegiatan_lingkungan);
 | |
|         $data['selectedKegiatanLingkunganValues']      = collect($kegiatan_lingkungan)->pluck('value')->toArray(); // Ambil value yang dipilih
 | |
|         $data['selectedKegiatanLingkunganTexts']       = collect($kegiatan_lingkungan)->keyBy('name');
 | |
| 
 | |
|         $pihak_kegiatan_lingkungan                     = json_decode(@$kuesioner->pihak_kegiatan_lingkungan);
 | |
|         $data['selectedPihakKegiatanLingkunganValues'] = collect($pihak_kegiatan_lingkungan)->pluck('value')->toArray(); // Ambil value yang dipilih
 | |
|         $data['selectedPihakKegiatanLingkunganTexts']  = collect($pihak_kegiatan_lingkungan)->keyBy('name');
 | |
| 
 | |
|         return view($this->template.'.form',$data);
 | |
|     }
 | |
| 
 | |
|     public function store(Request $request)
 | |
|     {
 | |
|         // dd(request()->all());
 | |
|         try {
 | |
| 
 | |
|             $media                         = request()->input('media', []); // Ambil array media
 | |
|             $mediaText                     = request()->input('media_text', []); // Ambil array media_text
 | |
|             $materi                        = request()->input('materi', []); // Ambil array materi
 | |
|             $materiText                    = request()->input('materi_text', []); // Ambil array materi_text
 | |
|             $komitmen                      = array(request()->input('komitmen')); // Ambil array komitmen
 | |
|             $komitmenText                  = request()->input('komitmen_text', []); // Ambil array komitmen_text
 | |
|             $kegiatan_lingkungan           = request()->input('kegiatan_lingkungan', []); // Ambil array kegiatan_lingkungan
 | |
|             $kegiatan_lingkunganText       = request()->input('kegiatan_lingkungan_text', []); // Ambil array kegiatan_lingkungan_text
 | |
|             $pihak_kegiatan_lingkungan     = request()->input('pihak_kegiatan_lingkungan', []); // Ambil array pihak_kegiatan_lingkungan
 | |
|             $pihak_kegiatan_lingkunganText = request()->input('pihak_kegiatan_lingkungan_text', []); // Ambil array pihak_kegiatan_lingkungan_text
 | |
| 
 | |
|             // Buat array mapping berdasarkan media yang dipilih
 | |
|             $mediaFormatted         = [];
 | |
|             $materiFormatted        = [];
 | |
|             $komitmenFormatted      = [];
 | |
|             $kegiatanFormatted      = [];
 | |
|             $pihakKegiatanFormatted = [];
 | |
| 
 | |
|             //ISIAN MEDIA
 | |
|             foreach ($media as $value) {
 | |
|                 if ($value == 1) {
 | |
|                     $mediaFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'sosialisasi',
 | |
|                         'text'  => $mediaText['sosialisasi'] ?? null
 | |
|                     ];
 | |
|                 } elseif ($value == 2) {
 | |
|                     $mediaFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'bimtek',
 | |
|                         'text'  => $mediaText['bimtek'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 3) {
 | |
|                     $mediaFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'webinar',
 | |
|                         'text'  => $mediaText['webinar'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 4) {
 | |
|                     $mediaFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'youtube',
 | |
|                         'text'  => $mediaText['youtube'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 5) {
 | |
|                     $mediaFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'lainlain',
 | |
|                         'text'  => $mediaText['lainlain'] ?? null
 | |
|                     ];
 | |
|                 }
 | |
|             }
 | |
| 
 | |
| 
 | |
|             //ISIAN MATERI
 | |
|             foreach ($materi as $value) {
 | |
|                 if ($value == 1) {
 | |
|                     $materiFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'kebijakan',
 | |
|                         'text'  => $materiText['kebijakan'] ?? null
 | |
|                     ];
 | |
|                 } elseif ($value == 2) {
 | |
|                     $materiFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'perencanaan',
 | |
|                         'text'  => $materiText['perencanaan'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 3) {
 | |
|                     $materiFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'pelaksanaan',
 | |
|                         'text'  => $materiText['pelaksanaan'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 4) {
 | |
|                     $materiFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'pemantauan',
 | |
|                         'text'  => $materiText['pemantauan'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 5) {
 | |
|                     $materiFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'lainlain',
 | |
|                         'text'  => $materiText['lainlain'] ?? null
 | |
|                     ];
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             //ISIAN KOMITMEN
 | |
|             foreach ($komitmen as $value) {
 | |
|                 if ($value == 1) {
 | |
|                     $komitmenFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'bersedia',
 | |
|                         'text'  => $komitmenText['bersedia'] ?? null
 | |
|                     ];
 | |
|                 } elseif ($value == 2) {
 | |
|                     $komitmenFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'tidak_bersedia',
 | |
|                         'text'  => $komitmenText['tidak_bersedia'] ?? null
 | |
|                     ];
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             //ISIAN KEGIATAN
 | |
|             foreach ($kegiatan_lingkungan as $value) {
 | |
|                 if ($value == 1) {
 | |
|                     $kegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'pemilahan_sampah',
 | |
|                         'text'  => $kegiatanText['pemilahan_sampah'] ?? null
 | |
|                     ];
 | |
|                 } elseif ($value == 2) {
 | |
|                     $kegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'penanaman_pohon',
 | |
|                         'text'  => $kegiatanText['penanaman_pohon'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 3) {
 | |
|                     $kegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'kegiatan_1',
 | |
|                         'text'  => $kegiatanText['kegiatan_1'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 4) {
 | |
|                     $kegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'kegiatan_2',
 | |
|                         'text'  => $kegiatanText['kegiatan_2'] ?? null
 | |
|                     ];
 | |
|                 }elseif ($value == 5) {
 | |
|                     $kegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'kegiatan_3',
 | |
|                         'text'  => $kegiatanText['kegiatan_3'] ?? null
 | |
|                     ];
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             //ISIAN PIHAK KEGIATAN
 | |
|             foreach ($pihak_kegiatan_lingkungan as $value) {
 | |
|                 if ($value == 1) {
 | |
|                     $pihakKegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'internal',
 | |
|                         'text'  => $pihakKegiatanText['internal'] ?? null
 | |
|                     ];
 | |
|                 } elseif ($value == 2) {
 | |
|                     $pihakKegiatanFormatted[] = [
 | |
|                         'value' => $value,
 | |
|                         'name'  => 'eksternal',
 | |
|                         'text'  => $pihakKegiatanText['eksternal'] ?? null
 | |
|                     ];
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             $insert = new Kuesioner;
 | |
|             $insert->ms_sekolah_id             = session('sekolah_id');
 | |
|             $insert->created_by                = auth()->user()->id;
 | |
|             $insert->npsn                      = session('npsn');
 | |
|             $insert->level                     = @$request->level;
 | |
|             $insert->tim_adiwiyata             = @$request->tim_adiwiyata;
 | |
|             $insert->info_pblhs                = @$request->info_pblhs;
 | |
|             $insert->media                     = json_encode(@$mediaFormatted);
 | |
|             $insert->materi                    = json_encode(@$materiFormatted);
 | |
|             $insert->komitmen                  = json_encode($komitmenFormatted);
 | |
|             $insert->kegiatan_lingkungan       = json_encode(@$kegiatanFormatted);
 | |
|             $insert->pihak_kegiatan_lingkungan = json_encode(@$pihakKegiatanFormatted);
 | |
|             $insert->tahun                     = date('Y');
 | |
|             $insert->link_sk_adiwiyata         = @$request->link_sk_adiwiyata;
 | |
|             $insert->tim_adiwiyata_nomor_sk    = @$request->tim_adiwiyata_nomor_sk;
 | |
|             $insert->tim_adiwiyata_link        = @$request->tim_adiwiyata_link;
 | |
|             $insert->save();
 | |
| 
 | |
| 
 | |
|             //kuesioner log
 | |
|             $log = new KuesionerLog;
 | |
|             $log->kuesioner_id   = $insert->KuesionerId;
 | |
|             $log->ms_sekolah_id  = session('sekolah_id');
 | |
|             $log->npsn           = session('npsn');
 | |
|             $log->ms_group_id    = session('group_id');
 | |
|             $log->step           = 'create_usulan';
 | |
|             $log->status         = 0;
 | |
|             $log->created_by     = auth()->user()->id;
 | |
|             $log->save();
 | |
| 
 | |
| 
 | |
|             logActivity($request, __('Create',['val' => strtolower(__('Title',['val' => 'Kuesioner Leveling User ID : '.auth()->user()->id]))]));
 | |
| 
 | |
|             return redirect()->back()->with([
 | |
|                     'message' => 'Berhasil update data',
 | |
|                     'type'    => 'success',
 | |
|                 ]);
 | |
| 
 | |
| 
 | |
| 
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with([
 | |
|                      'message' => $e->getMessage(),
 | |
|                      'type'    => "error"
 | |
|                 ]);   
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function verifikasi($id)
 | |
|     {
 | |
|         $keyId = decode_id($id);
 | |
| 
 | |
|         $kuesioner = Kuesioner::find($keyId);
 | |
|         $kuesioner->status = 1;
 | |
|         $kuesioner->save();
 | |
| 
 | |
|         $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           = 'approve_usulan';
 | |
|         $log->status         = 1;
 | |
|         $log->created_by     = auth()->user()->id;
 | |
|         $log->save();
 | |
| 
 | |
|         return response()->json(['status' => true,'message' => 'Data Berhasil Di Update','type' => 'success']);
 | |
|     }
 | |
|     public function tolak($id)
 | |
|     {
 | |
|         $keyId = decode_id($id);
 | |
|         $kuesioner = Kuesioner::find($keyId);
 | |
|         $kuesioner->status = 2;
 | |
|         $kuesioner->save();
 | |
| 
 | |
|         $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           = 'tolak_usulan';
 | |
|         $log->status         = 2;
 | |
|         $log->created_by     = auth()->user()->id;
 | |
|         $log->save();
 | |
| 
 | |
|         return response()->json(['status' => true,'message' => 'Data Berhasil Di Update','type' => 'success']);
 | |
|     }
 | |
| }
 |