예제 #1
1
 /**
  * Define the application's command schedule.
  *
  * @param  \Illuminate\Console\Scheduling\Schedule $schedule
  *
  * @return void
  */
 protected function schedule(Schedule $schedule)
 {
     $schedule->command('inspire')->hourly();
     // 进入维护模式
     $schedule->command('down')->evenInMaintenanceMode()->dailyAt('23:00');
     //->when(function () {return true;});//
     // 更新用户等级
     $schedule->call(function () {
         $registrations = Registration::where('state', 0)->where(function ($query) {
             $query->where('registration_date', Carbon::yesterday()->toDateString());
         })->get();
         foreach ($registrations as $registration) {
             $user = $registration->user;
             $user->credit_level -= 1;
             $user->save();
         }
     })->evenInMaintenanceMode()->daily();
     //
     // 重置rest_num
     $schedule->call(function () {
         $doctor_schedules = DocSchedule::where('state', 0)->where(function ($query) {
             $week = [1 => 'monday', 2 => 'tuesday', 3 => 'wednesday', 4 => 'thursday', 5 => 'friday', 6 => 'saturday', 7 => 'sunday'];
             $query->where('doctoring_date', $week[Carbon::today()->dayOfWeek]);
         })->get();
         foreach ($doctor_schedules as $doctor_schedule) {
             $doctor_schedule->rest_num = $doctor_schedule->total_num;
             $doctor_schedule->save();
         }
     })->evenInMaintenanceMode()->dailyAt('3:00');
     //
     // 离开维护模式
     $schedule->command('up')->evenInMaintenanceMode()->dailyAt('7:00');
     //
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $faculty_id = Auth::user()->id;
     $schedulelist = Schedule::where('faculty_id', '=', $faculty_id)->get();
     dd($schedulelist);
     return view('auth.availability')->with('availlist', $schedulelist);
 }
예제 #3
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     // DB::enableQueryLog();
     $schedules = Schedule::where('user_id', Auth::id())->get();
     // $queries = DB::getQueryLog();
     // $last_query = end($queries);
     // dd($last_query);
     return view('schedules.index')->with('schedules', $schedules);
 }
 public function storeSchedule(Request $request, $engineer_id)
 {
     //First we need to remove all the schedules
     //$objEngineer = Engineer::find($engineer_id);
     Schedule::where('engineer_id', $engineer_id)->delete();
     foreach ($request->all() as $newObj) {
         Schedule::create($newObj);
     }
     return ["success" => true];
 }
