Completed
Push — master ( 468aac...e5acfe )
by claudio
06:32
created
app/Console/Commands/Optimise/Optimise.php 3 patches
Doc Comments   +6 added lines, -5 removed lines patch added patch discarded remove patch
@@ -291,8 +291,9 @@  discard block
 block discarded – undo
291 291
 
292 292
     /**
293 293
      * @param \Illuminate\Support\Collection $timeSlots
294
-     * @param bool|true $free if true the array is filled with 1 for timeslots values else with 0 for timeslots values
295
-     * @return array
294
+     * @param boolean $free if true the array is filled with 1 for timeslots values else with 0 for timeslots values
295
+     * @param string[] $ids
296
+     * @return string[]
296 297
      */
297 298
     static private function getAvailabilityArray(\Illuminate\Support\Collection $timeSlots, $timeslotsN, $ids, $free = true)
298 299
     {
@@ -393,10 +394,10 @@  discard block
 block discarded – undo
393 394
     }
394 395
 
395 396
     /**
396
-     * @param array $users
397
-     * @param array $meetings
397
+     * @param string[] $users
398
+     * @param string[] $meetings
398 399
      * @param \Illuminate\Support\Collection $usersMeetings
399
-     * @return array
400
+     * @return string[]
400 401
      */
401 402
     static private function getUsersMeetingsArray($users, $meetings, \Illuminate\Support\Collection $usersMeetings)
402 403
     {
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -85,8 +85,8 @@  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) *
89
-                config('app.timeslots.duration')) . 'S'));
88
+        $this->endTime->add(new \DateInterval('PT'.(($this->max_time_slots + $this->time_slots) *
89
+                config('app.timeslots.duration')).'S'));
90 90
     }
91 91
 
92 92
     /**
@@ -158,11 +158,11 @@  discard block
 block discarded – undo
158 158
             $solver = $this->setData($solver);
159 159
             $solver = $solver->solve();
160 160
             $this->solver = $solver;
161
-        }catch(OptimiseException $e) {
162
-            if(!$e->isEmpty())
161
+        } catch (OptimiseException $e) {
162
+            if (!$e->isEmpty())
163 163
                 \Event::fire(new ErrorEvent($this->company, $e->getMessage()));
164 164
             throw $e;
165
-        }catch (\Exception $e) {
165
+        } catch (\Exception $e) {
166 166
             //TODO use the correct exceptions to avoid to share private data
167 167
             \Event::fire(new ErrorEvent($this->company, $e->getMessage()));
168 168
             throw new OptimiseException('Optimising error', 0, $e);
@@ -207,7 +207,7 @@  discard block
 block discarded – undo
207 207
     {
208 208
         //since we consider busy timeslots, we need to get all users
209 209
         $users = $this->company->employees->pluck('id')->toArray();
210
-        if(count($users) == 0)
210
+        if (count($users) == 0)
211 211
             throw ((new OptimiseException("No users for this company"))->withEmpty(true));
212 212
         return $solver->setUsers($users);
213 213
     }
@@ -223,9 +223,9 @@  discard block
 block discarded – undo
223 223
          * @var $meetings \Illuminate\Support\Collection
224 224
          */
225 225
         $meetings = collect($this->company->getMeetingsTimeSlots($this->startTime, $this->endTime));
226
-        if($meetings->count() == 0)
226
+        if ($meetings->count() == 0)
227 227
             throw ((new OptimiseException("No meetings for this week"))->withEmpty(true));
