Exemple #1
0
 /**
  * @step
  */
 public function bookJobsForWorkers()
 {
     $roster = $this->db->selectCollection('roster');
     $scheduled = $this->db->selectCollection('scheduled');
     $workersPerUnit = 42;
     $bookedJobs = [];
     foreach (Worker::pickAvailableWorkers($roster, $workersPerUnit) as $resultRow) {
         list($worksOn, $workers) = $resultRow;
         $result = Job::pickReadyJobsForWorkers($scheduled, $worksOn, $workers);
         if ($result) {
             list($worksOn, $workers, $jobs) = $result;
             list($assignments, $jobs, $workers) = $this->combineJobsWithWorkers($jobs, $workers);
             Job::lockAll($scheduled, $jobs);
             $bookedJobs[] = [$jobs, $workers];
         }
     }
     return $bookedJobs;
 }