public static function boot() { parent::boot(); // 刪除相關排課設定 static::deleting(function ($course) { $courseUnit = Courseunit::where('course_id', '=', $course->course_id)->delete(); }); }
public static function boot() { parent::boot(); static::saved(function ($classes) { self::$lastClassesId = $classes->classes_id; }); // 將導師的班級資料設定為0,刪除排課設定 static::deleting(function ($classes) { $teacher = Teacher::where('classes_id', '=', $classes->classes_id)->update(array('classes_id' => 0)); $courseUnit = Courseunit::where('classes_id', '=', $classes->classes_id)->delete(); }); }
public static function boot() { parent::boot(); static::saved(function ($teacher) { self::$lastTeacherId = $teacher->teacher_id; }); // 將班級的導師資料設定為0,刪除排課設定 static::deleting(function ($teacher) { $classes = Classes::where('teacher_id', '=', $teacher->teacher_id)->update(array('teacher_id' => 0)); $courseUnit = Courseunit::where('teacher_id', '=', $teacher->teacher_id)->delete(); }); }
public static function boot() { parent::boot(); // 刪除相關排課設定 static::deleting(function ($classroom) { $courseUnit = Courseunit::where('classroom_id', '=', $classroom->classroom_id)->delete(); }); // 如果沒設定可用時間,預設全部可以使用 static::saving(function ($data) { if ($data->course_time == 0) { $data->course_time = str_repeat('1', 35); } }); }
/** * 驗證排課單元 */ public static function courseUnit($data) { // 衝突檢查 Validator::extend('conflict', function ($attribute, $data, $parameters) { /* Array參考 [0][_token] => Yvw1pYLjZIm1BaiPJ1yTYKbs3Nl8T9zfkLesI0Bh [1][classes_id] => 4 [2][course_id] => 9 [3][count] => 1 [4][classroom_id] => 0 [5][combination] => 1 [6][repeat] => 0 [7][limit_course_time] => 1 [8][course_time] => 10000001000000110000011000001100000 [9][teacher_id] => 19 */ // 處理變數 list(, $classes_id, $course_id, $count, $classroom_id, $combination, $repeat) = $parameters; $mode = end($parameters); $teacher_id = prev($parameters); if (substr($mode, 0, 4) == 'edit') { $courseUnitId = intval(substr($mode, 4)); $mode = substr($mode, 0, 4); } if ($parameters[7] == 1) { $course_time = $parameters[8]; } else { $course_time = 0; } // 限制排課時間少於設定節數 if (substr_count($course_time, '1') < $count && substr_count($course_time, '1') != 0) { Session::flash('conflictError', '限制排課時間(共' . substr_count($course_time, '1') . '節)少於設定節數(' . $count . ')'); return false; } // 組合節數大於設定節數 if ($combination > $count) { Session::flash('conflictError', '組合節數(' . $combination . ')大於設定節數(' . $count . ')'); return false; } // 同天不排課,但是(排課節數 / 組合節數)超過5 if ($repeat == 0 && $count / $combination > 5) { Session::flash('conflictError', '同天同班不重複排課,但是(排課節數 / 組合節數)超過5'); return false; } // 教室可排課時間不足 if ($classroom_id != 0) { $courseCount = 0; $courseUnitUseClassroom = array(); foreach (Courseunit::where('classroom_id', '=', $classroom_id)->get() as $courseunit) { $courseCount += $courseunit->count; $courseUnitUseClassroom[] = $courseunit->teacher->teacher_name; } $classroom = Classroom::find($classroom_id); // 檢查是否為編輯模式 if ($mode == 'edit') { $courseUnit = Courseunit::find($courseUnitId); if ($courseUnit->classroom_id == $classroom_id) { $courseCount -= $courseUnit->count; } } if (substr_count($classroom->course_time, '1') * $classroom->count - $courseCount - $count < 0) { $teacherList = implode($courseUnitUseClassroom, ','); Session::flash('conflictError', '教室《' . $classroom->classroom_name . '》可排課時間不足,目前有使用的老師:' . $teacherList); return false; } } // 班級可排節數已滿 $classesCourseCount = 0; foreach (Courseunit::where('classes_id', '=', $classes_id)->get() as $courseunit) { $classesCourseCount += $courseunit->count; } // 編輯模式 if ($mode == 'edit') { $courseUnit = Courseunit::find($courseUnitId); if ($courseUnit->classes_id == $classes_id) { $classesCourseCount -= $courseUnit->count; } } $classes = Classes::find($classes_id); if (substr_count($classes->year->course_time, '1') - $classesCourseCount - $count < 0) { Session::flash('conflictError', '班級《' . $classes->classes_name . '》可排課時間不足'); return false; } return true; }); $rules = array('teacher_id' => 'required|integer', 'course_id' => 'required|integer', 'classroom_id' => 'required|integer', 'count' => 'required|integer', 'combination' => 'required|integer|conflict:' . implode(',', $data), 'repeat' => 'required|integer', 'course_time' => 'numeric'); $messages = array('required' => '此欄位必填', 'integer' => '必需為數字', 'conflict' => '排課衝突'); return Validator::make($data, $rules, $messages); }
<th class="command sorttable_nosort"> </th> </tr> @foreach ($teacherList as $teacherItem) <tr> <td class="teacher_name"> {{ link_to('account/edit/' . $teacherItem->teacher_id . '/titleId/' . $teacherItem->title_id, $teacherItem->teacher_name, array('target' => '_blank')) }} </td> <td class="teacher_course_count"> {{ $teacherItem->teacher_course_count }} <?php $teacher_has_course_count = 0; //導師:原班的課 - 科任 + 自己上別班的課 if ($teacherItem->classes_id != 0) { $teacher_has_course_count += substr_count($teacherItem->classes->year->course_time, '1'); $teacher_has_course_count -= Courseunit::where('teacher_id', '<>', $teacherItem->teacher_id)->where('classes_id', '=', $teacherItem->classes_id)->sum('count'); $teacher_has_course_count += Courseunit::where('teacher_id', '=', $teacherItem->teacher_id)->where('classes_id', '<>', $teacherItem->classes_id)->sum('count'); } else { // 科任:安排的課 $teacher_has_course_count += $teacherItem->courseunit()->sum('count'); } if ($teacher_has_course_count > $teacherItem->teacher_course_count) { $courseTimeDiffClass = 'plus'; } elseif ($teacher_has_course_count < $teacherItem->teacher_course_count) { $courseTimeDiffClass = 'minus'; } else { $courseTimeDiffClass = 'zero'; } echo '(<span class="' . $courseTimeDiffClass . '">' . $teacher_has_course_count . '</span>)'; ?> </td> <td class="classes">