| @@ -303,10 +303,10 @@ discard block | ||
| 303 | 303 | } | 
| 304 | 304 | |
| 305 | 305 | /** | 
| 306 | - * @param array $users | |
| 307 | - * @param array $meetings | |
| 306 | + * @param string[] $users | |
| 307 | + * @param string[] $meetings | |
| 308 | 308 | * @param \Illuminate\Support\Collection $usersMeetings | 
| 309 | - * @return array | |
| 309 | + * @return \string[] | |
| 310 | 310 | */ | 
| 311 | 311 | static private function getUsersMeetingsArray($users, $meetings, \Illuminate\Support\Collection $usersMeetings) | 
| 312 | 312 |      { | 
| @@ -338,8 +338,9 @@ discard block | ||
| 338 | 338 | |
| 339 | 339 | /** | 
| 340 | 340 | * @param \Illuminate\Support\Collection $timeSlots | 
| 341 | - * @param bool|true $free if true the array is filled with 1 for timeslots values else with 0 for timeslots values | |
| 342 | - * @return array | |
| 341 | + * @param boolean $free if true the array is filled with 1 for timeslots values else with 0 for timeslots values | |
| 342 | + * @param integer $timeslotsN | |
| 343 | + * @return \string[] | |
| 343 | 344 | */ | 
| 344 | 345 | static private function getAvailabilityArray(\Illuminate\Support\Collection $timeSlots, $timeslotsN, $free=true) | 
| 345 | 346 |      { | 
| @@ -9,8 +9,8 @@ | ||
| 9 | 9 | namespace plunner\Console\Commands\Optimise; | 
| 10 | 10 | |
| 11 | 11 | use Illuminate\Console\Scheduling\Schedule; | 
| 12 | -use plunner\company; | |
| 13 | 12 | use plunner\Events\Optimise\ErrorEvent; | 
| 13 | +use plunner\company; | |
| 14 | 14 | |
| 15 | 15 | /** | 
| 16 | 16 | * Class Optimise | 
| @@ -45,8 +45,8 @@ discard block | ||
| 45 | 45 | private $company; | 
| 46 | 46 | |
| 47 | 47 | /** | 
| 48 | - * @var Schedule laravel schedule object needed to perform command in background | |
| 49 | - */ | |
| 48 | + * @var Schedule laravel schedule object needed to perform command in background | |
| 49 | + */ | |
| 50 | 50 | private $schedule; | 
| 51 | 51 | |
| 52 | 52 | /** | 
| @@ -423,7 +423,7 @@ discard block | ||
| 423 | 423 |          $diff = explode(':',$diff->format('%R:%d:%h:%i:%s')); | 
| 424 | 424 | $diff = $diff[1]*86400 + $diff[2]*3600 + $diff[3]*60 + $diff[4]; | 
| 425 | 425 | //if($diff[0] != '-' && $diff != 0) | 
| 426 | -          //  throw new OptimiseException('timeslot time <= startTime'); | |
| 426 | +            //  throw new OptimiseException('timeslot time <= startTime'); | |
| 427 | 427 | //TODO fix check | 
| 428 | 428 | //TODO check if diff makes sense | 
| 429 | 429 | //TODO check upper limit | 
| @@ -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); | 
| @@ -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); | 
| @@ -327,7 +327,7 @@ discard block | ||
| 327 | 327 |              foreach($meetings as $meeting){ | 
| 328 | 328 |                  if($usersMeetingsTmp->contains('meeting_id', $meeting)){ | 
| 329 | 329 | $ret[$user][$meeting] = 1; | 
| 330 | -                }else{ | |
| 330 | +                } else{ | |
| 331 | 331 | $ret[$user][$meeting] = 0; | 
| 332 | 332 | } | 
| 333 | 333 | } | 
| @@ -373,8 +373,9 @@ discard block | ||
| 373 | 373 | static private function fillTimeSlots(array $array, $id, \Illuminate\Support\Collection $timeSlots, $fill = '0') | 
| 374 | 374 |      { | 
| 375 | 375 |          foreach($timeSlots as $timeSlot) { | 
| 376 | - if(!isset($array[$id])) | |
| 377 | - $array[$id] = []; | |
| 376 | +            if(!isset($array[$id])) { | |
| 377 | + $array[$id] = []; | |
| 378 | + } | |
| 378 | 379 | $array[$id] = self::arrayPadInterval($array[$id], $timeSlot->time_start, $timeSlot->time_end, $fill); | 
| 379 | 380 | } | 
| 380 | 381 | return $array; | 
| @@ -389,8 +390,9 @@ discard block | ||
| 389 | 390 | static private function fillRow(array $array, $id, $until, $fill = '0') | 
| 390 | 391 |      { | 
| 391 | 392 |          for($i = 1; $i <= $until; $i++){ | 
| 392 | - if(!isset($array[$id][$i])) | |
| 393 | - $array[$id][$i] = $fill; | |
| 393 | +            if(!isset($array[$id][$i])) { | |
| 394 | + $array[$id][$i] = $fill; | |
| 395 | + } | |
| 394 | 396 | } | 
| 395 | 397 | |
| 396 | 398 | return $array; | 
| @@ -405,8 +407,9 @@ discard block | ||
| 405 | 407 | */ | 
| 406 | 408 | static private function arrayPadInterval(array $array, $from, $to, $pad = '0') | 
| 407 | 409 |      { | 
| 408 | - for($i = $from; $i<$to; $i++) | |
| 409 | - $array[$i] = $pad; | |
| 410 | +        for($i = $from; $i<$to; $i++) { | |
| 411 | + $array[$i] = $pad; | |
| 412 | + } | |
| 410 | 413 | return $array; | 
| 411 | 414 | } | 
| 412 | 415 | |
| @@ -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 | 
| @@ -119,7 +119,7 @@ discard block | ||
| 119 | 119 | |
| 120 | 120 | /** | 
| 121 | 121 | * remove a no empty dir | 
| 122 | - * @param $dir | |
| 122 | + * @param string $dir | |
| 123 | 123 | * @return bool | 
| 124 | 124 | */ | 
| 125 | 125 |      private static function delTree($dir) { | 
| @@ -173,7 +173,7 @@ discard block | ||
| 173 | 173 | } | 
| 174 | 174 | |
| 175 | 175 | /** | 
| 176 | - * @return \string[] | |
| 176 | + * @return string[] | |
| 177 | 177 | */ | 
| 178 | 178 | public function getUsers() | 
| 179 | 179 |      { | 
| @@ -191,7 +191,7 @@ discard block | ||
| 191 | 191 | } | 
| 192 | 192 | |
| 193 | 193 | /** | 
| 194 | - * @return \string[] | |
| 194 | + * @return string[] | |
| 195 | 195 | */ | 
| 196 | 196 | public function getMeetings() | 
| 197 | 197 |      { | 
| @@ -253,7 +253,7 @@ discard block | ||
| 253 | 253 | } | 
| 254 | 254 | |
| 255 | 255 | /** | 
| 256 | - * @return \string[] | |
| 256 | + * @return string[] | |
| 257 | 257 | */ | 
| 258 | 258 | public function getMeetingsAvailability() | 
| 259 | 259 |      { | 
| @@ -282,7 +282,7 @@ discard block | ||
| 282 | 282 | } | 
| 283 | 283 | |
| 284 | 284 | /** | 
| 285 | - * @return \string[] | |
| 285 | + * @return string[] | |
| 286 | 286 | */ | 
| 287 | 287 | public function getMeetingsDuration() | 
| 288 | 288 |      { | 
| @@ -312,7 +312,7 @@ discard block | ||
| 312 | 312 | } | 
| 313 | 313 | |
| 314 | 314 | /** | 
| 315 | - * @return \string[] | |
| 315 | + * @return string[] | |
| 316 | 316 | */ | 
| 317 | 317 | public function getUsersAvailability() | 
| 318 | 318 |      { | 
| @@ -342,7 +342,7 @@ discard block | ||
| 342 | 342 | } | 
| 343 | 343 | |
| 344 | 344 | /** | 
| 345 | - * @return \string[] | |
| 345 | + * @return string[] | |
| 346 | 346 | */ | 
| 347 | 347 | public function getUsersMeetings() | 
| 348 | 348 |      { | 
| @@ -419,7 +419,7 @@ discard block | ||
| 419 | 419 | |
| 420 | 420 | /** | 
| 421 | 421 | * @param string $file | 
| 422 | - * @param array $data | |
| 422 | + * @param string[] $data | |
| 423 | 423 | * @throws OptimiseException | 
| 424 | 424 | */ | 
| 425 | 425 | static private function writeCSVArrayNoKey($file, $data) | 
| @@ -435,7 +435,7 @@ discard block | ||
| 435 | 435 | |
| 436 | 436 | /** | 
| 437 | 437 | * @param string $file | 
| 438 | - * @param array $data | |
| 438 | + * @param string[] $data | |
| 439 | 439 | * @param string $name | 
| 440 | 440 | * @throws OptimiseException | 
| 441 | 441 | */ | 
| @@ -452,7 +452,7 @@ discard block | ||
| 452 | 452 | |
| 453 | 453 | /** | 
| 454 | 454 | * @param string $file | 
| 455 | - * @param array $data | |
| 455 | + * @param string[] $data | |
| 456 | 456 | * @param string $name | 
| 457 | 457 | * @throws OptimiseException | 
| 458 | 458 | */ | 
| @@ -471,7 +471,7 @@ discard block | ||
| 471 | 471 | /** | 
| 472 | 472 | * @param string $file | 
| 473 | 473 | * @param array $data | 
| 474 | - * @param array $heading | |
| 474 | + * @param string[] $heading | |
| 475 | 475 | * @param \Closure $writer | 
| 476 | 476 | * @throws OptimiseException | 
| 477 | 477 | */ | 
| @@ -682,7 +682,7 @@ discard block | ||
| 682 | 682 | } | 
| 683 | 683 | |
| 684 | 684 | /** | 
| 685 | - * @param $proprieties | |
| 685 | + * @param string[] $proprieties | |
| 686 | 686 | * @throws OptimiseException | 
| 687 | 687 | */ | 
| 688 | 688 | private function checkArrayProprieties($proprieties) | 
| @@ -693,7 +693,7 @@ discard block | ||
| 693 | 693 | } | 
| 694 | 694 | |
| 695 | 695 | /** | 
| 696 | - * @param $proprieties | |
| 696 | + * @param string[] $proprieties | |
| 697 | 697 | * @throws OptimiseException | 
| 698 | 698 | */ | 
| 699 | 699 | private function checkIntProprieties($proprieties) | 
| @@ -707,6 +707,8 @@ discard block | ||
| 707 | 707 | * implementation of arraypad that doesn't change original keys<br/> | 
| 708 | 708 | * <strong>CAUTION: Only positive $len</strong> | 
| 709 | 709 | * @param array $array | 
| 710 | + * @param integer $len | |
| 711 | + * @param integer $pad | |
| 710 | 712 | * @return array | 
| 711 | 713 | */ | 
| 712 | 714 | static private function arrayPad(array $array, $len, $pad) | 
| @@ -1,21 +1,21 @@ discard block | ||
| 1 | 1 | <?php | 
| 2 | 2 | /** | 
| 3 | - * Created by PhpStorm. | |
| 4 | - * User: Claudio Cardinale <[email protected]> | |
| 5 | - * Date: 07/12/15 | |
| 6 | - * Time: 21.18 | |
| 7 | - * This program is free software; you can redistribute it and/or | |
| 8 | - * modify it under the terms of the GNU General Public License | |
| 9 | - * as published by the Free Software Foundation; either version 2 | |
| 10 | - * of the License, or (at your option) any later version. | |
| 11 | - * This program is distributed in the hope that it will be useful, | |
| 12 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | - * GNU General Public License for more details. | |
| 15 | - * You should have received a copy of the GNU General Public License | |
| 16 | - * along with this program; if not, write to the Free Software | |
| 17 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 18 | - */ | |
| 3 | + * Created by PhpStorm. | |
| 4 | + * User: Claudio Cardinale <[email protected]> | |
| 5 | + * Date: 07/12/15 | |
| 6 | + * Time: 21.18 | |
| 7 | + * This program is free software; you can redistribute it and/or | |
| 8 | + * modify it under the terms of the GNU General Public License | |
| 9 | + * as published by the Free Software Foundation; either version 2 | |
| 10 | + * of the License, or (at your option) any later version. | |
| 11 | + * This program is distributed in the hope that it will be useful, | |
| 12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | + * GNU General Public License for more details. | |
| 15 | + * You should have received a copy of the GNU General Public License | |
| 16 | + * along with this program; if not, write to the Free Software | |
| 17 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 18 | + */ | |
| 19 | 19 | |
| 20 | 20 | namespace plunner\Console\Commands\Optimise; | 
| 21 | 21 | |
| @@ -69,8 +69,8 @@ discard block | ||
| 69 | 69 | private $usersMeetings; | 
| 70 | 70 | |
| 71 | 71 | /** | 
| 72 | - * @var Schedule laravel schedule object needed to perform command in background | |
| 73 | - */ | |
| 72 | + * @var Schedule laravel schedule object needed to perform command in background | |
| 73 | + */ | |
| 74 | 74 | private $schedule; | 
| 75 | 75 | |
| 76 | 76 | /** | 
| @@ -113,7 +113,7 @@ discard block | ||
| 113 | 113 | */ | 
| 114 | 114 | static private function checkGlpsol() | 
| 115 | 115 |      { | 
| 116 | - if(!(`which glpsol`)) | |
| 116 | + if (!(`which glpsol`)) | |
| 117 | 117 |              throw new OptimiseException('glpsol is not installed'); | 
| 118 | 118 | } | 
| 119 | 119 | |
| @@ -123,7 +123,7 @@ discard block | ||
| 123 | 123 | * @return bool | 
| 124 | 124 | */ | 
| 125 | 125 |      private static function delTree($dir) { | 
| 126 | -        $files = array_diff(scandir($dir), array('.','..')); | |
| 126 | +        $files = array_diff(scandir($dir), array('.', '..')); | |
| 127 | 127 |          foreach ($files as $file) { | 
| 128 | 128 |              (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); | 
| 129 | 129 | } | 
| @@ -138,11 +138,11 @@ discard block | ||
| 138 | 138 |      { | 
| 139 | 139 | $this->path = tempnam(sys_get_temp_dir(), 'OPT'); //TODO check the return in case of errors this return false on failure | 
| 140 | 140 | unlink($this->path); //remove file to create a dir | 
| 141 | - if(file_exists($this->path)) | |
| 141 | + if (file_exists($this->path)) | |
| 142 | 142 |              throw new OptimiseException('problem during creation of tmp dir (the directory already exists)'); | 
| 143 | - if(!@mkdir($this->path)) | |
| 144 | -            throw new OptimiseException('problem during creation of tmp dir (mkdir problem)');; | |
| 145 | - if(! is_dir($this->path)) | |
| 143 | + if (!@mkdir($this->path)) | |
| 144 | +            throw new OptimiseException('problem during creation of tmp dir (mkdir problem)'); ; | |
| 145 | + if (!is_dir($this->path)) | |
| 146 | 146 |              throw new OptimiseException('problem during creation of tmp dir (it is not possible to create directory)'); | 
| 147 | 147 | } | 
| 148 | 148 | |
| @@ -223,7 +223,7 @@ discard block | ||
| 223 | 223 | */ | 
| 224 | 224 | public function setTimeSlots($timeSlots) | 
| 225 | 225 |      { | 
| 226 | - if(!is_int($timeSlots) || $timeSlots <=0) | |
| 226 | + if (!is_int($timeSlots) || $timeSlots <= 0) | |
| 227 | 227 |              throw new OptimiseException('$timeSlots is not integer or it is not >0'); | 
| 228 | 228 | |
| 229 | 229 | $this->timeSlots = $timeSlots; | 
| @@ -245,7 +245,7 @@ discard block | ||
| 245 | 245 | */ | 
| 246 | 246 | public function setMaxTimeSlots($maxTimeSlots) | 
| 247 | 247 |      { | 
| 248 | - if(!is_int($maxTimeSlots) || $maxTimeSlots <=0) | |
| 248 | + if (!is_int($maxTimeSlots) || $maxTimeSlots <= 0) | |
| 249 | 249 |              throw new OptimiseException('$maxTimeSlots is not integer or it is not >0'); | 
| 250 | 250 | |
| 251 | 251 | $this->maxTimeSlots = $maxTimeSlots; | 
| @@ -268,13 +268,13 @@ discard block | ||
| 268 | 268 | public function setMeetingsAvailability($meetingsAvailability) | 
| 269 | 269 |      { | 
| 270 | 270 | $meetings = array_keys($meetingsAvailability); | 
| 271 | - if(array_diff($meetings, $this->meetings)) | |
| 271 | + if (array_diff($meetings, $this->meetings)) | |
| 272 | 272 |              throw new OptimiseException('meetings different from meetings set'); | 
| 273 | -        foreach($meetingsAvailability as $key=>$meetingsAvailabilityS) { | |
| 273 | +        foreach ($meetingsAvailability as $key=>$meetingsAvailabilityS) { | |
| 274 | 274 | $timeSlots = array_keys($meetingsAvailabilityS); | 
| 275 | - if(count($timeSlots) != $this->timeSlots) | |
| 275 | + if (count($timeSlots) != $this->timeSlots) | |
| 276 | 276 |                  throw new OptimiseException('timeSlots different from timeSlots set'); | 
| 277 | - $meetingsAvailability[$key] = self::arrayPad($meetingsAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | |
| 277 | + $meetingsAvailability[ $key ] = self::arrayPad($meetingsAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | |
| 278 | 278 | } | 
| 279 | 279 | |
| 280 | 280 | $this->meetingsAvailability = $meetingsAvailability; | 
| @@ -297,13 +297,13 @@ discard block | ||
| 297 | 297 | public function setMeetingsDuration($meetingsDuration) | 
| 298 | 298 |      { | 
| 299 | 299 | $meetings = array_keys($meetingsDuration); | 
| 300 | -        if(array_diff($meetings, $this->meetings)) { | |
| 300 | +        if (array_diff($meetings, $this->meetings)) { | |
| 301 | 301 | print ""; | 
| 302 | 302 |              throw new OptimiseException('meetings different from meetings set'); | 
| 303 | 303 | } | 
| 304 | -        foreach($meetingsDuration as $duration) { | |
| 304 | +        foreach ($meetingsDuration as $duration) { | |
| 305 | 305 | $duration = (int) $duration; //TODO fix this (fix for optimise) | 
| 306 | - if(!is_int($duration) || $duration <=0) | |
| 306 | + if (!is_int($duration) || $duration <= 0) | |
| 307 | 307 |                  throw new OptimiseException('duration is not integer or it is not >0'); | 
| 308 | 308 | } | 
| 309 | 309 | |
| @@ -327,14 +327,14 @@ discard block | ||
| 327 | 327 | public function setUsersAvailability($usersAvailability) | 
| 328 | 328 |      { | 
| 329 | 329 | $users = array_keys($usersAvailability); | 
| 330 | - if(array_diff($users, $this->users)) | |
| 330 | + if (array_diff($users, $this->users)) | |
| 331 | 331 |              throw new OptimiseException('users different from users set'); | 
| 332 | -        foreach($usersAvailability as $key=>$usersAvailabilityS) { | |
| 332 | +        foreach ($usersAvailability as $key=>$usersAvailabilityS) { | |
| 333 | 333 | $timeSlots = array_keys($usersAvailabilityS); | 
| 334 | - if(count($timeSlots) != $this->timeSlots) | |
| 334 | + if (count($timeSlots) != $this->timeSlots) | |
| 335 | 335 |                  throw new OptimiseException('timeSlots different from timeSlots set'); | 
| 336 | 336 | |
| 337 | - $usersAvailability[$key] = self::arrayPad($usersAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | |
| 337 | + $usersAvailability[ $key ] = self::arrayPad($usersAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | |
| 338 | 338 | } | 
| 339 | 339 | |
| 340 | 340 | $this->usersAvailability = $usersAvailability; | 
| @@ -357,11 +357,11 @@ discard block | ||
| 357 | 357 | public function setUsersMeetings($usersMeetings) | 
| 358 | 358 |      { | 
| 359 | 359 | $users = array_keys($usersMeetings); | 
| 360 | - if(array_diff($users, $this->users)) | |
| 360 | + if (array_diff($users, $this->users)) | |
| 361 | 361 |              throw new OptimiseException('users different from users set'); | 
| 362 | -        foreach($usersMeetings as $usersMeetingsS) { | |
| 362 | +        foreach ($usersMeetings as $usersMeetingsS) { | |
| 363 | 363 | $meetings = array_keys($usersMeetingsS); | 
| 364 | - if(array_diff($meetings, $this->meetings)) | |
| 364 | + if (array_diff($meetings, $this->meetings)) | |
| 365 | 365 |                  throw new OptimiseException('meetings different from meetings set'); | 
| 366 | 366 | } | 
| 367 | 367 | |
| @@ -424,13 +424,13 @@ discard block | ||
| 424 | 424 | */ | 
| 425 | 425 | static private function writeCSVArrayNoKey($file, $data) | 
| 426 | 426 |      { | 
| 427 | -        $f = function ($fp, $data){ | |
| 427 | +        $f = function($fp, $data) { | |
| 428 | 428 |              foreach ($data as $field) { | 
| 429 | - fputcsv($fp, [$field]); | |
| 429 | + fputcsv($fp, [ $field ]); | |
| 430 | 430 | } | 
| 431 | 431 | }; | 
| 432 | 432 | |
| 433 | - self::writeCSV($file, $data, ['i'], $f); | |
| 433 | + self::writeCSV($file, $data, [ 'i' ], $f); | |
| 434 | 434 | } | 
| 435 | 435 | |
| 436 | 436 | /** | 
| @@ -441,13 +441,13 @@ discard block | ||
| 441 | 441 | */ | 
| 442 | 442 | static private function writeCSVArray($file, $data, $name) | 
| 443 | 443 |      { | 
| 444 | -        $f = function ($fp, $data){ | |
| 444 | +        $f = function($fp, $data) { | |
| 445 | 445 |              foreach ($data as $key=>$field) { | 
| 446 | - fputcsv($fp, [$key, $field]); | |
| 446 | + fputcsv($fp, [ $key, $field ]); | |
| 447 | 447 | } | 
| 448 | 448 | }; | 
| 449 | 449 | |
| 450 | - self::writeCSV($file, $data, ['i', $name], $f); | |
| 450 | + self::writeCSV($file, $data, [ 'i', $name ], $f); | |
| 451 | 451 | } | 
| 452 | 452 | |
| 453 | 453 | /** | 
| @@ -458,14 +458,14 @@ discard block | ||
| 458 | 458 | */ | 
| 459 | 459 | static private function writeCSVMatrix($file, $data, $name) | 
| 460 | 460 |      { | 
| 461 | -        $f = function ($fp, $data){ | |
| 461 | +        $f = function($fp, $data) { | |
| 462 | 462 |              foreach ($data as $key=>$field) { | 
| 463 | 463 | foreach ($field as $key2=>$field2) | 
| 464 | - fputcsv($fp, [$key, $key2, $field2]); | |
| 464 | + fputcsv($fp, [ $key, $key2, $field2 ]); | |
| 465 | 465 | } | 
| 466 | 466 | }; | 
| 467 | 467 | |
| 468 | - self::writeCSV($file, $data, ['i', 'j', $name], $f); | |
| 468 | + self::writeCSV($file, $data, [ 'i', 'j', $name ], $f); | |
| 469 | 469 | } | 
| 470 | 470 | |
| 471 | 471 | /** | 
| @@ -478,7 +478,7 @@ discard block | ||
| 478 | 478 | static private function writeCSV($file, $data, $heading, \Closure $writer) | 
| 479 | 479 |      { | 
| 480 | 480 | $fp = @fopen($file, 'w'); | 
| 481 | - if(!$fp) | |
| 481 | + if (!$fp) | |
| 482 | 482 |              throw new OptimiseException('problem during creation of a file'); | 
| 483 | 483 | |
| 484 | 484 | fputcsv($fp, $heading); | 
| @@ -498,8 +498,8 @@ discard block | ||
| 498 | 498 |      { | 
| 499 | 499 | $this->writeData(); | 
| 500 | 500 | $this->writeModelFile(); | 
| 501 | -        $event = $this->schedule->exec('glpsol --math '.$this->getModelPath())->sendOutputTo($this->getOutputPath())->after(function () { }); //this just to execute in foreground | |
| 502 | - if($event->isDue($this->laravel)) | |
| 501 | +        $event = $this->schedule->exec('glpsol --math '.$this->getModelPath())->sendOutputTo($this->getOutputPath())->after(function() { }); //this just to execute in foreground | |
| 502 | + if ($event->isDue($this->laravel)) | |
| 503 | 503 | $event->run($this->laravel); | 
| 504 | 504 | //TODO catch glpsol errors | 
| 505 | 505 | return $this; | 
| @@ -513,9 +513,9 @@ discard block | ||
| 513 | 513 |          $strReplaceS = array('{USERS_PATH}', '{MEETINGS_PATH}', '{USER_AVAILABILITY_PATH}', '{MEETINGS_AVAILABILITY_PATH}', '{USER_MEETINGS_PATH}', '{MEETINGS_DURATION_PATH}', '{TIME_SLOTS}', '{MAX_TIME_SLOTS}', '{X_OUT_PATH}', '{Y_OUT_PATH}'); | 
| 514 | 514 | $strReplaceR = array($this->getUsersPath(), $this->getMeetingsPath(), $this->getUsersAvailabilityPath(), $this->getMeetingsAvailabilityPath(), $this->getUsersMeetingsPath(), $this->getMeetingsDurationPath(), $this->timeSlots, $this->maxTimeSlots, $this->getXPath(), $this->getYPath()); | 
| 515 | 515 | $f = @fopen($this->getModelPath(), "w"); | 
| 516 | - if(!$f) | |
| 516 | + if (!$f) | |
| 517 | 517 |              throw new OptimiseException('problem during creation of a file'); | 
| 518 | - fwrite($f, str_replace($strReplaceS, $strReplaceR, file_get_contents(__DIR__ . "/model.stub"))); | |
| 518 | + fwrite($f, str_replace($strReplaceS, $strReplaceR, file_get_contents(__DIR__."/model.stub"))); | |
| 519 | 519 | fclose($f); | 
| 520 | 520 | } | 
| 521 | 521 | |
| @@ -543,7 +543,7 @@ discard block | ||
| 543 | 543 | */ | 
| 544 | 544 | public function getOutput() | 
| 545 | 545 |      { | 
| 546 | - if(!($data = file_get_contents($this->getOutputPath()))) | |
| 546 | + if (!($data = file_get_contents($this->getOutputPath()))) | |
| 547 | 547 |              throw new OptimiseException('problems during reading the file'); | 
| 548 | 548 | return $data; | 
| 549 | 549 | } | 
| @@ -555,22 +555,22 @@ discard block | ||
| 555 | 555 | */ | 
| 556 | 556 | static private function readCSVFile($file) | 
| 557 | 557 |      { | 
| 558 | - if(!file_exists($file) || !filesize($file)) | |
| 558 | + if (!file_exists($file) || !filesize($file)) | |
| 559 | 559 |              throw new OptimiseException('no results file'); | 
| 560 | 560 | |
| 561 | - $handle = @fopen($file,"r"); | |
| 562 | - if(!$handle) | |
| 561 | + $handle = @fopen($file, "r"); | |
| 562 | + if (!$handle) | |
| 563 | 563 |              throw new OptimiseException('problems during reading the file'); | 
| 564 | 564 | |
| 565 | - $ret = []; | |
| 565 | + $ret = [ ]; | |
| 566 | 566 | fgetcsv($handle); //skip head | 
| 567 | 567 |          while (($data = fgetcsv($handle)) !== FALSE) { | 
| 568 | -            if(count($data) != 3) { | |
| 568 | +            if (count($data) != 3) { | |
| 569 | 569 | fclose($handle); | 
| 570 | 570 |                  throw new OptimiseException('problems during parsing the file'); | 
| 571 | 571 | } | 
| 572 | 572 | |
| 573 | - $ret[$data[0]][$data[1]] = $data[2]; | |
| 573 | + $ret[ $data[ 0 ] ][ $data[ 1 ] ] = $data[ 2 ]; | |
| 574 | 574 | } | 
| 575 | 575 | |
| 576 | 576 | fclose($handle); | 
| @@ -677,8 +677,8 @@ discard block | ||
| 677 | 677 | */ | 
| 678 | 678 | private function checkData() | 
| 679 | 679 |      { | 
| 680 | - $this->checkArrayProprieties(['users', 'meetings', 'meetingsAvailability', 'meetingsDuration', 'usersAvailability', 'usersMeetings']); | |
| 681 | - $this->checkIntProprieties(['timeSlots', 'maxTimeSlots']); | |
| 680 | + $this->checkArrayProprieties([ 'users', 'meetings', 'meetingsAvailability', 'meetingsDuration', 'usersAvailability', 'usersMeetings' ]); | |
| 681 | + $this->checkIntProprieties([ 'timeSlots', 'maxTimeSlots' ]); | |
| 682 | 682 | } | 
| 683 | 683 | |
| 684 | 684 | /** | 
| @@ -687,8 +687,8 @@ discard block | ||
| 687 | 687 | */ | 
| 688 | 688 | private function checkArrayProprieties($proprieties) | 
| 689 | 689 |      { | 
| 690 | - foreach($proprieties as $propriety) | |
| 691 | - if(count($this->$propriety)==0) | |
| 690 | + foreach ($proprieties as $propriety) | |
| 691 | + if (count($this->$propriety) == 0) | |
| 692 | 692 | throw new OptimiseException($propriety.' is not set correctly'); | 
| 693 | 693 | } | 
| 694 | 694 | |
| @@ -698,8 +698,8 @@ discard block | ||
| 698 | 698 | */ | 
| 699 | 699 | private function checkIntProprieties($proprieties) | 
| 700 | 700 |      { | 
| 701 | - foreach($proprieties as $propriety) | |
| 702 | - if(!is_int($this->$propriety) || $this->$propriety <= 0) | |
| 701 | + foreach ($proprieties as $propriety) | |
| 702 | + if (!is_int($this->$propriety) || $this->$propriety <= 0) | |
| 703 | 703 | throw new OptimiseException($propriety.' is not set correctly'); | 
| 704 | 704 | } | 
| 705 | 705 | |
| @@ -712,8 +712,8 @@ discard block | ||
| 712 | 712 | static private function arrayPad(array $array, $len, $pad) | 
| 713 | 713 |      { | 
| 714 | 714 | $len = $len - count($array); | 
| 715 | - for($i = 0; $i<$len; $i++) | |
| 716 | - $array[] = $pad; | |
| 715 | + for ($i = 0; $i < $len; $i++) | |
| 716 | + $array[ ] = $pad; | |
| 717 | 717 | return $array; | 
| 718 | 718 | } | 
| 719 | 719 | } | 
| 720 | 720 | \ No newline at end of file | 
| @@ -104,8 +104,9 @@ discard block | ||
| 104 | 104 | */ | 
| 105 | 105 | function __destruct() | 
| 106 | 106 |      { | 
| 107 | - if ($this->path && is_dir($this->path) && !self::delTree($this->path)) | |
| 108 | -            throw new OptimiseException('problems during removing of path directory'); | |
| 107 | +        if ($this->path && is_dir($this->path) && !self::delTree($this->path)) { | |
| 108 | +                    throw new OptimiseException('problems during removing of path directory'); | |
| 109 | + } | |
| 109 | 110 | } | 
| 110 | 111 | |
| 111 | 112 | /** | 
| @@ -113,8 +114,9 @@ discard block | ||
| 113 | 114 | */ | 
| 114 | 115 | static private function checkGlpsol() | 
| 115 | 116 |      { | 
| 116 | - if(!(`which glpsol`)) | |
| 117 | -            throw new OptimiseException('glpsol is not installed'); | |
| 117 | +        if(!(`which glpsol`)) { | |
| 118 | +                    throw new OptimiseException('glpsol is not installed'); | |
| 119 | + } | |
| 118 | 120 | } | 
| 119 | 121 | |
| 120 | 122 | /** | 
| @@ -138,12 +140,16 @@ discard block | ||
| 138 | 140 |      { | 
| 139 | 141 | $this->path = tempnam(sys_get_temp_dir(), 'OPT'); //TODO check the return in case of errors this return false on failure | 
| 140 | 142 | unlink($this->path); //remove file to create a dir | 
| 141 | - if(file_exists($this->path)) | |
| 142 | -            throw new OptimiseException('problem during creation of tmp dir (the directory already exists)'); | |
| 143 | - if(!@mkdir($this->path)) | |
| 144 | -            throw new OptimiseException('problem during creation of tmp dir (mkdir problem)');; | |
| 145 | - if(! is_dir($this->path)) | |
| 146 | -            throw new OptimiseException('problem during creation of tmp dir (it is not possible to create directory)'); | |
| 143 | +        if(file_exists($this->path)) { | |
| 144 | +                    throw new OptimiseException('problem during creation of tmp dir (the directory already exists)'); | |
| 145 | + } | |
| 146 | +        if(!@mkdir($this->path)) { | |
| 147 | +                    throw new OptimiseException('problem during creation of tmp dir (mkdir problem)'); | |
| 148 | + } | |
| 149 | + ; | |
| 150 | +        if(! is_dir($this->path)) { | |
| 151 | +                    throw new OptimiseException('problem during creation of tmp dir (it is not possible to create directory)'); | |
| 152 | + } | |
| 147 | 153 | } | 
| 148 | 154 | |
| 149 | 155 | /** | 
| @@ -223,8 +229,9 @@ discard block | ||
| 223 | 229 | */ | 
| 224 | 230 | public function setTimeSlots($timeSlots) | 
| 225 | 231 |      { | 
| 226 | - if(!is_int($timeSlots) || $timeSlots <=0) | |
| 227 | -            throw new OptimiseException('$timeSlots is not integer or it is not >0'); | |
| 232 | +        if(!is_int($timeSlots) || $timeSlots <=0) { | |
| 233 | +                    throw new OptimiseException('$timeSlots is not integer or it is not >0'); | |
| 234 | + } | |
| 228 | 235 | |
| 229 | 236 | $this->timeSlots = $timeSlots; | 
| 230 | 237 | return $this; | 
| @@ -245,8 +252,9 @@ discard block | ||
| 245 | 252 | */ | 
| 246 | 253 | public function setMaxTimeSlots($maxTimeSlots) | 
| 247 | 254 |      { | 
| 248 | - if(!is_int($maxTimeSlots) || $maxTimeSlots <=0) | |
| 249 | -            throw new OptimiseException('$maxTimeSlots is not integer or it is not >0'); | |
| 255 | +        if(!is_int($maxTimeSlots) || $maxTimeSlots <=0) { | |
| 256 | +                    throw new OptimiseException('$maxTimeSlots is not integer or it is not >0'); | |
| 257 | + } | |
| 250 | 258 | |
| 251 | 259 | $this->maxTimeSlots = $maxTimeSlots; | 
| 252 | 260 | return $this; | 
| @@ -268,12 +276,14 @@ discard block | ||
| 268 | 276 | public function setMeetingsAvailability($meetingsAvailability) | 
| 269 | 277 |      { | 
| 270 | 278 | $meetings = array_keys($meetingsAvailability); | 
| 271 | - if(array_diff($meetings, $this->meetings)) | |
| 272 | -            throw new OptimiseException('meetings different from meetings set'); | |
| 279 | +        if(array_diff($meetings, $this->meetings)) { | |
| 280 | +                    throw new OptimiseException('meetings different from meetings set'); | |
| 281 | + } | |
| 273 | 282 |          foreach($meetingsAvailability as $key=>$meetingsAvailabilityS) { | 
| 274 | 283 | $timeSlots = array_keys($meetingsAvailabilityS); | 
| 275 | - if(count($timeSlots) != $this->timeSlots) | |
| 276 | -                throw new OptimiseException('timeSlots different from timeSlots set'); | |
| 284 | +            if(count($timeSlots) != $this->timeSlots) { | |
| 285 | +                            throw new OptimiseException('timeSlots different from timeSlots set'); | |
| 286 | + } | |
| 277 | 287 | $meetingsAvailability[$key] = self::arrayPad($meetingsAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | 
| 278 | 288 | } | 
| 279 | 289 | |
| @@ -303,8 +313,9 @@ discard block | ||
| 303 | 313 | } | 
| 304 | 314 |          foreach($meetingsDuration as $duration) { | 
| 305 | 315 | $duration = (int) $duration; //TODO fix this (fix for optimise) | 
| 306 | - if(!is_int($duration) || $duration <=0) | |
| 307 | -                throw new OptimiseException('duration is not integer or it is not >0'); | |
| 316 | +            if(!is_int($duration) || $duration <=0) { | |
| 317 | +                            throw new OptimiseException('duration is not integer or it is not >0'); | |
| 318 | + } | |
| 308 | 319 | } | 
| 309 | 320 | |
| 310 | 321 | $this->meetingsDuration = $meetingsDuration; | 
| @@ -327,12 +338,14 @@ discard block | ||
| 327 | 338 | public function setUsersAvailability($usersAvailability) | 
| 328 | 339 |      { | 
| 329 | 340 | $users = array_keys($usersAvailability); | 
| 330 | - if(array_diff($users, $this->users)) | |
| 331 | -            throw new OptimiseException('users different from users set'); | |
| 341 | +        if(array_diff($users, $this->users)) { | |
| 342 | +                    throw new OptimiseException('users different from users set'); | |
| 343 | + } | |
| 332 | 344 |          foreach($usersAvailability as $key=>$usersAvailabilityS) { | 
| 333 | 345 | $timeSlots = array_keys($usersAvailabilityS); | 
| 334 | - if(count($timeSlots) != $this->timeSlots) | |
| 335 | -                throw new OptimiseException('timeSlots different from timeSlots set'); | |
| 346 | +            if(count($timeSlots) != $this->timeSlots) { | |
| 347 | +                            throw new OptimiseException('timeSlots different from timeSlots set'); | |
| 348 | + } | |
| 336 | 349 | |
| 337 | 350 | $usersAvailability[$key] = self::arrayPad($usersAvailabilityS, $this->timeSlots + $this->maxTimeSlots, 0); | 
| 338 | 351 | } | 
| @@ -357,12 +370,14 @@ discard block | ||
| 357 | 370 | public function setUsersMeetings($usersMeetings) | 
| 358 | 371 |      { | 
| 359 | 372 | $users = array_keys($usersMeetings); | 
| 360 | - if(array_diff($users, $this->users)) | |
| 361 | -            throw new OptimiseException('users different from users set'); | |
| 373 | +        if(array_diff($users, $this->users)) { | |
| 374 | +                    throw new OptimiseException('users different from users set'); | |
| 375 | + } | |
| 362 | 376 |          foreach($usersMeetings as $usersMeetingsS) { | 
| 363 | 377 | $meetings = array_keys($usersMeetingsS); | 
| 364 | - if(array_diff($meetings, $this->meetings)) | |
| 365 | -                throw new OptimiseException('meetings different from meetings set'); | |
| 378 | +            if(array_diff($meetings, $this->meetings)) { | |
| 379 | +                            throw new OptimiseException('meetings different from meetings set'); | |
| 380 | + } | |
| 366 | 381 | } | 
| 367 | 382 | |
| 368 | 383 | $this->usersMeetings = $usersMeetings; | 
| @@ -460,8 +475,9 @@ discard block | ||
| 460 | 475 |      { | 
| 461 | 476 |          $f = function ($fp, $data){ | 
| 462 | 477 |              foreach ($data as $key=>$field) { | 
| 463 | - foreach ($field as $key2=>$field2) | |
| 464 | - fputcsv($fp, [$key, $key2, $field2]); | |
| 478 | +                foreach ($field as $key2=>$field2) { | |
| 479 | + fputcsv($fp, [$key, $key2, $field2]); | |
| 480 | + } | |
| 465 | 481 | } | 
| 466 | 482 | }; | 
| 467 | 483 | |
| @@ -478,8 +494,9 @@ discard block | ||
| 478 | 494 | static private function writeCSV($file, $data, $heading, \Closure $writer) | 
| 479 | 495 |      { | 
| 480 | 496 | $fp = @fopen($file, 'w'); | 
| 481 | - if(!$fp) | |
| 482 | -            throw new OptimiseException('problem during creation of a file'); | |
| 497 | +        if(!$fp) { | |
| 498 | +                    throw new OptimiseException('problem during creation of a file'); | |
| 499 | + } | |
| 483 | 500 | |
| 484 | 501 | fputcsv($fp, $heading); | 
| 485 | 502 | |
| @@ -499,8 +516,9 @@ discard block | ||
| 499 | 516 | $this->writeData(); | 
| 500 | 517 | $this->writeModelFile(); | 
| 501 | 518 |          $event = $this->schedule->exec('glpsol --math '.$this->getModelPath())->sendOutputTo($this->getOutputPath())->after(function () { }); //this just to execute in foreground | 
| 502 | - if($event->isDue($this->laravel)) | |
| 503 | - $event->run($this->laravel); | |
| 519 | +        if($event->isDue($this->laravel)) { | |
| 520 | + $event->run($this->laravel); | |
| 521 | + } | |
| 504 | 522 | //TODO catch glpsol errors | 
| 505 | 523 | return $this; | 
| 506 | 524 | } | 
| @@ -513,8 +531,9 @@ discard block | ||
| 513 | 531 |          $strReplaceS = array('{USERS_PATH}', '{MEETINGS_PATH}', '{USER_AVAILABILITY_PATH}', '{MEETINGS_AVAILABILITY_PATH}', '{USER_MEETINGS_PATH}', '{MEETINGS_DURATION_PATH}', '{TIME_SLOTS}', '{MAX_TIME_SLOTS}', '{X_OUT_PATH}', '{Y_OUT_PATH}'); | 
| 514 | 532 | $strReplaceR = array($this->getUsersPath(), $this->getMeetingsPath(), $this->getUsersAvailabilityPath(), $this->getMeetingsAvailabilityPath(), $this->getUsersMeetingsPath(), $this->getMeetingsDurationPath(), $this->timeSlots, $this->maxTimeSlots, $this->getXPath(), $this->getYPath()); | 
| 515 | 533 | $f = @fopen($this->getModelPath(), "w"); | 
| 516 | - if(!$f) | |
| 517 | -            throw new OptimiseException('problem during creation of a file'); | |
| 534 | +        if(!$f) { | |
| 535 | +                    throw new OptimiseException('problem during creation of a file'); | |
| 536 | + } | |
| 518 | 537 | fwrite($f, str_replace($strReplaceS, $strReplaceR, file_get_contents(__DIR__ . "/model.stub"))); | 
| 519 | 538 | fclose($f); | 
| 520 | 539 | } | 
| @@ -543,8 +562,9 @@ discard block | ||
| 543 | 562 | */ | 
| 544 | 563 | public function getOutput() | 
| 545 | 564 |      { | 
| 546 | - if(!($data = file_get_contents($this->getOutputPath()))) | |
| 547 | -            throw new OptimiseException('problems during reading the file'); | |
| 565 | +        if(!($data = file_get_contents($this->getOutputPath()))) { | |
| 566 | +                    throw new OptimiseException('problems during reading the file'); | |
| 567 | + } | |
| 548 | 568 | return $data; | 
| 549 | 569 | } | 
| 550 | 570 | |
| @@ -555,12 +575,14 @@ discard block | ||
| 555 | 575 | */ | 
| 556 | 576 | static private function readCSVFile($file) | 
| 557 | 577 |      { | 
| 558 | - if(!file_exists($file) || !filesize($file)) | |
| 559 | -            throw new OptimiseException('no results file'); | |
| 578 | +        if(!file_exists($file) || !filesize($file)) { | |
| 579 | +                    throw new OptimiseException('no results file'); | |
| 580 | + } | |
| 560 | 581 | |
| 561 | 582 | $handle = @fopen($file,"r"); | 
| 562 | - if(!$handle) | |
| 563 | -            throw new OptimiseException('problems during reading the file'); | |
| 583 | +        if(!$handle) { | |
| 584 | +                    throw new OptimiseException('problems during reading the file'); | |
| 585 | + } | |
| 564 | 586 | |
| 565 | 587 | $ret = []; | 
| 566 | 588 | fgetcsv($handle); //skip head | 
| @@ -687,9 +709,10 @@ discard block | ||
| 687 | 709 | */ | 
| 688 | 710 | private function checkArrayProprieties($proprieties) | 
| 689 | 711 |      { | 
| 690 | - foreach($proprieties as $propriety) | |
| 691 | - if(count($this->$propriety)==0) | |
| 712 | +        foreach($proprieties as $propriety) { | |
| 713 | + if(count($this->$propriety)==0) | |
| 692 | 714 | throw new OptimiseException($propriety.' is not set correctly'); | 
| 715 | + } | |
| 693 | 716 | } | 
| 694 | 717 | |
| 695 | 718 | /** | 
| @@ -698,9 +721,10 @@ discard block | ||
| 698 | 721 | */ | 
| 699 | 722 | private function checkIntProprieties($proprieties) | 
| 700 | 723 |      { | 
| 701 | - foreach($proprieties as $propriety) | |
| 702 | - if(!is_int($this->$propriety) || $this->$propriety <= 0) | |
| 724 | +        foreach($proprieties as $propriety) { | |
| 725 | + if(!is_int($this->$propriety) || $this->$propriety <= 0) | |
| 703 | 726 | throw new OptimiseException($propriety.' is not set correctly'); | 
| 727 | + } | |
| 704 | 728 | } | 
| 705 | 729 | |
| 706 | 730 | /** | 
| @@ -712,8 +736,9 @@ discard block | ||
| 712 | 736 | static private function arrayPad(array $array, $len, $pad) | 
| 713 | 737 |      { | 
| 714 | 738 | $len = $len - count($array); | 
| 715 | - for($i = 0; $i<$len; $i++) | |
| 716 | - $array[] = $pad; | |
| 739 | +        for($i = 0; $i<$len; $i++) { | |
| 740 | + $array[] = $pad; | |
| 741 | + } | |
| 717 | 742 | return $array; | 
| 718 | 743 | } | 
| 719 | 744 | } | 
| 720 | 745 | \ No newline at end of file | 
| @@ -3,8 +3,6 @@ | ||
| 3 | 3 | namespace plunner\Listeners; | 
| 4 | 4 | |
| 5 | 5 | use plunner\Events\CaldavErrorEvent; | 
| 6 | -use Illuminate\Queue\InteractsWithQueue; | |
| 7 | -use Illuminate\Contracts\Queue\ShouldQueue; | |
| 8 | 6 | |
| 9 | 7 | class CaldavErrorListener | 
| 10 | 8 |  { | 
| @@ -3,8 +3,6 @@ | ||
| 3 | 3 | namespace plunner\Listeners; | 
| 4 | 4 | |
| 5 | 5 | use plunner\Events\CaldavErrorEvent; | 
| 6 | -use Illuminate\Queue\InteractsWithQueue; | |
| 7 | -use Illuminate\Contracts\Queue\ShouldQueue; | |
| 8 | 6 | |
| 9 | 7 | class CaldavErrorListener | 
| 10 | 8 |  { | 
| @@ -32,8 +32,8 @@ | ||
| 32 | 32 | protected $description = 'Optimise meetings'; | 
| 33 | 33 | |
| 34 | 34 | /** | 
| 35 | - * @var Schedule laravel schedule object needed to perform command in background | |
| 36 | - */ | |
| 35 | + * @var Schedule laravel schedule object needed to perform command in background | |
| 36 | + */ | |
| 37 | 37 | private $schedule; | 
| 38 | 38 | |
| 39 | 39 | /** | 
| @@ -62,7 +62,7 @@ discard block | ||
| 62 | 62 | |
| 63 | 63 | //TODO try...catch with destruct | 
| 64 | 64 |          $companyId = $this->argument('companyId'); | 
| 65 | - if(is_numeric($companyId)) | |
| 65 | + if (is_numeric($companyId)) | |
| 66 | 66 | $this->makeForeground(Company::findOrFail($companyId)); | 
| 67 | 67 | else | 
| 68 | 68 | $this->syncAll(); | 
| @@ -71,15 +71,15 @@ discard block | ||
| 71 | 71 | private function syncAll() | 
| 72 | 72 |      { | 
| 73 | 73 | $calendars = Caldav::all(); | 
| 74 | -        if($this->option('background')) { | |
| 74 | +        if ($this->option('background')) { | |
| 75 | 75 | \Log::debug(self::BACKGROUND_MOD_MEX); | 
| 76 | 76 | $this->info(self::BACKGROUND_MOD_MEX); | 
| 77 | 77 | foreach ($calendars as $calendar) | 
| 78 | 78 | $this->makeBackground($calendar); | 
| 79 | 79 | \Log::debug(self::BACKGROUND_COMPLETED_MEX); | 
| 80 | 80 | $this->info(self::BACKGROUND_COMPLETED_MEX); | 
| 81 | - }else | |
| 82 | - foreach($calendars as $calendar) | |
| 81 | + } else | |
| 82 | + foreach ($calendars as $calendar) | |
| 83 | 83 | $this->makeForeground($calendar); | 
| 84 | 84 | } | 
| 85 | 85 | |
| @@ -90,7 +90,7 @@ discard block | ||
| 90 | 90 | private function makeBackground(Company $company) | 
| 91 | 91 |      { | 
| 92 | 92 |          $event = $this->schedule->command('optimise:meetings '.$company->id)->withoutOverlapping(); | 
| 93 | - if($event->isDue($this->laravel)) | |
| 93 | + if ($event->isDue($this->laravel)) | |
| 94 | 94 | $event->run($this->laravel); | 
| 95 | 95 | } | 
| 96 | 96 | |
| @@ -100,8 +100,8 @@ discard block | ||
| 100 | 100 | */ | 
| 101 | 101 | private function makeForeground(Company $company) | 
| 102 | 102 |      { | 
| 103 | -        $this->info('Optimisation company '. $company->id.' started'); | |
| 103 | +        $this->info('Optimisation company '.$company->id.' started'); | |
| 104 | 104 | (new Optimise($company))->optimise()->save(); | 
| 105 | -        $this->info('Optimisation '. $company->id.' completed'); | |
| 105 | +        $this->info('Optimisation '.$company->id.' completed'); | |
| 106 | 106 | } | 
| 107 | 107 | } | 
| @@ -62,10 +62,11 @@ discard block | ||
| 62 | 62 | |
| 63 | 63 | //TODO try...catch with destruct | 
| 64 | 64 |          $companyId = $this->argument('companyId'); | 
| 65 | - if(is_numeric($companyId)) | |
| 66 | - $this->makeForeground(Company::findOrFail($companyId)); | |
| 67 | - else | |
| 68 | - $this->syncAll(); | |
| 65 | +        if(is_numeric($companyId)) { | |
| 66 | + $this->makeForeground(Company::findOrFail($companyId)); | |
| 67 | +        } else { | |
| 68 | + $this->syncAll(); | |
| 69 | + } | |
| 69 | 70 | } | 
| 70 | 71 | |
| 71 | 72 | private function syncAll() | 
| @@ -74,13 +75,15 @@ discard block | ||
| 74 | 75 |          if($this->option('background')) { | 
| 75 | 76 | \Log::debug(self::BACKGROUND_MOD_MEX); | 
| 76 | 77 | $this->info(self::BACKGROUND_MOD_MEX); | 
| 77 | - foreach ($calendars as $calendar) | |
| 78 | - $this->makeBackground($calendar); | |
| 78 | +            foreach ($calendars as $calendar) { | |
| 79 | + $this->makeBackground($calendar); | |
| 80 | + } | |
| 79 | 81 | \Log::debug(self::BACKGROUND_COMPLETED_MEX); | 
| 80 | 82 | $this->info(self::BACKGROUND_COMPLETED_MEX); | 
| 81 | - }else | |
| 82 | - foreach($calendars as $calendar) | |
| 83 | +        } else { | |
| 84 | + foreach($calendars as $calendar) | |
| 83 | 85 | $this->makeForeground($calendar); | 
| 86 | + } | |
| 84 | 87 | } | 
| 85 | 88 | |
| 86 | 89 | /** | 
| @@ -90,8 +93,9 @@ discard block | ||
| 90 | 93 | private function makeBackground(Company $company) | 
| 91 | 94 |      { | 
| 92 | 95 |          $event = $this->schedule->command('optimise:meetings '.$company->id)->withoutOverlapping(); | 
| 93 | - if($event->isDue($this->laravel)) | |
| 94 | - $event->run($this->laravel); | |
| 96 | +        if($event->isDue($this->laravel)) { | |
| 97 | + $event->run($this->laravel); | |
| 98 | + } | |
| 95 | 99 | } | 
| 96 | 100 | |
| 97 | 101 | /** | 
| @@ -1,21 +1,21 @@ | ||
| 1 | 1 | <?php | 
| 2 | 2 | /** | 
| 3 | - * Created by PhpStorm. | |
| 4 | - * User: Claudio Cardinale <[email protected]> | |
| 5 | - * Date: 07/12/15 | |
| 6 | - * Time: 21.24 | |
| 7 | - * This program is free software; you can redistribute it and/or | |
| 8 | - * modify it under the terms of the GNU General Public License | |
| 9 | - * as published by the Free Software Foundation; either version 2 | |
| 10 | - * of the License, or (at your option) any later version. | |
| 11 | - * This program is distributed in the hope that it will be useful, | |
| 12 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | - * GNU General Public License for more details. | |
| 15 | - * You should have received a copy of the GNU General Public License | |
| 16 | - * along with this program; if not, write to the Free Software | |
| 17 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 18 | - */ | |
| 3 | + * Created by PhpStorm. | |
| 4 | + * User: Claudio Cardinale <[email protected]> | |
| 5 | + * Date: 07/12/15 | |
| 6 | + * Time: 21.24 | |
| 7 | + * This program is free software; you can redistribute it and/or | |
| 8 | + * modify it under the terms of the GNU General Public License | |
| 9 | + * as published by the Free Software Foundation; either version 2 | |
| 10 | + * of the License, or (at your option) any later version. | |
| 11 | + * This program is distributed in the hope that it will be useful, | |
| 12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | + * GNU General Public License for more details. | |
| 15 | + * You should have received a copy of the GNU General Public License | |
| 16 | + * along with this program; if not, write to the Free Software | |
| 17 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 18 | + */ | |
| 19 | 19 | |
| 20 | 20 | namespace plunner\Console\Commands\Optimise; | 
| 21 | 21 | |
| @@ -39,6 +39,6 @@ | ||
| 39 | 39 | */ | 
| 40 | 40 | public function broadcastOn() | 
| 41 | 41 |      { | 
| 42 | - return []; | |
| 42 | + return [ ]; | |
| 43 | 43 | } | 
| 44 | 44 | } | 
| @@ -39,6 +39,6 @@ | ||
| 39 | 39 | */ | 
| 40 | 40 | public function broadcastOn() | 
| 41 | 41 |      { | 
| 42 | - return []; | |
| 42 | + return [ ]; | |
| 43 | 43 | } | 
| 44 | 44 | } | 
| @@ -48,14 +48,14 @@ discard block | ||
| 48 | 48 | * | 
| 49 | 49 | * @var array | 
| 50 | 50 | */ | 
| 51 | - protected $fillable = ['name', 'email', 'password']; | |
| 51 | + protected $fillable = [ 'name', 'email', 'password' ]; | |
| 52 | 52 | |
| 53 | 53 | /** | 
| 54 | 54 | * The attributes excluded from the model's JSON form. | 
| 55 | 55 | * | 
| 56 | 56 | * @var array | 
| 57 | 57 | */ | 
| 58 | - protected $hidden = ['password', 'remember_token']; | |
| 58 | + protected $hidden = [ 'password', 'remember_token' ]; | |
| 59 | 59 | |
| 60 | 60 | /** | 
| 61 | 61 | * @return \Illuminate\Database\Eloquent\Relations\HasMany | 
| @@ -120,8 +120,8 @@ discard block | ||
| 120 | 120 |              ->where('calendars.enabled', '=', '1') | 
| 121 | 121 |              ->where('timeslots.time_start', '>=', $from) | 
| 122 | 122 |              ->where('timeslots.time_end', '<=', $to) | 
| 123 | -            ->where('employees.company_id','=', $this->id) | |
| 124 | -            ->select('employees.id','timeslots.time_start','timeslots.time_end') | |
| 123 | +            ->where('employees.company_id', '=', $this->id) | |
| 124 | +            ->select('employees.id', 'timeslots.time_start', 'timeslots.time_end') | |
| 125 | 125 | ->get(); | 
| 126 | 126 | } | 
| 127 | 127 | |
| @@ -137,9 +137,9 @@ discard block | ||
| 137 | 137 |              ->join('meeting_timeslots', 'meetings.id', '=', 'meeting_timeslots.meeting_id') | 
| 138 | 138 |              ->where('meeting_timeslots.time_start', '>=', $from) | 
| 139 | 139 |              ->where('meeting_timeslots.time_end', '<=', $to) | 
| 140 | -            ->where('groups.company_id','=', $this->id) | |
| 141 | -            ->where('meetings.start_time','=', NULL) | |
| 142 | -            ->select('meetings.id', 'meetings.duration','meeting_timeslots.time_start','meeting_timeslots.time_end') | |
| 140 | +            ->where('groups.company_id', '=', $this->id) | |
| 141 | +            ->where('meetings.start_time', '=', NULL) | |
| 142 | +            ->select('meetings.id', 'meetings.duration', 'meeting_timeslots.time_start', 'meeting_timeslots.time_end') | |
| 143 | 143 | ->get(); | 
| 144 | 144 | } | 
| 145 | 145 | |
| @@ -151,8 +151,8 @@ discard block | ||
| 151 | 151 |              ->join('employees', 'employee_group.employee_id', '=', 'employees.id') | 
| 152 | 152 |              ->whereIn('employees.id', $users) | 
| 153 | 153 |              ->whereIn('meetings.id', $meetings) | 
| 154 | -            ->where('groups.company_id','=', $this->id) //this is not needed | |
| 155 | -            ->where('employees.company_id','=', $this->id) //this is not needed | |
| 154 | +            ->where('groups.company_id', '=', $this->id) //this is not needed | |
| 155 | +            ->where('employees.company_id', '=', $this->id) //this is not needed | |
| 156 | 156 |              ->select('employees.id as employee_id', 'meetings.id as meeting_id') | 
| 157 | 157 | ->get(); | 
| 158 | 158 | } |