<?php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use App\Controller\Action\SyncAffectationQueueBulkAction;
use App\Repository\SyncAffectationQueueRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: SyncAffectationQueueRepository::class)]
#[ORM\Table(name: 'sync_affectation_queue')]
#[ORM\Index(name: 'IDX_document_id', columns: ['document_id'])]
#[ORM\Index(name: 'IDX_site_id', columns: ['site_id'])]
#[ORM\Index(name: 'processed', columns: ['processed'])]
#[ApiResource(
operations: [
new Post(), new Post(
name: '_api_/sync_affectation_queues/bulk',
uriTemplate: '/sync_affectation_queues/bulk',
controller: SyncAffectationQueueBulkAction::class,
write: false,
read: false,
deserialize: false
),
new GetCollection(),
new Get()
],
normalizationContext: ['groups' => ['syncAffectationQueue.get']],
denormalizationContext: ['groups' => ['syncAffectationQueue.write']]
)]
class SyncAffectationQueue
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['syncAffectationQueue.get'])]
private ?int $id = null;
#[ORM\Column(type: Types::INTEGER)]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private ?int $documentId = null;
#[ORM\Column(type: Types::INTEGER)]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private ?int $siteId = null; #[ORM\Column(type: Types::BOOLEAN, options: ['default' => false])]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private bool $isApplicable = false;
#[ORM\Column(type: Types::INTEGER, nullable: true)]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private ?int $createdBy = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE, options: ['default' => 'CURRENT_TIMESTAMP'])]
#[Groups(['syncAffectationQueue.get'])]
private ?\DateTimeInterface $createdAt = null; #[ORM\Column(type: Types::DATETIME_MUTABLE, options: ['default' => 'CURRENT_TIMESTAMP'])]
#[Groups(['syncAffectationQueue.get'])]
private ?\DateTimeInterface $updatedAt = null;
#[ORM\Column(type: Types::STRING, length: 10, options: ['default' => 'create'])]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private string $action = 'create';
#[ORM\Column(type: Types::BOOLEAN, options: ['default' => false])]
#[Groups(['syncAffectationQueue.get', 'syncAffectationQueue.write'])]
private bool $processed = false;
public function __construct()
{
$this->createdAt = new \DateTime();
$this->updatedAt = new \DateTime();
}
public function getId(): ?int
{
return $this->id;
}
public function getDocumentId(): ?int
{
return $this->documentId;
} public function setDocumentId(int $documentId): self
{
$this->documentId = $documentId;
return $this;
}
public function getSiteId(): ?int
{
return $this->siteId;
} public function setSiteId(int $siteId): self
{
$this->siteId = $siteId;
return $this;
}
public function isApplicable(): bool
{
return $this->isApplicable;
}
public function setIsApplicable(bool $isApplicable): self
{
$this->isApplicable = $isApplicable;
return $this;
}
public function getCreatedBy(): ?int
{
return $this->createdBy;
}
public function setCreatedBy(?int $createdBy): self
{
$this->createdBy = $createdBy;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function isProcessed(): bool
{
return $this->processed;
} public function setProcessed(bool $processed): self
{
$this->processed = $processed;
return $this;
}
public function getAction(): string
{
return $this->action;
}
public function setAction(string $action): self
{
$this->action = $action;
return $this;
}
#[ORM\PreUpdate]
public function onPreUpdate(): void
{
$this->updatedAt = new \DateTime();
}
}