src/Entity/Cart/Cart.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Cart;
  3. use ApiPlatform\Core\Annotation\ApiProperty;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use App\Entity\User\User;
  6. use App\Repository\Cart\CartRepository;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Timestampable\Traits\TimestampableEntity;
  9. use Ramsey\Uuid\Doctrine\UuidGenerator;
  10. use Symfony\Component\Serializer\Annotation\Groups;
  11. use Symfony\Component\Serializer\Annotation\SerializedName;
  12. /**
  13.  * @ApiResource(
  14.  *     attributes={
  15.  *          "normalization_context"={"groups"={
  16.  *              "Cart:output",
  17.  *              "Cart:io",
  18.  *              "get_user_operation_carts",
  19.  *              "get_user_gift_carts",
  20.  *          }},
  21.  *          "denormalization_context"={"groups"={
  22.  *              "Cart:input",
  23.  *              "Cart:io",
  24.  *          }}
  25.  *      },
  26.  *     collectionOperations={
  27.  *          "get",
  28.  *     },
  29.  *     itemOperations={
  30.  *          "get",
  31.  *          "delete" = {
  32.  *              "method"="DELETE",
  33.  *              "access_control"="is_granted('ROLE_USER')",
  34.  *          },
  35.  *     }
  36.  * )
  37.  *
  38.  * @ORM\Entity(repositoryClass=CartRepository::class)
  39.  * @ORM\InheritanceType("SINGLE_TABLE")
  40.  * @ORM\DiscriminatorColumn(name="discr", type="string")
  41.  * @ORM\DiscriminatorMap({
  42.  *     "operation" = "OperationCart",
  43.  *     "gift" = "GiftCart",
  44.  * })
  45.  */
  46. abstract class Cart
  47. {
  48.     /**
  49.      * Hook timestampable behavior
  50.      * updates createdAt, updatedAt fields
  51.      */
  52.     use TimestampableEntity;
  53.     /**
  54.      * @ORM\Id
  55.      * @ORM\Column(type="uuid", unique=true)
  56.      * @ORM\GeneratedValue(strategy="CUSTOM")
  57.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  58.      * @SerializedName("id")
  59.      * @ApiProperty(identifier=true)
  60.      * @Groups({
  61.      *     "Cart:output",
  62.      *     "post_ajax_operation_cart",
  63.      *     "get_user_operation_carts",
  64.      *     "OperationCart:output",
  65.      *     "post_ajax_gift_cart",
  66.      *     "get_user_gift_carts",
  67.      *     "GiftCart:output",
  68.      * })
  69.      */
  70.     private string $id;
  71.     /**
  72.      * @ORM\ManyToOne(targetEntity=User::class)
  73.      * @SerializedName("user")
  74.      * @Groups({
  75.      *     "Cart:output",
  76.      *     "post_ajax_operation_cart",
  77.      *     "get_user_operation_carts",
  78.      *     "OperationCart:output",
  79.      *     "post_ajax_gift_cart",
  80.      *     "get_user_gift_carts",
  81.      *     "GiftCart:output",
  82.      * })
  83.      */
  84.     private ?User $user;
  85.     public function getId(): ?string
  86.     {
  87.         return $this->id;
  88.     }
  89.     public function getUser(): ?User
  90.     {
  91.         return $this->user;
  92.     }
  93.     public function setUser(?User $user): self
  94.     {
  95.         $this->user $user;
  96.         return $this;
  97.     }
  98.     /**
  99.      * @return \DateTime
  100.      * @SerializedName("created_at")
  101.      * @Groups({
  102.      *     "Cart:output",
  103.      *     "get_user_operation_carts",
  104.      *     "OperationCart:output",
  105.      *     "get_user_gift_carts",
  106.      *     "GiftCart:output",
  107.      * })
  108.      */
  109.     public function getCreatedAt() : \DateTime
  110.     {
  111.         return $this->createdAt;
  112.     }
  113. }