<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\Traits\CreatedUpdatedTrait;
use Gedmo\Mapping\Annotation as Gedmo;
use JMS\Serializer\Annotation as Serializer;
use JMS\Serializer\Annotation\Exclude;
use JMS\Serializer\Annotation\ExclusionPolicy;
/**
* @ORM\Table(name="v_content_block")
* @ORM\Entity(repositoryClass="App\Repository\ContentBlockRepository")
* @ORM\HasLifecycleCallbacks()
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=true)
* @ExclusionPolicy("none")
*/
class ContentBlock
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Clinic")
* @Exclude()
*/
private $clinic;
/**
* @ORM\ManyToOne(targetEntity="User")
*/
private $user;
/**
* @ORM\Column(type="string", length=255)
*/
private $title;
/**
* @var string
* @Gedmo\Slug(fields={"title"}, updatable=false)
* @ORM\Column(type="string", length=255)
*/
private $slug;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $image;
/**
* @ORM\Column(name="detail_image", type="string", length=255, nullable=true)
*/
private $detailImage;
/**
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $caption;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $content;
/**
* @ORM\Column(type="boolean")
*/
private $enabled;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $link;
/**
* @var string
*
* @ORM\Column(name="tracking_code", type="string", length=255, nullable=true)
*/
private $trackingCode;
/**
* @Gedmo\SortablePosition
* @ORM\Column(type="integer")
*/
private $position=0;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $previewText;
/**
* @ORM\Column(name="deleted_at", type="datetime", nullable=true)
*/
private $deletedAt;
/**
* @ORM\Column(name="read_time", type="integer", nullable=true)
*/
private $readTime;
/**
* @ORM\Column(type="string", length=20, nullable=true)
*/
private $language;
public function __construct()
{
$this->setTrackingCode('iom-cb-'.date('Ymdhis').'-'.rand(1000,9999));
}
use CreatedUpdatedTrait;
public function __toString()
{
return (string) $this->title;
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return mixed
*/
public function getClinic()
{
return $this->clinic;
}
/**
* @param mixed $clinic
*/
public function setClinic($clinic): void
{
$this->clinic = $clinic;
}
/**
* @return mixed
*/
public function getUser()
{
return $this->user;
}
/**
* @param mixed $user
*/
public function setUser($user): void
{
$this->user = $user;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
/**
* @return string|null
*/
public function getSlug(): ?string
{
return $this->slug;
}
/**
* @param string|null $slug
* @return ContentBlock
*/
public function setSlug(?string $slug): self
{
$this->slug = $slug;
return $this;
}
public function getImage(): ?string
{
return $this->image;
}
public function setImage(?string $image): self
{
$this->image = $image;
return $this;
}
/**
* @return mixed
*/
public function getDetailImage()
{
return $this->detailImage;
}
/**
* @param mixed $detailImage
*/
public function setDetailImage($detailImage): void
{
$this->detailImage = $detailImage;
}
public function getCaption(): ?string
{
return $this->caption;
}
public function setCaption(?string $caption): self
{
$this->caption = $caption;
return $this;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(?string $content): self
{
$this->content = $content;
return $this;
}
public function getEnabled(): ?bool
{
return $this->enabled;
}
public function setEnabled(?bool $enabled): self
{
$this->enabled = $enabled;
return $this;
}
public function getLink(): ?string
{
return $this->link;
}
public function setLink(?string $link): self
{
$this->link = $link;
return $this;
}
/**
* @return string
*/
public function getTrackingCode()
{
return $this->trackingCode;
}
/**
* @param string $trackingCode
*/
public function setTrackingCode(?string $trackingCode)
{
$this->trackingCode = $trackingCode;
}
/**
* @return mixed
*/
public function getPosition()
{
return $this->position;
}
/**
* @param mixed $position
*/
public function setPosition($position): void
{
$this->position = $position;
}
public function getPreviewText(): ?string
{
return $this->previewText;
}
public function setPreviewText(?string $previewText): self
{
$this->previewText = $previewText;
return $this;
}
/**
* @return mixed
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
/**
* @param mixed $deletedAt
*/
public function setDeletedAt($deletedAt): void
{
$this->deletedAt = $deletedAt;
$this->updated = $deletedAt;
}
/**
* @return mixed
*/
public function getReadTime()
{
return $this->readTime;
}
/**
* @param mixed $readTime
*/
public function setReadTime($readTime): void
{
$this->readTime = $readTime;
}
/**
* @return mixed
*/
public function getLanguage()
{
return $this->language;
}
/**
* @param mixed $language
*/
public function setLanguage($language): void
{
$this->language = $language;
}
}