<?php
namespace App\Entity;
use App\Repository\TelegramBotNavigationRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=TelegramBotNavigationRepository::class)
*/
class TelegramBotNavigation
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $data;
/**
* @ORM\Column(type="string", length=255)
*/
private $botId;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $selectedData;
/**
* @ORM\ManyToOne(targetEntity=TelegramUser::class)
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $editableMessages;
public function getId(): ?int
{
return $this->id;
}
public function getData(): ?array
{
return json_decode($this->data ?? "{}", true);
}
public function setData(?array $data): self
{
if ($data === null) {
$this->data = null;
return $this;
}
$this->data = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return $this;
}
public function setNavigationGroupData(string $groupId, ?array $data): self
{
$allData = $this->getData() ?? [];
if ($data === null) {
unset($allData[$groupId]);
} else {
$allData[$groupId] = $data;
}
$this->setData($allData);
return $this;
}
public function getNavigationGroupData(string $groupId): ?array
{
$allData = $this->getData() ?? [];
return $allData[$groupId] ?? null;
}
public function getBotId(): ?string
{
return $this->botId;
}
public function setBotId(string $botId): self
{
$this->botId = $botId;
return $this;
}
public function getSelectedData(): ?array
{
return json_decode($this->selectedData ?? "{}", true);
}
public function setSelectedData(?array $selectedData): self
{
$this->selectedData = json_encode($selectedData, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return $this;
}
public function getSelectedItem(string $groupId)
{
$allData = $this->getSelectedData() ?? [];
$itemId = $allData[$groupId] ?? null;
$groupData = $this->getNavigationGroupData($groupId);
if ($groupData && $itemId && isset($groupData[$itemId])) {
return $groupData[$itemId];
}
}
public function setSelectedItemId(string $groupId, ?string $itemId): self
{
$allData = $this->getSelectedData() ?? [];
$allData[$groupId] = $itemId;
$this->setSelectedData($allData);
return $this;
}
public function getUser(): ?TelegramUser
{
return $this->user;
}
public function setUser(?TelegramUser $user): self
{
$this->user = $user;
return $this;
}
public function getEditableMessages(): ?array
{
return json_decode($this->editableMessages ?? "[]", true);
}
public function setEditableMessages(?array $editableMessages): self
{
$this->editableMessages = json_encode($editableMessages, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return $this;
}
public function setEditableMessageId(string $messageId, ?string $telegramMessageId): self
{
$allMessages = $this->getEditableMessages() ?? [];
$allMessages[$messageId] = $telegramMessageId;
$this->setEditableMessages($allMessages);
return $this;
}
public function getEditableMessageId(string $messageId): ?string
{
$allMessages = $this->getEditableMessages() ?? [];
return $allMessages[$messageId] ?? null;
}
}