<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\OrderBy;
use Doctrine\ORM\Mapping\Table as Table;
/**
* Banner
*
* @Table(name="banners")
* @Entity
*/
class Banner extends AbstractSignedEntity
{
/**
* @var Domain
*
* @ManyToOne(targetEntity="Domain", inversedBy="banners")
* @JoinColumn(name="domain_id", referencedColumnName="id")
*/
private $domain;
/**
* @var Collection<int, BannerItem>
*
* @OneToMany(targetEntity="BannerItem", mappedBy="banner", orphanRemoval=true)
* @OrderBy({"created" = "DESC"})
**/
private $bannerItems;
/**
* @var int
*
* @Column(name="count_down", type="integer")
*/
private $countDown;
/**
* @var int
*
* @Column(name="type", type="integer")
*/
private $type;
/**
* @var int
*
* @Column (name="display_type", type="integer")
*/
private $displayType;
// Standard Types
public const BANNER_MAIN_TYPE = 1;
public const BANNER_SMALL_UPPER_TYPE = 2;
public const BANNER_SMALL_LOWER_TYPE = 3;
// Bazaar Types
public const BANNER_BAZAAR_MAIN_TYPE = 4;
public const BANNER_BAZAAR_SMALL_UPPER_TYPE = 5;
public const BANNER_BAZAAR_SMALL_LOWER_TYPE = 6;
// Display Types
public const BANNER_DISPLAY_TYPE_BANNER = 1;
public const BANNER_DISPLAY_TYPE_PRODUCT = 2;
public const BANNER_DISPLAY_TYPE_CATEGORY_GROUP = 3;
/**
* @return array<int,string>
*/
public static function getBannerTypes(): array
{
return [
self::BANNER_MAIN_TYPE => 'Carousel',
self::BANNER_SMALL_UPPER_TYPE => 'Single upper',
self::BANNER_SMALL_LOWER_TYPE => 'Single lower',
self::BANNER_BAZAAR_MAIN_TYPE => 'Bazaar - Carousel',
self::BANNER_BAZAAR_SMALL_UPPER_TYPE => 'Bazaar - Single upper',
self::BANNER_BAZAAR_SMALL_LOWER_TYPE => 'Bazaar - Single lower'
];
}
/**
* @return array<int,string>
*/
public static function getBannerDisplayTypes(): array
{
return [
self::BANNER_DISPLAY_TYPE_BANNER => 'Banner',
self::BANNER_DISPLAY_TYPE_PRODUCT => 'Product',
self::BANNER_DISPLAY_TYPE_CATEGORY_GROUP => 'Category group',
];
}
public function __construct()
{
parent::__construct();
$this->bannerItems = new ArrayCollection();
}
/**
* @return Domain
*/
public function getDomain(): Domain
{
return $this->domain;
}
/**
* @param Domain $domain
*
* @return void
*/
public function setDomain($domain): void
{
$this->domain = $domain;
}
/**
* @return Collection<int, BannerItem>
*/
public function getBannerItems(): Collection
{
return $this->bannerItems;
}
/**
* @param ArrayCollection<int, BannerItem> $bannerItems
*
* @return void
*/
public function setBannerItems(ArrayCollection $bannerItems): void
{
$this->bannerItems = $bannerItems;
}
/**
* @return int
*/
public function getCountDown(): int
{
return $this->countDown / 1000;
}
/**
* @param int $countDown
*
* @return void
*/
public function setCountDown(int $countDown): void
{
$this->countDown = $countDown * 1000;
}
/**
* @return int
*/
public function getType(): int
{
return $this->type;
}
/**
* @param int $type
*
* @return void
*/
public function setType(int $type): void
{
$this->type = $type;
}
/**
* @return int
*/
public function getDisplayType(): int
{
return $this->displayType;
}
/**
* @param int $displayType
*
* @return void
*/
public function setDisplayType(int $displayType): void
{
$this->displayType = $displayType;
}
}