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",