Beispiel #1
0
 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);
     }
 }
Beispiel #5
0
 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;
 }