addRequiredInput(array( 'Filter' => array( 'group' => 'Id', 'region' => 'Id' ) )); return new \Workspace\Contract\Recurring($options, $requirement); } /** * A custom select list. * @param object|null $jobRecord * @param \Workspace\Utility\ServiceInputParams $contract * @return array */ public function executeJoinedSelectList($jobRecord, \Workspace\Utility\ServiceInputParams $contract) { $items = $this->em->createQuery( 'SELECT partial regionalManager.{id,firstName,familyName} ' . 'FROM Config\Entity\RegionalManager regionalManager ' . 'JOIN regionalManager.group grp ' . 'JOIN grp.companies company ' . 'WHERE IDENTITY(regionalManager.group) = :groupId ' . ' AND IDENTITY(company.region) = :regionId ' . 'ORDER BY regionalManager.firstName, regionalManager.familyName ASC' ) ->setParameter('groupId', $contract->data->Filter['group']) ->setParameter('regionId', $contract->data->Filter['region']) ->getArrayResult(); $data = array(); $ids = array(); foreach ($items as $item) { if (isset($ids[$item['id']])) { continue; } $ids[$item['id']] = true; $data[] = array( 'value' => $item['id'], 'label' => $item['firstName'] . ' ' . $item['familyName'] ); } return $contract->success( 'List retrieved.', $data ); } }