/** * @param array $datas * @param EntityAbstract $element * @return mixed|ReleaseEntity */ protected function fromApiToEntitySingle($datas = [], &$element = null) { $datas = parent::prepareData($datas); $entity = $element instanceof ReleaseEntity ? $element : new ReleaseEntity(); $entity->setId($this->get($datas, 'id')); $entity->setName($this->get($datas, 'name')); $entity->setCanModify($this->get($datas, 'can_modify')); $entity->setIsActive($this->get($datas, 'is_active')); $entity->setReleaseNotes($this->get($datas, 'release_notes')); $entity->setReleaseType(isset($datas['release_type']) ? self::typeFromApiToEntitySingle($datas['release_type']) : null); $entity->setStatus(isset($datas['status']) ? self::statusFromApiToEntitySingle($datas['status']) : null); if (isset($datas['capacity']) && ($capacity = $datas['capacity'])) { $capacityEntity = new ReleaseCapacity(); $capacityEntity->setUnit(Item::durationUnitFromApiToEntitySingle($capacity['time_unit'])); $capacityEntity->setDuration($capacity['duration']); $entity->setCapacity($capacity); } $entity->setStartDate(isset($datas['start_date']) && null !== $datas['start_date'] ? new \DateTime($datas['start_date']) : null); $entity->setDueDate(isset($datas['due_date']) && null !== $datas['due_date'] ? new \DateTime($datas['due_date']) : null); $entity->setVelocityDueDate(isset($datas['velocity_start_date']) && null !== $datas['velocity_start_date'] ? new \DateTime($datas['velocity_start_date']) : null); if (isset($datas['parent'])) { $parent = $this->fromApiToEntitySingle($datas['parent']); $entity->setParent($parent); } if (isset($datas['children'])) { foreach ($datas['children'] as $child) { $child = $this->fromApiToEntitySingle($child); $entity->addChild($child); } } return $entity; }
/** * @param array $datas * @param EntityAbstract $element * @return mixed|AttachmentEntity */ protected function fromApiToEntitySingle($datas = [], &$element = null) { $datas = isset($datas['data']) ? $datas['data'] : $datas; $entity = $element instanceof AttachmentEntity ? $element : new AttachmentEntity(); $entity->setId($this->get($datas, 'id')); $entity->setFileName($this->get($datas, 'file_name')); $entity->setDescription($this->get($datas, 'description')); $entity->setFileData($this->get($datas, 'file_data')); $entity->setAttachDate($this->get($datas, 'attach_date')); $entity->setDataHash($this->get($datas, 'data_hash')); if (isset($datas['source']) && isset($datas['source']['source_type'])) { $sourceEntity = Item::instanciateItemType($datas['source']['source_type']); $entity->setSource($sourceEntity->getHelper()->fromApiToEntity($datas['source'], $sourceEntity)); } if (isset($datas['created_by']) && isset($datas['created_by']['user_type'])) { /** @var User|Contact $authorEntity */ $authorEntity = PeopleAbstract::instanciatePeopleType($datas['created_by']['user_type']); $entity->setCreatedBy($authorEntity->getHelper()->fromApiToEntity($datas['created_by'], $authorEntity)); } return $entity; }
/** * @param $result * @param $type * @return Message */ private function item($result, $type) { $message = new Message(); if (!isset($result['error'])) { $item = Item::instanciateItemType($type); $result = Item::fromApiToEntity($result, $item); $message->setSuccess(true); $message->setResult($result); } else { $message->setErrors($result['error']); } return $message; }