sekolah_adiwiyata/app/Http/Controllers/KuesionerController.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>&nbsp;Belum Pernah';
}elseif($row->level == 1){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Kab/Kota';
}elseif($row->level == 2){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Provinsi';
}elseif($row->level == 3){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Nasional';
}elseif($row->level == 4){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;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>&nbsp;';
$sekolah .= '<span class="badge badge-primary mt-1">'.@$row->profile->status_sekolah.'</span>&nbsp;';
$sekolah .= '<span class="badge badge-secondary text-left mt-1">'.@$row->profile->alamat_sekolah.'</span>&nbsp;';
$_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']);
}
}