<?php
namespace App\Entity;
use App\Model\TranslationModel;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: 'App\Repository\CompanyRepository')]
#[ORM\Table(name: 'company')]
class Company extends User
{
#[ORM\Column(name: 'name', type: 'string', length: 255)]
#[Groups(['company', 'category', 'favorite'])]
protected $name;
#[ORM\Column(name: 'certification', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $certification;
#[ORM\Column(name: 'niveau', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $niveau;
#[ORM\Column(name: 'influencezone', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $influencezone;
#[ORM\Column(name: 'street', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $street;
#[ORM\Column(name: 'streetnumber', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $streetnumber;
#[ORM\Column(name: 'postcode', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $postcode;
#[ORM\Column(name: 'city', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $city;
#[ORM\Column(name: 'region', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $region;
#[ORM\Column(name: 'country', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $country;
#[ORM\Column(name: 'phone', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $phone;
#[ORM\Column(name: 'wantevaluation', type: 'boolean')]
#[Groups(['company', 'category'])]
protected $wantevaluation;
#[ORM\Column(name: 'description', type: 'text')]
#[Groups(['company', 'category'])]
protected $description;
#[ORM\Column(name: 'vision', type: 'text')]
#[Groups(['company', 'category'])]
protected $vision;
#[ORM\Column(name: 'socialreason', type: 'text')]
#[Groups(['company', 'category'])]
protected $socialreason;
#[ORM\Column(name: 'urlwebsite', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $urlwebsite;
#[ORM\Column(name: 'urlfacebook', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $urlfacebook;
#[ORM\Column(name: 'urltwitter', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $urltwitter;
#[ORM\Column(name: 'urllinkedin', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category'])]
protected $urllinkedin;
#[ORM\Column(name: 'slug', type: 'string', length: 255)]
#[Groups(['company', 'category'])]
protected $slug;
#[ORM\Column(name: 'starting_date', type: 'date', nullable: true)]
#[Groups(['company', 'category'])]
protected $startingdate;
#[ORM\Column(name: 'package', type: 'smallint', nullable: true)]
#[Groups(['company', 'category'])]
protected $package;
#[ORM\Column(name: 'image', type: 'string', length: 255, nullable: true)]
#[Groups(['company', 'category', 'favorite'])]
protected $image;
#[ORM\Column(name: 'latitude', type: 'float')]
#[Groups(['company', 'category'])]
protected $latitude;
#[ORM\Column(name: 'longtitude', type: 'float')]
#[Groups(['company', 'category'])]
protected $longtitude;
#[ORM\Column(type: 'boolean')]
#[Groups(['company', 'category'])]
protected $activated = false;
#[ORM\OneToMany(targetEntity: Product::class, mappedBy: 'company', orphanRemoval: true)]
#[Groups(['company', 'category'])]
protected $products;
#[ORM\ManyToMany(targetEntity: Category::class, inversedBy: 'companies')]
#[Groups(['company', 'category'])]
protected Collection $categories;
#[ORM\OneToMany(targetEntity: 'App\Entity\CompanyFav', mappedBy: 'company', orphanRemoval: true, cascade: ['remove'])]
protected Collection $companyFavCompanies;
#[OneToOne(targetEntity: AdapterContent::class, inversedBy: 'product')]
#[JoinColumn(name: 'adapterContent_id', referencedColumnName: 'id')]
protected AdapterContent|null $adapterContent = null;
public function __construct()
{
parent::__construct();
$this->products = new ArrayCollection();
$this->categories = new ArrayCollection();
$this->companyFavCompanies = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getImage(): ?string
{
return $this->image;
}
public function setImage(?string $image): self
{
$this->image = $image;
return $this;
}
public function getStartingdate(): ?\DateTimeInterface
{
return $this->startingdate;
}
public function setStartingdate(?\DateTimeInterface $startingdate): self
{
$this->startingdate = $startingdate;
return $this;
}
public function getProducts(): Collection
{
return $this->products;
}
public function addProduct(Product $product): self
{
if (!$this->products->contains($product)) {
$this->products->add($product);
$product->setCompany($this);
}
return $this;
}
public function removeProduct(Product $product): self
{
if ($this->products->removeElement($product)) {
if ($product->getCompany() === $this) {
$product->setCompany(null);
}
}
return $this;
}
public function getCategories(): Collection
{
return $this->categories;
}
public function addCategory(Category $category): self
{
if (!$this->categories->contains($category)) {
$this->categories->add($category);
}
return $this;
}
public function removeCategory(Category $category): self
{
$this->categories->removeElement($category);
return $this;
}
public function getCompanyFavCompanies(): Collection
{
return $this->companyFavCompanies;
}
public function addCompanyFavCompany($compfav): self
{
if (!$this->companyFavCompanies->contains($compfav)) {
$this->companyFavCompanies->add($compfav);
$compfav->setCompany($this);
}
return $this;
}
public function removeCompanyFavCompany($compfav): self
{
if ($this->companyFavCompanies->removeElement($compfav)) {
if ($compfav->getCompany() === $this) {
$compfav->setCompany(null);
}
}
return $this;
}
public function getCertification(): ?string
{
return $this->certification;
}
public function setCertification(?string $certification): self
{
$this->certification = $certification;
return $this;
}
public function getNiveau(): ?string
{
return $this->niveau;
}
public function setNiveau(string $niveau): self
{
$this->niveau = $niveau;
return $this;
}
public function getSlug(): ?string
{
return $this->slug;
}
public function setSlug(string $slug): self
{
$this->slug = $slug;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function getVision(): ?string
{
return $this->vision;
}
public function setVision(string $vision): self
{
$this->vision = $vision;
return $this;
}
public function getSocialreason(): ?string
{
return $this->socialreason;
}
public function setSocialreason(string $socialreason): self
{
$this->socialreason = $socialreason;
return $this;
}
public function getInfluencezone(): ?string
{
return $this->influencezone;
}
public function setInfluencezone(string $influencezone): self
{
$this->influencezone = $influencezone;
return $this;
}
public function getWantevaluation(): ?bool
{
return $this->wantevaluation;
}
public function setWantevaluation(bool $wantevaluation): self
{
$this->wantevaluation = $wantevaluation;
return $this;
}
public function getLatitude(): ?float
{
return $this->latitude;
}
public function setLatitude(float $latitude): self
{
$this->latitude = $latitude;
return $this;
}
public function getLongtitude(): ?float
{
return $this->longtitude;
}
public function setLongtitude(float $longtitude): self
{
$this->longtitude = $longtitude;
return $this;
}
public function getStreet(): ?string
{
return $this->street;
}
public function setStreet(string $street): self
{
$this->street = $street;
return $this;
}
public function getStreetnumber(): ?string
{
return $this->streetnumber;
}
public function setStreetnumber(?string $streetnumber): self
{
$this->streetnumber = $streetnumber;
return $this;
}
public function getPostcode(): ?string
{
return $this->postcode;
}
public function setPostcode(string $postcode): self
{
$this->postcode = $postcode;
return $this;
}
public function getCity(): ?string
{
return $this->city;
}
public function setCity(string $city): self
{
$this->city = $city;
return $this;
}
public function getRegion(): ?string
{
return $this->region;
}
public function setRegion(string $region): self
{
$this->region = $region;
return $this;
}
public function getCountry(): ?string
{
return $this->country;
}
public function setCountry(string $country): self
{
$this->country = $country;
return $this;
}
public function getPhone(): ?string
{
return $this->phone;
}
public function setPhone(string $phone): self
{
$this->phone = $phone;
return $this;
}
public function getUrlwebsite(): ?string
{
return $this->urlwebsite;
}
public function setUrlwebsite(?string $urlwebsite): self
{
$this->urlwebsite = $urlwebsite;
return $this;
}
public function getUrlfacebook(): ?string
{
return $this->urlfacebook;
}
public function setUrlfacebook(?string $urlfacebook): self
{
$this->urlfacebook = $urlfacebook;
return $this;
}
public function getUrltwitter(): ?string
{
return $this->urltwitter;
}
public function setUrltwitter(?string $urltwitter): self
{
$this->urltwitter = $urltwitter;
return $this;
}
public function getUrllinkedin(): ?string
{
return $this->urllinkedin;
}
public function setUrllinkedin(?string $urllinkedin): self
{
$this->urllinkedin = $urllinkedin;
return $this;
}
public function getPackage(): ?int
{
return $this->package;
}
public function setPackage(?int $package): self
{
$this->package = $package;
return $this;
}
public function getActivated(): ?bool
{
return $this->activated;
}
public function setActivated(bool $activated): self
{
$this->activated = $activated;
return $this;
}
}