288 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			288 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Modules\Usulan;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Facades\File;
 | |
| use App\Models\Kuesioner;
 | |
| use App\Models\Master\FormKriteria;
 | |
| use App\Models\Master\Sekolah;
 | |
| use App\Models\Penilaian;
 | |
| use App\Models\KuesionerLog;
 | |
| use App\Models\DokumenAdministrasi;
 | |
| 
 | |
| class KriteriaController extends Controller
 | |
| {
 | |
|     protected $title = 'Pemenuhan Kriteria';
 | |
|     protected $template = 'modules.usulan.kriteria';
 | |
|     protected $route = 'modules.usulan_adiwiyata.kriteria';
 | |
| 
 | |
|     public function index()
 | |
|     {
 | |
|         permission('is_read', $this->route, 'module',true);
 | |
| 
 | |
|         if(Kuesioner::where('ms_sekolah_id',session('sekolah_id'))->where('tahun',date('Y'))->count() == 0){
 | |
|             return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
 | |
|                     'message' => 'Maaf anda belum melakukan isi kuesioner, silahkan isi terlebih dahulu',
 | |
|                     'type'    => 'error',
 | |
|                 ]);
 | |
|         }
 | |
| 
 | |
|         $kuesioner = Kuesioner::where('ms_sekolah_id',session('sekolah_id'))->where('tahun',date('Y'))->first();
 | |
|         $dok = DokumenAdministrasi::where('kuesioner_id',$kuesioner->KuesionerId)->first();
 | |
| 
 | |
|         if($kuesioner->status == 0){
 | |
|             if(@$dok->status == 0){
 | |
|                 return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
 | |
|                     'message' => 'Maaf menunggu verifikasi dokumen oleh Dinas/Sudin',
 | |
|                     'type'    => 'error',
 | |
|                 ]);
 | |
|             }elseif(@$dok->status == 2){
 | |
|                 return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
 | |
|                     'message' => 'Dokumen ditolak oleh Dinas/Sudin, silahkan upload ulang',
 | |
|                     'type'    => 'error',
 | |
|                 ]);
 | |
|             }
 | |
|         }
 | |
|         if(@$kuesioner){
 | |
|             if(@$kuesioner->status == 1){
 | |
|                 // $dok = DokumenAdministrasi::where('kuesioner_id',$kuesioner->KuesionerId)->first();
 | |
|                 if(@$dok->status == 0){
 | |
|                     return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
 | |
|                         'message' => 'Maaf menunggu verifikasi dokumen oleh Dinas/Sudin',
 | |
|                         'type'    => 'error',
 | |
|                     ]);
 | |
|                 }elseif(@$dok->status == 2){
 | |
|                     return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
 | |
|                         'message' => 'Dokumen ditolak oleh Dinas/Sudin, silahkan upload ulang',
 | |
|                         'type'    => 'error',
 | |
|                     ]);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         $data['title'] = $this->title;
 | |
|         $data['route'] = $this->route;   
 | |
|         $data['kuesioner'] = $kuesioner;   
 | |
|         $data['page']  = FormKriteria::select('page_number')->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray(); 
 | |
| 
 | |
|         return view($this->template.'.form',$data);
 | |
|     }
 | |
|     public function resume()
 | |
|     {
 | |
|         // permission('is_read', $this->route, 'module',true);
 | |
| 
 | |
|         $data['title'] = $this->title;
 | |
|         $data['route'] = $this->route;   
 | |
|         $data['page']  = FormKriteria::select('page_number')->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray(); 
 | |
| 
 | |
|         return view($this->template.'.resume',$data);
 | |
|     }
 | |
| 
 | |
|     public function progress($id)
 | |
|     {
 | |
|         $keyId = decode_id($id);
 | |
|         // permission('is_read', $this->route, 'module',true);
 | |
| 
 | |
|         $data['title']          = $this->title;
 | |
|         $data['route']          = $this->route;   
 | |
|         $data['secure_id']          = $id;   
 | |
|         $data['page']           = FormKriteria::select('page_number')->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray(); 
 | |
|         $data['log']            = KuesionerLog::where('ms_sekolah_id',$keyId)->orderBy('created_at','ASC')->get();
 | |
|         $data['kuesioner']      = Kuesioner::where('ms_sekolah_id',$keyId)->where('tahun',date('Y'))->first();
 | |
|         $data['dok']            = DokumenAdministrasi::where('ms_sekolah_id',$keyId)->where('tahun',date('Y'))->first();
 | |
|         $data['penilaian']      = Penilaian::where('ms_sekolah_id',$keyId)->where('tahun',date('Y'))->groupBy('page_number')->orderBy('page_number','ASC')->pluck('page_number')->toArray();
 | |
| 
 | |
|         return view($this->template.'.progress',$data);
 | |
|     }
 | |
|     public function store(Request $request)
 | |
|     {
 | |
|         // dd($request);
 | |
|         $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);
 | |
|                 }
 | |
| 
 | |
|                 if(session('group_alias') == 'sekolah'){
 | |
|                     $status = 0;
 | |
|                 }elseif(session('group_alias') == 'penilai_kota'){
 | |
|                     $status = 1;
 | |
|                 }elseif(session('group_alias') == 'penilai_provinsi'){
 | |
|                     $status = 2;
 | |
|                 }
 | |
| 
 | |
