/** * @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; }