<?php
namespace App\Database\Domain\Entity\Sessions\ActiveSessions;
use App\Database\Domain\Entity\AbstractEntity;
use App\Database\Domain\Entity\User\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class ActiveDevice extends AbstractEntity
{
/**
* @ORM\Column(type="string")
*/
private string $name;
/**
* @ORM\Column(type="string")
*/
private string $deviceId;
/**
* @ORM\Column(type="boolean")
*/
private bool $syncEnabled;
/**
* @ORM\ManyToOne(targetEntity="App\Database\Domain\Entity\Sessions\ActiveSessions\ActiveSession", inversedBy="devices")
*
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private ActiveSession $session;
/**
* @ORM\OneToMany(targetEntity="App\Database\Domain\Entity\Sessions\ActiveSessions\ActiveSessionTab", mappedBy="device", cascade={"all"})
*
* @ORM\OrderBy({"orderIndex": "ASC"})
*
* @var Collection<int, ActiveSessionTab>
*/
private Collection $tabs;
/**
* @ORM\ManyToOne(targetEntity="App\Database\Domain\Entity\User\User")
*
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private ?User $user = null;
public function __construct($id, User $user, ActiveSession $activeSession, string $name, string $deviceId)
{
$this->id = $id;
$this->session = $activeSession;
$this->name = $name;
$this->deviceId = $deviceId;
$this->syncEnabled = true;
$this->tabs = new ArrayCollection();
$this->user = $user;
}
public function changeName(string $name)
{
$this->name = $name;
}
public function toggleSync()
{
$this->syncEnabled = !$this->syncEnabled;
}
public function getName(): string
{
return $this->name;
}
public function getDeviceId(): string
{
return $this->deviceId;
}
public function isSyncEnabled(): bool
{
return $this->syncEnabled;
}
/**
* @return ActiveSessionTab[]
*/
public function getTabs(): Collection
{
return $this->tabs;
}
public function getSession(): ActiveSession
{
return $this->session;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(User $user): void
{
$this->user = $user;
}
}