<?php
namespace App\Entity;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\UniqueConstraint;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Class SupplierCustomer
*
* @ORM\Entity
* @ORM\Table(name="malys_supplier_customer", uniqueConstraints={@UniqueConstraint(name="unique_couple", columns={"customer_id", "supplier_id"})})
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity(repositoryClass="App\Repository\SupplierCustomerRepository")
* @UniqueEntity(
* fields={"customer", "supplier"},
* message="Vous avez déjà un compte chez fournisseur",
* groups={"front", "bo_full", "bo_init", "Default"}
* )
* @package App\Entity
*
*/
class SupplierCustomer
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="adherent_number", type="string", length=255, nullable=true)
* @Assert\NotBlank(message="Merci d'indiquer votre n° client", groups={"front", "bo_full", "Default"})
*/
protected $adherentNumber;
/**
* @var Customer
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="supplierCustomers")
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
*/
protected $customer;
/**
* @var Supplier
*
* @ORM\ManyToOne(targetEntity="Supplier", inversedBy="customers")
* @ORM\JoinColumn(name="supplier_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $supplier;
/**
* @var string
*
* @ORM\Column(name="column_price", type="string", length=255, nullable=false)
* @Assert\NotBlank (groups={"bo_full"})
*/
protected $columnPrice;
/**
* @var DeliveryModel
*
* @ORM\ManyToOne(targetEntity="DeliveryModel", cascade={"persist"}, inversedBy="supplierCustomerLinks")
* @ORM\JoinColumn(name="delivery_model_id", referencedColumnName="id")
* @Assert\NotBlank (groups={"bo_full"})
*/
protected $deliveryModel;
/**
* @var DateTime
*
* @ORM\Column(name="createdAt", type="datetime", nullable=false)
*/
protected $createdAt;
/**
* @var DateTime
*
* @ORM\Column(name="updatedAt", type="datetime", nullable=true)
*/
protected $updatedAt;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(name="saleperson_id", referencedColumnName="id", nullable=true)
*/
protected $salePerson;
/**
* @var boolean
*
* @ORM\Column(name="legacy_link", type="boolean", options={"default" : false}, nullable=true)
*/
protected $legacyLink = false;
/**
* SupplierCustomer constructor.
*/
public function __construct()
{
}
public function __toString()
{
$suppName = $this->getSupplier()->getCompanyName();
$shopName = $this->getCustomer()->getBrandName();
return $shopName . ' <> ' . $suppName;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string
*/
public function getAdherentNumber()
{
return $this->adherentNumber;
}
/**
* @param string $adherentNumber
*/
public function setAdherentNumber($adherentNumber)
{
$this->adherentNumber = $adherentNumber;
}
/**
* @return Customer
*/
public function getCustomer()
{
return $this->customer;
}
/**
* @param Customer $customer
*/
public function setCustomer($customer)
{
$this->customer = $customer;
}
/**
* @return Supplier
*/
public function getSupplier()
{
return $this->supplier;
}
/**
* @param Supplier $supplier
*/
public function setSupplier($supplier)
{
$this->supplier = $supplier;
}
/**
* @return string
*/
public function getColumnPrice()
{
return $this->columnPrice;
}
/**
* @param string $columnPrice
*/
public function setColumnPrice($columnPrice)
{
$this->columnPrice = $columnPrice;
}
/**
* @return DeliveryModel
*/
public function getDeliveryModel()
{
return $this->deliveryModel;
}
/**
* @param DeliveryModel $deliveryModel
*/
public function setDeliveryModel($deliveryModel)
{
$this->deliveryModel = $deliveryModel;
}
/**
* @return DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
*
* @return SupplierCustomer
* @ORM\PrePersist
*/
public function prePersist()
{
$this->createdAt = new DateTime();
$this->updatedAt = new DateTime();
return $this;
}
public function setCreatedAt(DateTime $dt)
{
$this->createdAt = $dt;
}
/**
* @return DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set updatedAt
*
* @return SupplierCustomer
* @ORM\PreUpdate
*/
public function setUpdatedAt()
{
$this->updatedAt = new DateTime();
return $this;
}
/**
* @return bool
*/
public function isLegacyLink()
{
return $this->legacyLink;
}
/**
* @param bool $legacyLink
*/
public function setLegacyLink($legacyLink)
{
$this->legacyLink = $legacyLink;
}
/**
* @return mixed
*/
public function getSalePerson()
{
return $this->salePerson;
}
/**
* @param mixed $salePerson
*/
public function setSalePerson($salePerson)
{
$this->salePerson = $salePerson;
}
}