228
-        $timeslots = $meetings->groupBy('id')->map(function ($item) { //convert timeslots
228
+        $timeslots = $meetings->groupBy('id')->map(function($item) { //convert timeslots
229 229
             return $this->durationConverter($this->timeSlotsConverter($item));
230 230
         });
231 231
         return $solver->setMeetings($timeslots->keys()->toArray())
@@ -240,8 +240,8 @@  discard block
 block discarded – undo
240 240
      */
241 241
     private function durationConverter($item)
242 242
     {
243
-        return $item->each(function ($item2) {
244
-            $item2->duration = $this->convertDuration((int)$item2->duration);
243
+        return $item->each(function($item2) {
244
+            $item2->duration = $this->convertDuration((int) $item2->duration);
245 245
             return $item2;
246 246
             //TODO try catch
247 247
         });
@@ -253,7 +253,7 @@  discard block
 block discarded – undo
253 253
      */
254 254
     static private function convertDuration($duration)
255 255
     {
256
-        return (int)ceil($duration / config('app.timeslots.duration'));
256
+        return (int) ceil($duration / config('app.timeslots.duration'));
257 257
     }
258 258
 
259 259
     /**
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
      */
263 263
     private function timeSlotsConverter($item)
264 264
     {
265
-        return $item->each(function ($item2) {
265
+        return $item->each(function($item2) {
266 266
             $item2->time_start = $this->toTimeSlot($item2->time_start);
267 267
             $item2->time_end = $this->toTimeSlot($item2->time_end);
268 268
             return $item2;
@@ -280,13 +280,13 @@  discard block
 block discarded – undo
280 280
         $dateTime = new \DateTime($time);
281 281
         $diff = $dateTime->diff($this->startTime);
282 282
         $diff = explode(':', $diff->format('%R:%d:%h:%i:%s'));
283
-        $diff = $diff[1] * 86400 + $diff[2] * 3600 + $diff[3] * 60 + $diff[4];
283
+        $diff = $diff[ 1 ] * 86400 + $diff[ 2 ] * 3600 + $diff[ 3 ] * 60 + $diff[ 4 ];
284 284
         //if($diff[0] != '-' && $diff != 0)
285 285
         //  throw new OptimiseException('timeslot time <= startTime');
286 286
         //TODO fix check
287 287
         //TODO check if diff makes sense
288 288
         //TODO check upper limit
289
-        return (int)(round($diff / config('app.timeslots.duration')) + 1); //TODO can round cause overlaps?
289
+        return (int) (round($diff / config('app.timeslots.duration')) + 1); //TODO can round cause overlaps?
290 290
     }
291 291
 
292 292
     /**
@@ -296,10 +296,10 @@  discard block
 block discarded – undo
296 296
      */
297 297
     static private function getAvailabilityArray(\Illuminate\Support\Collection $timeSlots, $timeslotsN, $ids, $free = true)
298 298
     {
299
-        $ret = [];
299
+        $ret = [ ];
300 300
         foreach ($ids as $id) {
301
-            if(isset($timeSlots[$id]))
302
-                $ret = self::fillTimeSlots($ret, $id, $timeSlots[$id], $free ? '1' : '0');
301
+            if (isset($timeSlots[ $id ]))
302
+                $ret = self::fillTimeSlots($ret, $id, $timeSlots[ $id ], $free ? '1' : '0');
303 303
             $ret = self::fillRow($ret, $id, $timeslotsN, $free ? '0' : '1');
304 304
         }
305 305
 
@@ -316,9 +316,9 @@  discard block
 block discarded – undo
316 316
     static private function fillTimeSlots(array $array, $id, \Illuminate\Support\Collection $timeSlots, $fill = '0')
317 317
     {
318 318
         foreach ($timeSlots as $timeSlot) {
319
-            if (!isset($array[$id]))
320
-                $array[$id] = [];
321
-            $array[$id] = self::arrayPadInterval($array[$id], $timeSlot->time_start, $timeSlot->time_end, $fill);
319
+            if (!isset($array[ $id ]))
320
+                $array[ $id ] = [ ];
321
+            $array[ $id ] = self::arrayPadInterval($array[ $id ], $timeSlot->time_start, $timeSlot->time_end, $fill);
322 322
         }
323 323
         return $array;
324 324
     }
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
     static private function arrayPadInterval(array $array, $from, $to, $pad = '0')
334 334
     {
335 335
         for ($i = $from; $i < $to; $i++)
336
-            $array[$i] = $pad;
336
+            $array[ $i ] = $pad;
337 337
         return $array;
338 338
     }
339 339
 
@@ -346,8 +346,8 @@  discard block
 block discarded – undo
346 346
     static private function fillRow(array $array, $id, $until, $fill = '0')
347 347
     {
348 348
         for ($i = 1; $i <= $until; $i++) {
349
-            if (!isset($array[$id][$i]))
350
-                $array[$id][$i] = $fill;
349
+            if (!isset($array[ $id ][ $i ]))
350
+                $array[ $id ][ $i ] = $fill;
351 351
         }
352 352
 
353 353
         return $array;
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
         $users = collect($this->company->getEmployeesTimeSlots($this->startTime, $this->endTime));
367 367
         //if($users->count() == 0)
368 368
         //    throw ((new OptimiseException("No users for this company"))->withEmpty(true));
369
-        $timeslots = $users->groupBy('id')->map(function ($item) { //convert timeslots
369
+        $timeslots = $users->groupBy('id')->map(function($item) { //convert timeslots
370 370
             return $this->timeSlotsConverter($item);
371 371
         });
372 372
         return $solver->setUsersAvailability(self::getAvailabilityArray($timeslots, $this->time_slots, $solver->getUsers(),
@@ -386,7 +386,7 @@  discard block
 block discarded – undo
386 386
          * @var $usersMeetings \Illuminate\Support\Collection
387 387
          */
388 388
         $usersMeetings = collect($this->company->getUsersMeetings($users, $meetings))->groupBy('employee_id');
389
-        if($usersMeetings->count() == 0)
389
+        if ($usersMeetings->count() == 0)
390 390
             throw ((new OptimiseException("No users for any meeting"))->withEmpty(true));
391 391
 
392 392
         return $solver->setUsersMeetings(self::getUsersMeetingsArray($users, $meetings, $usersMeetings));
@@ -400,14 +400,14 @@  discard block
 block discarded – undo
400 400
      */
401 401
     static private function getUsersMeetingsArray($users, $meetings, \Illuminate\Support\Collection $usersMeetings)
402 402
     {
403
-        $ret = [];
403
+        $ret = [ ];
404 404
         foreach ($users as $user) {
405 405
             $usersMeetingsTmp = $usersMeetings->get($user);
406 406
             foreach ($meetings as $meeting) {
407 407
                 if ($usersMeetingsTmp->contains('meeting_id', $meeting)) {
408
-                    $ret[$user][$meeting] = 1;
408
+                    $ret[ $user ][ $meeting ] = 1;
409 409
                 } else {
410
-                    $ret[$user][$meeting] = 0;
410
+                    $ret[ $user ][ $meeting ] = 0;
411 411
                 }
412 412
             }
413 413
         }
@@ -449,7 +449,7 @@  discard block
 block discarded – undo
449 449
     {
450 450
         $meetings = $solver->getYResults();
451 451
         foreach ($meetings as $id => $meeting) {
452
-            $meetingO = \plunner\Meeting::findOrFail($id);//TODO catch error
452
+            $meetingO = \plunner\Meeting::findOrFail($id); //TODO catch error
453 453
             $meetingO->start_time = $this->toDateTime(array_search('1', $meeting));
454 454
             $meetingO->save();
455 455
         }
@@ -462,7 +462,7 @@  discard block
 block discarded – undo
462 462
     private function toDateTime($timeslot)
463 463
     {
464 464
         $ret = clone $this->startTime;
465
-        return $ret->add(new \DateInterval('PT' . (($timeslot - 1) * config('app.timeslots.duration')) . 'S'));
465
+        return $ret->add(new \DateInterval('PT'.(($timeslot - 1) * config('app.timeslots.duration')).'S'));
466 466
     }
467 467
 
468 468
     /**
@@ -474,7 +474,7 @@  discard block
 block discarded – undo
474 474
         foreach ($employeesMeetings as $eId => $employeeMeetings) {
475 475
             $employee = \plunner\Employee::findOrFail($eId);
476 476
             $employeeMeetings = collect($employeeMeetings);
477
-            $employeeMeetings = $employeeMeetings->filter(function ($item) {
477
+            $employeeMeetings = $employeeMeetings->filter(function($item) {
478 478
                 return $item == 1;
479 479
             });
480 480
             $employee->meetings()->attach($employeeMeetings->keys()->toArray());
Please login to merge, or discard this patch.
Braces   +26 added lines, -18 removed lines patch added patch discarded remove patch
@@ -158,11 +158,12 @@  discard block
 block discarded – undo
158 158
             $solver = $this->setData($solver);
159 159
             $solver = $solver->solve();
160 160
             $this->solver = $solver;
161
-        }catch(OptimiseException $e) {
162
-            if(!$e->isEmpty())
163
-                \Event::fire(new ErrorEvent($this->company, $e->getMessage()));
161
+        } catch(OptimiseException $e) {
162
+            if(!$e->isEmpty()) {
163
+                            \Event::fire(new ErrorEvent($this->company, $e->getMessage()));
164
+            }
164 165
             throw $e;
165
-        }catch (\Exception $e) {
166
+        } catch (\Exception $e) {
166 167
             //TODO use the correct exceptions to avoid to share private data
167 168
             \Event::fire(new ErrorEvent($this->company, $e->getMessage()));
168 169
             throw new OptimiseException('Optimising error', 0, $e);
@@ -207,8 +208,9 @@  discard block
 block discarded – undo
207 208
     {
208 209
         //since we consider busy timeslots, we need to get all users
209 210
         $users = $this->company->employees->pluck('id')->toArray();
210
-        if(count($users) == 0)
211
-            throw ((new OptimiseException("No users for this company"))->withEmpty(true));
211
+        if(count($users) == 0) {
212
+                    throw ((new OptimiseException("No users for this company"))->withEmpty(true));
213
+        }
212 214
         return $solver->setUsers($users);
213 215
     }
214 216
 
@@ -223,8 +225,9 @@  discard block
 block discarded – undo
223 225
          * @var $meetings \Illuminate\Support\Collection
224 226
          */
225 227
         $meetings = collect($this->company->getMeetingsTimeSlots($this->startTime, $this->endTime));
226
-        if($meetings->count() == 0)
227
-            throw ((new OptimiseException("No meetings for this week"))->withEmpty(true));
228
+        if($meetings->count() == 0) {
229
+                    throw ((new OptimiseException("No meetings for this week"))->withEmpty(true));
230
+        }
228 231
         $timeslots = $meetings->groupBy('id')->map(function ($item) { //convert timeslots
229 232
             return $this->durationConverter($this->timeSlotsConverter($item));
230 233
         });
@@ -298,8 +301,9 @@  discard block
 block discarded – undo
298 301
     {
299 302
         $ret = [];
300 303
         foreach ($ids as $id) {
301
-            if(isset($timeSlots[$id]))
302
-                $ret = self::fillTimeSlots($ret, $id, $timeSlots[$id], $free ? '1' : '0');
304
+            if(isset($timeSlots[$id])) {
305
+                            $ret = self::fillTimeSlots($ret, $id, $timeSlots[$id], $free ? '1' : '0');
306
+            }
303 307
             $ret = self::fillRow($ret, $id, $timeslotsN, $free ? '0' : '1');
304 308
         }
305 309
 
@@ -316,8 +320,9 @@  discard block
 block discarded – undo
316 320
     static private function fillTimeSlots(array $array, $id, \Illuminate\Support\Collection $timeSlots, $fill = '0')
317 321
     {
318 322
         foreach ($timeSlots as $timeSlot) {
319
-            if (!isset($array[$id]))
320
-                $array[$id] = [];
323
+            if (!isset($array[$id])) {
324
+                            $array[$id] = [];
325
+            }
321 326
             $array[$id] = self::arrayPadInterval($array[$id], $timeSlot->time_start, $timeSlot->time_end, $fill);
322 327
         }
323 328
         return $array;
@@ -332,8 +337,9 @@  discard block
 block discarded – undo
332 337
      */
333 338
     static private function arrayPadInterval(array $array, $from, $to, $pad = '0')
334 339
     {
335
-        for ($i = $from; $i < $to; $i++)
336
-            $array[$i] = $pad;
340
+        for ($i = $from; $i < $to; $i++) {
341
+                    $array[$i] = $pad;
342
+        }
337 343
         return $array;
338 344
     }
339 345
 
@@ -346,8 +352,9 @@  discard block
 block discarded – undo
346 352
     static private function fillRow(array $array, $id, $until, $fill = '0')
347 353
     {
348 354
         for ($i = 1; $i <= $until; $i++) {
349
-            if (!isset($array[$id][$i]))
350
-                $array[$id][$i] = $fill;
355
+            if (!isset($array[$id][$i])) {
356
+                            $array[$id][$i] = $fill;
357
+            }
351 358
         }
352 359
 
353 360
         return $array;
@@ -386,8 +393,9 @@  discard block
 block discarded – undo
386 393
          * @var $usersMeetings \Illuminate\Support\Collection
387 394
          */
388 395
         $usersMeetings = collect($this->company->getUsersMeetings($users, $meetings))->groupBy('employee_id');
389
-        if($usersMeetings->count() == 0)
390
-            throw ((new OptimiseException("No users for any meeting"))->withEmpty(true));
396
+        if($usersMeetings->count() == 0) {
397
+                    throw ((new OptimiseException("No users for any meeting"))->withEmpty(true));
398
+        }
391 399
 
392 400
         return $solver->setUsersMeetings(self::getUsersMeetingsArray($users, $meetings, $usersMeetings));
393 401
     }
Please login to merge, or discard this patch.