/library/Ivoz/Provider/Domain/Model/IvrEntry/IvrEntryAbstract.php
https://github.com/irontec/ivozprovider · PHP · 460 lines · 214 code · 67 blank · 179 comment · 5 complexity · 43c7309686de980c8a46cae96efde240 MD5 · raw file
- <?php
- namespace Ivoz\Provider\Domain\Model\IvrEntry;
- use Assert\Assertion;
- use Ivoz\Core\Application\DataTransferObjectInterface;
- use Ivoz\Core\Domain\Model\ChangelogTrait;
- use Ivoz\Core\Domain\Model\EntityInterface;
- /**
- * IvrEntryAbstract
- * @codeCoverageIgnore
- */
- abstract class IvrEntryAbstract
- {
- /**
- * @var string
- */
- protected $entry;
- /**
- * comment: enum:number|extension|voicemail|conditional
- * @var string
- */
- protected $routeType;
- /**
- * @var string | null
- */
- protected $numberValue;
- /**
- * @var \Ivoz\Provider\Domain\Model\Ivr\IvrInterface
- */
- protected $ivr;
- /**
- * @var \Ivoz\Provider\Domain\Model\Locution\LocutionInterface | null
- */
- protected $welcomeLocution;
- /**
- * @var \Ivoz\Provider\Domain\Model\Extension\ExtensionInterface | null
- */
- protected $extension;
- /**
- * @var \Ivoz\Provider\Domain\Model\User\UserInterface | null
- */
- protected $voiceMailUser;
- /**
- * @var \Ivoz\Provider\Domain\Model\ConditionalRoute\ConditionalRouteInterface | null
- */
- protected $conditionalRoute;
- /**
- * @var \Ivoz\Provider\Domain\Model\Country\CountryInterface | null
- */
- protected $numberCountry;
- use ChangelogTrait;
- /**
- * Constructor
- */
- protected function __construct($entry, $routeType)
- {
- $this->setEntry($entry);
- $this->setRouteType($routeType);
- }
- abstract public function getId();
- public function __toString()
- {
- return sprintf(
- "%s#%s",
- "IvrEntry",
- $this->getId()
- );
- }
- /**
- * @return void
- * @throws \Exception
- */
- protected function sanitizeValues()
- {
- }
- /**
- * @param null $id
- * @return IvrEntryDto
- */
- public static function createDto($id = null)
- {
- return new IvrEntryDto($id);
- }
- /**
- * @internal use EntityTools instead
- * @param IvrEntryInterface|null $entity
- * @param int $depth
- * @return IvrEntryDto|null
- */
- public static function entityToDto(EntityInterface $entity = null, $depth = 0)
- {
- if (!$entity) {
- return null;
- }
- Assertion::isInstanceOf($entity, IvrEntryInterface::class);
- if ($depth < 1) {
- return static::createDto($entity->getId());
- }
- if ($entity instanceof \Doctrine\ORM\Proxy\Proxy && !$entity->__isInitialized()) {
- return static::createDto($entity->getId());
- }
- /** @var IvrEntryDto $dto */
- $dto = $entity->toDto($depth-1);
- return $dto;
- }
- /**
- * Factory method
- * @internal use EntityTools instead
- * @param IvrEntryDto $dto
- * @return self
- */
- public static function fromDto(
- DataTransferObjectInterface $dto,
- \Ivoz\Core\Application\ForeignKeyTransformerInterface $fkTransformer
- ) {
- Assertion::isInstanceOf($dto, IvrEntryDto::class);
- $self = new static(
- $dto->getEntry(),
- $dto->getRouteType()
- );
- $self
- ->setNumberValue($dto->getNumberValue())
- ->setIvr($fkTransformer->transform($dto->getIvr()))
- ->setWelcomeLocution($fkTransformer->transform($dto->getWelcomeLocution()))
- ->setExtension($fkTransformer->transform($dto->getExtension()))
- ->setVoiceMailUser($fkTransformer->transform($dto->getVoiceMailUser()))
- ->setConditionalRoute($fkTransformer->transform($dto->getConditionalRoute()))
- ->setNumberCountry($fkTransformer->transform($dto->getNumberCountry()))
- ;
- $self->initChangelog();
- return $self;
- }
- /**
- * @internal use EntityTools instead
- * @param IvrEntryDto $dto
- * @return self
- */
- public function updateFromDto(
- DataTransferObjectInterface $dto,
- \Ivoz\Core\Application\ForeignKeyTransformerInterface $fkTransformer
- ) {
- Assertion::isInstanceOf($dto, IvrEntryDto::class);
- $this
- ->setEntry($dto->getEntry())
- ->setRouteType($dto->getRouteType())
- ->setNumberValue($dto->getNumberValue())
- ->setIvr($fkTransformer->transform($dto->getIvr()))
- ->setWelcomeLocution($fkTransformer->transform($dto->getWelcomeLocution()))
- ->setExtension($fkTransformer->transform($dto->getExtension()))
- ->setVoiceMailUser($fkTransformer->transform($dto->getVoiceMailUser()))
- ->setConditionalRoute($fkTransformer->transform($dto->getConditionalRoute()))
- ->setNumberCountry($fkTransformer->transform($dto->getNumberCountry()));
- return $this;
- }
- /**
- * @internal use EntityTools instead
- * @param int $depth
- * @return IvrEntryDto
- */
- public function toDto($depth = 0)
- {
- return self::createDto()
- ->setEntry(self::getEntry())
- ->setRouteType(self::getRouteType())
- ->setNumberValue(self::getNumberValue())
- ->setIvr(\Ivoz\Provider\Domain\Model\Ivr\Ivr::entityToDto(self::getIvr(), $depth))
- ->setWelcomeLocution(\Ivoz\Provider\Domain\Model\Locution\Locution::entityToDto(self::getWelcomeLocution(), $depth))
- ->setExtension(\Ivoz\Provider\Domain\Model\Extension\Extension::entityToDto(self::getExtension(), $depth))
- ->setVoiceMailUser(\Ivoz\Provider\Domain\Model\User\User::entityToDto(self::getVoiceMailUser(), $depth))
- ->setConditionalRoute(\Ivoz\Provider\Domain\Model\ConditionalRoute\ConditionalRoute::entityToDto(self::getConditionalRoute(), $depth))
- ->setNumberCountry(\Ivoz\Provider\Domain\Model\Country\Country::entityToDto(self::getNumberCountry(), $depth));
- }
- /**
- * @return array
- */
- protected function __toArray()
- {
- return [
- 'entry' => self::getEntry(),
- 'routeType' => self::getRouteType(),
- 'numberValue' => self::getNumberValue(),
- 'ivrId' => self::getIvr()->getId(),
- 'welcomeLocutionId' => self::getWelcomeLocution() ? self::getWelcomeLocution()->getId() : null,
- 'extensionId' => self::getExtension() ? self::getExtension()->getId() : null,
- 'voiceMailUserId' => self::getVoiceMailUser() ? self::getVoiceMailUser()->getId() : null,
- 'conditionalRouteId' => self::getConditionalRoute() ? self::getConditionalRoute()->getId() : null,
- 'numberCountryId' => self::getNumberCountry() ? self::getNumberCountry()->getId() : null
- ];
- }
- // @codeCoverageIgnoreStart
- /**
- * Set entry
- *
- * @param string $entry
- *
- * @return static
- */
- protected function setEntry($entry)
- {
- Assertion::notNull($entry, 'entry value "%s" is null, but non null value was expected.');
- Assertion::maxLength($entry, 40, 'entry value "%s" is too long, it should have no more than %d characters, but has %d characters.');
- $this->entry = $entry;
- return $this;
- }
- /**
- * Get entry
- *
- * @return string
- */
- public function getEntry(): string
- {
- return $this->entry;
- }
- /**
- * Set routeType
- *
- * @param string $routeType
- *
- * @return static
- */
- protected function setRouteType($routeType)
- {
- Assertion::notNull($routeType, 'routeType value "%s" is null, but non null value was expected.');
- Assertion::maxLength($routeType, 25, 'routeType value "%s" is too long, it should have no more than %d characters, but has %d characters.');
- Assertion::choice($routeType, [
- IvrEntryInterface::ROUTETYPE_NUMBER,
- IvrEntryInterface::ROUTETYPE_EXTENSION,
- IvrEntryInterface::ROUTETYPE_VOICEMAIL,
- IvrEntryInterface::ROUTETYPE_CONDITIONAL
- ], 'routeTypevalue "%s" is not an element of the valid values: %s');
- $this->routeType = $routeType;
- return $this;
- }
- /**
- * Get routeType
- *
- * @return string
- */
- public function getRouteType(): string
- {
- return $this->routeType;
- }
- /**
- * Set numberValue
- *
- * @param string $numberValue | null
- *
- * @return static
- */
- protected function setNumberValue($numberValue = null)
- {
- if (!is_null($numberValue)) {
- Assertion::maxLength($numberValue, 25, 'numberValue value "%s" is too long, it should have no more than %d characters, but has %d characters.');
- }
- $this->numberValue = $numberValue;
- return $this;
- }
- /**
- * Get numberValue
- *
- * @return string | null
- */
- public function getNumberValue()
- {
- return $this->numberValue;
- }
- /**
- * Set ivr
- *
- * @param \Ivoz\Provider\Domain\Model\Ivr\IvrInterface $ivr
- *
- * @return static
- */
- public function setIvr(\Ivoz\Provider\Domain\Model\Ivr\IvrInterface $ivr)
- {
- $this->ivr = $ivr;
- return $this;
- }
- /**
- * Get ivr
- *
- * @return \Ivoz\Provider\Domain\Model\Ivr\IvrInterface
- */
- public function getIvr()
- {
- return $this->ivr;
- }
- /**
- * Set welcomeLocution
- *
- * @param \Ivoz\Provider\Domain\Model\Locution\LocutionInterface $welcomeLocution | null
- *
- * @return static
- */
- protected function setWelcomeLocution(\Ivoz\Provider\Domain\Model\Locution\LocutionInterface $welcomeLocution = null)
- {
- $this->welcomeLocution = $welcomeLocution;
- return $this;
- }
- /**
- * Get welcomeLocution
- *
- * @return \Ivoz\Provider\Domain\Model\Locution\LocutionInterface | null
- */
- public function getWelcomeLocution()
- {
- return $this->welcomeLocution;
- }
- /**
- * Set extension
- *
- * @param \Ivoz\Provider\Domain\Model\Extension\ExtensionInterface $extension | null
- *
- * @return static
- */
- protected function setExtension(\Ivoz\Provider\Domain\Model\Extension\ExtensionInterface $extension = null)
- {
- $this->extension = $extension;
- return $this;
- }
- /**
- * Get extension
- *
- * @return \Ivoz\Provider\Domain\Model\Extension\ExtensionInterface | null
- */
- public function getExtension()
- {
- return $this->extension;
- }
- /**
- * Set voiceMailUser
- *
- * @param \Ivoz\Provider\Domain\Model\User\UserInterface $voiceMailUser | null
- *
- * @return static
- */
- protected function setVoiceMailUser(\Ivoz\Provider\Domain\Model\User\UserInterface $voiceMailUser = null)
- {
- $this->voiceMailUser = $voiceMailUser;
- return $this;
- }
- /**
- * Get voiceMailUser
- *
- * @return \Ivoz\Provider\Domain\Model\User\UserInterface | null
- */
- public function getVoiceMailUser()
- {
- return $this->voiceMailUser;
- }
- /**
- * Set conditionalRoute
- *
- * @param \Ivoz\Provider\Domain\Model\ConditionalRoute\ConditionalRouteInterface $conditionalRoute | null
- *
- * @return static
- */
- protected function setConditionalRoute(\Ivoz\Provider\Domain\Model\ConditionalRoute\ConditionalRouteInterface $conditionalRoute = null)
- {
- $this->conditionalRoute = $conditionalRoute;
- return $this;
- }
- /**
- * Get conditionalRoute
- *
- * @return \Ivoz\Provider\Domain\Model\ConditionalRoute\ConditionalRouteInterface | null
- */
- public function getConditionalRoute()
- {
- return $this->conditionalRoute;
- }
- /**
- * Set numberCountry
- *
- * @param \Ivoz\Provider\Domain\Model\Country\CountryInterface $numberCountry | null
- *
- * @return static
- */
- protected function setNumberCountry(\Ivoz\Provider\Domain\Model\Country\CountryInterface $numberCountry = null)
- {
- $this->numberCountry = $numberCountry;
- return $this;
- }
- /**
- * Get numberCountry
- *
- * @return \Ivoz\Provider\Domain\Model\Country\CountryInterface | null
- */
- public function getNumberCountry()
- {
- return $this->numberCountry;
- }
- // @codeCoverageIgnoreEnd
- }