PhalconRest\Export\Documentation::addCollection PHP Method

addCollection() public method

public addCollection ( ApiCollection $apiCollection )
$apiCollection PhalconRest\Api\ApiCollection
    public function addCollection(ApiCollection $apiCollection)
    {
        $aclRoles = $this->acl->getRoles();
        $collection = new DocumentationCollection();
        $collection->setName($apiCollection->getName());
        $collection->setDescription($apiCollection->getDescription());
        $collection->setPath($apiCollection->getPrefix());
        // Set fields
        if ($apiCollection instanceof ApiResource) {
            if ($modelClass = $apiCollection->getModel()) {
                if ($transformerClass = $apiCollection->getTransformer()) {
                    /** @var ModelTransformer $transformer */
                    $transformer = new $transformerClass();
                    if ($transformer instanceof ModelTransformer) {
                        $transformer->setModelClass($modelClass);
                        $responseFields = $transformer->getResponseProperties();
                        $dataTypes = $transformer->getModelDataTypes();
                        $fields = [];
                        foreach ($responseFields as $field) {
                            $fields[$field] = array_key_exists($field, $dataTypes) ? $dataTypes[$field] : ModelTransformer::TYPE_UNKNOWN;
                        }
                        $collection->setFields($fields);
                    }
                }
            }
        }
        // Add endpoints
        foreach ($apiCollection->getEndpoints() as $apiEndpoint) {
            $endpoint = new DocumentationEndpoint();
            $endpoint->setName($apiEndpoint->getName());
            $endpoint->setDescription($apiEndpoint->getDescription());
            $endpoint->setHttpMethod($apiEndpoint->getHttpMethod());
            $endpoint->setPath($apiEndpoint->getPath());
            $endpoint->setExampleResponse($apiEndpoint->getExampleResponse());
            $allowedRoleNames = [];
            /** @var \Phalcon\Acl\Role $role */
            foreach ($aclRoles as $role) {
                if ($this->acl->isAllowed($role->getName(), $apiCollection->getIdentifier(), $apiEndpoint->getIdentifier())) {
                    $allowedRoleNames[] = $role->getName();
                }
            }
            $endpoint->setAllowedRoles($allowedRoleNames);
            $collection->addEndpoint($endpoint);
        }
        $this->collections[] = $collection;
    }