/**
  * Create Branch
  *
  * @param string                     $name
  * @param string                     $description
  * @param null|string                $key
  * @param null|User                  $defaultAssignee
  * @param null|\SplFileInfo          $logo
  * @param string|null                $originalName
  * @param null|array|ArrayCollection $tags
  *
  * @return Branch
  */
 public function create($name, $description, $key = null, User $defaultAssignee = null, \SplFileInfo $logo = null, $originalName = null, $tags = null)
 {
     if ($logo) {
         $logo = new Logo($logo->getFilename(), $originalName);
     }
     if (is_null($key) || empty($key)) {
         $key = $this->branchKeyGenerator->generate($name);
     }
     return new $this->entityClassName($key, $name, $description, $defaultAssignee, $logo, $tags);
 }
 /**
  * @param Logo $value
  * @param AbstractPlatform $platform
  * @return mixed|string
  * @throws \RuntimeException
  */
 public function convertToDatabaseValue($value, AbstractPlatform $platform)
 {
     if (!$value) {
         return '';
     }
     if (false === $value instanceof Logo) {
         throw new \RuntimeException("Variable type validation failed, value should be a Logo type");
     }
     $logo = null;
     $name = $value->getName();
     $originalName = $value->getOriginalName();
     if ($name && $originalName) {
         $logo = $name . self::DELIMITER . $originalName;
     }
     return parent::convertToDatabaseValue($logo, $platform);
 }
 /**
  * @param Logo $logo
  */
 public function remove(Logo $logo)
 {
     $this->filesystem->remove($this->branchLogoDir->getRealPath() . '/' . $logo->getName());
 }