src/Entity/Empresa.php line 64
<?phpnamespace App\Entity;use Vich\UploaderBundle\Mapping\Annotation as Vich;use Symfony\Component\Validator\Constraints as Assert;use Symfony\Component\Serializer\Annotation\Groups;use Symfony\Component\HttpFoundation\File\File;use Ramsey\Uuid\Uuid;use Gedmo\Mapping\Annotation as Gedmo;use Doctrine\ORM\Mapping as ORM;use Doctrine\Common\Collections\Collection;use Doctrine\Common\Collections\ArrayCollection;use App\Trait\UuidTrait;use App\Trait\TimestampableTrait;use App\State\EmpresaStateProcessor;use App\Repository\EmpresaRepository;use App\Entity\Telefono;use ApiPlatform\Metadata\Put;use ApiPlatform\Metadata\Post;use ApiPlatform\Metadata\Patch;use ApiPlatform\Metadata\GetCollection;use ApiPlatform\Metadata\Get;use ApiPlatform\Metadata\Delete;use ApiPlatform\Metadata\ApiResource;use ApiPlatform\Metadata\ApiFilter;use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;#[ORM\Entity(repositoryClass: EmpresaRepository::class)]#[ApiResource(operations: [new GetCollection(),new Post(validationContext: ['groups' => ['Default', 'empresa:create']], denormalizationContext: ['groups' => ['empresa:create']], processor: EmpresaStateProcessor::class),new Get(),new Put(denormalizationContext: ['groups' => ['empresa:update']]),new Patch(denormalizationContext: ['groups' => ['empresa:update']]),new Post(uriTemplate: '/empresas/{uuid}/logo',denormalizationContext: ['groups' => ['empresa:changeLogo']],validationContext: ['groups' => ['empresa:changeLogo']],inputFormats: ['multipart' => ['multipart/form-data']]),new Delete(),],normalizationContext: ['groups' => ['empresa:read', 'uuid']],)]#[ApiFilter(OrderFilter::class,properties: ['nombre', 'emails.direccion', 'telefonos.numero', 'direcciones.direccion'],)]#[ApiFilter(SearchFilter::class,properties: ['nombre' => 'exact','cif' => 'exact','codigo' => 'exact','telefonos.numero' => 'exact','emails.direccion' => 'exact','direcciones.direccion' => 'exact',])]#[Vich\Uploadable]class Empresa{use UuidTrait;use TimestampableTrait;#[Assert\NotBlank(groups: ['empresa:create'])]#[Groups(['empresa:read', 'empresa:create', 'empresa:update', 'grupoEmpresa:read', 'user:read'])]#[ORM\Column(length: 255, nullable: true)]private ?string $nombre = null;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\Column(length: 255, nullable: true)]private ?string $cif = null;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\Column(nullable: true)]private ?bool $isActivo = null;#[Groups(['empresa:read', 'grupoEmpresa:read'])]#[ORM\Column(length: 255, nullable: true)]#[Gedmo\Slug(fields: ['nombre'])]private ?string $codigo = null;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\OneToMany(mappedBy: 'empresa', targetEntity: Telefono::class, orphanRemoval: true, cascade: ['persist', 'remove'])]private Collection $telefonos;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\OneToMany(mappedBy: 'empresa', targetEntity: Email::class, orphanRemoval: true, cascade: ['persist', 'remove'])]private Collection $emails;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\OneToMany(mappedBy: 'empresa', targetEntity: Direccion::class, orphanRemoval: true, cascade: ['persist', 'remove'])]private Collection $direcciones;#[ORM\OneToMany(mappedBy: 'empresa', targetEntity: Evento::class, orphanRemoval: true, cascade: ['persist', 'remove'])]private Collection $eventos;#[ORM\OneToMany(mappedBy: 'empresa', targetEntity: User::class, orphanRemoval: true, cascade: ['persist', 'remove'])]private Collection $users;#[Groups(['empresa:read', 'empresa:create', 'user:read'])]#[ORM\ManyToOne(inversedBy: 'empresas')]#[ORM\JoinColumn(nullable: false)]private ?GrupoEmpresa $grupoEmpresa = null;#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\Column(nullable: true)]private ?array $paramsCalculos = [];#[Groups(['empresa:read', 'empresa:create', 'empresa:update'])]#[ORM\Column(nullable: true)]private ?array $paramsInformes = [];#[Groups(['user:read', 'empresa:changeLogo'])]#[Vich\UploadableField(mapping: 'logos', fileNameProperty: 'logoName')]private ?File $logo = null;#[ORM\Column(length: 255, nullable: true)]private ?string $logoName = null;#[Groups(['user:read', 'empresa:read'])]public ?string $contentUrl = null;#[Groups(['empresa:create'])]public ?string $username = null;#[Groups(['empresa:create'])]public ?string $password = null;public function __construct(){$this->telefonos = new ArrayCollection();$this->emails = new ArrayCollection();$this->direcciones = new ArrayCollection();$this->eventos = new ArrayCollection();$this->users = new ArrayCollection();$this->uuid = Uuid::uuid4()->toString();}public function getNombre(): ?string{return $this->nombre;}public function setNombre(?string $nombre): self{$this->nombre = $nombre;return $this;}public function getCif(): ?string{return $this->cif;}public function setCif(?string $cif): self{$this->cif = $cif;return $this;}public function isIsActivo(): ?bool{return $this->isActivo;}public function setIsActivo(?bool $isActivo): self{$this->isActivo = $isActivo;return $this;}public function getCodigo(): ?string{return $this->codigo;}public function setCodigo(?string $codigo): self{$this->codigo = $codigo;return $this;}/*** @return Collection<int, Telefono>*/public function getTelefonos(): Collection{return $this->telefonos;}public function addTelefono(Telefono $telefono): self{if (!$this->telefonos->contains($telefono)) {$this->telefonos->add($telefono);$telefono->setEmpresa($this);}return $this;}public function removeTelefono(Telefono $telefono): self{if ($this->telefonos->removeElement($telefono)) {// set the owning side to null (unless already changed)if ($telefono->getEmpresa() === $this) {$telefono->setEmpresa(null);}}return $this;}/*** @return Collection<int, Email>*/public function getEmails(): Collection{return $this->emails;}public function addEmail(Email $email): self{if (!$this->emails->contains($email)) {$this->emails->add($email);$email->setEmpresa($this);}return $this;}public function removeEmail(Email $email): self{if ($this->emails->removeElement($email)) {// set the owning side to null (unless already changed)if ($email->getEmpresa() === $this) {$email->setEmpresa(null);}}return $this;}/*** @return Collection<int, Direccion>*/public function getDirecciones(): Collection{return $this->direcciones;}public function addDireccione(Direccion $direccione): self{if (!$this->direcciones->contains($direccione)) {$this->direcciones->add($direccione);$direccione->setEmpresa($this);}return $this;}public function removeDireccione(Direccion $direccione): self{if ($this->direcciones->removeElement($direccione)) {// set the owning side to null (unless already changed)if ($direccione->getEmpresa() === $this) {$direccione->setEmpresa(null);}}return $this;}/*** @return Collection<int, Evento>*/public function getEventos(): Collection{return $this->eventos;}public function addEvento(Evento $evento): self{if (!$this->eventos->contains($evento)) {$this->eventos->add($evento);$evento->setEmpresa($this);}return $this;}public function removeEvento(Evento $evento): self{if ($this->eventos->removeElement($evento)) {// set the owning side to null (unless already changed)if ($evento->getEmpresa() === $this) {$evento->setEmpresa(null);}}return $this;}/*** @return Collection<int, User>*/public function getUsers(): Collection{return $this->users;}public function addUser(User $user): self{if (!$this->users->contains($user)) {$this->users->add($user);$user->setEmpresa($this);}return $this;}public function removeUser(User $user): self{if ($this->users->removeElement($user)) {// set the owning side to null (unless already changed)if ($user->getEmpresa() === $this) {$user->setEmpresa(null);}}return $this;}public function getGrupoEmpresa(): ?GrupoEmpresa{return $this->grupoEmpresa;}public function setGrupoEmpresa(?GrupoEmpresa $grupoEmpresa): self{$this->grupoEmpresa = $grupoEmpresa;return $this;}public function getParamsCalculos(): ?array{return $this->paramsCalculos;}public function setParamsCalculos(?array $paramsCalculos): self{$this->paramsCalculos = $paramsCalculos;return $this;}public function getParamsInformes(): ?array{return $this->paramsInformes;}public function setParamsInformes(?array $paramsInformes): static{$this->paramsInformes = $paramsInformes;return $this;}public function setLogo(?File $logo = null): void{$this->logo = $logo;if (null !== $logo) {$this->updatedAt = new \DateTimeImmutable();}}public function getLogo(): ?File{return $this->logo;}public function getLogoName(): ?string{return $this->logoName;}public function setLogoName(?string $logoName): static{$this->logoName = $logoName;return $this;}public function getContentUrl(): ?string{return $this->contentUrl;}public function setContentUrl(?string $contentUrl): self{$this->contentUrl = $contentUrl;return $this;}public function getUsername(): ?string{return $this->username;}public function setUsername(?string $username): self{$this->username = $username;return $this;}public function getPassword(): ?string{return $this->password;}public function setPassword(?string $password): self{$this->password = $password;return $this;}}