public function save(Request $request)
 {
     $input = $request->except('_token');
     foreach ($input as $key => $value) {
         try {
             Pengaturan::vset($key, $value);
         } catch (Exception $e) {
             return redirect()->route('pengaturan')->with('message', 'Salah satu data gagal diperbarui.');
         }
     }
     return redirect()->route('pengaturan')->with('message', 'Data berhasil diperbarui.');
 }
 public function setup(Request $request)
 {
     // Set semester
     $new = new Semester();
     $new->semester = $request->input('semester');
     $new->tahun_ajaran = $request->input('tahun_ajaran');
     $new->aktif = 1;
     $new->save();
     $input = $request->except(['_token', 'semester', 'tahun_ajaran']);
     // Set pengaturan
     foreach ($input as $key => $value) {
         Pengaturan::vset($key, $value);
     }
     // Cek apakah mata pelajaran wali kelas sudah ada, kalau belum, tambah
     $wk = Mapel::where('kelompok', 'WK')->get();
     if (!$wk) {
         App\Mapel::create(['nama' => 'Wali kelas', 'singkat' => 'WALI', 'kelompok' => 'WK']);
     }
     return redirect()->route('kelas.jurusan')->with('message', "Data semester dan informasi sekolah telah dikonfigurasi.");
 }
 public function make(Request $request)
 {
     $docObj = new PhpWord();
     $schDetails = Pengaturan::get_school_details();
     $printLocDate = $request->input('tempat_tanggal');
     $headmaster = Pengaturan::get_headmaster();
     $semester = Semester::get_active_semester();
     $siswa_to_print = [];
     $nis_array = [];
     if ($request->input('siswa') == 'kelas') {
         $siswa_to_print = Siswa::where('id_kelas', $request->input('kelas'))->get();
     } elseif ($request->input('siswa') == 'nis') {
         $nis_array = explode(' ', $request->input('nis'));
         foreach ($nis_array as $nis) {
             if (count($range = explode('-', $nis)) == 2) {
                 $range = Siswa::whereBetween('nis', $range)->get();
                 foreach ($range as $get) {
                     $siswa_to_print[] = $get;
                 }
             } elseif ($get = Siswa::where('nis', $nis)->first()) {
                 $siswa_to_print[] = $get;
             } else {
                 return back()->with('message', "NIS {$nis} tidak ditemukan.");
             }
         }
     } else {
         return back();
     }
     if (count($siswa_to_print) < 1) {
         return back()->with('message', "Tidak ada data untuk dicetak.");
     }
     $id_kelas = 0;
     $mapel_list = null;
     foreach ($siswa_to_print as $siswa) {
         if ($siswa->id_kelas == null) {
             continue;
         }
         if (!Semester::is_active_latest()) {
             $siswa->kelas_link->tingkat -= Semester::get_year_difference();
         }
         if ($request->input('cover')) {
             $docObj = $this->wordHalamanCover($docObj, $siswa);
             $docObj = $this->wordHalamanDataSekolah($docObj, $schDetails);
         }
         if ($request->input('bio')) {
             $docObj = $this->wordHalamanBiodata($docObj, $siswa, $printLocDate, $headmaster);
         }
         if ($request->input('nilai')) {
             if ($id_kelas != $siswa->id_kelas) {
                 $id_kelas = $siswa->id_kelas;
                 $mapel_list = NilaiAkhir::get_mapel_list($id_kelas);
             }
             $sikap = NilaiSikap::get_nilai($siswa->id);
             $nilai['sikap'] = $sikap ? $sikap->sikap : "";
             $nilai['mapel'] = NilaiAkhir::get_all_nilai($siswa, $mapel_list);
             $absensi = Absensi::get_absensi($siswa->id);
             $nilai['absensi'] = ['sakit' => $absensi ? $absensi->sakit : null, 'izin' => $absensi ? $absensi->izin : null, 'alpa' => $absensi ? $absensi->alpa : null];
             $nilai['prestasi'] = Prestasi::get_for_print($siswa->id, $semester->id);
             $nilai['ekskul'] = Ekskul::get_for_print($siswa->id, $semester->id);
             $nilai['pkl'] = Pkl::get_for_print($siswa->id, $semester->id);
             $docObj = $this->wordHalamanNilai($docObj, $schDetails, $siswa, $nilai, $headmaster, $printLocDate, $semester);
         }
     }
     $objWriter = IOFactory::createWriter($docObj, 'Word2007');
     $fn = date('Y-n-j_His');
     if ($request->input('siswa') == 'kelas') {
         $kelas = Kelas::find($request->input('kelas'));
         if (!Semester::is_active_latest()) {
             $kelas->tingkat -= Semester::get_year_difference();
         }
         $fn .= "_" . $kelas->name(false);
     }
     if ($request->input('siswa') == 'nis') {
         $fn .= "_" . $nis_array[0] . '-' . $nis_array[count($nis_array) - 1];
     }
     $objWriter->save("print/{$fn}.docx");
     return Response::download("print/{$fn}.docx", "{$fn}.docx", ['Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document']);
 }