<?php
namespace App\Entity\Telegram\AgentPublicBot;
use App\Entity\BaseEntity;
use App\Entity\SubTransactions\ArzDigital;
use App\Entity\VPN\Service\Service;
use App\Repository\Telegram\AgentPublicBot\BotUserRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\IdGenerator\UuidGenerator;
#[ORM\Table(name: '`agent_public_bot_user`')]
#[ORM\Entity(repositoryClass: BotUserRepository::class)]
class BotUser extends BaseEntity
{
#[ORM\Id]
#[ORM\Column(type: 'guid', unique: true)]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\CustomIdGenerator(class: UuidGenerator::class)]
private ?string $id = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $name = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $username = null;
#[ORM\Column(type: Types::BIGINT, nullable: true)]
private ?string $userId = null;
#[ORM\Column]
private ?int $wallet = null;
#[ORM\Column]
private ?bool $havePendingPayment = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $step = null;
#[ORM\ManyToOne(inversedBy: 'botUsers')]
#[ORM\JoinColumn(nullable: false)]
private ?Bot $bot = null;
#[ORM\OneToMany(mappedBy: 'botUser', targetEntity: BotTransaction::class)]
private Collection $botTransactions;
#[ORM\Column(nullable: true)]
private ?array $newServiceDetail = null;
#[ORM\OneToMany(mappedBy: 'botUser', targetEntity: Service::class)]
private Collection $services;
#[ORM\ManyToOne(inversedBy: 'botUsers')]
private ?BotCampaign $campaign = null;
#[ORM\OneToMany(mappedBy: 'botUserOwner', targetEntity: ArzDigital::class)]
private Collection $arzDigitals;
#[ORM\Column]
private ?bool $gotTest = null;
public function __construct()
{
parent::__construct();
$this->wallet =0 ;
$this->havePendingPayment = 0;
$this->botTransactions = new ArrayCollection();
$this->services = new ArrayCollection();
$this->arzDigitals = new ArrayCollection();
$this->setGotTest(0);
}
public function getBotId()
{
return $this->getBot()->getId();
}
public function getId(): ?string
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): static
{
$this->name = $name;
return $this;
}
public function getUsername(): ?string
{
return $this->username;
}
public function setUsername(?string $username): static
{
$this->username = $username;
return $this;
}
public function getUserId(): ?string
{
return $this->userId;
}
public function setUserId(?string $userId): static
{
$this->userId = $userId;
return $this;
}
public function getWallet(): ?int
{
return $this->wallet;
}
public function setWallet(int $wallet): static
{
$this->wallet = $wallet;
return $this;
}
public function isHavePendingPayment(): ?bool
{
return $this->havePendingPayment;
}
public function setHavePendingPayment(bool $havePendingPayment): static
{
$this->havePendingPayment = $havePendingPayment;
return $this;
}
public function getStep(): ?string
{
return $this->step;
}
public function setStep(?string $step): static
{
$this->step = $step;
return $this;
}
public function getBot(): ?Bot
{
return $this->bot;
}
public function setBot(?Bot $bot): static
{
$this->bot = $bot;
return $this;
}
/**
* @return Collection<int, BotTransaction>
*/
public function getBotTransactions(): Collection
{
return $this->botTransactions;
}
public function addBotTransaction(BotTransaction $botTransaction): static
{
if (!$this->botTransactions->contains($botTransaction)) {
$this->botTransactions->add($botTransaction);
$botTransaction->setBotUser($this);
}
return $this;
}
public function removeBotTransaction(BotTransaction $botTransaction): static
{
if ($this->botTransactions->removeElement($botTransaction)) {
// set the owning side to null (unless already changed)
if ($botTransaction->getBotUser() === $this) {
$botTransaction->setBotUser(null);
}
}
return $this;
}
public function &getNewServiceDetail(): ?array
{
return $this->newServiceDetail;
}
public function setNewServiceDetail(?array $newServiceDetail): static
{
$this->newServiceDetail = $newServiceDetail;
return $this;
}
/**
* @return Collection<int, Service>
*/
public function getServices(): Collection
{
return $this->services;
}
public function addService(Service $service): static
{
if (!$this->services->contains($service)) {
$this->services->add($service);
$service->setBotUser($this);
}
return $this;
}
public function removeService(Service $service): static
{
if ($this->services->removeElement($service)) {
// set the owning side to null (unless already changed)
if ($service->getBotUser() === $this) {
$service->setBotUser(null);
}
}
return $this;
}
public function getCampaign(): ?BotCampaign
{
return $this->campaign;
}
public function setCampaign(?BotCampaign $campaign): static
{
$this->campaign = $campaign;
return $this;
}
/**
* @return Collection<int, ArzDigital>
*/
public function getArzDigitals(): Collection
{
return $this->arzDigitals;
}
public function addArzDigital(ArzDigital $arzDigital): static
{
if (!$this->arzDigitals->contains($arzDigital)) {
$this->arzDigitals->add($arzDigital);
$arzDigital->setBotUserOwner($this);
}
return $this;
}
public function removeArzDigital(ArzDigital $arzDigital): static
{
if ($this->arzDigitals->removeElement($arzDigital)) {
// set the owning side to null (unless already changed)
if ($arzDigital->getBotUserOwner() === $this) {
$arzDigital->setBotUserOwner(null);
}
}
return $this;
}
public function isGotTest(): ?bool
{
return $this->gotTest;
}
public function setGotTest(bool $gotTest): static
{
$this->gotTest = $gotTest;
return $this;
}
}