<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use App\Entity\Operation\Operation;
use App\Entity\Participation\Participation;
use App\Repository\StateRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\SerializedName;
/**
* @ApiResource(
* attributes={
* "force_eager"=false,
* "normalization_context"={
* "groups"={
* "ParticipationMulti:io",
* "ParticipationOdr:io",
* },
* "enable_max_depth"=true
* },
* "denormalization_context"={
* "groups"={
* "ParticipationMulti:io",
* "ParticipationOdr:io",
* },
* "enable_max_depth"=true
* },
* },
* collectionOperations={
* "get"={
* "method"="GET",
* "access_control"="is_granted('ROLE_USER')",
* },
* },
* itemOperations={
* "get"={
* "method"="GET",
* "access_control"="is_granted('ROLE_USER')",
* },
* }
* )
* @ApiFilter(SearchFilter::class, properties={"label": "exact"})
* @ORM\Entity(repositoryClass=StateRepository::class)
* @ORM\Table(name="state",indexes={
* @ORM\Index(name="search_idx", columns={"label"})
* })
*/
class State
{
public const OPERATION_PROGRESS = 'operation_progress';
public const OPERATION_PENDING = 'operation_pending';
public const OPERATION_VALIDATED = 'operation_validated';
public const OPERATION_STATE_LIST = [
self::OPERATION_PROGRESS,
self::OPERATION_PENDING,
self::OPERATION_VALIDATED,
];
public const PARTICIPATION_PARTIAL = 'participation_partial';
public const PARTICIPATION_PROGRESS = 'participation_progress';
public const PARTICIPATION_CONFORMED = 'participation_conformed';
public const PARTICIPATION_UNCONFORMED_DEF = 'participation_unconformed_def';
public const PARTICIPATION_UNCONFORMED_TEMP = 'participation_unconformed_temp';
public const PARTICIPATION_VALIDATED = 'participation_validated';
public const PARTICIPATION_EDITED = 'participation_edited';
public const PARTICIPATION_REFUNDED = 'participation_refunded';
public const PARTICIPATION_STATE_LIST = [
self::PARTICIPATION_PROGRESS,
self::PARTICIPATION_CONFORMED,
self::PARTICIPATION_UNCONFORMED_DEF,
self::PARTICIPATION_UNCONFORMED_TEMP,
self::PARTICIPATION_VALIDATED,
self::PARTICIPATION_EDITED,
self::PARTICIPATION_REFUNDED
];
/**
* @ApiProperty(identifier=true)
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @SerializedName("id")
* @Groups({
* "ParticipationStep:io",
* "ParticipationOdr:io",
* "ParticipationMulti:io",
* })
*/
private string $id;
/**
* @ORM\Column(type="string", length=255)
* @SerializedName("label")
* @Groups({
* "ParticipationStep:io",
* "ParticipationPuntos:io",
* "ParticipationOdr:io",
* "ParticipationMulti:io",
* })
*/
private string $label;
/**
* @ORM\OneToMany(targetEntity=Participation::class, mappedBy="state")
* @SerializedName("participations")
* @Groups({"State:io"})
*/
private Collection $participations;
/**
* @ORM\OneToMany(targetEntity=Operation::class, mappedBy="state")
* @SerializedName("participations")
* @Groups({"State:io"})
*/
private Collection $operations;
public function __construct()
{
$this->participations = new ArrayCollection();
$this->operations = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(string $label): self
{
$this->label = $label;
return $this;
}
public function getParticipations(): ?Collection
{
return $this->participations;
}
public function setParticipations(Collection $participations): self
{
$this->participations = $participations;
return $this;
}
public function __toString()
{
return $this->label;
}
}