<?php
declare(strict_types=1);
namespace App\Database\Domain\Entity\Sessions;
use App\Database\Domain\Entity\AbstractEntity;
use App\Database\Domain\Entity\User\User;
use App\Database\Domain\Traits\CreationDateTrait;
use App\Database\Domain\Traits\OrderIndexTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Database\Domain\Repository\ToastSessionRepository")
*/
class ToastSessionSection extends AbstractEntity
{
use CreationDateTrait;
use OrderIndexTrait;
/**
* @ORM\ManyToOne(targetEntity="App\Database\Domain\Entity\User\User", inversedBy="sections")
*
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private User $user;
/**
* @ORM\Column(type="string")
*
* @Assert\Length(max="255")
*
* @Groups({"toast_session_section"})
*/
private string $name = '';
/**
* @ORM\Column(type="string", nullable=true)
*
* @Assert\Length(max="5")
*
* @Groups({"toast_session_section"})
*/
private ?string $emoji = null;
/**
* @ORM\OneToMany(targetEntity="App\Database\Domain\Entity\Sessions\ToastSession", mappedBy="section", fetch="EXTRA_LAZY")
*
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="write_rare")
*
* @var Collection<int, ToastSession>
*/
private Collection $sessions;
/**
* @ORM\Column(type="string", nullable=true)
*
* @Groups({"toast_session_section"})
*/
private ?string $browserId;
public function __construct(User $user)
{
$this->user = $user;
$this->orderIndex = 0;
$this->sessions = new ArrayCollection();
$this->creationDate = new \DateTimeImmutable();
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getEmoji(): ?string
{
if (!$this->emoji) {
return $this->emoji;
}
return mb_convert_encoding($this->emoji, 'UTF-8', 'UTF-8');
}
public function setEmoji(?string $emoji): void
{
$this->emoji = $emoji;
}
public function getSessions(): Collection
{
return $this->sessions;
}
public function setSessions(Collection $sessions): void
{
$this->sessions = $sessions;
}
public function getUser(): User
{
return $this->user;
}
public function setUser(User $user): void
{
$this->user = $user;
}
public function getBrowserId(): ?string
{
return $this->browserId;
}
public function setBrowserId(?string $browserId): void
{
$this->browserId = $browserId;
}
}