<?php
namespace App\Entity;
use App\Business\Context;
use App\Business\ContextableEntity;
use App\Application\Sonata\MediaBundle\Entity\Gallery;
use App\Application\Sonata\MediaBundle\Entity\Media;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Event
*
* @ORM\Table(name="insight")
* @ORM\Entity(repositoryClass="App\Repository\InsightRepository")
*/
class Insight implements ContextableEntity
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
* @ORM\Column(name="title", type="string", length=256)
*/
private $title;
/**
* @Gedmo\Slug(fields={"title"})
* @ORM\Column(length=128, unique=true)
*/
private $url;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Team")
* @ORM\JoinTable(name="insight_contacts",
* joinColumns={@ORM\JoinColumn(name="insight_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="team_id", referencedColumnName="id")}
* )
*/
private $contacts;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Product")
* @ORM\JoinTable(name="insight_products",
* joinColumns={@ORM\JoinColumn(name="insight_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")}
* )
*/
private $products;
/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="App\Entity\QuickLink", cascade={"persist"})
* @ORM\JoinTable(name="insight_links",
* joinColumns={@ORM\JoinColumn(name="insight_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="link_id", referencedColumnName="id")}
* )
*/
private $links;
/**
* @var string
* @ORM\Column(name="meta_description", type="string", length=255, nullable=true)
*/
private $meta_description;
/**
* @var string
* @ORM\Column(name="meta_keywords", type="string", length=255, nullable=true)
*/
private $meta_keywords;
/**
* @var string
* @Assert\Length(max=140)
* @ORM\Column(name="teaser", type="string", length=140,nullable=true)
*/
private $teaser;
/**
* @var string
* @ORM\Column(name="text", type="text")
*/
private $text;
/**
* @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"})
*/
private $imageCaption;
/**
* @var string
* @ORM\Column(name="photo_credit",type="string", length=255, nullable=true)
*/
private $photoCredit;
/**
* @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"})
*/
private $banner;
/**
* @ORM\OneToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Gallery", cascade={"persist"}, fetch="LAZY")
*/
private $gallery;
/**
* @ORM\Column(name="featured", type="boolean")
*/
private $featured = false;
/**
* @ORM\Column(name="use_grey_background_banner", type="boolean")
*/
private $useGreyBackgroundOnBanner = false;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\SonataClassificationCategory", cascade={"persist"})
*/
private $category;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\SonataClassificationTag")
*/
private $tags;
/**
* @var boolean
* @ORM\Column(name="publish", type="boolean")
*/
private $publish = false;
/**
* @var DateTime
* @ORM\Column(name="publish_date_end", type="datetime", nullable=true)
*/
private $publish_date_end;
/**
* @var DateTime
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
private $date;
public function __construct()
{
$this->contacts = new ArrayCollection();
$this->products = new ArrayCollection();
$this->tags = new ArrayCollection();
$this->links = new ArrayCollection();
$this->date = new DateTime();
}
/**
* @return string
*/
public function getPhotoCredit(): ?string
{
return $this->photoCredit;
}
/**
* @param string $photoCredit
*/
public function setPhotoCredit(string $photoCredit = null): void
{
$this->photoCredit = $photoCredit;
}
/**
* @return mixed
*/
public function getUseGreyBackgroundOnBanner()
{
return $this->useGreyBackgroundOnBanner;
}
/**
* @param mixed $useGreyBackgroundOnBanner
*/
public function setUseGreyBackgroundOnBanner($useGreyBackgroundOnBanner): void
{
$this->useGreyBackgroundOnBanner = $useGreyBackgroundOnBanner;
}
public function __toString()
{
return (string)$this->getTitle();
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set title
*
* @param string $title
*
* @return Insight
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* @return string Context::INSIGHTS
*/
public function getContextId(): string
{
return Context::INSIGHTS;
}
public function getContextCategoryId(): string
{
return "";
}
public function getContextMainCategoryId(): string
{
return $this->getCategory()->getName();
}/** @noinspection PhpLanguageLevelInspection */
/**
* Get category
*
* @return SonataClassificationCategory
*/
public function getCategory()
{
return $this->category;
}
/**
* Set category
*
* @param SonataClassificationCategory $category
*
* @return Insight
*/
public function setCategory(SonataClassificationCategory $category = null)
{
$this->category = $category;
return $this;
}
/**
* @return DateTime
*/
public function getDate(): ?DateTime
{
return $this->date;
}
/**
* @param DateTime $date
*/
public function setDate(DateTime $date = null)
{
$this->date = $date;
}
public function toString(): string
{
return "{id=" . $this->id . "}";
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Get teaser
*
* @return string
*/
public function getTeaser()
{
return $this->teaser;
}
/**
* Set teaser
*
* @param string $teaser
*
* @return Insight
*/
public function setTeaser($teaser)
{
$this->teaser = $teaser;
return $this;
}
/**
* Get text
*
* @return string
*/
public function getText()
{
return $this->text;
}
/**
* Set text
*
* @param string $text
*
* @return Insight
*/
public function setText($text)
{
$this->text = $text;
return $this;
}
/**
* Get publish
*
* @return boolean
*/
public function getPublish()
{
return $this->publish;
}
/**
* Set publish
*
* @param boolean $publish
*
* @return Insight
*/
public function setPublish($publish)
{
$this->publish = $publish;
return $this;
}
/**
* Get imageCaption
*
* @return Media
*/
public function getImageCaption(): ?Media
{
return $this->imageCaption;
}
/**
* Set imageCaption
*
* @param Media $imageCaption
*
* @return Insight
*/
public function setImageCaption(Media $imageCaption = null)
{
$this->imageCaption = $imageCaption;
return $this;
}
/**
* Get publishDateEnd
*
* @return DateTime
*/
public function getPublishDateEnd()
{
return $this->publish_date_end;
}
/**
* Set publishDateEnd
*
* @param DateTime $publishDateEnd
*
* @return Insight
*/
public function setPublishDateEnd($publishDateEnd)
{
$this->publish_date_end = $publishDateEnd;
return $this;
}
/**
* Get url
*
* @return string
*/
public function getUrl()
{
return $this->url;
}
/**
* Set url
*
* @param string $url
*
* @return Insight
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
/**
* Get metaDescription
*
* @return string
*/
public function getMetaDescription()
{
return $this->meta_description;
}
/**
* Set metaDescription
*
* @param string $metaDescription
*
* @return Insight
*/
public function setMetaDescription($metaDescription)
{
$this->meta_description = $metaDescription;
return $this;
}
/**
* Get metaKeywords
*
* @return string
*/
public function getMetaKeywords()
{
return $this->meta_keywords;
}
/**
* Set metaKeywords
*
* @param string $metaKeywords
*
* @return Insight
*/
public function setMetaKeywords($metaKeywords)
{
$this->meta_keywords = $metaKeywords;
return $this;
}
/**
* Add contact
*
* @param Team $contact
*
* @return Insight
*/
public function addContact(Team $contact)
{
$this->contacts[] = $contact;
return $this;
}
/**
* Add product
*
* @param Product $product
* @return Insight
*/
public function addProduct(Product $product)
{
$this->products[] = $product;
return $this;
}
/**
* Remove contact
*
* @param Team $contact
*/
public function removeContact(Team $contact)
{
$this->contacts->removeElement($contact);
}
/**
* Get contacts
*
* @return Collection
*/
public function getContacts()
{
return $this->contacts;
}
/**
* Get contacts
*
* @return Collection
*/
public function getProducts()
{
return $this->products;
}
/**
* @param mixed $products
*/
public function setProducts($products): void
{
$this->products = $products;
}
/**
* Get featured
*
* @return boolean
*/
public function getFeatured()
{
return $this->featured;
}
/**
* Set featured
*
* @param boolean $featured
*
* @return Insight
*/
public function setFeatured($featured)
{
$this->featured = $featured;
return $this;
}
/**
* Add tag
*
* @param SonataClassificationTag $tag
*
* @return Insight
*/
public function addTag(SonataClassificationTag $tag)
{
$this->tags[] = $tag;
return $this;
}
/**
* Remove tag
*
* @param SonataClassificationTag $tag
*/
public function removeTag(SonataClassificationTag $tag)
{
$this->tags->removeElement($tag);
}
/**
* Get tags
*
* @return Collection
*/
public function getTags()
{
return $this->tags;
}
/**
* Get banner
*
* @return Media
*/
public function getBanner()
{
return $this->banner;
}
/**
* Set banner
*
* @param Media $banner
*
* @return Insight
*/
public function setBanner(Media $banner = null)
{
$this->banner = $banner;
return $this;
}
/**
* Add link
*
* @param QuickLink $link
*
* @return Insight
*/
public function addLink(QuickLink $link)
{
$this->links[] = $link;
return $this;
}
/**
* Remove link
*
* @param QuickLink $link
*/
public function removeLink(QuickLink $link)
{
$this->links->removeElement($link);
}
/**
* Get links
*
* @return Collection
*/
public function getLinks()
{
return $this->links;
}
/**
* Get gallery
*
* @return Gallery
*/
public function getGallery()
{
return $this->gallery;
}
/**
* Set gallery
*
* @param Gallery $gallery
*
* @return Insight
*/
public function setGallery(Gallery $gallery = null)
{
$this->gallery = $gallery;
return $this;
}
}