Ejemplo n.º 1
0
 /**
  * 同步更新教師的班級資料
  */
 public static function syncTeacher()
 {
     $classes = Classes::find(self::$lastClassesId);
     try {
         $teacher = Teacher::where('classes_id', '=', $classes->classes_id)->update(array('classes_id' => 0));
         if ($classes->teacher_id > 0) {
             $teacher = Teacher::find($classes->teacher_id)->update(array('classes_id' => $classes->classes_id));
         }
     } catch (Exception $e) {
     }
 }
 public function postSaveTimetable()
 {
     if (Request::ajax()) {
         $class = Classes::find(Input::get('id'));
         $times = Input::get('time');
         $times = substr($times, 1, -1);
         $class->classtimes = $times;
         if ($class->save()) {
             return Response::json('success', 200);
         }
     }
 }
Ejemplo n.º 3
0
					
					<div class="row">
						<hr class="metro-hr">
						<div class="col-sm-9">
<div class="form-group">
	                        <i class="fa fa-calendar"></i>
							<input type="text" name="electimes" id="elective" list="electives" class="form-control" placeholder="Choose Elective Module to view Timetable" required="">
							<datalist id="electives">
							   <select onchange="$('#elective').val(this.value)">
							   <?php 
$electives = Auth::user()->electives;
if ($electives != null) {
    $electives = json_decode($electives);
    //Search for current elective.
    foreach ($electives as $key => $value) {
        $elec = Classes::find($value->classId);
        $mod = Modules::find($elec->classmodule);
        print '<option class="myclass' . $value->classId . '" label="' . $mod->mshorttitle . '" value="' . $elec->classid . '"></option>';
    }
}
?>
							   </select>
							</datalist>
</div>
						</div>
						<div class="col-sm-3">
							<ul class="check-our-work">
								<a data-toggle="modal" class="submit btn btn-info btn-block" role="button" id="loadTimes">Load Timetable</a>
							</ul>
						</div>
						<hr class="metro-hr">
