Scalr\Api\Service\User\V1beta0\Controller\Farms::createAction PHP Метод

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

Create a new Farm in this Environment
public createAction ( ) : Scalr\Api\DataType\ResultEnvelope
Результат Scalr\Api\DataType\ResultEnvelope
    public function createAction()
    {
        $this->checkPermissions(Acl::RESOURCE_OWN_FARMS, Acl::PERM_FARMS_CREATE);
        $object = $this->request->getJsonBody();
        /* @var $farmAdapter FarmAdapter */
        $farmAdapter = $this->adapter('farm');
        //Pre validates the request object
        $farmAdapter->validateObject($object, Request::METHOD_POST);
        $farm = $farmAdapter->toEntity($object);
        if (!empty($farm->ownerId)) {
            throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_STRUCTURE, "Farm owner should not be set on farm creation");
        }
        $farm->id = null;
        $farm->envId = $this->getEnvironment()->id;
        $user = $this->getUser();
        $farm->accountId = $user->getAccountId();
        $farm->createdByEmail = $user->getEmail();
        $farm->changedById = $user->getId();
        $farmAdapter->validateEntity($farm);
        if (!$this->getUser()->getAccount()->checkLimit(Limit::ACCOUNT_FARMS, 1)) {
            throw new ApiErrorException(400, ErrorMessage::ERR_LIMIT_EXCEEDED, "Farms limit for your account exceeded");
        }
        //Saves entity
        $farm->save();
        //Responds with 201 Created status
        $this->response->setStatus(201);
        return $this->result($farmAdapter->toData($farm));
    }