/** * @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; }