|                 if(@$request['sekolah']){
 | |
|                     $idSekolah = decode_id(@$request['sekolah']);
 | |
|                     $sekolah = Sekolah::find($idSekolah);
 | |
|                 }else{
 | |
|                     $idSekolah = session('sekolah_id');
 | |
|                     $sekolah = Sekolah::find($idSekolah);
 | |
|                 }
 | |
| 
 | |
|                 if($key == 'input_upload_files'){
 | |
| 
 | |
|                     $filePaths = [];
 | |
|                     if(is_array($value)){
 | |
|                         foreach ($value as $file) {
 | |
|                             $tempPath = storage_path('app/tmp_uploads/' . $file);
 | |
| 
 | |
|                             if (file_exists($tempPath)) {
 | |
|                                 $path = public_path('uploads/kriteria/' . date('Y').'/'.$idSekolah . '/' .decode_id($data['key']) );
 | |
|                                 if (!File::exists($path)) {
 | |
|                                     File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
 | |
|                                 }
 | |
| 
 | |
|                                 $newPath = 'uploads/kriteria/'.date('Y').'/'.$idSekolah.'/'.decode_id($data['key']).'/'.$file;
 | |
|                                 copy($tempPath, public_path($newPath));
 | |
|                                 $filePaths[] = $newPath;
 | |
|                             }
 | |
|                         }
 | |
|                     }else{
 | |
|                         $tempPath = storage_path('app/tmp_uploads/' . $value);
 | |
| 
 | |
|                         if (file_exists($tempPath)) {
 | |
|                             $path = public_path('uploads/kriteria/' . date('Y').'/'.$idSekolah . '/' .decode_id($data['key']) );
 | |
|                             if (!File::exists($path)) {
 | |
|                                 File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
 | |
|                             }
 | |
| 
 | |
|                             $newPath = 'uploads/kriteria/'.date('Y').'/'.$idSekolah.'/'.decode_id($data['key']).'/'.$value;
 | |
|                             copy($tempPath, public_path($newPath));
 | |
|                             $filePaths[] = $newPath;
 | |
|                         }
 | |
|                     }
 | |
|                         
 | |
|                         $value = $filePaths;
 | |
|                 }
 | |
| 
 | |
|                 
 | |
| 
 | |
|                 $nilai_kota  = Penilaian::where('ms_sekolah_id',$idSekolah)
 | |
|                 ->where('page_number',decode_id($data['key']))
 | |
|                 ->where('skor','!=',0)
 | |
|                 ->where('tahun',date('Y'))
 | |
|                 ->where('status',1) //inputan kota
 | |
|                 ->first();
 | |
| 
 | |
|                 $nilai_prov  = Penilaian::where('ms_sekolah_id',$idSekolah)
 | |
|                 ->where('page_number',decode_id($data['key']))
 | |
|                 ->where('skor','!=',0)
 | |
|                 ->where('tahun',date('Y'))
 | |
|                 ->where('status',2) //inputan kota
 | |
|                 ->first();
 | |
| 
 | |
|                 $kuesioner = decode_id($data['secure_id']);
 | |
| 
 | |
| 
 | |
| 
 | |
|                 $penilaian[$key] = Penilaian::updateOrCreate([
 | |
|                     'kuesioner_id'  => $kuesioner,
 | |
|                     'tahun'         => date('Y'),
 | |
|                     'ms_sekolah_id' => $sekolah->MsSekolahId,
 | |
|                     'npsn'          => $sekolah->npsn,
 | |
|                     'page_number'   => decode_id($data['key']),
 | |
|                     'key'           => str_replace('input_','',$key),
 | |
|                     'status'        => $status,
 | |
|                 ],[
 | |
|                     'kuesioner_id'  => $kuesioner,
 | |
|                     'ms_sekolah_id' => $sekolah->MsSekolahId,
 | |
|                     'npsn'          => $sekolah->npsn,
 | |
|                     'page_number'   => decode_id($data['key']),
 | |
|                     'key'           => str_replace('input_','',$key),
 | |
|                     'value'         => json_encode($value),
 | |
|                     'skor'          => $skor,
 | |
|                     'tahun'         => date('Y'),
 | |
|                     'created_by'    => auth()->user()->id,
 | |
|                 ]);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return response()->json(['status' => true,'data' => $_value,'message' => 'Berhasil Update Data','page' => $data['key'],'nilai_kota'    => @$nilai_kota ? @$nilai_kota->skor : 0,
 | |
|                 'nilai_prov'    => @$nilai_prov ? @$nilai_prov->skor : 0]);
 | |
|         
 | |
|         
 | |
|     }
 | |
| 
 | |
|     public function kirimData($sekolah_id, $kuesioner_id)
 | |
|     {
 | |
|         //cek dokumen
 | |
|         $keyId = decode_id($kuesioner_id);
 | |
|         $dok = DokumenAdministrasi::where('kuesioner_id',$keyId)->first();
 | |
|         if($dok->status == 0){
 | |
|             return response()->json(['status' => false,'message' => 'Dokumen Belum Di Verifikasi','type' => 'error']);       
 | |
|         }else{
 | |
|             
 | |
|             $kuesioner = Kuesioner::find($keyId);
 | |
|             $kuesioner->status = 3;
 | |
|             $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           = 'kirim_kelengkapan_data';
 | |
|             $log->status         = 3;
 | |
|             $log->created_by     = auth()->user()->id;
 | |
|             $log->save();
 | |
| 
 | |
|             return response()->json(['status' => true,'message' => 'Data Berhasil Di Update','type' => 'success']);    
 | |
|         }
 | |
| 
 | |
|         
 | |
|     }
 | |
| }
 |