@@ -24,7 +24,7 @@ discard block |
||
24 | 24 | //TODo max timeslots can be an environment var |
25 | 25 | const TIME_SLOT_DURATION = 900; //seconds -> 15 minutes |
26 | 26 | const DEFAULT_MAX_TIME_SLOTS = 20; //max duration of a meeting in term of timeslots //20 |
27 | - const DEFAULT_TIME_SLOTS = 672; //total amount of timeslots that must be optimised -> one week 4*24*7 = 672 |
|
27 | + const DEFAULT_TIME_SLOTS = 672; //total amount of timeslots that must be optimised -> one week 4*24*7 = 672 |
|
28 | 28 | |
29 | 29 | private $max_time_slots = self::DEFAULT_MAX_TIME_SLOTS; |
30 | 30 | private $time_slots = self::DEFAULT_TIME_SLOTS; |
@@ -85,7 +85,7 @@ discard block |
||
85 | 85 | { |
86 | 86 | $this->startTime = clone $startTime; |
87 | 87 | $this->endTime = clone $this->startTime; |
88 | - $this->endTime->add(new \DateInterval('PT'.(($this->max_time_slots+$this->time_slots)*self::TIME_SLOT_DURATION).'S')); |
|
88 | + $this->endTime->add(new \DateInterval('PT'.(($this->max_time_slots + $this->time_slots) * self::TIME_SLOT_DURATION).'S')); |
|
89 | 89 | } |
90 | 90 | |
91 | 91 | /** |
@@ -156,7 +156,7 @@ discard block |
||
156 | 156 | $solver = $this->setData($solver); |
157 | 157 | $solver = $solver->solve(); |
158 | 158 | $this->solver = $solver; |
159 | - }catch(\Exception $e) |
|
159 | + } catch (\Exception $e) |
|
160 | 160 | { |
161 | 161 | \Event::fire(new ErrorEvent($this->company, $e->getMessage())); |
162 | 162 | throw new OptimiseException('Optimising error', 0, $e); |
@@ -170,7 +170,7 @@ discard block |
||
170 | 170 | */ |
171 | 171 | public function save() |
172 | 172 | { |
173 | - if(!($this->solver instanceof Solver)) { |
|
173 | + if (!($this->solver instanceof Solver)) { |
|
174 | 174 | \Event::fire(new ErrorEvent($this->company, 'solver is not an instace of Solver')); |
175 | 175 | throw new OptimiseException('solver is not an instance of Solver'); |
176 | 176 | return; |
@@ -180,7 +180,7 @@ discard block |
||
180 | 180 | try { |
181 | 181 | $this->saveMeetings($this->solver); |
182 | 182 | $this->saveEmployeesMeetings($this->solver); |
183 | - }catch(\Exception $e) |
|
183 | + } catch (\Exception $e) |
|
184 | 184 | { |
185 | 185 | \Event::fire(new ErrorEvent($this->company, $e->getMessage())); |
186 | 186 | throw new OptimiseException('Optimising error', 0, $e); |
@@ -197,8 +197,8 @@ discard block |
||
197 | 197 | private function saveMeetings(Solver $solver) |
198 | 198 | { |
199 | 199 | $meetings = $solver->getYResults(); |
200 | - foreach($meetings as $id=>$meeting){ |
|
201 | - $meetingO = \plunner\Meeting::findOrFail($id);//TODO catch error |
|
200 | + foreach ($meetings as $id=>$meeting) { |
|
201 | + $meetingO = \plunner\Meeting::findOrFail($id); //TODO catch error |
|
202 | 202 | $meetingO->start_time = $this->toDateTime(array_search('1', $meeting)); |
203 | 203 | $meetingO->save(); |
204 | 204 | } |
@@ -210,11 +210,11 @@ discard block |
||
210 | 210 | private function saveEmployeesMeetings(Solver $solver) |
211 | 211 | { |
212 | 212 | $employeesMeetings = $solver->getXResults(); |
213 | - foreach($employeesMeetings as $eId =>$employeeMeetings) |
|
213 | + foreach ($employeesMeetings as $eId =>$employeeMeetings) |
|
214 | 214 | { |
215 | 215 | $employee = \plunner\Employee::findOrFail($eId); |
216 | 216 | $employeeMeetings = collect($employeeMeetings); |
217 | - $employeeMeetings = $employeeMeetings->filter(function ($item) { |
|
217 | + $employeeMeetings = $employeeMeetings->filter(function($item) { |
|
218 | 218 | return $item == 1; |
219 | 219 | }); |
220 | 220 | $employee->meetings()->attach($employeeMeetings->keys()->toArray()); |
@@ -272,7 +272,7 @@ discard block |
||
272 | 272 | return $this->durationConverter($this->timeSlotsConverter($item)); |
273 | 273 | }); |
274 | 274 | return $solver->setMeetings($timeslots->keys()->toArray()) |
275 | - ->setMeetingsDuration($meetings->pluck('duration','id')->toArray()) |
|
275 | + ->setMeetingsDuration($meetings->pluck('duration', 'id')->toArray()) |
|
276 | 276 | ->setMeetingsAvailability(self::getAvailabilityArray($timeslots, $this->time_slots)); |
277 | 277 | } |
278 | 278 | |
@@ -318,15 +318,15 @@ discard block |
||
318 | 318 | */ |
319 | 319 | static private function getUsersMeetingsArray($users, $meetings, \Illuminate\Support\Collection $usersMeetings) |
320 | 320 | { |
321 | - $ret = []; |
|
322 | - foreach($users as $user) |
|
321 | + $ret = [ ]; |
|
322 | + foreach ($users as $user) |
|
323 | 323 | { |
324 | 324 | $usersMeetingsTmp = $usersMeetings->get($user); |
325 | - foreach($meetings as $meeting){ |
|
326 | - if($usersMeetingsTmp->contains('meeting_id', $meeting)){ |
|
327 | - $ret[$user][$meeting] = 1; |
|
328 | - }else{ |
|
329 | - $ret[$user][$meeting] = 0; |
|
325 | + foreach ($meetings as $meeting) { |
|
326 | + if ($usersMeetingsTmp->contains('meeting_id', $meeting)) { |
|
327 | + $ret[ $user ][ $meeting ] = 1; |
|
328 | + } else { |
|
329 | + $ret[ $user ][ $meeting ] = 0; |
|
330 | 330 | } |
331 | 331 | } |
332 | 332 | } |
@@ -340,7 +340,7 @@ discard block |
||
340 | 340 | */ |
341 | 341 | private function durationConverter($item) |
342 | 342 | { |
343 | - return $item->each(function($item2){ |
|
343 | + return $item->each(function($item2) { |
|
344 | 344 | $item2->duration = $this->convertDuration((int) $item2->duration); |
345 | 345 | return $item2; |
346 | 346 | //TODO try catch |
@@ -353,7 +353,7 @@ discard block |
||
353 | 353 | */ |
354 | 354 | private function timeSlotsConverter($item) |
355 | 355 | { |
356 | - return $item->each(function($item2){ |
|
356 | + return $item->each(function($item2) { |
|
357 | 357 | $item2->time_start = $this->toTimeSlot($item2->time_start); |
358 | 358 | $item2->time_end = $this->toTimeSlot($item2->time_end); |
359 | 359 | return $item2; |
@@ -366,13 +366,13 @@ discard block |
||
366 | 366 | * @param bool|true $free if true the array is filled with 1 for timeslots values else with 0 for timeslots values |
367 | 367 | * @return array |
368 | 368 | */ |
369 | - static private function getAvailabilityArray(\Illuminate\Support\Collection $timeSlots, $timeslotsN, $free=true) |
|
369 | + static private function getAvailabilityArray(\Illuminate\Support\Collection $timeSlots, $timeslotsN, $free = true) |
|
370 | 370 | { |
371 | - $ret = []; |
|
372 | - foreach($timeSlots as $id=>$timeSlots2) |
|
371 | + $ret = [ ]; |
|
372 | + foreach ($timeSlots as $id=>$timeSlots2) |
|
373 | 373 | { |
374 | - $ret = self::fillTimeSlots($ret, $id, $timeSlots2, $free?'1':'0'); |
|
375 | - $ret = self::fillRow($ret, $id, $timeslotsN, $free?'0':'1'); |
|
374 | + $ret = self::fillTimeSlots($ret, $id, $timeSlots2, $free ? '1' : '0'); |
|
375 | + $ret = self::fillRow($ret, $id, $timeslotsN, $free ? '0' : '1'); |
|
376 | 376 | } |
377 | 377 | |
378 | 378 | return $ret; |
@@ -387,10 +387,10 @@ discard block |
||
387 | 387 | */ |
388 | 388 | static private function fillTimeSlots(array $array, $id, \Illuminate\Support\Collection $timeSlots, $fill = '0') |
389 | 389 | { |
390 | - foreach($timeSlots as $timeSlot) { |
|
391 | - if(!isset($array[$id])) |
|
392 | - $array[$id] = []; |
|
393 | - $array[$id] = self::arrayPadInterval($array[$id], $timeSlot->time_start, $timeSlot->time_end, $fill); |
|
390 | + foreach ($timeSlots as $timeSlot) { |
|
391 | + if (!isset($array[ $id ])) |
|
392 | + $array[ $id ] = [ ]; |
|
393 | + $array[ $id ] = self::arrayPadInterval($array[ $id ], $timeSlot->time_start, $timeSlot->time_end, $fill); |
|
394 | 394 | } |
395 | 395 | return $array; |
396 | 396 | } |
@@ -403,9 +403,9 @@ discard block |
||
403 | 403 | */ |
404 | 404 | static private function fillRow(array $array, $id, $until, $fill = '0') |
405 | 405 | { |
406 | - for($i = 1; $i <= $until; $i++){ |
|
407 | - if(!isset($array[$id][$i])) |
|
408 | - $array[$id][$i] = $fill; |
|
406 | + for ($i = 1; $i <= $until; $i++) { |
|
407 | + if (!isset($array[ $id ][ $i ])) |
|
408 | + $array[ $id ][ $i ] = $fill; |
|
409 | 409 | } |
410 | 410 | |
411 | 411 | return $array; |
@@ -420,8 +420,8 @@ discard block |
||
420 | 420 | */ |
421 | 421 | static private function arrayPadInterval(array $array, $from, $to, $pad = '0') |
422 | 422 | { |
423 | - for($i = $from; $i<$to; $i++) |
|
424 | - $array[$i] = $pad; |
|
423 | + for ($i = $from; $i < $to; $i++) |
|
424 | + $array[ $i ] = $pad; |
|
425 | 425 | return $array; |
426 | 426 | } |
427 | 427 | |
@@ -435,14 +435,14 @@ discard block |
||
435 | 435 | { |
436 | 436 | $dateTime = new \DateTime($time); |
437 | 437 | $diff = $dateTime->diff($this->startTime); |
438 | - $diff = explode(':',$diff->format('%R:%d:%h:%i:%s')); |
|
439 | - $diff = $diff[1]*86400 + $diff[2]*3600 + $diff[3]*60 + $diff[4]; |
|
438 | + $diff = explode(':', $diff->format('%R:%d:%h:%i:%s')); |
|
439 | + $diff = $diff[ 1 ] * 86400 + $diff[ 2 ] * 3600 + $diff[ 3 ] * 60 + $diff[ 4 ]; |
|
440 | 440 | //if($diff[0] != '-' && $diff != 0) |
441 | 441 | // throw new OptimiseException('timeslot time <= startTime'); |
442 | 442 | //TODO fix check |
443 | 443 | //TODO check if diff makes sense |
444 | 444 | //TODO check upper limit |
445 | - return (int)(round($diff/self::TIME_SLOT_DURATION)+1); //TODO can round cause overlaps? |
|
445 | + return (int) (round($diff / self::TIME_SLOT_DURATION) + 1); //TODO can round cause overlaps? |
|
446 | 446 | } |
447 | 447 | |
448 | 448 | /** |
@@ -452,7 +452,7 @@ discard block |
||
452 | 452 | private function toDateTime($timeslot) |
453 | 453 | { |
454 | 454 | $ret = clone $this->startTime; |
455 | - return $ret->add(new \DateInterval('PT'.(($timeslot-1)*self::TIME_SLOT_DURATION).'S')); |
|
455 | + return $ret->add(new \DateInterval('PT'.(($timeslot - 1) * self::TIME_SLOT_DURATION).'S')); |
|
456 | 456 | } |
457 | 457 | |
458 | 458 | /** |
@@ -461,6 +461,6 @@ discard block |
||
461 | 461 | */ |
462 | 462 | static private function convertDuration($duration) |
463 | 463 | { |
464 | - return (int)ceil($duration/self::TIME_SLOT_DURATION); |
|
464 | + return (int) ceil($duration / self::TIME_SLOT_DURATION); |
|
465 | 465 | } |
466 | 466 | } |
467 | 467 | \ No newline at end of file |