sekolah_adiwiyata/app/Http/Controllers/Modules/Usulan/KriteriaController.php

199 lines
8.6 KiB
PHP

<?php
namespace App\Http\Controllers\Modules\Usulan;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
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',
]);
}
if(Kuesioner::where('ms_sekolah_id',session('sekolah_id'))->where('tahun',date('Y'))->value('status') == 0){
return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
'message' => 'Menunggu Usulan dari Dinas/Sudin',
'type' => 'error',
]);
}
if(Kuesioner::where('ms_sekolah_id',session('sekolah_id'))->where('tahun',date('Y'))->value('status') == 1){
return redirect('kuesioner/update/'.encode_id(session('sekolah_id')))->with([
'message' => 'Maaf usulan anda belum diverifikasi oleh Dinas',
'type' => 'error',
]);
}
$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.'.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['sekolah']);
$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);
}
$penilaian[$key] = Penilaian::updateOrCreate([
'tahun' => date('Y'),
'ms_sekolah_id' => $sekolah->MsSekolahId,
'npsn' => $sekolah->npsn,
'page_number' => decode_id($data['key']),
'key' => str_replace('input_','',$key),
'status' => $status,
],[
'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']]);
}
public function kirimData($sekolah_id, $kuesioner_id)
{
$keyId = decode_id($kuesioner_id);
$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']);
}
}