<?php
namespace App\Entity\Product;
use App\Entity\CustomerGroup;
use App\Entity\User;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Class GuestProduct
*
* @ORM\Table(name="malys_guest_product")
* @ORM\Entity(repositoryClass="App\Repository\GuestProductRepository")
* @package App\Entity
*/
class GuestProduct extends Product
{
public function __toString()
{
// TODO: Implement __toString() method.
return $this->getId() . ' : ' . $this->getCode() . ' : ';
}
public const ORDER_UNITS_CHOICES = [
'kilo',
'bouteille',
'unité',
'boite',
'colis'
];
public const CUSTOM_ORDER_UNIT_LABEL = 'autre';
/**
* @var CustomerGroup
*
* @ORM\ManyToOne(targetEntity="App\Entity\CustomerGroup", inversedBy="guestProducts")
* @ORM\JoinColumn(name="by_customer_group_id", referencedColumnName="id", onDelete="CASCADE")
* @Assert\NotBlank()
*/
protected $byCustomerGroup;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="guestProducts")
* @ORM\JoinColumn(name="author", referencedColumnName="id")
* @Assert\NotBlank()
*/
protected $author;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(name="impersonator", referencedColumnName="id")
*/
protected $impersonator;
/**
* @var string
* @ORM\Column(name="orderUnit", type="string", length=255, nullable=false)
* @Assert\NotBlank(message="Indiquez le conditionnement du produit", groups={"customerEdit", "Default", "invoiceEdit"})
*/
protected $orderUnit;
/**
* @Assert\NotBlank(message="Indiquez le nom du produit", groups={"customerEdit", "Default", "invoiceEdit"})
*/
protected $name;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Invoice", mappedBy="products")
* @ORM\JoinTable(name="malys_invoices_products")
*/
protected $invoices;
/**
* @ORM\Column(name="price", type="float", nullable=true)
* @Assert\NotBlank(message="Indiquez le prix du produit", groups={"invoiceEdit"})
* @Assert\Type(type="numeric", message="Cette valeur doit ĂȘtre un nombre", groups={"invoiceEdit", "customerEdit"})
*/
protected $price;
/**
* Gets the author.
*
* @return User
*/
public function getAuthor()
{
return $this->author;
}
/**
* Sets the author.
*
* @param User $author
* @return GuestProduct
*/
public function setAuthor(User $author)
{
$this->author = $author;
return $this;
}
/**
* @return CustomerGroup
*/
public function getByCustomerGroup()
{
return $this->byCustomerGroup;
}
/**
* @param CustomerGroup $byCustomerGroup
*/
public function setByCustomerGroup($byCustomerGroup)
{
$this->byCustomerGroup = $byCustomerGroup;
}
public function getType()
{
return parent::TYPE_GUEST;
}
/**
* @return string
*/
public function getOrderUnit(): ?string
{
return $this->orderUnit;
}
/**
* @param string $orderUnit
*/
public function setOrderUnit(?string $orderUnit): void
{
$this->orderUnit = $orderUnit;
}
/**
* @return User
*/
public function getImpersonator(): ?User
{
return $this->impersonator;
}
/**
* @param User $impersonator
*/
public function setImpersonator(User $impersonator): void
{
$this->impersonator = $impersonator;
}
/**
* @return mixed
*/
public function getPrice()
{
return $this->price;
}
/**
* @param mixed $price
*/
public function setPrice($price): void
{
$this->price = $price;
}
/**
* @return mixed
*/
public function getInvoices()
{
return $this->invoices;
}
/**
* @param mixed $invoices
*/
public function setInvoices($invoices): void
{
$this->invoices = $invoices;
}
/**
public function addInvoice( Invoice $invoice ) {
if ( ! $this->invoices->contains( $invoice) ) {
$this->invoices->add( $invoice );
}
}
public function removeI
* */
}