<?php
namespace App\Entity\Webfactory;
use App\Entity\Adherent\Magasin;
use App\Repository\Webfactory\NavigationRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: NavigationRepository::class)]
#[ORM\HasLifecycleCallbacks]
class Navigation
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\ManyToOne(targetEntity: Magasin::class, inversedBy: 'navigations')]
#[ORM\JoinColumn(name: 'magasin', referencedColumnName: 'k_adherent', nullable: false)]
private $magasin;
#[ORM\Column(type: 'text', nullable: true)]
private $sort;
#[ORM\Column(type: 'string', nullable: false)]
private $lang;
#[ORM\Column(type: 'datetime_immutable')]
private $updatedAt;
public function __construct(){
$this->updatedAt = new \DateTimeImmutable("now");
}
#[ORM\PreUpdate]
public function onPreUpdateEntity(): void
{
$this->updatedAt = new \DateTimeImmutable('now');
}
public function getId(): ?int
{
return $this->id;
}
public function getMagasin(): ?Magasin
{
return $this->magasin;
}
public function setMagasin(?Magasin $magasin): self
{
$this->magasin = $magasin;
return $this;
}
// Sort est un json dans lequel sont stockées les pages dans l'ordre souhaité ainsi que des rubriques si souhaité.
// Ex format de data : [
// {
// "type":"page",
// "custom":"2",
// "id":"1ec6d49b-992d-6318-9eaa-f5385f4a5245",
// "groupName":null,
// "pages":null
// },
// {
// "type":"page",
// "custom":"2",
// "id":"1ec6d49b-992d-67e6-8e4a-f5385f4a5245",
// "groupName":null,
// "pages":null
// },
// {
// "type":"group", // type group pour la création d'une rubrique avec des sous pages
// "custom":null,
// "id":null,
// "groupName":"Ma rubrique",
// "pages":[
// {
// "type":"page",
// "custom":"1",
// "id":"87",
// "pages":null
// },
// {
// "type":"page",
// "custom":"1",
// "id":"62",
// "pages":null
// }
// ]
// },
// {
// "type":"page",
// "custom":"2",
// "id":"1ec6d49b-992d-65c0-8877-f5385f4a5245",
// "groupName":null,
// "pages":null
// }
//]
public function getSort(): ?string
{
return $this->sort;
}
public function setSort(?string $sort): self
{
$this->sort = $sort;
return $this;
}
public function getUpdatedAt(): ?\DateTimeImmutable
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeImmutable $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return mixed
*/
public function getLang()
{
return $this->lang;
}
public function setLang(mixed $lang): void
{
$this->lang = $lang;
}
}