src/V4/Entity/SavedRequest.php line 103

Open in your IDE?
  1. <?php
  2. namespace App\V4\Entity;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiProperty;
  5. use ApiPlatform\Core\Annotation\ApiResource;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use App\Model\Traits\ImportableObjectTrait;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\Common\Collections\Collection;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use Gedmo\Blameable\Traits\BlameableEntity as BlameableTrait;
  12. use Gedmo\Mapping\Annotation as Gedmo;
  13. use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
  14. use Gedmo\Timestampable\Traits\TimestampableEntity as TimestampableTrait;
  15. use Symfony\Component\Serializer\Annotation\Groups;
  16. /**
  17.  * @ApiResource(
  18.  *     shortName="V4/SavedRequest",
  19.  *     paginationEnabled=false,
  20.  *     attributes={
  21.  *         "api_allow_update": true
  22.  *     },
  23.  *     collectionOperations={
  24.  *         "get": {
  25.  *             "path": "/V4/saved_requests",
  26.  *             "normalization_context": {
  27.  *                 "groups": {"saved_request:list"}
  28.  *             }
  29.  *         },
  30.  *         "post_saved_request": {
  31.  *             "method": "POST",
  32.  *             "deserialize": false,
  33.  *             "write": false,
  34.  *             "controller": "App\V4\Controller\SavedRequest\SavedRequestDataPersisterAction",
  35.  *             "path": "/V4/saved_requests",
  36.  *             "input_formats": {
  37.  *                 "multipart": {"multipart/form-data"}
  38.  *             },
  39.  *             "normalization_context": {
  40.  *                  "groups": {"saved_request:write"}
  41.  *             },
  42.  *             "denormalization_context": {
  43.  *                  "groups": {}
  44.  *             }
  45.  *         },
  46.  *         "get_form": {
  47.  *             "method": "GET",
  48.  *             "path": "/V4/saved_requests/form",
  49.  *             "controller": App\V4\Controller\SavedRequest\GetSavedRequestFormAction::class
  50.  *         },
  51.  *     },
  52.  *     itemOperations={
  53.  *         "get": {
  54.  *             "path": "/V4/saved_requests/{id}",
  55.  *             "normalization_context": {
  56.  *                 "groups": {"saved_request:read"}
  57.  *             }
  58.  *         },
  59.  *         "get_form": {
  60.  *             "method": "GET",
  61.  *             "path": "/V4/saved_requests/{id}/form",
  62.  *             "controller": App\V4\Controller\SavedRequest\GetSavedRequestFormAction::class
  63.  *         },
  64.  *         "put_saved_request": {
  65.  *             "method": "POST",
  66.  *             "deserialize": false,
  67.  *             "write": false,
  68.  *             "controller": "App\V4\Controller\SavedRequest\SavedRequestDataPersisterAction",
  69.  *             "path": "/V4/saved_requests/{id}",
  70.  *             "input_formats": {
  71.  *                 "multipart": {"multipart/form-data"}
  72.  *             },
  73.  *             "normalization_context": {
  74.  *                  "groups": {"saved_request:update"}
  75.  *             },
  76.  *             "denormalization_context": {
  77.  *                  "groups": {}
  78.  *             }
  79.  *         },
  80.  *         "delete": {
  81.  *             "path": "/V4/saved_requests/{id}",
  82.  *         }
  83.  *     }
  84.  * )
  85.  *
  86.  * @ApiFilter(SearchFilter::class, properties={
  87.  *    "id": "exact",
  88.  *    "type": "exact",
  89.  *    "entity": "exact",
  90.  *    "tabId": "exact",
  91.  *    "customerId": "exact"
  92.  * })
  93.  *
  94.  * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
  95.  * @ORM\Entity(repositoryClass="App\V4\Repository\SavedRequestRepository")
  96.  * @ORM\Table(name="saved_request", indexes={
  97.  *     @ORM\Index(name="SAVED_REQUEST_CUSTOMER_ID", columns={"customer_id"})
  98.  * })
  99.  */
  100. class SavedRequest
  101. {
  102.     use ImportableObjectTrait;
  103.     use TimestampableTrait;
  104.     use BlameableTrait;
  105.     use SoftDeleteableEntity;
  106.     public const TYPE_SEARCH 'search';
  107.     public const TYPE_BADGE 'badge';
  108.     public const TYPE_SECTION_FILTER 'section_filter';
  109.     public const TYPES = [
  110.         self::TYPE_BADGE => self::TYPE_BADGE,
  111.         self::TYPE_SEARCH => self::TYPE_SEARCH,
  112.         self::TYPE_SECTION_FILTER => self::TYPE_SECTION_FILTER,
  113.     ];
  114.     /**
  115.      * @ApiProperty(identifier=true)
  116.      *
  117.      * @var string
  118.      *
  119.      * @ORM\Id()
  120.      * @ORM\GeneratedValue(strategy="CUSTOM")
  121.      * @ORM\CustomIdGenerator(class="App\Doctrine\UuidGenerator")
  122.      * @ORM\Column(name="id", type="string")
  123.      *
  124.      * @Groups({
  125.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  126.      * })
  127.      */
  128.     private $id;
  129.     /**
  130.      * @var string
  131.      *
  132.      * @ORM\Column(type="string", length=255)
  133.      *
  134.      * @Groups({
  135.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  136.      * })
  137.      */
  138.     private $customerId;
  139.     /**
  140.      * @var string
  141.      *
  142.      * @ORM\Column(type="string", length=255)
  143.      *
  144.      * @Groups({
  145.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  146.      * })
  147.      */
  148.     private $entity;
  149.     /**
  150.      * @var string
  151.      *
  152.      * @ORM\Column(type="string", length=50, options={"default":"badge"})
  153.      *
  154.      * @Groups({
  155.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  156.      * })
  157.      */
  158.     private $type self::TYPE_BADGE;
  159.     /**
  160.      * @var string
  161.      *
  162.      * @ORM\Column(type="string", length=255)
  163.      *
  164.      * @Groups({
  165.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  166.      * })
  167.      */
  168.     private $name;
  169.     /**
  170.      * @var string
  171.      *
  172.      * @ORM\Column(type="text")
  173.      *
  174.      * @Groups({
  175.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  176.      * })
  177.      */
  178.     private $content;
  179.     /**
  180.      * @var string|null
  181.      *
  182.      * @ORM\Column(type="string", length=50, nullable=true)
  183.      *
  184.      * @Groups({
  185.      *     "saved_request:list", "saved_request:read", "saved_request:write", "saved_request:update"
  186.      * })
  187.      */
  188.     private $tabId;
  189.     /**
  190.      * @var SavedRequestSection[]|Collection
  191.      * @ORM\OneToMany(targetEntity="App\V4\Entity\SavedRequestSection", mappedBy="savedRequest", cascade={"remove"})
  192.      */
  193.     private $savedRequestSections;
  194.     public function __construct()
  195.     {
  196.         $this->savedRequestSections = new ArrayCollection();
  197.     }
  198.     /**
  199.      * @return string
  200.      */
  201.     public function getId(): ?string
  202.     {
  203.         return $this->id;
  204.     }
  205.     /**
  206.      * @param string $id
  207.      *
  208.      * @return SavedRequest
  209.      */
  210.     public function setId(string $id): self
  211.     {
  212.         $this->id $id;
  213.         return $this;
  214.     }
  215.     /**
  216.      * @return string
  217.      */
  218.     public function getCustomerId(): ?string
  219.     {
  220.         return $this->customerId;
  221.     }
  222.     /**
  223.      * @param string $customerId
  224.      *
  225.      * @return SavedRequest
  226.      */
  227.     public function setCustomerId(string $customerId): self
  228.     {
  229.         $this->customerId $customerId;
  230.         return $this;
  231.     }
  232.     /**
  233.      * @return string
  234.      */
  235.     public function getEntity(): ?string
  236.     {
  237.         return $this->entity;
  238.     }
  239.     /**
  240.      * @param string $entity
  241.      *
  242.      * @return SavedRequest
  243.      */
  244.     public function setEntity(string $entity): self
  245.     {
  246.         $this->entity $entity;
  247.         return $this;
  248.     }
  249.     /**
  250.      * @return string
  251.      */
  252.     public function getType(): ?string
  253.     {
  254.         return $this->type;
  255.     }
  256.     /**
  257.      * @param string $type
  258.      *
  259.      * @return SavedRequest
  260.      */
  261.     public function setType(string $type): self
  262.     {
  263.         $this->type $type;
  264.         return $this;
  265.     }
  266.     /**
  267.      * @return string
  268.      */
  269.     public function getName(): ?string
  270.     {
  271.         return $this->name;
  272.     }
  273.     /**
  274.      * @param string $name
  275.      *
  276.      * @return SavedRequest
  277.      */
  278.     public function setName(string $name): self
  279.     {
  280.         $this->name $name;
  281.         return $this;
  282.     }
  283.     /**
  284.      * @return string
  285.      */
  286.     public function getContent(): ?string
  287.     {
  288.         return $this->content;
  289.     }
  290.     /**
  291.      * @param string $content
  292.      *
  293.      * @return SavedRequest
  294.      */
  295.     public function setContent(string $content): self
  296.     {
  297.         $this->content $content;
  298.         return $this;
  299.     }
  300.     /**
  301.      * @return string|null
  302.      */
  303.     public function getTabId(): ?string
  304.     {
  305.         return $this->tabId;
  306.     }
  307.     /**
  308.      * @param string|null $tabId
  309.      *
  310.      * @return $this
  311.      */
  312.     public function setTabId(?string $tabId): self
  313.     {
  314.         $this->tabId $tabId;
  315.         return $this;
  316.     }
  317.     /**
  318.      * @return Collection|SavedRequestSection[]
  319.      */
  320.     public function getSavedRequestSections(): Collection
  321.     {
  322.         return $this->savedRequestSections;
  323.     }
  324.     /**
  325.      * @param SavedRequestSection[]|Collection $savedRequestSections
  326.      *
  327.      * @return $this
  328.      */
  329.     public function setSavedRequestSections(Collection $savedRequestSections): self
  330.     {
  331.         $this->savedRequestSections $savedRequestSections;
  332.         return $this;
  333.     }
  334.     /**
  335.      * @param SavedRequestSection $savedRequestSection
  336.      *
  337.      * @return $this
  338.      */
  339.     public function addSavedRequestSection(SavedRequestSection $savedRequestSection): self
  340.     {
  341.         if (!$this->savedRequestSections->contains($savedRequestSection)) {
  342.             $this->savedRequestSections[] = $savedRequestSection;
  343.             $savedRequestSection->setSavedRequest($this);
  344.         }
  345.         return $this;
  346.     }
  347.     /**
  348.      * @param SavedRequestSection $savedRequestSection
  349.      *
  350.      * @return $this
  351.      */
  352.     public function removeSavedRequestSection(SavedRequestSection $savedRequestSection): self
  353.     {
  354.         if ($this->savedRequestSections->contains($savedRequestSection)) {
  355.             $this->savedRequestSections->removeElement($savedRequestSection);
  356.         }
  357.         return $this;
  358.     }
  359. }