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 .= '';
                if(session('group_alias') == 'dinas'){
                    if($row->status == 0){
                        $action .= '';
                        $action .= '';
                    }
                }
            }
            if($row->level == 0){
                $penghargaan = ' Belum Pernah';
            }elseif($row->level == 1){
                $penghargaan = ' Adiwiyata Kab/Kota';
            }elseif($row->level == 2){
                $penghargaan = ' Adiwiyata Provinsi';
            }elseif($row->level == 3){
                $penghargaan = ' Adiwiyata Nasional';
            }elseif($row->level == 4){
                $penghargaan = ' Adiwiyata Mandiri';
            }
            $status = '';
            if($row->status == 0){
                $status = 'Belum Diverifikasi';
            }elseif($row->status == 1){
                $status = 'Sudah Diverifikasi';
            }elseif($row->status == 2){
                $status = 'Ditolak';
            }else{
                $log  = KuesionerLog::where('kuesioner_id',$row->KuesionerId)->orderBy('created_at','DESC')->first();
                $status = ''.str_replace('_',' ',\Str::title($log->step)).'';
            }
            $sekolah = '';
            $sekolah .= @$row->sekolah->nama_sekolah.'
';
            $sekolah .= ''.@$row->profile->tingkat->name.' ';
            $sekolah .= ''.@$row->profile->status_sekolah.' ';
            $sekolah .= ''.@$row->profile->alamat_sekolah.' ';
            $_data[] = [
                'no'                => $key+1,
                'id'                => encode_id($row->id),
                'npsn'              => $row->sekolah->npsn,
                'nama'              => $sekolah,
                'status_level'      => 'Level '.levelAdiwiyata($row->npsn).'',
                '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 = [];
            if(@$media){
                //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
                        ];
                    }
                }
            }
            if(@$materi){
                //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
                        ];
                    }
                }
            }
            
            if(@$komitmen){
                //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
                        ];
                    }
                }
            }
            if(@$kegiatan_lingkungan){
                //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
                        ];
                    }
                }
            }
            if(@$pihak_kegiatan_lingkungan){
                //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
                        ];
                    }
                }
            }
            //rumus level adiwiyata
            $level = 0;
            if($request->level == 0){
                if(($request->tim_adiwiyata == 1) && ($request->info_pblhs == 1)){
                    $level = 0;
                }elseif(($request->tim_adiwiyata == 1) || ($request->info_pblhs == 2)){
                    $level = 1;
                }elseif(($request->tim_adiwiyata == 2) || ($request->info_pblhs == 1)){
                    $level = 1;
                }else{
                    $level = 2;
                }
            }elseif($request->level == 1){
                $level = 3;
            }elseif($request->level == 2){
                $level = 4;
            }elseif($request->level == 3){
                $level = 5;
            }elseif($request->level == 4){
                $level = 6;
            }
            $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']);
    }
}