<?php
namespace App\Entity;
use App\Repository\CompanyRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
* @ORM\Entity(repositoryClass=CompanyRepository::class)
* @ORM\Table
*/
class Company
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $url;
/**
* @ORM\Column(type="text")
*/
private $description;
/**
* @ORM\OneToOne(targetEntity=User::class, inversedBy="company", cascade={"persist", "remove"})
*/
private $user;
/**
* @ORM\OneToMany(targetEntity=Job::class, mappedBy="company")
*/
private $jobs;
/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @var File
*
* @Vich\UploadableField(mapping="company_image", fileNameProperty="archivo", originalName="file_original_name")
*/
protected $archivoFile;
/**
* @var string
*
* @ORM\Column(type="string", length=255, name="file_original_name", nullable = true)
*/
protected $file_original_name;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $archivo;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime", nullable=true)
*/
private $updateAt;
public function __construct()
{
$this->jobs = 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 getUrl(): ?string
{
return $this->url;
}
public function setUrl(string $url): self
{
$this->url = $url;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
/**
* @return Collection|Job[]
*/
public function getJobs(): Collection
{
return $this->jobs;
}
public function addJob(Job $job): self
{
if (!$this->jobs->contains($job)) {
$this->jobs[] = $job;
$job->setCompany($this);
}
return $this;
}
public function removeJob(Job $job): self
{
if ($this->jobs->contains($job)) {
$this->jobs->removeElement($job);
// set the owning side to null (unless already changed)
if ($job->getCompany() === $this) {
$job->setCompany(null);
}
}
return $this;
}
/**
* @return string
*/
public function getArchivo(): ?string
{
return $this->archivo;
}
/**
* @param string $archivo
*/
public function setArchivo($archivo)
{
$this->archivo = $archivo;
}
/**
* @return File
*/
public function getArchivoFile(): ?File
{
return $this->archivoFile;
}
/**
* @return string
*/
public function getFileOriginalName(): ?string
{
return $this->file_original_name;
}
/**
* @param string $file_original_name
*/
public function setFileOriginalName($file_original_name)
{
$this->file_original_name = $file_original_name;
}
/**
* @return \DateTime
*/
public function getUpdateAt(): \DateTime
{
return $this->updateAt;
}
/**
* @param \DateTime $updateAt
*/
public function setUpdateAt($updateAt)
{
$this->updateAt = $updateAt;
}
/**
* @param File|null $archivoFile
*
* @throws \Exception
*/
public function setArchivoFile(File $archivoFile = null)
{
$this->archivoFile = $archivoFile;
$this->updateAt = new \DateTime('now');
}
public function __toString()
{
return $this->getName();
}
}