<?php
declare(strict_types=1);
namespace App\Entity\Core;
use App\Entity\User\User;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
#[ORM\Table(name: 'activity_folder')]
#[ORM\Entity(repositoryClass: ActivityFolderRepository::class)]
class ActivityFolder
{
public const int TYPE_SYSTEM_FOLDER = 1;
public const int TYPE_USER_FOLDER = 2;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private int $id;
#[ORM\Column(type: 'string', length: 255)]
private string $name;
#[ORM\OneToMany(targetEntity: RelationActivityFolderActivity::class, mappedBy: 'activityFolder')]
private Collection $relationActivities;
#[ORM\JoinColumn(name: 'created_by', referencedColumnName: 'id', nullable: true)]
#[ORM\ManyToOne(targetEntity: User::class)]
private ?User $createdBy = null;
#[ORM\Column(type: 'boolean', name: 'is_template', options: ['default' => true])]
private bool $isTemplate = true;
#[ORM\Column(type: 'datetime', nullable: true, options: ['comment' => 'Timestamp when the folder was marked as deleted'])]
private ?DateTime $deleted = null;
#[ORM\Column(type: 'string', length: 2000, nullable: true)]
private ?string $description = null;
public function __construct()
{
$this->relationActivities = new ArrayCollection();
}
public function getId(): int
{
return $this->id;
}
public function getName(): string
{
return $this->name;
}
/**
* @return $this
*/
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getRelationActivities(): Collection
{
return $this->relationActivities;
}
/**
* @return $this
*/
public function addRelationActivity(RelationActivityFolderActivity $relationActivity): self
{
if (!$this->relationActivities->contains($relationActivity)) {
$this->relationActivities[] = $relationActivity;
$relationActivity->setActivityFolder($this);
}
return $this;
}
/**
* @return $this
*/
public function removeRelationActivity(RelationActivityFolderActivity $relationActivity): self
{
if ($this->relationActivities->removeElement($relationActivity)) {
// set the owning side to null (unless already changed)
if ($relationActivity->getActivityFolder() === $this) {
$relationActivity->setActivityFolder(null);
}
}
return $this;
}
public function getCreatedBy(): ?User
{
return $this->createdBy;
}
/**
* @return $this
*/
public function setCreatedBy(?User $createdBy): self
{
$this->createdBy = $createdBy;
return $this;
}
public function isTemplate(): bool
{
return $this->isTemplate;
}
/**
* @return $this
*/
public function setIsTemplate(bool $isTemplate): self
{
$this->isTemplate = $isTemplate;
return $this;
}
public function getDeleted(): ?DateTime
{
return $this->deleted;
}
/**
* @param ?DateTime $deleted
* @return $this
*/
public function setDeleted(?DateTime $deleted): self
{
$this->deleted = $deleted;
return $this;
}
public function isDeleted(): bool
{
return !($this->deleted === null);
}
public function getDescription(): ?string
{
return $this->description;
}
/**
* @return $this
*/
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
}