*/ private array $data = []; /** * @var array */ private array $changes = []; /** * @template T of ClassMetadata * * @param T $metadata */ public static function loadMetadata(ClassMetadata $metadata): void { $builder = new ClassMetadataBuilder($metadata); $builder->setTable('contact_export_scheduler'); $builder->setCustomRepositoryClass(ContactExportSchedulerRepository::class); $builder->addId(); $builder->createManyToOne('user', User::class) ->addJoinColumn('user_id', 'id', true, false, 'CASCADE') ->build(); $builder->createField('scheduledDateTime', Types::DATETIME_IMMUTABLE) ->columnName('scheduled_datetime') ->build(); $builder->addNullableField('data', Types::ARRAY); } public static function loadValidatorMetadata(ValidatorClassMetadata $metadata): void { $metadata->addPropertyConstraint( 'scheduledDate', new Assert\NotBlank( ['message' => 'mautic.lead.import.dir.notblank'] ) ); } public function getId(): ?int { return $this->id; } public function getUser(): ?User { return $this->user; } public function setUser(User $user): self { $this->user = $user; $this->addChange('user', $user->getId()); return $this; } public function getScheduledDateTime(): ?\DateTimeImmutable { return $this->scheduledDateTime; } public function setScheduledDateTime(\DateTimeImmutable $scheduledDateTime): self { $this->scheduledDateTime = $scheduledDateTime; $this->addChange('scheduledDateTime', $scheduledDateTime); return $this; } /** * @return array */ public function getData(): array { return $this->data; } /** * @param array $data */ public function setData(array $data): self { $this->data = $data; $this->addChange('data', $data); return $this; } /** * @return array */ public function getChanges(): array { return $this->changes; } /** * @param mixed $value */ private function addChange(string $property, $value): void { $this->changes[$property] = $value; } }