<?php
namespace App\Entity\Adherent;
use App\Repository\Adherent\MagasinUrlRepository;
use DateTimeImmutable;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: MagasinUrlRepository::class)]
#[ORM\UniqueConstraint(name: 'unique_url_type_magasin_value', fields: ['magasin', 'type'])]
#[ORM\HasLifecycleCallbacks]
class MagasinUrl
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $type;
#[ORM\Column(type: 'text', nullable: true)]
private $url;
#[ORM\Column(type: 'datetime_immutable', nullable: true)]
private $updatedAt;
#[ORM\ManyToOne(targetEntity: Magasin::class, cascade: ['persist'], inversedBy: 'magasinSocialMedia')]
#[ORM\JoinColumn(name: 'magasin', referencedColumnName: 'k_adherent', nullable: true)]
private $magasin;
#[ORM\OneToMany(mappedBy: 'MagasinUrl', targetEntity: MagasinUrlRedirect::class)]
private Collection $magasinUrlRedirects;
#[ORM\Column(nullable: true)]
private ?float $avgPosition = null;
#[ORM\Column(nullable: true)]
private ?\DateTimeImmutable $positionAt = null;
#[ORM\Column(nullable: true)]
private ?float $prevPosition = null;
#[ORM\Column(nullable: true)]
private ?float $diffPosition = null;
#[ORM\Column(type: 'datetime_immutable', nullable: false)]
private $createdAt;
public function __construct()
{
$this->createdAt = new \DateTimeImmutable('now');
$this->magasinUrlRedirects = new ArrayCollection();
}
#[ORM\PreUpdate]
public function onPreUpdateEntity(): void
{
$this->updatedAt = new \DateTimeImmutable("now");
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
public function setId(mixed $id): void
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getType()
{
return $this->type;
}
public function setType(mixed $type): void
{
$this->type = $type;
}
/**
* @return mixed
*/
public function getUrl()
{
return $this->url;
}
public function setUrl(mixed $url): void
{
$this->url = $url;
}
public function getUpdatedAt(): ?DateTimeImmutable
{
return $this->updatedAt;
}
public function setUpdatedAt(DateTimeImmutable $updatedAt): void
{
$this->updatedAt = $updatedAt;
}
public function getMagasin(): ?Magasin
{
return $this->magasin;
}
public function setMagasin(?Magasin $magasin): self
{
$this->magasin = $magasin;
return $this;
}
/**
* @return Collection<int, MagasinUrlRedirect>
*/
public function getMagasinUrlRedirects(): Collection
{
return $this->magasinUrlRedirects;
}
public function addMagasinUrlRedirect(MagasinUrlRedirect $magasinUrlRedirect): self
{
if (!$this->magasinUrlRedirects->contains($magasinUrlRedirect)) {
$this->magasinUrlRedirects->add($magasinUrlRedirect);
$magasinUrlRedirect->setMagasinUrl($this);
}
return $this;
}
public function removeMagasinUrlRedirect(MagasinUrlRedirect $magasinUrlRedirect): self
{
if ($this->magasinUrlRedirects->removeElement($magasinUrlRedirect)) {
// set the owning side to null (unless already changed)
if ($magasinUrlRedirect->getMagasinUrl() === $this) {
$magasinUrlRedirect->setMagasinUrl(null);
}
}
return $this;
}
public function getAvgPosition(): ?float
{
return $this->avgPosition;
}
public function setAvgPosition(?float $avgPosition): self
{
$this->avgPosition = $avgPosition;
return $this;
}
public function getPositionAt(): ?\DateTimeImmutable
{
return $this->positionAt;
}
public function setPositionAt(?\DateTimeImmutable $positionAt): self
{
$this->positionAt = $positionAt;
return $this;
}
public function getPrevPosition(): ?float
{
return $this->prevPosition;
}
public function setPrevPosition(?float $prevPosition): self
{
$this->prevPosition = $prevPosition;
return $this;
}
public function getDiffPosition(): ?float
{
return $this->diffPosition;
}
public function setDiffPosition(?float $diffPosition): self
{
$this->diffPosition = $diffPosition;
return $this;
}
public function getCreatedAt(): \DateTimeImmutable
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeImmutable $createdAt): void
{
$this->createdAt = $createdAt;
}
}