<?php
namespace App\Entity\ChannelUserData\Activity;
use App\Repository\ChannelUserData\Activity\AbstractActivityRepository;
use Doctrine\ORM\Mapping as ORM;
use Nellapp\Bundle\SDKBundle\ActivityFeed\Entity\AbstractActivity as BaseActivity;
use Symfony\Component\Serializer\Annotation as Serial;
#[
ORM\Entity(repositoryClass: AbstractActivityRepository::class),
ORM\Table(name: 'channel_user_data_abstract_activity'),
ORM\InheritanceType('JOINED'),
ORM\DiscriminatorColumn(name: 'type', type: 'string'),
ORM\DiscriminatorMap(
[
'trackData-type' => TrackDataActivity::class,
'message-type' => CommentActivity::class,
'meeting-type' => MeetingActivity::class
]
),
Serial\DiscriminatorMap(
typeProperty: 'type',
mapping: [
'trackData-type' => TrackDataActivity::class,
'message-type' => CommentActivity::class,
'meeting-type' => MeetingActivity::class]
)
]
abstract class AbstractActivity extends BaseActivity
{
#[ORM\Column(type: 'json')]
#[Serial\Groups(['activity:get', 'activity:post'])]
private array $tags = [];
public function getTags(): array
{
return $this->tags;
}
public function addTag(int $tag): static
{
if (!in_array($tag, $this->getTags())) {
$this->tags[] = $tag;
}
return $this;
}
public function setTags(array $tags): static
{
$this->tags = $tags;
return $this;
}
}