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]; }