<?php
namespace App\Entity;
use App\Validator\Constraints as AppAssert;
use App\Entity\Product\ConfirmedProduct;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\PriceSpecialOfferRepository")
* @ORM\Table(name="malys_price_special_offer")
* @ORM\HasLifecycleCallbacks()
* @package App\Entity
* @AppAssert\PriceSpecialOfferDates
* @AppAssert\PriceSpecialOfferType
*/
class PriceSpecialOffer
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Many PriceOptimized have One Product
* @var ConfirmedProduct $product
* @ORM\ManyToOne(targetEntity="App\Entity\Product\ConfirmedProduct", inversedBy="specialOffers")
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* @Assert\Type("App\Entity\Product\ConfirmedProduct")
*/
protected $product;
/**
* @var DateTime
*
* @ORM\Column(name="start", type="datetime", nullable=false)
*/
protected $start;
/**
* @var DateTime
*
* @ORM\Column(name="end", type="datetime", nullable=false)
*/
protected $end;
/**
* @var float
*
* @ORM\Column(name="price", type="float", nullable=false)
* @Assert\NotBlank()
* @Assert\Type("float")
*/
protected $price;
/**
* @var $type string
* @ORM\Column(name="type", type="string", nullable=false)
* @Assert\NotBlank()
*/
protected $type;
/**
* @var string
*
* @ORM\Column(name="label", type="string", length=255, nullable=true)
* @Assert\Length(
* max = 20,
* maxMessage = "Max {{ limit }} caractères"
* )
*/
protected $label;
/**
* @var boolean
*
* @ORM\Column(name="disable_on_end", type="boolean", options={"default" : false}, nullable=true)
*/
protected $disableOnEnd;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return ConfirmedProduct
*/
public function getProduct()
{
return $this->product;
}
/**
* @param ConfirmedProduct $product
*/
public function setProduct(ConfirmedProduct $product)
{
$this->product = $product;
}
/**
* @return DateTime
*/
public function getStart()
{
return $this->start;
}
/**
* @param DateTime $start
*/
public function setStart($start)
{
$this->start = $start;
}
/**
* @return DateTime
*/
public function getEnd()
{
return $this->end;
}
/**
* @param DateTime $end
*/
public function setEnd($end)
{
$this->end = $end;
}
/**
* @return float
*/
public function getPrice()
{
return $this->price;
}
/**
* @param float $price
*/
public function setPrice($price)
{
$this->price = $price;
}
/**
* @return string
*/
public function getType()
{
return $this->type;
}
/**
* @param string $type
*/
public function setType($type)
{
$this->type = $type;
}
public function getSupplier()
{
if ($this->getProduct() instanceof ConfirmedProduct) {
return $this->getProduct()->getSupplier();
}
return null;
}
/**
* @return string
*/
public function getLabel()
{
return $this->label;
}
/**
* @param string $label
*/
public function setLabel($label)
{
$this->label = $label;
}
/**
* @return bool
*/
public function isDisableOnEnd()
{
return $this->disableOnEnd;
}
/**
* @param bool $disableOnEnd
*/
public function setDisableOnEnd($disableOnEnd)
{
$this->disableOnEnd = $disableOnEnd;
}
}