<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Pages
*
* @ORM\Table(name="pages")
* @ORM\Entity
*/
class Page extends TranslatedEntity
{
protected $tranlatedEntity = 'PageDescription';
/**
* @var bool
*
* @ORM\Column(name="pages_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="pages_image", type="string", length=64, nullable=true)
*/
private $image;
/**
* @var \DateTime
*
* @ORM\Column(name="pages_date_added", type="datetime", nullable=true)
*/
private $dateAdded;
/**
* @var \DateTime
*
* @ORM\Column(name="pages_date_modified", type="datetime", nullable=true)
*/
private $dateModified;
/**
* @var string
*
* @ORM\Column(name="pages_author", type="string", length=255, nullable=true)
*/
private $author;
/**
* @var bool
*
* @ORM\Column(name="pages_status", type="boolean", nullable=false, options={"default"="1"})
*/
private $status = '1';
/**
* @var bool
*
* @ORM\Column(name="pages_sort_order", type="boolean", nullable=false)
*/
private $sortOrder = '0';
/**
* @ORM\OneToMany(targetEntity="App\Entity\PageDescription", mappedBy="page")
*/
private $descriptions = [];
/**
* @ORM\ManyToOne(targetEntity="App\Entity\PriceGroup")
* @ORM\JoinColumn(name="price_group_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
private $context;
public function getId(): ?int {
return $this->id;
}
public function getImage(): ?string {
return $this->image;
}
public function getDateAdded(): \DateTime {
return $this->dateAdded;
}
public function getDateModified(): \DateTime {
return $this->dateModified;
}
public function getAuthor() {
return empty($this->author)?'':$this->author;
}
public function getStatus(): bool {
return $this->status;
}
public function getSortOrder(): bool {
return $this->sortOrder;
}
public function getTitle() {
if(!empty($this->languageId)){
$description = null;
foreach($this->descriptions as $d){
if($d->getLanguage()->getId()==$this->languageId){
$description = $d;
break;
}
}
}
if(empty($description) && count($this->descriptions)){
$description = $this->descriptions[0];
}
return empty($description)?'':$description->getTitle();
}
public function getUrl() {
if(!empty($this->languageId)){
$description = null;
foreach($this->descriptions as $d){
if($d->getLanguage()->getId()==$this->languageId){
$description = $d;
break;
}
}
}
if(empty($description) && count($this->descriptions)){
$description = $this->descriptions[0];
}
return empty($description)?'':$description->getUrl();
}
public function getDescriptions() {
return $this->descriptions;
}
public function getPageDescription($lang='fr') : ?PageDescription {
foreach($this->getDescriptions() as $desc){
if($desc->getLanguage()->getCode() == $lang)
return $desc;
}
return null;
}
public function getContext() {
return $this->context;
}
public function setImage(?string $image): void {
$this->image = $image;
}
public function setDateAdded(\DateTime $dateAdded): void {
$this->dateAdded = $dateAdded;
}
public function setDateModified(\DateTime $dateModified): void {
$this->dateModified = $dateModified;
}
public function setAuthor($author): void {
$this->author = $author;
}
public function setStatus(bool $status): void {
$this->status = $status;
}
public function setSortOrder(bool $sortOrder): void {
$this->sortOrder = $sortOrder;
}
public function setDescriptions($descriptions): void {
$this->descriptions = $descriptions;
}
public function setContext($context): void {
$this->context = $context;
}
public function toArray() : array{
$output = [
'id' => $this->getId(),
'title' => $this->getTitle(),
'author' => $this->getAuthor(),
'dateAdded' => $this->getDateAdded(),
'dateModified' => $this->getDateModified(),
'image' => $this->getImage(),
'status' => $this->getStatus(),
'sort' => $this->getSortOrder()
];
return $output;
}
}