<?phpnamespace App\DTO;use Symfony\Component\Validator\Constraints as Assert;class LandingPageBlock{ /** * @var string|null * @Assert\NotBlank(message="Please enter a title") */ private $title; /** * @var string|null * @Assert\NotBlank(message="Please enter content") */ private $content; /** * @var string|null */ private $image; /** * @var string|null */ private $ctaText; /** * @var string|null */ private $ctaLink; /** * @var string|null * @Assert\Choice(choices={"Image Left", "Image Right"}, message="Please select a valid layout") */ private $layout; public function getTitle(): ?string { return $this->title; } public function setTitle(?string $title): self { $this->title = $title; return $this; } public function getContent(): ?string { return $this->content; } public function setContent(?string $content): self { $this->content = $content; return $this; } public function getImage(): ?string { return $this->image; } public function setImage(?string $image): self { $this->image = $image; return $this; } public function getCtaText(): ?string { return $this->ctaText; } public function setCtaText(?string $ctaText): self { $this->ctaText = $ctaText; return $this; } public function getCtaLink(): ?string { return $this->ctaLink; } public function setCtaLink(?string $ctaLink): self { $this->ctaLink = $ctaLink; return $this; } public function getLayout(): ?string { return $this->layout; } public function setLayout(?string $layout): self { $this->layout = $layout; return $this; } public static function arrayToEntity(array $data): array { $array = []; foreach ($data as $item) { $block = new LandingPageBlock(); $block->setTitle($item['title'] ?? null); $block->setContent($item['content'] ?? null); $block->setImage($item['image'] ?? null); $block->setCtaText($item['ctaText'] ?? null); $block->setCtaLink($item['ctaLink'] ?? null); $block->setLayout($item['layout'] ?? null); $array[] = $block; } return $array; } public static function EntitiesToArray(array $entities): array { return array_map(function (LandingPageBlock $entity) { return $entity->toArray(); }, $entities); } public function toArray(): array { return [ 'title' => $this->title, 'content' => $this->content, 'image' => $this->image, 'ctaText' => $this->ctaText, 'ctaLink' => $this->ctaLink, 'layout' => $this->layout, ]; } public function getFilePath(): string { return 'userfiles/images/page'; } public function getFullImagePath(): string { return $this->getFilePath().'/'.$this->image; }}