src/CoreBundle/Entity/ExtraFieldValues.php
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use Chamilo\CoreBundle\Repository\ExtraFieldValuesRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
#[ApiResource(operations: [new Get(security: 'is_granted(\'ROLE_ADMIN\')'), new Put(security: 'is_granted(\'ROLE_ADMIN\')'), new GetCollection(security: 'is_granted(\'ROLE_ADMIN\')'), new Post(security: 'is_granted(\'ROLE_ADMIN\')')], security: 'is_granted(\'ROLE_ADMIN\')', denormalizationContext: ['groups' => ['extra_field_values:write']], normalizationContext: ['groups' => ['extra_field_values:read']])]
#[ORM\Table(name: 'extra_field_values')]
#[ORM\Index(name: 'idx_efv_fiii', columns: ['field_id', 'item_id'])]
#[ORM\Index(name: 'idx_efv_item', columns: ['item_id'])]
#[ORM\Entity(repositoryClass: ExtraFieldValuesRepository::class)]
#[ORM\MappedSuperclass]
#[ApiFilter(filterClass: SearchFilter::class, properties: ['field' => 'exact', 'value' => 'exact'])]
class ExtraFieldValues
{
use TimestampableEntity;
#[Groups(['extra_field_values:read'])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'field_value', type: 'text', nullable: true, unique: false)]
protected ?string $fieldValue = null;
#[Assert\NotBlank]
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\ManyToOne(targetEntity: ExtraField::class)]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id')]
protected ExtraField $field;
#[ORM\ManyToOne(targetEntity: Asset::class)]
#[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Asset $asset = null;
/**
* Item id can be: userId, courseId, sessionId, etc.
*/
#[Assert\NotBlank]
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'item_id', type: 'integer')]
protected int $itemId;
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'comment', type: 'text', nullable: true, unique: false)]
protected ?string $comment;
public function __construct()
{
$this->comment = '';
}
public function getField(): ExtraField
{
return $this->field;
}
public function setField(ExtraField $field): self
{
$this->field = $field;
return $this;
}
public function getItemId(): int
{
return $this->itemId;
}
public function setItemId(int $itemId): self
{
$this->itemId = $itemId;
return $this;
}
public function setComment(string $comment): self
{
$this->comment = $comment;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
public function getFieldValue(): ?string
{
return $this->fieldValue;
}
public function setFieldValue(?string $fieldValue): self
{
$this->fieldValue = $fieldValue;
return $this;
}
public function getAsset(): ?Asset
{
return $this->asset;
}
public function setAsset(?Asset $asset): self
{
$this->asset = $asset;
return $this;
}
}