<?php
namespace App\V4\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\Model\Traits\ImportableObjectTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Blameable\Traits\BlameableEntity as BlameableTrait;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
use Gedmo\Timestampable\Traits\TimestampableEntity as TimestampableTrait;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ApiResource(
* shortName="V4/SavedRequest",
* paginationEnabled=false,
* attributes={
* "api_allow_update": true
* },
* collectionOperations={
* "get": {
* "path": "/V4/saved_requests",
* "normalization_context": {
* "groups": {"saved_request:list"}
* }
* },
* "post_saved_request": {
* "method": "POST",
* "deserialize": false,
* "write": false,
* "controller": "App\V4\Controller\SavedRequest\SavedRequestDataPersisterAction",
* "path": "/V4/saved_requests",
* "input_formats": {
* "multipart": {"multipart/form-data"}
* },
* "normalization_context": {
* "groups": {"saved_request:write"}
* },
* "denormalization_context": {
* "groups": {}
* }
* },
* "get_form": {
* "method": "GET",
* "path": "/V4/saved_requests/form",
* "controller": App\V4\Controller\SavedRequest\GetSavedRequestFormAction::class
* },
* },
* itemOperations={
* "get": {
* "path": "/V4/saved_requests/{id}",
* "normalization_context": {
* "groups": {"saved_request:read"}
* }
* },
* "get_form": {
* "method": "GET",
* "path": "/V4/saved_requests/{id}/form",
* "controller": App\V4\Controller\SavedRequest\GetSavedRequestFormAction::class
* },
* "put_saved_request": {
* "method": "POST",
* "deserialize": false,
* "write": false,
* "controller": "App\V4\Controller\SavedRequest\SavedRequestDataPersisterAction",
* "path": "/V4/saved_requests/{id}",
* "input_formats": {
* "multipart": {"multipart/form-data"}
* },
* "normalization_context": {
* "groups": {"saved_request:update"}
* },
* "denormalization_context": {
* "groups": {}
* }
* },
* "delete": {
* "path": "/V4/saved_requests/{id}",
* }
* }
* )
*
* @ApiFilter(SearchFilter::class, properties={
* "id": "exact",
* "type": "exact",
* "entity": "exact",
* "tabId": "exact",
* "customerId": "exact"
* })
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
* @ORM\Entity(repositoryClass="App\V4\Repository\SavedRequestRepository")
* @ORM\Table(name="saved_request", indexes={
* @ORM\Index(name="SAVED_REQUEST_CUSTOMER_ID", columns={"customer_id"})
* })
*/
class SavedRequest
{
use ImportableObjectTrait;
use TimestampableTrait;
use BlameableTrait;
use SoftDeleteableEntity;
public const TYPE_SEARCH = 'search';
public const TYPE_BADGE = 'badge';
public const TYPE_SECTION_FILTER = 'section_filter';
public const TYPES = [
self::TYPE_BADGE => self::TYPE_BADGE,
self::TYPE_SEARCH => self::TYPE_SEARCH,
self::TYPE_SECTION_FILTER => self::TYPE_SECTION_FILTER,
];
/**
* @ApiProperty(identifier=true)
*
* @var string
*
* @ORM\Id()
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class="App\Doctrine\UuidGenerator")
* @ORM\Column(name="id", type="string")
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $customerId;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $entity;
/**
* @var string
*
* @ORM\Column(type="string", length=50, options={"default":"badge"})
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $type = self::TYPE_BADGE;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $name;
/**
* @var string
*
* @ORM\Column(type="text")
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $content;
/**
* @var string|null
*
* @ORM\Column(type="string", length=50, nullable=true)
*
* @Groups({
* "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
* })
*/
private $tabId;
/**
* @var SavedRequestSection[]|Collection
* @ORM\OneToMany(targetEntity="App\V4\Entity\SavedRequestSection", mappedBy="savedRequest", cascade={"remove"})
*/
private $savedRequestSections;
public function __construct()
{
$this->savedRequestSections = new ArrayCollection();
}
/**
* @return string
*/
public function getId(): ?string
{
return $this->id;
}
/**
* @param string $id
*
* @return SavedRequest
*/
public function setId(string $id): self
{
$this->id = $id;
return $this;
}
/**
* @return string
*/
public function getCustomerId(): ?string
{
return $this->customerId;
}
/**
* @param string $customerId
*
* @return SavedRequest
*/
public function setCustomerId(string $customerId): self
{
$this->customerId = $customerId;
return $this;
}
/**
* @return string
*/
public function getEntity(): ?string
{
return $this->entity;
}
/**
* @param string $entity
*
* @return SavedRequest
*/
public function setEntity(string $entity): self
{
$this->entity = $entity;
return $this;
}
/**
* @return string
*/
public function getType(): ?string
{
return $this->type;
}
/**
* @param string $type
*
* @return SavedRequest
*/
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
/**
* @return string
*/
public function getName(): ?string
{
return $this->name;
}
/**
* @param string $name
*
* @return SavedRequest
*/
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getContent(): ?string
{
return $this->content;
}
/**
* @param string $content
*
* @return SavedRequest
*/
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
/**
* @return string|null
*/
public function getTabId(): ?string
{
return $this->tabId;
}
/**
* @param string|null $tabId
*
* @return $this
*/
public function setTabId(?string $tabId): self
{
$this->tabId = $tabId;
return $this;
}
/**
* @return Collection|SavedRequestSection[]
*/
public function getSavedRequestSections(): Collection
{
return $this->savedRequestSections;
}
/**
* @param SavedRequestSection[]|Collection $savedRequestSections
*
* @return $this
*/
public function setSavedRequestSections(Collection $savedRequestSections): self
{
$this->savedRequestSections = $savedRequestSections;
return $this;
}
/**
* @param SavedRequestSection $savedRequestSection
*
* @return $this
*/
public function addSavedRequestSection(SavedRequestSection $savedRequestSection): self
{
if (!$this->savedRequestSections->contains($savedRequestSection)) {
$this->savedRequestSections[] = $savedRequestSection;
$savedRequestSection->setSavedRequest($this);
}
return $this;
}
/**
* @param SavedRequestSection $savedRequestSection
*
* @return $this
*/
public function removeSavedRequestSection(SavedRequestSection $savedRequestSection): self
{
if ($this->savedRequestSections->contains($savedRequestSection)) {
$this->savedRequestSections->removeElement($savedRequestSection);
}
return $this;
}
}