Example #1
0
 public function deleteDestroy()
 {
     $modelArray = array();
     $deleteModels = Input::json('models');
     foreach ($deleteModels as $model) {
         $deleteClassroom = Classroom::find($model['id']);
         $deleteClassroom->delete();
         array_push($modelArray, $deleteClassroom);
         $returnModels = BaseCollection::make($modelArray);
     }
     echo $returnModels->toJson();
 }
         if ($validator->fails()) {
             return Redirect::to('/classroom')->withInput()->withErrors($validator)->with('message', '輸入錯誤,請檢查');
         } else {
             $data = Input::all();
             $classroom = Classroom::find($id);
             if ($classroom->update($data)) {
                 $message = '更新教室《' . $data['classroom_name'] . '》完成';
             } else {
                 $message = '資料寫入錯誤';
             }
             return Redirect::to('/classroom')->with('message', $message);
         }
     });
     // 執行刪除教室
     Route::get('/delete/{id}', function ($id) {
         $classroom = Classroom::find($id);
         $message = '刪除《' . $classroom->classroom_name . '》完成';
         $classroom->delete();
         return Redirect::to('/classroom')->with('message', $message);
     });
 });
 /**
  * 排課設定
  */
 Route::group(array('prefix' => 'timetable', 'before' => 'auth'), function () {
     // 顯示全部教師列表
     Route::get('/', function () {
         return Redirect::to('timetable/view_title/all');
     });
     // 依職稱顯示教師列表
     Route::get('view_title/{titleId}', function ($titleId) {
 /**
  * 驗證排課單元
  */
 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);
 }