Completed
Pull Request — master (#28)
by claudio
05:28
created
app/Console/Commands/Optimise/Optimise.php 1 patch
Spacing   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
Please login to merge, or discard this patch.