diff --git a/src/Entity/Attachments/AttachmentContainingDBElement.php b/src/Entity/Attachments/AttachmentContainingDBElement.php index e691e4f1..52b25264 100644 --- a/src/Entity/Attachments/AttachmentContainingDBElement.php +++ b/src/Entity/Attachments/AttachmentContainingDBElement.php @@ -25,6 +25,7 @@ namespace App\Entity\Attachments; use App\Entity\Base\MasterAttachmentTrait; use App\Entity\Base\AbstractNamedDBElement; +use App\Entity\Contracts\HasMasterAttachmentInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -32,7 +33,7 @@ use Doctrine\ORM\Mapping as ORM; /** * @ORM\MappedSuperclass() */ -abstract class AttachmentContainingDBElement extends AbstractNamedDBElement +abstract class AttachmentContainingDBElement extends AbstractNamedDBElement implements HasMasterAttachmentInterface { use MasterAttachmentTrait; diff --git a/src/Entity/Base/AbstractNamedDBElement.php b/src/Entity/Base/AbstractNamedDBElement.php index d1f8af1e..a34dbe7f 100644 --- a/src/Entity/Base/AbstractNamedDBElement.php +++ b/src/Entity/Base/AbstractNamedDBElement.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Entity\Base; +use App\Entity\Contracts\NamedElementInterface; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; @@ -33,7 +34,7 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\MappedSuperclass(repositoryClass="App\Repository\UserRepository") * @ORM\HasLifecycleCallbacks() */ -abstract class AbstractNamedDBElement extends AbstractDBElement +abstract class AbstractNamedDBElement extends AbstractDBElement implements NamedElementInterface { use TimestampTrait; diff --git a/src/Entity/Contracts/HasAttachmentsInterface.php b/src/Entity/Contracts/HasAttachmentsInterface.php new file mode 100644 index 00000000..d413aca8 --- /dev/null +++ b/src/Entity/Contracts/HasAttachmentsInterface.php @@ -0,0 +1,30 @@ +setRequired('entity'); - $resolver->setAllowedTypes('entity', AttachmentContainingDBElement::class); + $resolver->setAllowedTypes('entity', HasMasterAttachmentInterface::class); $resolver->setDefaults([ 'filter' => 'picture', diff --git a/src/Services/ElementTypeNameGenerator.php b/src/Services/ElementTypeNameGenerator.php index 72e4c205..a7e5eb5b 100644 --- a/src/Services/ElementTypeNameGenerator.php +++ b/src/Services/ElementTypeNameGenerator.php @@ -28,6 +28,7 @@ use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentType; use App\Entity\Base\AbstractDBElement; use App\Entity\Base\AbstractNamedDBElement; +use App\Entity\Contracts\NamedElementInterface; use App\Entity\Devices\Device; use App\Entity\Parts\Category; use App\Entity\Parts\Footprint; @@ -113,14 +114,14 @@ class ElementTypeNameGenerator * For example this could be something like: "Part: BC547". * It uses getLocalizedLabel to determine the type. * - * @param AbstractNamedDBElement $entity the entity for which the string should be generated + * @param NamedElementInterface $entity the entity for which the string should be generated * @param bool $use_html If set to true, a html string is returned, where the type is set italic * * @return string The localized string * * @throws EntityNotSupportedException when the passed entity is not supported */ - public function getTypeNameCombination(AbstractNamedDBElement $entity, bool $use_html = false): string + public function getTypeNameCombination(NamedElementInterface $entity, bool $use_html = false): string { $type = $this->getLocalizedTypeLabel($entity); if ($use_html) {