Sulu\Bundle\ContactBundle\Controller\AccountController::getContactsAction PHP Метод

getContactsAction() публичный Метод

optional parameter 'flat' calls listAction.
public getContactsAction ( integer $id, Request $request ) : Response
$id integer
$request Symfony\Component\HttpFoundation\Request
Результат Symfony\Component\HttpFoundation\Response
    public function getContactsAction($id, Request $request)
    {
        if ($request->get('flat') == 'true') {
            /* @var AccountInterface $account */
            $account = $this->getDoctrine()->getRepository($this->getAccountEntityName())->find($id);
            /** @var RestHelperInterface $restHelper */
            $restHelper = $this->getRestHelper();
            /** @var DoctrineListBuilderFactory $factory */
            $factory = $this->get('sulu_core.doctrine_list_builder_factory');
            $listBuilder = $factory->create(self::$accountContactEntityName);
            $fieldDescriptors = $this->getAccountContactFieldDescriptors();
            $restHelper->initializeListBuilder($listBuilder, $fieldDescriptors);
            $listBuilder->addSelectField($fieldDescriptors['contactId']);
            $listBuilder->setIdField($fieldDescriptors['id']);
            $listBuilder->where($fieldDescriptors['account'], $id);
            $listBuilder->sort($fieldDescriptors['lastName'], $listBuilder::SORTORDER_ASC);
            $values = $listBuilder->execute();
            foreach ($values as &$value) {
                // Substitute id since we are interested in the contact id not the accountContact id.
                $value['id'] = $value['contactId'];
                unset($value['contactId']);
                if ($account->getMainContact() != null && $value['id'] === $account->getMainContact()->getId()) {
                    $value['isMainContact'] = true;
                } else {
                    $value['isMainContact'] = false;
                }
            }
            $list = new ListRepresentation($values, 'contacts', 'get_account_contacts', array_merge(['id' => $id], $request->query->all()), $listBuilder->getCurrentPage(), $listBuilder->getLimit(), $listBuilder->count());
        } else {
            $contactManager = $this->getAccountManager();
            $locale = $this->getUser()->getLocale();
            $contacts = $contactManager->findContactsByAccountId($id, $locale, false);
            $list = new CollectionRepresentation($contacts, self::$contactEntityKey);
        }
        $view = $this->view($list, 200);
        return $this->handleView($view);
    }