diff --git a/library/DataFixtures/ORM/ProviderCompany.php b/library/DataFixtures/ORM/ProviderCompany.php index 7b3f1ef7b50..d5e49fbb5fe 100644 --- a/library/DataFixtures/ORM/ProviderCompany.php +++ b/library/DataFixtures/ORM/ProviderCompany.php @@ -2,6 +2,7 @@ namespace DataFixtures\ORM; +use DataFixtures\Stub\Provider\CompanyStub; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; @@ -14,6 +15,11 @@ class ProviderCompany extends Fixture implements DependentFixtureInterface { use \DataFixtures\FixtureHelperTrait; + public function __construct( + private CompanyStub $companyStub, + ) { + } + /** * {@inheritDoc} */ @@ -23,55 +29,11 @@ public function load(ObjectManager $manager) $this->disableLifecycleEvents($manager); $manager->getClassMetadata(Company::class)->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); - /** @var CompanyInterface $item1 */ - $item1 = $this->createEntityInstance(Company::class); - (function () use ($fixture) { - - $invoicing = new Invoicing( - nif: '12345678A', - postalAddress: 'Company Address', - postalCode: '54321', - town: 'Company Town', - province: 'Company Province', - countryName: 'Company Country', - ); - - $this->setName("DemoCompany"); - $this->setDomainUsers("127.0.0.1"); - $this->setMaxCalls(0); - $this->setIpfilter(false); - $this->setOnDemandRecord(0); - $this->setOnDemandRecordCode(""); - $this->setExternallyextraopts(""); - $this->setRecordingsLimitEmail(""); - $this->setBillingMethod("prepaid"); - $this->setBalance(1.2); - $this->setMaxDailyUsageEmail('no-replay@domain.net'); - $this->setMaxDailyUsage(2); - $this->setCurrentDayUsage(1); - $this->setShowInvoices(true); - $this->setMaxDailyUsageNotificationTemplate( - $fixture->getReference('_reference_ProviderNotificationTemplate2') - ); - $this->invoicing = $invoicing; - $this->setLanguage($fixture->getReference('_reference_ProviderLanguage1')); - $this->setDefaultTimezone($fixture->getReference('_reference_ProviderTimezone145')); - $this->setBrand($fixture->getReference('_reference_ProviderBrand1')); - $this->setDomain($fixture->getReference('_reference_ProviderDomain3')); - $this->setCountry($fixture->getReference('_reference_ProviderCountry70')); - $this->setTransformationRuleSet($fixture->getReference('_reference_ProviderTransformationRuleSet70')); - $this->setVoicemailNotificationTemplate($fixture->getReference('_reference_ProviderNotificationTemplate1')); - $this->setAccessCredentialNotificationTemplate($fixture->getReference('_reference_ProviderNotificationTemplate5')); - $this->setCorporation($fixture->getReference('_reference_Corporation1')); - $this->setApplicationServerSet($fixture->getReference('_reference_ProviderApplicationServerSet1')); - $this->setMediaRelaySet($fixture->getReference('_reference_ProviderMediaRelaySet0')); - $this->setLocation($fixture->getReference('_reference_ProviderLocation1')); - })->call($item1); - - $this->addReference('_reference_ProviderCompany1', $item1); - - $this->sanitizeEntityValues($item1); - $manager->persist($item1); + $entities = $this->companyStub->getAll(); + foreach ($entities as $entity) { + $this->addReference('_reference_ProviderCompany' . $entity->getId(), $entity); + $manager->persist($entity); + } $item2 = $this->createEntityInstance(Company::class); (function () use ($fixture) { @@ -277,7 +239,6 @@ public function getDependencies() ProviderCorporation::class, ProviderApplicationServerSet::class, ProviderMediaRelaySet::class, - ProviderLocation::class, ); } } diff --git a/library/DataFixtures/ORM/ProviderLocation.php b/library/DataFixtures/ORM/ProviderLocation.php index 7f456baa20f..c0a4b551062 100644 --- a/library/DataFixtures/ORM/ProviderLocation.php +++ b/library/DataFixtures/ORM/ProviderLocation.php @@ -4,13 +4,12 @@ use DataFixtures\Stub\Provider\LocationStub; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; use Doctrine\ORM\Mapping\ClassMetadata; use Ivoz\Provider\Domain\Model\Location\Location; -use Ivoz\Provider\Domain\Model\Location\EncodedFile; -use Ivoz\Provider\Domain\Model\Location\OriginalFile; -class ProviderLocation extends Fixture +class ProviderLocation extends Fixture implements DependentFixtureInterface { use \DataFixtures\FixtureHelperTrait; @@ -43,4 +42,11 @@ public function load(ObjectManager $manager) $manager->flush(); } + + public function getDependencies() + { + return array( + ProviderCompany::class, + ); + } } diff --git a/library/DataFixtures/ORM/ProviderSurvivalDevice.php b/library/DataFixtures/ORM/ProviderSurvivalDevice.php index 41bc82fc4f6..64328a694b4 100644 --- a/library/DataFixtures/ORM/ProviderSurvivalDevice.php +++ b/library/DataFixtures/ORM/ProviderSurvivalDevice.php @@ -62,7 +62,7 @@ public function load(ObjectManager $manager) $this->setTlsPort(5063); $this->setWssPort(10083); $this->setDescription("new survival device 3"); - $this->setCompany($fixture->getReference('_reference_ProviderCompany3')); + $this->setCompany($fixture->getReference('_reference_ProviderCompany1')); })->call($item3); $this->addReference('__reference_SurvivalDevice3', $item3); $this->sanitizeEntityValues($item3); @@ -78,7 +78,7 @@ public function load(ObjectManager $manager) $this->setTlsPort(5064); $this->setWssPort(10084); $this->setDescription("new survival device 4"); - $this->setCompany($fixture->getReference('_reference_ProviderCompany4')); + $this->setCompany($fixture->getReference('_reference_ProviderCompany1')); })->call($item4); $this->addReference('__reference_SurvivalDevice4', $item4); $this->sanitizeEntityValues($item4); diff --git a/library/DataFixtures/Stub/Provider/CompanyStub.php b/library/DataFixtures/Stub/Provider/CompanyStub.php new file mode 100644 index 00000000000..f1581276f9e --- /dev/null +++ b/library/DataFixtures/Stub/Provider/CompanyStub.php @@ -0,0 +1,57 @@ +setName("DemoCompany") + ->setDomainUsers("127.0.0.1") + ->setMaxCalls(0) + ->setIpfilter(false) + ->setOnDemandRecord(0) + ->setOnDemandRecordCode("") + ->setExternallyextraopts("") + ->setRecordingsLimitEmail("") + ->setBillingMethod("prepaid") + ->setBalance(1.2) + ->setMaxDailyUsageEmail('no-replay@domain.net') + ->setMaxDailyUsage(2) + ->setCurrentDayUsage(1) + ->setShowInvoices(true) + ->setInvoicingNif('12345678A') + ->setInvoicingPostalAddress('Company Address') + ->setInvoicingPostalCode('54321') + ->setInvoicingTown('Company Town') + ->setInvoicingProvince('Company Province') + ->setInvoicingCountryName('Company Country') + ->setLanguageId(1) + ->setDefaultTimezoneId(145) + ->setBrandId(1) + ->setDomainId(3) + ->setCountryId(68) + ->setTransformationRuleSetId(1) + ->setVoicemailNotificationTemplateId(1) + ->setAccessCredentialNotificationTemplateId(5) + ->setCorporationId(1) + ->setApplicationServerSetId(1) + ->setMediaRelaySetId(0) + ->setMaxDailyUsageNotificationTemplateId(2) + ->setLocationId(1); + + $this->append($dto); + } +} diff --git a/library/Ivoz/Provider/Domain/Model/Calendar/Calendar.php b/library/Ivoz/Provider/Domain/Model/Calendar/Calendar.php index 2fa57b0b790..f92a30e2d87 100644 --- a/library/Ivoz/Provider/Domain/Model/Calendar/Calendar.php +++ b/library/Ivoz/Provider/Domain/Model/Calendar/Calendar.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Calendar; use Ivoz\Core\Infrastructure\Persistence\Doctrine\Model\Helper\CriteriaHelper; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * Calendar @@ -66,4 +67,13 @@ public function getHolidayDate(\DateTimeInterface $dateTime) return array_shift($holidayDates); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Calendar can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/CallAcl/CallAcl.php b/library/Ivoz/Provider/Domain/Model/CallAcl/CallAcl.php index 287a9535c33..a2638d28d83 100644 --- a/library/Ivoz/Provider/Domain/Model/CallAcl/CallAcl.php +++ b/library/Ivoz/Provider/Domain/Model/CallAcl/CallAcl.php @@ -4,6 +4,7 @@ use Doctrine\Common\Collections\Criteria; use Ivoz\Provider\Domain\Model\CallAclRelMatchList\CallAclRelMatchListInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * CallAcl @@ -60,4 +61,13 @@ public function dstIsCallable($dst) return 'allow' === $defaultPolicy; } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('CallAcl can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodec.php b/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodec.php index 9e8c32ab5bf..5267ea75b78 100644 --- a/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodec.php +++ b/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodec.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\CompanyRelCodec; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * CompanyRelCodec * @codeCoverageIgnore @@ -28,4 +30,22 @@ public function getId(): ?int { return $this->id; } + + public function setCompany(CompanyInterface $company = null): static + { + if (is_null($company)) { + return parent::setCompany(null); + } + + $companyType = $company->getType(); + $isValidCompanyType = + $companyType === CompanyInterface::TYPE_RETAIL || + $companyType === CompanyInterface::TYPE_WHOLESALE; + + if (!$isValidCompanyType) { + throw new \DomainException('CompanyRelCodec can only be associated with retail or wholesale companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodecInterface.php b/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodecInterface.php index 3d1c92c915b..695c3678f65 100644 --- a/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodecInterface.php +++ b/library/Ivoz/Provider/Domain/Model/CompanyRelCodec/CompanyRelCodecInterface.php @@ -3,10 +3,10 @@ namespace Ivoz\Provider\Domain\Model\CompanyRelCodec; use Ivoz\Core\Domain\Model\LoggableEntityInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Codec\CodecInterface; /** @@ -27,6 +27,8 @@ public function getChangeSet(): array; */ public function getId(): ?int; + public function setCompany(?CompanyInterface $company = null): static; + /** * @param int | null $id */ @@ -50,8 +52,6 @@ public static function fromDto(DataTransferObjectInterface $dto, ForeignKeyTrans */ public function toDto(int $depth = 0): CompanyRelCodecDto; - public function setCompany(?CompanyInterface $company = null): static; - public function getCompany(): ?CompanyInterface; public function getCodec(): CodecInterface; diff --git a/library/Ivoz/Provider/Domain/Model/ConditionalRoute/ConditionalRoute.php b/library/Ivoz/Provider/Domain/Model/ConditionalRoute/ConditionalRoute.php index 156c56e91bd..a89418050e8 100644 --- a/library/Ivoz/Provider/Domain/Model/ConditionalRoute/ConditionalRoute.php +++ b/library/Ivoz/Provider/Domain/Model/ConditionalRoute/ConditionalRoute.php @@ -2,6 +2,7 @@ namespace Ivoz\Provider\Domain\Model\ConditionalRoute; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Traits\RoutableTrait; /** @@ -69,4 +70,13 @@ public function getNumberValueE164() $this->getNumberCountry()->getCountryCode() . $this->getNumberValue(); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('ConditionalRoute can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/ConferenceRoom/ConferenceRoom.php b/library/Ivoz/Provider/Domain/Model/ConferenceRoom/ConferenceRoom.php index 43be9da3222..d9f317dba86 100644 --- a/library/Ivoz/Provider/Domain/Model/ConferenceRoom/ConferenceRoom.php +++ b/library/Ivoz/Provider/Domain/Model/ConferenceRoom/ConferenceRoom.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\ConferenceRoom; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * ConferenceRoom */ @@ -51,4 +53,13 @@ protected function sanitizeValues(): void $this->setPinCode(null); } } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('ConferenceRoom can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Contact/Contact.php b/library/Ivoz/Provider/Domain/Model/Contact/Contact.php index 5b8b627e3dd..255382d6024 100644 --- a/library/Ivoz/Provider/Domain/Model/Contact/Contact.php +++ b/library/Ivoz/Provider/Domain/Model/Contact/Contact.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Contact; use Ivoz\Core\Domain\Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * Contact @@ -57,4 +58,13 @@ protected function setEmail(?string $email = null): static return parent::setEmail($email); } + + public function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Contact can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Contact/ContactInterface.php b/library/Ivoz/Provider/Domain/Model/Contact/ContactInterface.php index d4fc3a94e81..d15a63b9f64 100644 --- a/library/Ivoz/Provider/Domain/Model/Contact/ContactInterface.php +++ b/library/Ivoz/Provider/Domain/Model/Contact/ContactInterface.php @@ -3,11 +3,11 @@ namespace Ivoz\Provider\Domain\Model\Contact; use Ivoz\Core\Domain\Model\LoggableEntityInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; use Ivoz\Provider\Domain\Model\User\UserInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Country\CountryInterface; /** @@ -28,6 +28,8 @@ public function getChangeSet(): array; */ public function getId(): ?int; + public function setCompany(CompanyInterface $company): static; + /** * @param int | null $id */ @@ -71,8 +73,6 @@ public function setUser(?UserInterface $user = null): static; public function getUser(): ?UserInterface; - public function setCompany(CompanyInterface $company): static; - public function getCompany(): CompanyInterface; public function getWorkPhoneCountry(): ?CountryInterface; diff --git a/library/Ivoz/Provider/Domain/Model/Extension/Extension.php b/library/Ivoz/Provider/Domain/Model/Extension/Extension.php index d702e7e33b1..4dbf0af846f 100644 --- a/library/Ivoz/Provider/Domain/Model/Extension/Extension.php +++ b/library/Ivoz/Provider/Domain/Model/Extension/Extension.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Extension; use Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Traits\RoutableTrait; use Ivoz\Provider\Domain\Model\User\UserInterface; @@ -124,4 +125,13 @@ public function getNumberValueE164() $this->getNumberCountry()->getCountryCode() . $this->getNumberValue(); } + + public function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Extension can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Extension/ExtensionInterface.php b/library/Ivoz/Provider/Domain/Model/Extension/ExtensionInterface.php index 3336cdcaa18..573cd99edde 100644 --- a/library/Ivoz/Provider/Domain/Model/Extension/ExtensionInterface.php +++ b/library/Ivoz/Provider/Domain/Model/Extension/ExtensionInterface.php @@ -4,10 +4,10 @@ use Ivoz\Core\Domain\Model\LoggableEntityInterface; use Ivoz\Provider\Domain\Model\User\UserInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Ivr\IvrInterface; use Ivoz\Provider\Domain\Model\HuntGroup\HuntGroupInterface; use Ivoz\Provider\Domain\Model\ConferenceRoom\ConferenceRoomInterface; @@ -90,6 +90,8 @@ public function getScreenUser(); */ public function getNumberValueE164(); + public function setCompany(CompanyInterface $company): static; + /** * @param int | null $id */ @@ -121,8 +123,6 @@ public function getNumberValue(): ?string; public function getFriendValue(): ?string; - public function setCompany(CompanyInterface $company): static; - public function getCompany(): CompanyInterface; public function getIvr(): ?IvrInterface; diff --git a/library/Ivoz/Provider/Domain/Model/ExternalCallFilter/ExternalCallFilter.php b/library/Ivoz/Provider/Domain/Model/ExternalCallFilter/ExternalCallFilter.php index 2f35c033356..2c4bba14864 100644 --- a/library/Ivoz/Provider/Domain/Model/ExternalCallFilter/ExternalCallFilter.php +++ b/library/Ivoz/Provider/Domain/Model/ExternalCallFilter/ExternalCallFilter.php @@ -4,7 +4,7 @@ use Doctrine\Common\Collections\ArrayCollection; use Ivoz\Core\Infrastructure\Persistence\Doctrine\Model\Helper\CriteriaHelper; -use Ivoz\Provider\Domain\Model\Calendar\Calendar; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\ExternalCallFilterBlackList\ExternalCallFilterBlackList; use Ivoz\Provider\Domain\Model\ExternalCallFilterRelCalendar\ExternalCallFilterRelCalendar; use Ivoz\Provider\Domain\Model\ExternalCallFilterRelSchedule\ExternalCallFilterRelSchedule; @@ -309,4 +309,17 @@ public function getOutOfScheduleRouteType(): ?string { return $this->getOutOfScheduleTargetType(); } + + protected function setCompany(CompanyInterface $company): static + { + $isValidCompanyType = + $company->getType() === CompanyInterface::TYPE_VPBX || + $company->getType() === CompanyInterface::TYPE_RESIDENTIAL; + + if (!$isValidCompanyType) { + throw new \DomainException('ExternalCallFilter can only be associated with vpbx or residential companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Fax/Fax.php b/library/Ivoz/Provider/Domain/Model/Fax/Fax.php index 71c9eacb719..db43cf7234c 100644 --- a/library/Ivoz/Provider/Domain/Model/Fax/Fax.php +++ b/library/Ivoz/Provider/Domain/Model/Fax/Fax.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Fax; use Ivoz\Core\Domain\Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Ddi\DdiInterface; /** @@ -75,4 +76,17 @@ protected function setEmail(?string $email = null): static return parent::setEmail($email); // TODO: Change the autogenerated stub } + + protected function setCompany(CompanyInterface $company): static + { + $isValidCompanyType = + $company->getType() === CompanyInterface::TYPE_VPBX || + $company->getType() === CompanyInterface::TYPE_RESIDENTIAL; + + if (!$isValidCompanyType) { + throw new \DomainException('Fax can only be associated with vpbx or residential companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Friend/Friend.php b/library/Ivoz/Provider/Domain/Model/Friend/Friend.php index 053ad04d6a3..44e1bb7e979 100644 --- a/library/Ivoz/Provider/Domain/Model/Friend/Friend.php +++ b/library/Ivoz/Provider/Domain/Model/Friend/Friend.php @@ -386,4 +386,19 @@ public function setCompany(CompanyInterface $company): static return parent::setCompany($company); } + + protected function setInterCompany(?CompanyInterface $interCompany = null): static + { + if (is_null($interCompany)) { + return parent::setInterCompany(null); + } + + $isValidCompanyType = $interCompany->getType() === CompanyInterface::TYPE_VPBX; + + if (!$isValidCompanyType) { + throw new \DomainException('Friend interCompany can only be associated with vpbx companies'); + } + + return parent::setInterCompany($interCompany); + } } diff --git a/library/Ivoz/Provider/Domain/Model/HuntGroup/HuntGroup.php b/library/Ivoz/Provider/Domain/Model/HuntGroup/HuntGroup.php index 0cf1eecf0e7..1ae520a0013 100644 --- a/library/Ivoz/Provider/Domain/Model/HuntGroup/HuntGroup.php +++ b/library/Ivoz/Provider/Domain/Model/HuntGroup/HuntGroup.php @@ -2,7 +2,7 @@ namespace Ivoz\Provider\Domain\Model\HuntGroup; -use Doctrine\Common\Collections\Criteria; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\HuntGroupMember\HuntGroupMember; use Ivoz\Provider\Domain\Traits\RoutableTrait; @@ -88,4 +88,13 @@ public function isSimple(): bool return true; } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('HuntGroup can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Ivr/Ivr.php b/library/Ivoz/Provider/Domain/Model/Ivr/Ivr.php index fc97da99688..7277d69ce41 100644 --- a/library/Ivoz/Provider/Domain/Model/Ivr/Ivr.php +++ b/library/Ivoz/Provider/Domain/Model/Ivr/Ivr.php @@ -2,6 +2,7 @@ namespace Ivoz\Provider\Domain\Model\Ivr; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Traits\RoutableTrait; /** @@ -115,4 +116,13 @@ public function getErrorTarget(): ?string { return $this->getTarget("Error"); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Ivr can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Location/Location.php b/library/Ivoz/Provider/Domain/Model/Location/Location.php index 850703f2f8a..44c3c29adad 100644 --- a/library/Ivoz/Provider/Domain/Model/Location/Location.php +++ b/library/Ivoz/Provider/Domain/Model/Location/Location.php @@ -2,10 +2,8 @@ namespace Ivoz\Provider\Domain\Model\Location; -use Doctrine\Common\Collections\Collection; -use Doctrine\Common\Collections\Criteria; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\User\UserInterface; -use phpDocumentor\Reflection\Types\Expression; /** * Location @@ -40,4 +38,13 @@ public function addUser(UserInterface $user): LocationInterface $user->setUseDefaultLocation(false); return $this->traitAddUser($user); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Location can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Locution/Locution.php b/library/Ivoz/Provider/Domain/Model/Locution/Locution.php index 03c48ffd9e7..ea98390dc56 100644 --- a/library/Ivoz/Provider/Domain/Model/Locution/Locution.php +++ b/library/Ivoz/Provider/Domain/Model/Locution/Locution.php @@ -5,6 +5,7 @@ use Ivoz\Core\Domain\Model\TempFileContainnerTrait; use Ivoz\Core\Domain\Service\FileContainerInterface; use Ivoz\Core\Domain\Service\TempFile; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * Locution @@ -70,4 +71,13 @@ public function addTmpFile(string $fldName, TempFile $file) } $this->_addTmpFile($fldName, $file); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Locution can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/MatchList/MatchList.php b/library/Ivoz/Provider/Domain/Model/MatchList/MatchList.php index 3b7b58dce67..4f622985043 100644 --- a/library/Ivoz/Provider/Domain/Model/MatchList/MatchList.php +++ b/library/Ivoz/Provider/Domain/Model/MatchList/MatchList.php @@ -2,6 +2,7 @@ namespace Ivoz\Provider\Domain\Model\MatchList; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\MatchListPattern\MatchListPatternInterface; /** @@ -63,4 +64,22 @@ public function numberMatches($number) return false; } + + protected function setCompany(CompanyInterface $company = null): static + { + if (is_null($company)) { + return parent::setCompany(null); + } + + $companyType = $company->getType(); + $isValidCompanyType = + $companyType === CompanyInterface::TYPE_VPBX || + $companyType === CompanyInterface::TYPE_RESIDENTIAL; + + if (!$isValidCompanyType) { + throw new \DomainException('MatchList can only be associated with vpbx or residential companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHold.php b/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHold.php index b0b666dbaac..68dcd3cddff 100644 --- a/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHold.php +++ b/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHold.php @@ -5,6 +5,7 @@ use Ivoz\Core\Domain\Model\TempFileContainnerTrait; use Ivoz\Core\Domain\Service\FileContainerInterface; use Ivoz\Core\Domain\Service\TempFile; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * MusicOnHold @@ -98,4 +99,13 @@ public function addTmpFile(string $fldName, TempFile $file) } $this->_addTmpFile($fldName, $file); } + + public function setCompany(?CompanyInterface $company = null): static + { + if ($company && $company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('MusicOnHold can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHoldInterface.php b/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHoldInterface.php index f904f3b4d2d..cded5cc404e 100644 --- a/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHoldInterface.php +++ b/library/Ivoz/Provider/Domain/Model/MusicOnHold/MusicOnHoldInterface.php @@ -5,11 +5,11 @@ use Ivoz\Core\Domain\Model\LoggableEntityInterface; use Ivoz\Core\Domain\Service\FileContainerInterface; use Ivoz\Core\Domain\Service\TempFile; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; use Ivoz\Provider\Domain\Model\Brand\BrandInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * MusicOnHoldInterface @@ -57,6 +57,8 @@ public function getOwner(); */ public function addTmpFile(string $fldName, TempFile $file); + public function setCompany(?CompanyInterface $company = null): static; + /** * @param int | null $id */ @@ -92,8 +94,6 @@ public function setBrand(?BrandInterface $brand = null): static; public function getBrand(): ?BrandInterface; - public function setCompany(?CompanyInterface $company = null): static; - public function getCompany(): ?CompanyInterface; /** diff --git a/library/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRule.php b/library/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRule.php index fc5b4cac338..c572ddcad9e 100644 --- a/library/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRule.php +++ b/library/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRule.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\OutgoingDdiRule; use Doctrine\Common\Collections\Criteria; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Ddi\DdiInterface; use Ivoz\Provider\Domain\Model\OutgoingDdiRulesPattern\OutgoingDdiRulesPatternInterface; @@ -128,4 +129,13 @@ public function getOutgoingDdi($originalDdi, $e164destination, $prefix = "") return $finalDdi; } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('OutgoingDdiRule can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/PickUpGroup/PickUpGroup.php b/library/Ivoz/Provider/Domain/Model/PickUpGroup/PickUpGroup.php index 119c36f70a2..7064466d40c 100644 --- a/library/Ivoz/Provider/Domain/Model/PickUpGroup/PickUpGroup.php +++ b/library/Ivoz/Provider/Domain/Model/PickUpGroup/PickUpGroup.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\PickUpGroup; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * PickUpGroup */ @@ -27,4 +29,13 @@ public function getId(): ?int { return $this->id; } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('PickUpGroup can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Queue/Queue.php b/library/Ivoz/Provider/Domain/Model/Queue/Queue.php index ec4cfde9367..5041f9d8aa6 100644 --- a/library/Ivoz/Provider/Domain/Model/Queue/Queue.php +++ b/library/Ivoz/Provider/Domain/Model/Queue/Queue.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Queue; use Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Traits\RoutableTrait; /** @@ -127,4 +128,13 @@ public function setMaxlen(?int $maxlen = null): static return parent::setMaxlen($maxlen); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Queue can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/RouteLock/RouteLock.php b/library/Ivoz/Provider/Domain/Model/RouteLock/RouteLock.php index 77fb7287a40..cbce97de915 100644 --- a/library/Ivoz/Provider/Domain/Model/RouteLock/RouteLock.php +++ b/library/Ivoz/Provider/Domain/Model/RouteLock/RouteLock.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\RouteLock; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * RouteLock */ @@ -45,4 +47,13 @@ public function getHintDeviceName(): string { return "Stasis:RouteLock" . $this->getId(); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('RouteLock can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Schedule/Schedule.php b/library/Ivoz/Provider/Domain/Model/Schedule/Schedule.php index 8106e262df7..93dd21e165f 100644 --- a/library/Ivoz/Provider/Domain/Model/Schedule/Schedule.php +++ b/library/Ivoz/Provider/Domain/Model/Schedule/Schedule.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\Schedule; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * Schedule */ @@ -59,4 +61,13 @@ public function isOnSchedule(\DateTimeInterface $time) return $isOnSchedule; } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Schedule can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/SurvivalDevice/SurvivalDevice.php b/library/Ivoz/Provider/Domain/Model/SurvivalDevice/SurvivalDevice.php index e5a3d8d5fc2..e070f304577 100644 --- a/library/Ivoz/Provider/Domain/Model/SurvivalDevice/SurvivalDevice.php +++ b/library/Ivoz/Provider/Domain/Model/SurvivalDevice/SurvivalDevice.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\SurvivalDevice; use Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * SurvivalDevice @@ -139,4 +140,13 @@ protected function sanitizeProxyLogic(): void throw new \DomainException('When Outbound Proxy is used, SIP Proxy must not include a port.', 70003); } } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('SurvivalDevice can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Terminal/Terminal.php b/library/Ivoz/Provider/Domain/Model/Terminal/Terminal.php index 902a40d34c3..4a997e1303b 100644 --- a/library/Ivoz/Provider/Domain/Model/Terminal/Terminal.php +++ b/library/Ivoz/Provider/Domain/Model/Terminal/Terminal.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Terminal; use Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; /** * Terminal @@ -171,4 +172,13 @@ public function setMac(?string $mac = null): static return parent::setMac($mac); } + + public function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('Terminal can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Terminal/TerminalInterface.php b/library/Ivoz/Provider/Domain/Model/Terminal/TerminalInterface.php index 938c36bf505..4751e676a5a 100644 --- a/library/Ivoz/Provider/Domain/Model/Terminal/TerminalInterface.php +++ b/library/Ivoz/Provider/Domain/Model/Terminal/TerminalInterface.php @@ -3,10 +3,10 @@ namespace Ivoz\Provider\Domain\Model\Terminal; use Ivoz\Core\Domain\Model\LoggableEntityInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Domain\DomainInterface; use Ivoz\Provider\Domain\Model\TerminalModel\TerminalModelInterface; use Ivoz\Ast\Domain\Model\PsEndpoint\PsEndpointInterface; @@ -76,6 +76,8 @@ public function getAllow(); public function setMac(?string $mac = null): static; + public function setCompany(CompanyInterface $company): static; + /** * @param int | null $id */ @@ -119,8 +121,6 @@ public function getT38Passthrough(): string; public function getRtpEncryption(): bool; - public function setCompany(CompanyInterface $company): static; - public function getCompany(): CompanyInterface; public function setDomain(?DomainInterface $domain = null): static; diff --git a/library/Ivoz/Provider/Domain/Model/User/User.php b/library/Ivoz/Provider/Domain/Model/User/User.php index 9a384582736..07ca2497316 100644 --- a/library/Ivoz/Provider/Domain/Model/User/User.php +++ b/library/Ivoz/Provider/Domain/Model/User/User.php @@ -4,6 +4,7 @@ use DomainException; use Ivoz\Core\Domain\Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Ddi\DdiInterface; use Ivoz\Provider\Domain\Model\Language\LanguageInterface; use Ivoz\Provider\Domain\Model\OutgoingDdiRule\OutgoingDdiRuleInterface; @@ -424,4 +425,13 @@ public function getFullNameExtension(): string $this->getExtensionNumber() ); } + + protected function setCompany(CompanyInterface $company): static + { + if ($company->getType() !== CompanyInterface::TYPE_VPBX) { + throw new \DomainException('User can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/UsersCdr/UsersCdr.php b/library/Ivoz/Provider/Domain/Model/UsersCdr/UsersCdr.php index 9875df0dd35..9e04ab3d205 100644 --- a/library/Ivoz/Provider/Domain/Model/UsersCdr/UsersCdr.php +++ b/library/Ivoz/Provider/Domain/Model/UsersCdr/UsersCdr.php @@ -2,6 +2,8 @@ namespace Ivoz\Provider\Domain\Model\UsersCdr; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; + /** * UsersCdr */ @@ -27,4 +29,20 @@ public function getId(): ?int { return $this->id; } + + protected function setCompany(CompanyInterface $company = null): static + { + if (is_null($company)) { + return parent::setCompany(null); + } + + $companyType = $company->getType(); + $isValidCompanyType = $companyType === CompanyInterface::TYPE_VPBX; + + if (!$isValidCompanyType) { + throw new \DomainException('UsersCdr can only be associated with vpbx companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Voicemail/Voicemail.php b/library/Ivoz/Provider/Domain/Model/Voicemail/Voicemail.php index 1aaaa705417..1b42d78d9d0 100644 --- a/library/Ivoz/Provider/Domain/Model/Voicemail/Voicemail.php +++ b/library/Ivoz/Provider/Domain/Model/Voicemail/Voicemail.php @@ -3,6 +3,7 @@ namespace Ivoz\Provider\Domain\Model\Voicemail; use Ivoz\Core\Domain\Assert\Assertion; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Language\LanguageInterface; /** @@ -115,4 +116,17 @@ protected function setEmail(?string $email = null): static return parent::setEmail($email); } + + public function setCompany(CompanyInterface $company): static + { + $isValidCompanyType = + $company->getType() === CompanyInterface::TYPE_VPBX || + $company->getType() === CompanyInterface::TYPE_RESIDENTIAL; + + if (!$isValidCompanyType) { + throw new \DomainException('Voicemail can only be associated with vpbx or residential companies'); + } + + return parent::setCompany($company); + } } diff --git a/library/Ivoz/Provider/Domain/Model/Voicemail/VoicemailInterface.php b/library/Ivoz/Provider/Domain/Model/Voicemail/VoicemailInterface.php index b862f1d0c25..1953d3f3a5f 100644 --- a/library/Ivoz/Provider/Domain/Model/Voicemail/VoicemailInterface.php +++ b/library/Ivoz/Provider/Domain/Model/Voicemail/VoicemailInterface.php @@ -4,12 +4,12 @@ use Ivoz\Core\Domain\Model\LoggableEntityInterface; use Ivoz\Provider\Domain\Model\Language\LanguageInterface; +use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Core\Domain\Model\EntityInterface; use Ivoz\Core\Domain\DataTransferObjectInterface; use Ivoz\Core\Domain\ForeignKeyTransformerInterface; use Ivoz\Provider\Domain\Model\User\UserInterface; use Ivoz\Provider\Domain\Model\ResidentialDevice\ResidentialDeviceInterface; -use Ivoz\Provider\Domain\Model\Company\CompanyInterface; use Ivoz\Provider\Domain\Model\Locution\LocutionInterface; use Ivoz\Provider\Domain\Model\VoicemailRelUser\VoicemailRelUserInterface; use Doctrine\Common\Collections\Collection; @@ -58,6 +58,8 @@ public function getContext(); */ public function getLanguage(): ?LanguageInterface; + public function setCompany(CompanyInterface $company): static; + /** * @param int | null $id */ @@ -99,8 +101,6 @@ public function setResidentialDevice(?ResidentialDeviceInterface $residentialDev public function getResidentialDevice(): ?ResidentialDeviceInterface; - public function setCompany(CompanyInterface $company): static; - public function getCompany(): CompanyInterface; public function getLocution(): ?LocutionInterface; diff --git a/library/psalm-baseline.xml b/library/psalm-baseline.xml index 092f616ed6a..63c2453b5c9 100644 --- a/library/psalm-baseline.xml +++ b/library/psalm-baseline.xml @@ -1956,11 +1956,6 @@ func_get_args() - - - CompanyRelCodec - - $fkTransformer->transform($codec) @@ -2542,9 +2537,6 @@ - - Extension - \Ivoz\Provider\Domain\Model\User\UserInterface[] diff --git a/library/spec/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRuleSpec.php b/library/spec/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRuleSpec.php index b031ec31162..ff93b13c2f1 100644 --- a/library/spec/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRuleSpec.php +++ b/library/spec/Ivoz/Provider/Domain/Model/OutgoingDdiRule/OutgoingDdiRuleSpec.php @@ -30,6 +30,10 @@ class OutgoingDdiRuleSpec extends ObjectBehavior function let( CompanyInterface $company ) { + $company->getId()->willReturn(1); + $company->getType()->willReturn(CompanyInterface::TYPE_VPBX); + $company->getOutgoingDdi()->willReturn(null); + $this->dto = $dto = new OutgoingDdiRuleDto(); $companyDto = new CompanyDto(); diff --git a/library/spec/Ivoz/Provider/Domain/Model/Queue/QueueSpec.php b/library/spec/Ivoz/Provider/Domain/Model/Queue/QueueSpec.php index b4f63e4c377..df4f75bd87d 100644 --- a/library/spec/Ivoz/Provider/Domain/Model/Queue/QueueSpec.php +++ b/library/spec/Ivoz/Provider/Domain/Model/Queue/QueueSpec.php @@ -20,6 +20,9 @@ class QueueSpec extends ObjectBehavior public function let( CompanyInterface $company ) { + $company->getId()->willReturn(1); + $company->getType()->willReturn(CompanyInterface::TYPE_VPBX); + $companyDto = new CompanyDto(); $this->dto = new QueueDto(); $this->dto diff --git a/library/spec/Ivoz/Provider/Domain/Model/Schedule/ScheduleSpec.php b/library/spec/Ivoz/Provider/Domain/Model/Schedule/ScheduleSpec.php index df8e9103559..a6fbaf1b18a 100644 --- a/library/spec/Ivoz/Provider/Domain/Model/Schedule/ScheduleSpec.php +++ b/library/spec/Ivoz/Provider/Domain/Model/Schedule/ScheduleSpec.php @@ -56,6 +56,7 @@ function let() $company = $this->getTestDouble( CompanyInterface::class ); + $company->getType()->willReturn(CompanyInterface::TYPE_VPBX); $transformer = new DtoToEntityFakeTransformer([ [$companyDto, $company->reveal()] diff --git a/library/spec/Ivoz/Provider/Domain/Model/Terminal/TerminalSpec.php b/library/spec/Ivoz/Provider/Domain/Model/Terminal/TerminalSpec.php index 6604fad1353..7481b58a47c 100644 --- a/library/spec/Ivoz/Provider/Domain/Model/Terminal/TerminalSpec.php +++ b/library/spec/Ivoz/Provider/Domain/Model/Terminal/TerminalSpec.php @@ -43,6 +43,10 @@ function let( ->getId() ->willReturn(1); + $company + ->getType() + ->willReturn(CompanyInterface::TYPE_VPBX); + $company ->getDomain() ->willReturn($domain); diff --git a/library/spec/Ivoz/Provider/Domain/Model/User/UserSpec.php b/library/spec/Ivoz/Provider/Domain/Model/User/UserSpec.php index d0bf3f4a5f0..a5aff07d020 100644 --- a/library/spec/Ivoz/Provider/Domain/Model/User/UserSpec.php +++ b/library/spec/Ivoz/Provider/Domain/Model/User/UserSpec.php @@ -31,6 +31,7 @@ function let() CompanyInterface::class, true ); + $this->company->getType()->willReturn(CompanyInterface::TYPE_VPBX); $this->timezone = $this->getTestDouble( TimezoneInterface::class, diff --git a/web/rest/client/features/provider/survivalDevice/getSurvivalDevices.feature b/web/rest/client/features/provider/survivalDevice/getSurvivalDevices.feature index 570f42c97f5..7632fcc799f 100644 --- a/web/rest/client/features/provider/survivalDevice/getSurvivalDevices.feature +++ b/web/rest/client/features/provider/survivalDevice/getSurvivalDevices.feature @@ -14,7 +14,19 @@ Feature: Retrieve survival devices And the JSON should be equal to: """ [ - { + { + "name": "Survival Test 3", + "proxy": "survival3.test.com", + "description": "new survival device 3", + "id": 3 + }, + { + "name": "Survival Test 4", + "proxy": "survival4.test.com", + "description": "new survival device 4", + "id": 4 + }, + { "name": "survival test 1", "proxy": "survival1.test.com", "description": "new survival device 1",