<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\HttpFoundation\File\File;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Serializer\Annotation\Groups;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
* @ORM\Entity(repositoryClass="App\Repository\SupplierRepository")
*/
class Supplier
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"stock_edit", "supplier_edit"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"stock_edit", "supplier_edit"})
*/
private $company;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $finishedProductsOrder;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $sparePartsDepartment;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $managerName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $managerPhoneNumber;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $managerEmail;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $areaManagerName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $areaManagerPhoneNumber;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $areaManagerEmail;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $hotlinePhoneNumber;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $hotlineEmail;
/**
* @ORM\OneToMany(targetEntity=Stock::class, mappedBy="supplier")
*/
private $stocks;
/**
* @ORM\OneToMany(targetEntity=Brand::class, mappedBy="supplier")
*/
private $brands;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
* @var string|null
*/
private $logo;
/**
* @Vich\UploadableField(mapping="suppliers", fileNameProperty="logo", size="logoSize")
* @Groups({"supplier_edit"})
* @var File|null
*/
private $logoFile;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"supplier_edit"})
*/
private $websiteLink;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $logoSize;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
*/
private $updatedAt;
public function __construct()
{
$this->stocks = new ArrayCollection();
$this->brands = new ArrayCollection();
}
public function __toString(): string
{
return $this->company;
}
public function getId(): ?int
{
return $this->id;
}
public function getCompany(): ?string
{
return $this->company;
}
public function setCompany(string $company): self
{
$this->company = $company;
return $this;
}
public function getFinishedProductsOrder(): ?string
{
return $this->finishedProductsOrder;
}
public function setFinishedProductsOrder(?string $finishedProductsOrder): self
{
$this->finishedProductsOrder = $finishedProductsOrder;
return $this;
}
public function getSparePartsDepartment(): ?string
{
return $this->sparePartsDepartment;
}
public function setSparePartsDepartment(?string $sparePartsDepartment): self
{
$this->sparePartsDepartment = $sparePartsDepartment;
return $this;
}
public function getManagerName(): ?string
{
return $this->managerName;
}
public function setManagerName(?string $managerName): self
{
$this->managerName = $managerName;
return $this;
}
public function getAreaManagerName(): ?string
{
return $this->areaManagerName;
}
public function setAreaManagerName(?string $areaManagerName): self
{
$this->areaManagerName = $areaManagerName;
return $this;
}
public function getAreaManagerEmail(): ?string
{
return $this->areaManagerEmail;
}
public function setAreaManagerEmail(?string $areaManagerEmail): self
{
$this->areaManagerEmail = $areaManagerEmail;
return $this;
}
public function getManagerEmail(): ?string
{
return $this->managerEmail;
}
public function setManagerEmail(?string $managerEmail): self
{
$this->managerEmail = $managerEmail;
return $this;
}
public function getHotlinePhoneNumber(): ?string
{
return $this->hotlinePhoneNumber;
}
public function setHotlinePhoneNumber(?string $hotlinePhoneNumber): self
{
$this->hotlinePhoneNumber = $hotlinePhoneNumber;
return $this;
}
public function getHotlineEmail(): ?string
{
return $this->hotlineEmail;
}
public function setHotlineEmail(?string $hotlineEmail): self
{
$this->hotlineEmail = $hotlineEmail;
return $this;
}
/**
* @return Collection<int, Stock>
*/
public function getStocks(): Collection
{
return $this->stocks;
}
public function addStock(Stock $stock): self
{
if (!$this->stocks->contains($stock)) {
$this->stocks[] = $stock;
$stock->setSupplier($this);
}
return $this;
}
public function removeStock(Stock $stock): self
{
if ($this->stocks->removeElement($stock)) {
// set the owning side to null (unless already changed)
if ($stock->getSupplier() === $this) {
$stock->setSupplier(null);
}
}
return $this;
}
/**
* @return Collection<int, Brand>
*/
public function getBrands(): Collection
{
return $this->brands;
}
public function addBrand(Brand $brand): self
{
if (!$this->brands->contains($brand)) {
$this->brands[] = $brand;
$brand->setSupplier($this);
}
return $this;
}
public function removeBrand(Brand $brand): self
{
if ($this->brands->removeElement($brand)) {
// set the owning side to null (unless already changed)
if ($brand->getSupplier() === $this) {
$brand->setSupplier(null);
}
}
return $this;
}
public function getLogo(): ?string
{
return $this->logo;
}
public function setLogo(?string $logo): self
{
$this->logo = $logo;
return $this;
}
public function getWebsiteLink(): ?string
{
return $this->websiteLink;
}
public function setWebsiteLink(?string $websiteLink): self
{
$this->websiteLink = $websiteLink;
return $this;
}
public function getLogoSize(): ?int
{
return $this->logoSize;
}
public function setLogoSize(?int $logoSize): self
{
$this->logoSize = $logoSize;
return $this;
}
public function getUpdatedAt(): ?\DateTimeImmutable
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeImmutable $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function setLogoFile(?File $logoFile = null): void
{
$this->logoFile = $logoFile;
if (null !== $logoFile) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = new \DateTimeImmutable();
}
}
public function getLogoFile(): ?File
{
return $this->logoFile;
}
public function getManagerPhoneNumber(): ?string
{
return $this->managerPhoneNumber;
}
public function setManagerPhoneNumber(?string $managerPhoneNumber): self
{
$this->managerPhoneNumber = $managerPhoneNumber;
return $this;
}
public function getAreaManagerPhoneNumber(): ?string
{
return $this->areaManagerPhoneNumber;
}
public function setAreaManagerPhoneNumber(?string $areaManagerPhoneNumber): self
{
$this->areaManagerPhoneNumber = $areaManagerPhoneNumber;
return $this;
}
}