addRequiredInput(array( 'Filter' => array( 'group' => 'Id', 'region' => 'Id', 'regionalManager' => 'Array' ) )); 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 groupDivision.{id,name} ' . 'FROM Company\Entity\GroupDivision groupDivision ' . 'JOIN groupDivision.group grp ' . 'JOIN grp.regionalManagers regionalManager ' . 'JOIN groupDivision.companies company ' . 'WHERE IDENTITY(groupDivision.group) = :groupId ' . ' AND regionalManager.id IN (:regionalManagerId) ' . ' AND IDENTITY(company.region) = :regionId ' . 'ORDER BY groupDivision.name ASC' ) ->setParameter('groupId', $contract->data->Filter['group']) ->setParameter('regionalManagerId', $contract->data->Filter['regionalManager']) ->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['name'] ); } return $contract->success( 'List retrieved.', $data ); } }