<?php
namespace App\Entity\System;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="ps_product_tracking")
*
* @ORM\Entity(repositoryClass="App\Repository\System\ProductTrackingRepository")
*/
class ProductTracking
{
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer", name="id_product_tracking")
*/
private $id;
/**
* @var Product
*
* @ORM\ManyToOne(targetEntity="Product")
*
* @ORM\JoinColumn(name="id_product", referencedColumnName="id_product", nullable=false)
*/
private $product;
/**
* @var ProductAttribute|null
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\ProductAttribute")
*
* @ORM\JoinColumn(name="id_product_attribute", referencedColumnName="id_product_attribute", nullable=true)
*/
private $productAttribute;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
private $dateAdd;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
private $dateUpd;
/**
* @var bool
*
* @ORM\Column(type="boolean", options={"default" : 0})
*/
private $sendMail;
/**
* @var Wishlist
*
* @ORM\ManyToOne(targetEntity="Wishlist")
*
* @ORM\JoinColumn(name="wishlist_id", referencedColumnName="id", nullable=false)
*/
private $wishlist;
public static function createFromProduct(Product $product, Wishlist $wishlist, \DateTime $dateAdd, $sendEmail = false): self
{
$pt = new self();
$pt->product = $product;
$pt->wishlist = $wishlist;
$pt->dateAdd = $dateAdd;
$pt->dateUpd = $dateAdd;
$pt->sendMail = $sendEmail;
return $pt;
}
public static function createFromProductAttribute(ProductAttribute $productAttribute, Wishlist $wishlist, \DateTime $dateAdd, $sendEmail = false): self
{
$pt = new self();
$pt->product = $productAttribute->getProduct();
$pt->productAttribute = $productAttribute;
$pt->wishlist = $wishlist;
$pt->dateAdd = $dateAdd;
$pt->dateUpd = $dateAdd;
$pt->sendMail = $sendEmail;
return $pt;
}
/**
* @param Product $product
*/
public function setProduct(Product $product): void
{
$this->product = $product;
}
/**
* @param ProductAttribute|null $productAttribute
*/
public function setProductAttribute(?ProductAttribute $productAttribute): void
{
$this->productAttribute = $productAttribute;
}
/**
* @param \DateTime $dateAdd
*/
public function setDateAdd(\DateTime $dateAdd): void
{
$this->dateAdd = $dateAdd;
}
/**
* @param \DateTime $dateUpd
*/
public function setDateUpd(\DateTime $dateUpd): void
{
$this->dateUpd = $dateUpd;
}
/**
* @param bool $sendMail
*/
public function setSendMail(bool $sendMail): void
{
$this->sendMail = $sendMail;
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return Product
*/
public function getProduct(): Product
{
return $this->product;
}
/**
* @return ProductAttribute|null
*/
public function getProductAttribute(): ?ProductAttribute
{
return $this->productAttribute;
}
/**
* @param Wishlist $wishlist
*/
public function setWishlist(Wishlist $wishlist): void
{
$this->wishlist = $wishlist;
}
}