<?php
namespace App\Core\Entity;
use App\Core\FeatureFlag\FeatureFlagEnum;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass="App\Core\FeatureFlag\FeatureFlagRepository")
* @ORM\Table(name="feature_flag")
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
*/
class FeatureFlag
{
use TimestampableEntity,
SoftDeleteableEntity
;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string")
* @Groups("bo:feature_flag")
*/
public $name;
/**
* @var bool
*
* @ORM\Column(name="value", type="boolean")
* @Groups("bo:feature_flag")
*/
public $enabled;
public function __construct(string $name, bool $enabled = true)
{
$this->name = $name;
$this->enabled = $enabled;
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @return bool
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* @Groups("bo:feature_flag")
*/
public function isUsedInCode(): bool
{
return \in_array($this->name, FeatureFlagEnum::getAll(), true);
}
}