vendor/shopware/core/Framework/DataAbstractionLayer/Validation/EntityExists.php line 18

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\DataAbstractionLayer\Validation;
  3. use Shopware\Core\Framework\Context;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  5. use Shopware\Core\Framework\Log\Package;
  6. use Symfony\Component\Validator\Constraint;
  7. use Symfony\Component\Validator\Exception\InvalidOptionsException;
  8. use Symfony\Component\Validator\Exception\MissingOptionsException;
  9. /**
  10.  * @Annotation
  11.  *
  12.  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  13.  */
  14. #[Package('core')]
  15. class EntityExists extends Constraint
  16. {
  17.     final public const ENTITY_DOES_NOT_EXISTS 'f1e5c873-5baf-4d5b-8ab7-e422bfce91f1';
  18.     protected const ERROR_NAMES = [
  19.         self::ENTITY_DOES_NOT_EXISTS => 'ENTITY_DOES_NOT_EXISTS',
  20.     ];
  21.     public string $message 'The {{ entity }} entity with {{ primaryProperty }} {{ id }} does not exist.';
  22.     protected string $entity;
  23.     protected Context $context;
  24.     protected Criteria $criteria;
  25.     protected string $primaryProperty 'id';
  26.     /**
  27.      * @internal
  28.      *
  29.      * @param array<string, mixed> $options
  30.      */
  31.     public function __construct(array $options)
  32.     {
  33.         $options array_merge(
  34.             ['criteria' => new Criteria()],
  35.             $options
  36.         );
  37.         if (!\is_string($options['entity'] ?? null)) {
  38.             throw new MissingOptionsException(sprintf('Option "entity" must be given for constraint %s'self::class), ['entity']);
  39.         }
  40.         if (!($options['context'] ?? null) instanceof Context) {
  41.             throw new MissingOptionsException(sprintf('Option "context" must be given for constraint %s'self::class), ['context']);
  42.         }
  43.         if (!($options['criteria'] ?? null) instanceof Criteria) {
  44.             throw new InvalidOptionsException(sprintf('Option "criteria" must be an instance of Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria for constraint %s'self::class), ['criteria']);
  45.         }
  46.         parent::__construct($options);
  47.     }
  48.     public function getContext(): Context
  49.     {
  50.         return $this->context;
  51.     }
  52.     public function getEntity(): string
  53.     {
  54.         return $this->entity;
  55.     }
  56.     public function getCriteria(): Criteria
  57.     {
  58.         return $this->criteria;
  59.     }
  60.     public function getPrimaryProperty(): string
  61.     {
  62.         return $this->primaryProperty;
  63.     }
  64. }