<?php
namespace App\Entity\Ean\Participation;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Entity\Participation\Participation;
use App\Repository\Ean\EanStepRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Ramsey\Uuid\Doctrine\UuidGenerator;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\SerializedName;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;
use App\Entity\Ean\Ean;
/**
* @ORM\Entity(repositoryClass=EanStepRepository::class)
* @ApiResource(
* attributes={
* "normalization_context"={
* "groups"={
* "EanParticipation:output",
* "EanParticipation:io",
* }
* },
* "denormalization_context"={
* "groups"={
* "EanParticipation:input",
* "EanParticipation:io",
* }
* }
* },
* collectionOperations={
* "post"={
* "method"="POST",
* "access_control"="is_granted('ROLE_USER')",
* },
* "admin-post"={
* "method"="POST",
* "path"="/admin/ean_participation",
* "access_control"="is_granted('ROLE_ADMIN_API')",
* "validation_groups"={"Default", "Create"}
* },
* "get"={
* "method"="GET",
* "access_control"="is_granted('ROLE_USER')",
* },
* },
* itemOperations={
* "get"={
* "method"="GET",
* "access_control"="is_granted('ROLE_USER')",
* },
* },
* )
* @ORM\Entity()
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "ean_participation" = "EanParticipation",
* "ean_step" = "EanStep",
* "ean_puntos" = "EanPuntos",
* "ean_odr" = "EanOdr",
* })
* @Gedmo\Loggable
*/
class EanParticipation
{
/**
* Hook timestampable behavior
* updates createdAt, updatedAt fields
*/
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="uuid", unique=true)
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class=UuidGenerator::class)
* @SerializedName("id")
* @ApiProperty(identifier=true)
* @Groups({
* "ParticipationStep:io",
* "ParticipationOdr:io",
* "ParticipationPuntos:io",
* "EanParticipation:io",
* "EanPuntos:io",
* "EanStep:io",
* "EanOdr:io",
* "get_steps_by_user_department",
* "get_odrs_by_user_department",
* })
*/
private string $id;
/**
* @ORM\Column(type="integer")
* @Groups({
* "ParticipationStep:io",
* "ParticipationOdr:io",
* "ParticipationPuntos:io",
* "EanParticipation:io",
* "EanStep:io",
* "EanPuntos:io",
* "EanOdr:io",
* "get_steps_by_user_department",
* "get_odrs_by_user_department",
* "get_participation-steps_by_user",
* "get_participation_odrs_by_user",
* "get_participation_odrs_by_id",
* })
* @Assert\NotBlank()
* @Assert\GreaterThanOrEqual(value="1")
* @Gedmo\Versioned
*/
private $quantity;
/**
* @ORM\ManyToOne(targetEntity=Ean::class, inversedBy="eanParticipations")
* @ORM\JoinColumn(nullable=true)
*
* @Groups({
* "ParticipationStep:io",
* "ParticipationOdr:io",
* "ParticipationPuntos:io",
* "ParticipationMulti:io",
* "EanParticipation:io",
* "EanStep:io",
* "EanOdr:io",
* "EanPuntos:io",
* "get_steps_by_user_department",
* "get_odrs_by_user_department",
* "get_participation-steps_by_user",
* "get_participation_odrs_by_user",
* "get_participation_odrs_by_id",
* })
* @Assert\NotBlank()
* @Assert\Valid()
* @Gedmo\Versioned
*/
private $ean;
/**
* @ORM\ManyToOne(targetEntity=Participation::class, inversedBy="eanParticipations")
* @Groups({
* "ParticipationStep:io",
* "ParticipationOdr:io",
* "ParticipationPuntos:io",
* "EanParticipation:io",
* "EanStep:io",
* "EanOdr:io",
* "EanPuntos:io",
* "get_participation-steps_by_user",
* "get_participation_odrs_by_user",
* "get_participation_odrs_by_id",
* })
* @Assert\NotBlank()
* @Assert\Valid()
*/
private $participation;
/**
* The amount returned by numeo if null amount sent
* @var null|float
* @ORM\Column(type="float", nullable=true)
* @Assert\Type(type="float")
*/
private $validatedAmount;
/**
* @ORM\Column(type="string", length=1, nullable=true)
* @Assert\Length(min="1", max="1")
*/
private $barcodeStatus;
public function getId(): ?string
{
return $this->id;
}
public function getQuantity(): ?int
{
return $this->quantity;
}
public function setQuantity(int $quantity): self
{
$this->quantity = $quantity;
return $this;
}
public function getEan(): ?Ean
{
return $this->ean;
}
public function setEan(?Ean $ean): self
{
$this->ean = $ean;
return $this;
}
/**
* @return mixed
*/
public function getParticipation()
{
return $this->participation;
}
/**
* @param mixed $participation
* @return EanParticipation
*/
public function setParticipation($participation): EanParticipation
{
$this->participation = $participation;
return $this;
}
/**
* @return float
*/
public function getValidatedAmount(): float
{
return $this->validatedAmount ?? 0;
}
/**
* @param float|null $validatedAmount
* @return EanParticipation
*/
public function setValidatedAmount(float $validatedAmount): EanParticipation
{
$this->validatedAmount = $validatedAmount;
return $this;
}
public function getBarcodeStatus(): ?string
{
return $this->barcodeStatus;
}
public function setBarcodeStatus(?string $barcodeStatus): EanParticipation
{
$this->barcodeStatus = $barcodeStatus;
return $this;
}
}