Ejemplo n.º 4
0
             return Redirect::to('/class_year/view_year/' . $yearId)->withInput()->withErrors($validator)->with('message', '輸入錯誤,請檢查');
         } else {
             $data = Input::all();
             $year = Classes::find($classesId);
             if ($year->update($data)) {
                 $message = '更新《' . $data['classes_name'] . '》完成';
             } else {
                 $message = '資料寫入錯誤';
             }
             Classes::syncTeacher();
             return Redirect::to('/class_year/view_year/' . $yearId)->with('message', $message);
         }
     });
     // 執行刪除班級
     Route::get('/delete_classes/{classesId}/{yearId}', function ($classesId, $yearId) {
         $classes = Classes::find($classesId);
         $message = '刪除《' . $classes->classes_name . '》完成';
         $classes->delete();
         return Redirect::to('/class_year/view_year/' . $yearId)->with('message', $message);
     });
     // 執行刪除年級
     Route::get('/delete_year/{yearId}', function ($yearId) {
         $year = Year::find($yearId);
         $message = '刪除《' . $year->year_name . '》完成';
         $year->delete();
         return Redirect::to('/class_year')->with('message', $message);
     });
 });
 /**
  * 課程管理
  */
 public function deleteAction()
 {
     $input = Input::all();
     $id = $input["id"];
     $schoolToClass = DB::table('schoolclass')->where('class', $id);
     $classToStudent = DB::table('classstudent')->where('class', $id);
     $status = false;
     if ($schoolToClass->count() < 1 && $classToStudent->count() < 1) {
         $class = Classes::find($id);
         $class->deleted_at = new DateTime(date('Y-m-d H:i:s'));
         $class->save();
         $status = true;
         $message = "";
     } else {
         $message = "Sorry. You cannot delete this class. \n To delete this class, you should remove the students from class and then remove this class from school first.";
     }
     $responses = array('idx' => $id, 'message' => $message, 'status' => $status);
     return Response::json($responses);
 }
 /**
  * 驗證排課單元
  */
 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);
 }
 }));
 //Route to new class for administrator
 Route::get("classes", array("as" => "admin/classes", function () {
     $user = Auth::user();
     $classes = DB::table('classes')->where('deleted_at', NULL)->get();
     return View::make("admin.classes")->with("title", "Class")->with("sub_title", "classall")->with("classes", $classes)->with("user", $user);
 }));
 Route::get("classAdd", array("as" => "admin/classAdd", function () {
     $user = Auth::user();
     $schools = DB::table('school')->where('deleted_at', NULL)->get();
     return View::make("admin.class_new")->with("title", "Class")->with("sub_title", "classnew")->with("schools", $schools)->with("user", $user);
 }));
 Route::get("classEdit/{id}", array("as" => "admin/classEdit", function ($id) {
     $user = Auth::user();
     //$id = Session::get('id');
     $classByID = Classes::find($id);
     $schools = DB::table('school')->where('deleted_at', NULL)->get();
     $included_schools = DB::table('schoolclass')->where('class', $id)->get();
     $school_array = array();
     $i = 0;
     foreach ($included_schools as $school) {
         $school_array[$i] = $school->school;
         $i++;
     }
     $students = array();
     if (sizeof($school_array) > 0) {
         $students = DB::table('users')->leftJoin('schooluser', 'users.id', '=', 'schooluser.user')->leftJoin('school', 'schooluser.school', '=', 'school.id')->whereIn('schooluser.school', $school_array)->orderBy('schooluser.school', 'asc')->select('users.id', 'users.first', 'users.last', 'school.name')->groupBy('schooluser.user')->get();
     }
     $courses = DB::table('courses')->where('published', 1)->where('deleted_at', NULL)->select('id', 'name', 'description')->get();
     return View::make("admin.class_edit")->with("title", "Class")->with("sub_title", "classnew")->with("students", $students)->with("classByID", $classByID)->with("schools", $schools)->with("courses", $courses)->with("user", $user);
 }));
 public function postDeleteStreams()
 {
     $new_stream = Input::get('stream_id');
     $stream_name = Input::get('stream_name');
     if ($new_stream) {
         $streams = Streams::find($new_stream);
     } else {
         $streams = Streams::where('stream_name', '=', $stream_name);
     }
     $classes = Classes::where('streams_id', '=', $streams->id)->get();
     if ($streams->delete()) {
         foreach ($classes as $class) {
             Classes::find($class->id)->delete();
         }
         $response = array('status' => 'success', 'msg' => 'Setting created successfully', 'deleted_item_id' => $new_stream);
         return Response::json($response);
     } else {
         $response = array('status' => 'failed', 'msg' => 'Item is Not deleted', 'Item_id' => $new_stream);
         return Response::json($response);
     }
 }
 public function getSchoolStudents()
 {
     $query = "select\n                        users.id,\n                        users.school_id,\n                        user_details.username,\n                        user_details.first_name,\n                        user_details.last_name,\n                        users_to_class.class_id,\n                        users_to_class.section_id,\n                        user_details.pic\n                  from users\n                  join users_groups\n                  on users.id=users_groups.user_id and users_groups.groups_id=? and users.school_id=?\n                  join user_details\n                  on users.id=user_details.user_id\n                  join users_to_class\n                  on users_to_class.user_id=users.id";
     $all_school_users = DB::select($query, array(2, $this->getSchoolId()));
     $i = 0;
     foreach ($all_school_users as $all_school_user) {
         $class = Classes::find($all_school_user->class_id)->get()->first();
         $all_users[$i]['class_name'] = $class->class;
         $section = Sections::find($all_school_user->section_id);
         $all_users[$i]['section_name'] = $section->section_name;
         $all_users[$i]['username'] = $all_school_user->username;
         $all_users[$i]['first_name'] = $all_school_user->first_name;
         $all_users[$i]['last_name'] = $all_school_user->last_name;
         $all_users[$i]['pic'] = $all_school_user->pic;
         $all_users[$i]['id'] = $all_school_user->id;
         $all_users[$i]['school_id'] = $all_school_user->school_id;
         $i++;
     }
     return View::make('admin.school-students')->with('users', $all_users);
 }