예제 #5
0
 public function searchProfile($name)
 {
     $name = urldecode($name);
     $data = array();
     $data['article'] = \App\ArticleCategory::with('articles')->get();
     $data['content'] = \App\Doctor::where('name', 'like', '%' . $name . '%')->first();
     if (empty($data['content'])) {
         return redirect()->route('home');
     }
     $data['schedule'] = [];
     for ($i = 0; $i <= 7; $i++) {
         $data['schedule'][$i] = [];
     }
     $schedules = \App\Schedule::where('doctor_id', $data['content']->id)->whereBetween('date', array(date("Y-m-d"), date("Y-m-d", strtotime("+1 week"))))->orderBy('date', 'asc')->orderBy('schedule_start', 'asc')->get();
     foreach ($schedules as $schedule) {
         $len = 60 * 60 * 24;
         $now = date("Y-m-d");
         $tmp = $schedule->date;
         if ((strtotime($tmp) - strtotime($now)) / $len == 0) {
             array_push($data['schedule'][0], $schedule);
         } else {
             if ((strtotime($tmp) - strtotime($now)) / $len == 1) {
                 array_push($data['schedule'][1], $schedule);
             } else {
                 if ((strtotime($tmp) - strtotime($now)) / $len == 2) {
                     array_push($data['schedule'][2], $schedule);
                 } else {
                     if ((strtotime($tmp) - strtotime($now)) / $len == 3) {
                         array_push($data['schedule'][3], $schedule);
                     } else {
                         if ((strtotime($tmp) - strtotime($now)) / $len == 4) {
                             array_push($data['schedule'][4], $schedule);
                         } else {
                             if ((strtotime($tmp) - strtotime($now)) / $len == 5) {
                                 array_push($data['schedule'][5], $schedule);
                             } else {
                                 if ((strtotime($tmp) - strtotime($now)) / $len == 6) {
                                     array_push($data['schedule'][6], $schedule);
                                 } else {
                                     if ((strtotime($tmp) - strtotime($now)) / $len == 7) {
                                         array_push($data['schedule'][7], $schedule);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return view('frontend.pages.home.search-profile', compact('data'));
 }
예제 #6
0
 public function removeuser()
 {
     $username = Input::get('selected_username');
     $id = User::where('username', $username)->first()->id;
     $usercourses = Course_detail::where('offered_by', $username)->get();
     foreach ($usercourses as $usercourse) {
         Schedule::where('course_code', $usercourse->id)->delete();
         Time_table::where('course_code', $usercourse->id)->delete();
     }
     Course_detail::where('offered_by', $username)->delete();
     user_detail::where('id', $id)->delete();
     User::where('username', $username)->delete();
     return redirect('/home');
 }
예제 #7
0
 public function removecourse()
 {
     $course = Input::get('selectcoursecode');
     $courseclasses = Course_detail::where('course_code', $course)->get();
     foreach ($courseclasses as $courseclass) {
         //delete schedules data
         Schedule::where('course_code', $courseclass->id)->delete();
         Time_table::where('course_code', $courseclass->id)->delete();
     }
     //delete class data
     Course_detail::where('course_code', $course)->delete();
     //delete own data
     Course::where('course_code', $course)->delete();
     return view('layouts.removecourse')->with('deletemsg', 'Course Deleted');
 }
예제 #8
0
 public function schedule($doctor_id)
 {
     $data = [];
     $data['article'] = ArticleCategory::with('articles')->get();
     $data['schedule'] = [];
     for ($i = 0; $i <= 7; $i++) {
         $data['schedule'][$i] = [];
     }
     $schedules = Schedule::where('doctor_id', $doctor_id)->whereBetween('date', array(date("Y-m-d"), date("Y-m-d", strtotime("+1 week"))))->orderBy('date', 'asc')->orderBy('schedule_start', 'asc')->get();
     foreach ($schedules as $schedule) {
         $len = 60 * 60 * 24;
         $now = date("Y-m-d");
         $tmp = $schedule->date;
         if ((strtotime($tmp) - strtotime($now)) / $len == 0) {
             array_push($data['schedule'][0], $schedule);
         } else {
             if ((strtotime($tmp) - strtotime($now)) / $len == 1) {
                 array_push($data['schedule'][1], $schedule);
             } else {
                 if ((strtotime($tmp) - strtotime($now)) / $len == 2) {
                     array_push($data['schedule'][2], $schedule);
                 } else {
                     if ((strtotime($tmp) - strtotime($now)) / $len == 3) {
                         array_push($data['schedule'][3], $schedule);
                     } else {
                         if ((strtotime($tmp) - strtotime($now)) / $len == 4) {
                             array_push($data['schedule'][4], $schedule);
                         } else {
                             if ((strtotime($tmp) - strtotime($now)) / $len == 5) {
                                 array_push($data['schedule'][5], $schedule);
                             } else {
                                 if ((strtotime($tmp) - strtotime($now)) / $len == 6) {
                                     array_push($data['schedule'][6], $schedule);
                                 } else {
                                     if ((strtotime($tmp) - strtotime($now)) / $len == 7) {
                                         array_push($data['schedule'][7], $schedule);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return view('frontend.pages.reservation.schedule', compact('data'));
 }
 public function getScheduleByTeam($id)
 {
     if (!is_numeric($id)) {
         return new Http\Response("Incorrect Team Id", 400);
     }
     $team = null;
     // Try and see if the integer exists in our DB
     try {
         $team = Team::findOrFail($id);
     } catch (ModelNotFoundException $e) {
         return new Http\Response("Incorrect Team Id", 400);
     }
     // Concatenate the city and team name for the query
     $teamName = $team->city . ' ' . $team->team_name;
     $schedule = Schedule::where('home_team', $teamName)->orWhere('away_team', $teamName)->get();
     return new Http\Response($schedule, 200);
 }
예제 #10
0
 public function removegroup()
 {
     $groupname = Input::get('selectgroup_name');
     $groups = Group::where('group_name', $groupname)->get();
     foreach ($groups as $group) {
         $offered_to = $group->group_code;
         $batchcourses = Course_detail::where('offered_to', $offered_to)->get();
         foreach ($batchcourses as $batchcourse) {
             //delete schedules data
             Schedule::where('course_code', $batchcourse->id)->delete();
             Time_table::where('course_code', $batchcourse->id)->delete();
         }
         // delete class data
         Course_detail::where('offered_to', $offered_to)->delete();
     }
     //delete the group
     Group::where('group_name', $groupname)->delete();
     return view('layouts.removegroup')->with('deletemsg', 'group Deleted');
 }
예제 #11
0
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index($semester = null, $year = null)
 {
     $user = Auth::user();
     $split = explode(" ", $user->role->name);
     $role_area = $split[count($split) - 1];
     $areas = Area::with('professors')->get()->toArray();
     $profe = Professor::with('areas')->get()->toArray();
     $prof_areas = array();
     foreach ($profe as $prof) {
         $prof_areas[$prof['id']] = $prof['areas'];
     }
     $collection = collect($areas);
     $area_professors = $collection->keyBy('name')->toArray();
     // TODO: Pasar esto a un Helper
     if ($semester == null) {
         \Carbon\Carbon::now()->month >= 5 ? $semester = 2 : ($semester = 1);
     }
     $year == null ? $year = \Carbon\Carbon::now()->year : ($year = $year);
     $courses = Course::with('area')->get()->toArray();
     if ($role_area == "Administrador") {
         $professors = Professor::all()->toArray();
         //TODO: Pasar esto a un scope
         $unasigned_courses = Course::with('area')->where('taken', 0)->where('semester', $semester)->where('year', $year)->get();
         $asigned_courses = Course::with('area')->where('taken', 1)->where('semester', $semester)->where('year', $year)->get();
     } else {
         $professors = Area::with('professors')->where('name', $role_area)->get()->toArray()[0]["professors"];
         $area = Area::where('name', $role_area)->first();
         $unasigned_courses = Course::where('taken', 0)->where('area_id', $area->id)->where('semester', $semester)->where('year', $year)->get();
         $asigned_courses = Course::where('taken', 1)->where('area_id', $area->id)->where('semester', $semester)->where('year', $year)->get();
     }
     $professorCourse = array();
     foreach ($courses as $course) {
         if (Schedule::where('course_id', $course['id'])->first() != null) {
             $professorId = Schedule::where('course_id', $course['id'])->first()->professor_id;
             $professorCourse[$course['id']] = Professor::where('id', $professorId)->first()->name;
         }
     }
     return view('schedules.index', compact('area_professors', 'prof_areas', 'professors', 'courses', 'professorCourse', 'unasigned_courses', 'asigned_courses', 'year', 'semester'));
 }
예제 #12
0
 public function getPeopleList()
 {
     if (Auth::check()) {
         $peoples = Schedule::where("pacient_id", "!=", "null")->orderBy('data_priem', 'DESC')->paginate(15);
         return view("peoples-list", ["data" => $peoples]);
     }
 }
예제 #13
0
 public function getNewActionsForDate(Carbon $dateRunAt)
 {
     return Schedule::where('run_at', $dateRunAt->toDateString())->where('status', 'new')->get();
 }
예제 #14
0
 public function offerclasstime()
 {
     if (Input::get('code') != null && isset($_POST['offer_classtime']) && isset($_POST['set'])) {
         $errorarray = array();
         foreach ($_POST['set'] as $set) {
             $starttime = Input::get('starttime' . $set);
             $endtime = Input::get('endtime' . $set);
             $classcode = Input::get('code');
             if ($starttime == null || $endtime == null) {
                 $errorarray[count($errorarray)] = "You cannot leave time values empty (" . $set . ")";
             } else {
                 if ($starttime >= $endtime) {
                     $errorarray[count($errorarray)] = "Start time must be less than End time (" . $set . ")";
                 } else {
                     //Checking for Batch time conflict
                     $offered_to = Course_detail::where('id', $classcode)->first()->offered_to;
                     $batchclasses = Course_detail::where('offered_to', $offered_to)->get();
                     foreach ($batchclasses as $batchclass) {
                         $batchschedule = Schedule::where('class_id', $batchclass->id . $set)->first();
                         $scheludeclasscode = $batchschedule['class_id'];
                         if ($scheludeclasscode != $classcode . $set) {
                             $stime = $batchschedule['stime'];
                             $etime = $batchschedule['etime'];
                             $flag = 0;
                             $case1 = 0;
                             if ($starttime <= $stime && $endtime > $stime) {
                                 $flag = 1;
                                 $case1 = 1;
                             } else {
                                 if ($starttime >= $stime && $endtime < $etime) {
                                     $flag = 1;
                                 } else {
                                     if ($starttime >= $stime && $starttime < $etime && $case1 != 1) {
                                         $flag = 1;
                                     }
                                 }
                             }
                             if ($flag == 1) {
                                 $errorarray[count($errorarray)] = "Time slot: " . $starttime . "-" . $endtime . " (" . $set . ") for batch " . $offered_to . " is occupied by another subject " . $batchclass->course_code;
                             }
                         }
                     }
                     //Checking for instructor time conflict
                     $offered_by = Course_detail::where('id', $classcode)->first()->offered_by;
                     $instructorclasses = Course_detail::where('offered_by', $offered_by)->get();
                     foreach ($instructorclasses as $instructorclass) {
                         $instructorschedule = Schedule::where('class_id', $instructorclass->id . $set)->first();
                         $scheludeclasscode = $instructorschedule['class_id'];
                         if ($scheludeclasscode != $classcode . $set) {
                             $stime = $instructorschedule['stime'];
                             $etime = $instructorschedule['etime'];
                             $flag = 0;
                             $case1 = 0;
                             if ($starttime <= $stime && $endtime > $stime) {
                                 $flag = 1;
                                 $case1 = 1;
                             } else {
                                 if ($starttime >= $stime && $endtime < $etime) {
                                     $flag = 1;
                                 } else {
                                     if ($starttime >= $stime && $starttime < $etime && $case1 != 1) {
                                         $flag = 1;
                                     }
                                 }
                             }
                             if ($flag == 1) {
                                 $errorarray[count($errorarray)] = "You have another class " . $instructorclass->course_code . " in Time slot: " . $starttime . "-" . $endtime . " (" . $set . ") for batch " . $instructorclass->offered_to;
                             }
                         }
                     }
                     //Checking time conflict for day
                     //Teacher ko department line ho ki students ko department choose accordingly
                     //for now lets use teacher's department
                     $offered_by = Course_detail::where('id', $classcode)->first()->offered_by;
                     $departcode = User_detail::where('id', User::where('username', $offered_by)->first()->id)->first()->department;
                     $departmentmaxrooms = Department::where('code', $departcode)->first()['total_rooms'];
                     $counter = 0;
                     $dayschedules = Schedule::where('day', $set)->where('department_code', $departcode)->get();
                     foreach ($dayschedules as $dayschedule) {
                         $stime = $dayschedule->stime;
                         $etime = $dayschedule->etime;
                         $case1 = 0;
                         if ($starttime <= $stime && $endtime > $stime) {
                             $counter++;
                             $case1 = 1;
                         } else {
                             if ($starttime >= $stime && $endtime < $etime) {
                                 $counter++;
                             } else {
                                 if ($starttime >= $stime && $starttime < $etime && $case1 != 1) {
                                     $counter++;
                                 }
                             }
                         }
                     }
                     if ($counter >= $departmentmaxrooms) {
                         $errorarray[count($errorarray)] = "Sorry the room management is not possible for your time slots for " . $set;
                     }
                 }
             }
         }
         if (count($errorarray) > 0) {
             return Redirect::Back()->withInput()->withErrors($errorarray);
         } else {
             foreach ($_POST['set'] as $set) {
                 $starttime = Input::get('starttime' . $set);
                 $endtime = Input::get('endtime' . $set);
                 $classcode = Input::get('code');
                 Schedule::where('course_code', $classcode)->where('day', $set)->delete();
                 Time_table::where('course_code', $classcode)->where('day', $set)->delete();
                 //Teacher ko department line ho ki students ko department choose accordingly
                 //for now lets use teacher's department
                 $offered_by = Course_detail::where('id', $classcode)->first()->offered_by;
                 $departcode = User_detail::where('id', User::where('username', $offered_by)->first()->id)->first()->department;
                 $newschedule = new Schedule();
                 $newschedule->class_id = $classcode . $set;
                 $newschedule->course_code = $classcode;
                 $newschedule->stime = $starttime;
                 $newschedule->etime = $endtime;
                 $newschedule->day = $set;
                 $newschedule->department_code = $departcode;
                 $newschedule->save();
             }
             return Redirect::back();
         }
     } else {
         if (isset($_POST['remove_classtime']) && isset($_POST['set'])) {
             foreach ($_POST['set'] as $set) {
                 $classcode = Input::get('code');
                 Time_table::where('course_code', $classcode)->where('day', $set)->delete();
                 Schedule::where('course_code', $classcode)->where('day', $set)->delete();
                 return Redirect::back();
             }
         } else {
             return Redirect::back();
         }
     }
 }
예제 #15
0
				<div class="span3" id="sidebar">
				<div class="container-fluid">
					<div class="row-fluid">
						<div class="span14">
						  <div class="well sidebar-nav">
						  <li class="nav-header">Departments with active routine</li>
							<?php 
use App\Schedule;
use App\Department;
$routineval = 0;
$departments = Department::orderby('code')->get();
foreach ($departments as $department) {
    $schedules = Schedule::where('department_code', $department->code);
    if ($schedules->exists()) {
        $routineval = 1;
        ?>
							<li><a href='home?depart=<?php 
        echo $department->code;
        ?>
'>{{ $department->code }}</a></li>
							<?php 
    }
}
?>
							@if($routineval == 0)
							<li>No Schedule added yet. </li>
							@endif
						  </div><!--/.well -->
						</div><!--/span-->
				  	</div>
				</div>
예제 #16
0
 /**
  * Responds to requests to GET /schedules.  Show all schedules.
  */
 public function getIndex()
 {
     $schedules = \App\Schedule::where('user_id', '=', \Auth::id())->orderBy('id', 'DESC')->get();
     return view('schedules.index')->with('schedules', $schedules);
 }
예제 #17
0
 public function removedepartment()
 {
     $departcode = Input::get('selectdepartmentcode');
     //delete schedules data
     $departcourses = Course_detail::where('department_code', $departcode)->get();
     foreach ($departcourses as $departcourse) {
         Schedule::where('course_code', $departcourse->id)->delete();
         Time_table::where('course_code', $departcourse->id)->delete();
     }
     //Delete course details data
     Course_detail::where('department_code', $departcode)->delete();
     //Delete groups data
     Group::where('department', $departcode)->delete();
     //Delete user data
     $departusers = User_detail::where('department', $departcode)->get();
     foreach ($departusers as $departuser) {
         if (User::where('id', $departuser->id)->first()->utype == 0) {
             User_detail::where('id', $departuser->id)->delete();
             User::where('id', $departuser->id)->delete();
         }
     }
     Department::where('code', $departcode)->delete();
     return view('layouts.removedepartment')->with('deletemsg', 'Department Deleted');
 }
예제 #18
0
							  <th>SN</th>
							  <th>Day</th>
							  <th>Start Time</th>
							  <th>End Time</th>
							  <th>Select</th>
							</tr>
						</thead>
						
						<tbody>
							
							<?php 
$i = 1;
while ($i < 7) {
    $class_code = $course . no2day($i);
    //echo $class_code."<br>";
    $listschedules = Schedule::where('class_id', $class_code);
    ?>
							@if($listschedules->exists())
							<?php 
    $listschedules = $listschedules->first();
    ?>
							<tr>
							<td>{{ $i }}</td>		
							<td>{{ no2day($i) }}</td>					
							<td>
							<?php 
    $starttimename = "starttime" . no2day($i);
    $endtimename = "endtime" . no2day($i);
    $checkboxvalue = no2day($i);
    ?>
							{!! Form::number($starttimename, $listschedules->stime, ['step' => '1', 'min'=>'7', 'max'=>'16']) !!}
예제 #19
0
        echo "<h1>Department: " . $department->code . "</h1><br>";
    }
    foreach ($weekdays as $a) {
        //echo "<h2>Routine for: ".strtoupper($a)."</h2><br>";
        main_func($a, $department);
    }
    echo "<br><br>";
} else {
    echo "<h1> Hello " . $username . "  </h1>";
    $totalschedules = count(Schedule::all());
    $totaltimetables = count(Time_table::all());
    if ($totalschedules > 0 && $totaltimetables != $totalschedules) {
        echo "<p> You have <strong><nu>new update(s)</nu></strong>. The following are departments that have been recently updated: </p><br>";
        $departs = Department::orderby('code')->get();
        foreach ($departs as $depart) {
            $schedulecount = count(Schedule::where('department_code', $depart->code)->get());
            if ($schedulecount > 0) {
                $timetablecount = count(Time_table::where('department_code', $depart->code)->get());
                if ($schedulecount != $timetablecount) {
                    ?>
	<a href='home?depart=<?php 
                    echo $depart->code;
                    ?>
'> <nu>{{ $depart->code }} </nu></a>
	
	<?php 
                }
            }
        }
    } else {
        echo "<p> The routines are all up to date. Please make sure you visit the page when any update has been recorded. </p><br>";
예제 #20
0
function main_func($name, $department)
{
    $MAX_Classes = Department::where('code', $department->code)->first()->total_rooms;
    //Thana kawaye nashi file read yaye ta kha
    /*$inputData=CSV2Array($name);//CSV2Array is a function defined inside the file functions.php and this file returns an array
    		$i=0;
    		foreach($inputData as $temp){//this loop will unwrap the two layered array which was stored in previous variable $inputvariable by the function CSV2Array in functions.php
    			${"data".$i}=$temp;//Array ko array lai unwrap gari ra cha
    			$i++;	
    		}	
    		$courseName=$data0;
    		$start=$data1;
    		$end=$data2;
    		
    		unset($courseName[0]);//unset array na 0th item of array ta hate yana bi
    		unset($start[0]);//This chaye yanyu dhasa tho ma yata dhasa ASP algorithm le taye mau pani chau first pseudo class miss jui so tho object yu data kha
    		unset($end[0]);//THisis for the first column of the csv file chaye choya tayu pani mile maju
    
    
    		
    		$courseName=arrangeArray($courseName);//tho arrangeArray userdefined function kha... thake yo 0th item maru ta hana milaya yana bi.... ie ..A[0] delete jui hanji so A[1] ta A[0] yana bi and A[2] ta A[1] and so on
    		$start=arrangeArray($start);
    		$end=arrangeArray($end);
    		*/
    $scheduledata = Schedule::where('day', $name)->where('department_code', $department->code)->get();
    $courseName = array();
    $start = array();
    $end = array();
    foreach ($scheduledata as $schedule) {
        $courseName[count($courseName)] = $schedule->course_code;
        $start[count($start)] = $schedule->stime;
        $end[count($end)] = $schedule->etime;
        //array_push($courseName,$schedule->course_code);
        //array_push($start,$schedule->stime);
        //array_push($end,$schedule->etime);
    }
    //File read yayau pati sidhala
    //For initializing the objects.... i.e. one object for one class
    $classes = array();
    $i = 1;
    foreach ($start as $a) {
        $foo = new myClass();
        $foo->set_Data($a, $end[$i - 1], $courseName[$i - 1], $i);
        $i++;
        array_push($classes, $foo);
    }
    if (count($classes)) {
        echo "<h2>Routine for: " . $name . "</h2><br>";
        echo "The classes mentioned below are the classes that you want to arrange for <strong>" . $name . "</strong> is as below.";
        printObject($classes, 0, $name, $department->code);
        CustSort($classes);
        //Sorting accourding to the start time
        //This is the addition of A0 object at the first
        $temp = new myClass();
        $temp->set_Data(9999, 0, "A0", 0);
        array_unshift($classes, $temp);
        //array_unshift() inserts passed elements to the front of the array
        //End of the A0 object addition
        $i = 1;
        while (sizeof($classes) != 1) {
            ${"abc" . $i} = AC_Object($classes);
            //$abc.$i is the array which stores the object of the classes that is being taught in the room
            $classes = array_udiff($classes, ${"abc" . $i}, 'compare_objects');
            //This will call the functions compare_objects defined in the function functions.php so in this case the remaining classes to be arranged is ordered back
            $classes = arrangeArray($classes);
            //This will arrange the items in an array. After the removal the array will empty on certain slots for eg if array element A[7] is arranged and now it empty this gap will be arranged by this function and the new sequential function will be arranged.
            $i++;
        }
        //end of while for room.
        $i--;
        //this is fdone for counting the nof rooms required for the class rookm.
        $number_of_classes = $i;
        if ($number_of_classes <= $MAX_Classes && $number_of_classes > 0) {
            echo "You will require " . $i . " rooms for arranging this no of classes.";
        } else {
            echo "This above schedule cant be operated with existing no of classes. You will either require " . ($i - $MAX_Classes) . " additional classes or reschedule the following classes";
        }
        $a = 1;
        if ($i > $MAX_Classes) {
            while ($a <= $MAX_Classes) {
                echo "<br><strong>Room: " . $a . "</strong>";
                printObject(${"abc" . $a}, $a, $name, $department->code);
                $a++;
            }
        }
        //end of if($i>3
        if ($number_of_classes > $MAX_Classes) {
            echo "The schedule you wish to prepare cant be arranged with " . $MAX_Classes . " classes. Please try to arrange the following classes in the empty slot for this day.";
        }
        while ($a <= $i) {
            echo "<br><strong>Room: " . $a . "</strong>";
            printObject(${"abc" . $a}, $a, $name, $department->code);
            $a++;
        }
    }
    //end of if(count)
}
예제 #21
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $input = $request->all();
     $master_id = $input['master_id'];
     $days = $input['days'];
     $time_from = $input['time_from'];
     $time_to = $input['time_to'];
     $break_from = $input['break_from'];
     $break_to = $input['break_to'];
     $queues = $input['queue'];
     $section_lists = [];
     foreach ($queues['plan_id'] as $i => $plan) {
         $section = $queues['section'][$i];
         $section_slug = str_slug($section, "-");
         $plans = Plan::findOrFail($plan)->semesters()->where('number', '=', $queues['number_semester'][$i])->where('year', '=', $queues['number_year'][$i])->get();
         foreach ($plans as $sem) {
             foreach ($sem->subjects as $subject) {
                 $sec_key = $master_id . "_" . $section_slug;
                 $ref_key = $sec_key . "_" . $subject->id;
                 $ref_data = [];
                 $ref_data['key'] = $ref_key;
                 $ref_data['sec_key'] = $sec_key;
                 $ref_data['name'] = $section;
                 $ref_data['master_id'] = $master_id;
                 $ref_data['plan_id'] = $sem->plan_id;
                 $ref_data['semester_id'] = $sem->id;
                 $ref_data['subject_id'] = $subject->id;
                 $ref_data['subject_code'] = $subject->code;
                 $ref_data['subject_name'] = $subject->name;
                 $ref_data['lec_hours'] = $subject->lec_hours;
                 $ref_data['lab_hours'] = $subject->lab_hours;
                 $ref_data['total_hours'] = $subject->lec_hours + $subject->lab_hours;
                 $ref_data['feature_id'] = $subject->feature_id;
                 $new_data = $this->store_allocate_days($ref_data);
                 $section_lists[$section_slug][$subject->id] = $new_data;
             }
         }
     }
     foreach ($section_lists as $sl => $section) {
         foreach ($section as $s => $data) {
             $room_in = ['lec_hours' => 'lec_days', 'lab_hours' => 'lab_days'];
             foreach ($room_in as $in_hours => $in_days) {
                 $rooms = [];
                 if ($data[$in_hours] > 0 && count($data[$in_days]) > 0) {
                     $s_room_id = null;
                     $s_feature_id = $data['feature_id'];
                     if ('lec_hours' == $in_hours) {
                         $s_feature_id = 1;
                     }
                     $q_rooms = DB::table('rooms')->leftJoin(DB::raw("(select * from schedules WHERE master_id = {$master_id}) schedules"), 'rooms.id', '=', 'schedules.room_id')->select(DB::raw("rooms.id, TIME_TO_SEC( TIMEDIFF('{$time_to}', '{$time_from}') ) / 60 as time_required, SUM( TIME_TO_SEC(TIMEDIFF(schedules.time_to, schedules.time_from)) ) / 60 as time_spent"))->where('rooms.feature_id', $s_feature_id)->groupBy('rooms.id')->havingRaw('((time_required - time_spent) is null OR (time_required - time_spent) >= 60)')->orderBy('time_spent', 'desc')->orderBy('rooms.code', 'asc');
                     if (!empty($input['room_list'])) {
                         $q_rooms->whereIN('rooms.id', $input['room_list']);
                     }
                     $rooms = $q_rooms->get();
                     if (!empty($rooms)) {
                         $exist_schedule = Schedule::where('key', '=', $data['key'])->where('feature_id', '=', $s_feature_id)->where('master_id', '=', $master_id)->get();
                         if ($exist_schedule->isEmpty()) {
                             foreach ($data[$in_days] as $s_time_day) {
                                 $schedule_data = [];
                                 $room_schedule = Schedule::where('time_day', '=', $s_time_day)->where('master_id', '=', $master_id)->where('section_key', '=', $data['sec_key'])->orderBy('time_to', 'DESC')->first();
                                 if (empty($room_schedule)) {
                                     $s_time_from = $time_from;
                                 } else {
                                     $s_time_from = $room_schedule->time_to;
                                 }
                                 if ($s_time_from >= $break_from && $s_time_from <= $break_to) {
                                     $s_time_from = $break_to;
                                 }
                                 $tmp_time_to = $s_time_from;
                                 $tmp_time_to_hours = $data[$in_hours] / count($data[$in_days]) * 60;
                                 $s_time_to = date('H:i:s', strtotime("+{$tmp_time_to_hours} minutes", strtotime($tmp_time_to)));
                                 $room_avail = false;
                                 if (!empty($s_room_id)) {
                                     $room_time_schedule_data = ['room_id' => $s_room_id, 'time_day' => $s_time_day, 'time_from' => $s_time_from, 'time_to' => $s_time_to, 'time_from2' => $s_time_from, 'time_to2' => $s_time_to, 'master_id' => $master_id];
                                     $room_time_schedule = $this->store_check_room_availability($room_time_schedule_data);
                                     if (empty($room_time_schedule)) {
                                         $room_avail = true;
                                     }
                                 }
                                 if (empty($room_avail)) {
                                     foreach ($rooms as $room) {
                                         $room_time_schedule_data = ['room_id' => $room->id, 'time_day' => $s_time_day, 'time_from' => $s_time_from, 'time_to' => $s_time_to, 'time_from2' => $s_time_from, 'time_to2' => $s_time_to, 'master_id' => $master_id];
                                         $room_time_schedule = $this->store_check_room_availability($room_time_schedule_data, $master_id);
                                         if (empty($room_time_schedule)) {
                                             $s_room_id = $room->id;
                                             $room_avail = true;
                                             break;
                                         }
                                     }
                                 }
                                 if ($room_avail) {
                                     $schedule_data = ['key' => $data['key'], 'master_id' => $master_id, 'semester_id' => $data['semester_id'], 'subject_id' => $data['subject_id'], 'room_id' => $s_room_id, 'time_day' => $s_time_day, 'time_from' => $s_time_from, 'time_to' => $s_time_to, 'feature_id' => $s_feature_id, 'section_key' => $data['sec_key'], 'section_name' => $data['name']];
                                     Schedule::create($schedule_data);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $faculty_schedules = Schedule::whereNull('faculty_id')->groupBy('key')->where('master_id', $master_id)->orderBy('subject_id', 'DESC')->get();
     if (!$faculty_schedules->isEmpty()) {
         foreach ($faculty_schedules as $faculty_schedule) {
             $s_faculty_id = null;
             $s_faculties = $faculty_schedule->subject->faculties->toArray();
             $s_faculties_count = count($s_faculties) - 1;
             if ($s_faculties_count >= 0) {
                 $s_faculty_rand = mt_rand(0, $s_faculties_count);
                 $s_faculty = $s_faculties[$s_faculty_rand];
                 $s_faculty_id = $s_faculty['id'];
             }
             Schedule::where('key', '=', $faculty_schedule->key)->update(['faculty_id' => $s_faculty_id]);
         }
     }
     return redirect("/schedules/view?master_id={$master_id}");
 }
 /**
  * Execute the command.
  *
  * @return void
  */
 public function handle()
 {
     Schedule::where('start', '<=', Carbon::today()->toDateString())->delete();
 }