public static function copy($previousSemester = null, $currentSemester = null) { $previousSemester = $previousSemester ? $previousSemester : Semester::get_previous_semester()->id; $currentSemester = $currentSemester ? $currentSemester : Semester::get_active_semester()->id; $jumpKelas = Semester::find($previousSemester)->semester == 2; $now = \Carbon\Carbon::now(); $prevAssoc = Mengajar::select(\DB::raw("mengajar.id_guru, mengajar.id_kelas, mengajar.id_mapel"))->where('id_semester', '=', $previousSemester)->get()->toArray(); $fail = 0; $success = 0; foreach ($prevAssoc as $assoc) { $kelas = Kelas::find($assoc['id_kelas']); $tingkat = $jumpKelas ? max($kelas->tingkat - 1, 1) : $kelas->tingkat; $id_jurusan = $kelas->id_jurusan; $kelas = $kelas->kelas; $newKelas = Kelas::where('tingkat', $tingkat)->where('id_jurusan', $id_jurusan)->where('kelas', $kelas)->first(); if (!$newKelas) { $fail++; continue; } try { Mengajar::insert(['id_guru' => $assoc['id_guru'], 'id_kelas' => $newKelas->id, 'id_mapel' => $assoc['id_mapel'], 'id_semester' => $currentSemester]); } catch (\Illuminate\Database\QueryException $e) { $fail++; continue; } $success++; } return ['fail' => $fail, 'success' => $success]; }
public function save(Request $request) { $this->validate($request, ['semester' => 'required', 'tahun_ajaran' => 'required', 'password' => 'required']); if (!\Hash::check($request->input('password'), \Auth::user()->password)) { return redirect()->route('semester')->with('message', "Password tidak tepat."); } $check = Semester::where('semester', $request->input('semester'))->where('tahun_ajaran', $request->input('tahun_ajaran'))->first(); if ($check) { return redirect()->route('semester')->with('message', "Semester sudah ada."); } $old = Semester::get_active_semester(); Semester::where('aktif', 1)->update(['aktif' => 0]); try { $new = new Semester(); $new->semester = $request->input('semester'); $new->tahun_ajaran = $request->input('tahun_ajaran'); $new->aktif = 1; $new->save(); } catch (\Illuminate\Database\QueryException $e) { $old->aktif = 1; $old->save(); } // Naik kelas if ($request->input('semester') == 1) { $all_kelas = Kelas::get(); foreach ($all_kelas as $kelas) { $kelas->tingkat = $kelas->tingkat + 1; $kelas->save(); } } // AUTO // Buat kelas X if ($request->input('autoKelas')) { $all_kelas = Kelas::where('tingkat', '=', 2)->get(); foreach ($all_kelas as $kelas) { $new = new Kelas(); $new->tingkat = 1; $new->id_jurusan = $kelas->id_jurusan; $new->kelas = $kelas->kelas; $new->angkatan = $kelas->angkatan; $new->save(); } } // Ketuntasan Belajar if ($request->input('autoKB')) { KetuntasanBelajar::copy(); } // Asosiasi Mengajar if ($request->input('autoMengajar')) { Mengajar::copy(); } return redirect()->route('panel_utama')->with('message', "Semester telah berhasil dimajukan."); }
/** * Halaman utama bagi staf. */ public function index() { // Ambil data semester yang aktif $pass['semester'] = Semester::get_active_semester(); // Pengecekan // 0 = fine // 1 = warning // 2 = error // Cek apakah ada jurusan tercatat $pass['jurusan'] = Jurusan::all()->count(); // Cek apakah kelas tingkat 1 sudah dibuat $kelas = Kelas::check_firstyears(); $pass['kelas'] = $kelas; if ($kelas['total'] == 0) { $pass['kelas']['cek'] = 2; } elseif ($kelas['count'] < $kelas['jurusan']) { $pass['kelas']['cek'] = 1; } else { $pass['kelas']['cek'] = 0; } // Cek apakah ada kelas tingkat 1 yang kosong $siswa = Siswa::check_firstyears(); $pass['siswa'] = $siswa; if ($siswa['siswa_tingkat_x'] <= 0) { $pass['siswa']['cek'] = 2; } elseif ($siswa['kelas_kosong'] > 0) { $pass['siswa']['cek'] = 1; } else { $pass['siswa']['cek'] = 0; } // Cek apakah semua mapel sudah memiliki angka KB untuk semester ini $pass['kb'] = KetuntasanBelajar::check(); // Cek apakah ada guru yang belum mendapat asosiasi pengajaran $pass['mengajar'] = Mengajar::check(); return view('panel', $pass); }
public function mass(Request $request) { if (!$request->ajax()) { abort(404); } $semester = Semester::get_active_semester()->id; if (!($prevSemester = Semester::get_previous_semester())) { return response("Semester sebelumnya tidak dapat ditemukan.", 422); } $prevSemester = $prevSemester->id; if ($request->input('type') == 2) { $backup = null; try { $backup = Mengajar::reset($semester); } catch (Exception $e) { return response("Penghapusan aturan asosiasi gagal dilakukan.", 422); } return response("Penghapusan berhasil.", 200); } if ($request->input('type') == 1) { $copy = null; try { $copy = Mengajar::copy($prevSemester, $semester); } catch (Exception $e) { return response("Penyalinan aturan asosiasi dari semester sebelumnya gagal dilakukan.", 422); } return response("Proses penyamaan selesai. {$copy['success']} entri asosiasi berhasil disamakan." . ($copy['fail'] > 0 ? " {$copy['fail']} entri gagal disamakan karena entri sudah ada atau tidak ditemukannya kelas." : ""), 200); } }
public function get_wali_kelas() { $g = Mengajar::join('mapel', 'mengajar.id_mapel', '=', 'mapel.id')->where('mengajar.id_kelas', $this->id)->where('mapel.kelompok', 'WK')->where('mengajar.id_semester', Semester::get_active_semester()->id)->first(); return $g ? Guru::find($g->id_guru) : false; }