src/Entity/MediaObject/MediaObject.php line 105

Open in your IDE?
  1. <?php
  2. namespace App\Entity\MediaObject;
  3. use ApiPlatform\Core\Annotation\ApiProperty;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use App\Controller\Api\MediaObject\CreateMediaObjectAction;
  6. use App\Repository\MediaObject\MediaObjectRepository;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Mapping\Annotation as Gedmo;
  9. use Ramsey\Uuid\Doctrine\UuidGenerator;
  10. use Symfony\Component\Serializer\Annotation\Groups;
  11. use Symfony\Component\Serializer\Annotation\SerializedName;
  12. use Symfony\Component\Validator\Constraints as Assert;
  13. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  14. /**
  15.  * @ORM\Entity(repositoryClass=MediaObjectRepository::class)
  16.  * @ApiResource(
  17.  *     attributes={
  18.  *          "normalization_context"={"groups"={
  19.  *              "media_object_read",
  20.  *              "MediaObject:io",
  21.  *              "MediaObject:output",
  22.  *          }},
  23.  *          "denormalization_context"={"groups"={
  24.  *              "media_object_read",
  25.  *              "MediaObject:io",
  26.  *              "MediaObject:input",
  27.  *          }}
  28.  *      },
  29.  *     iri="http://schema.org/MediaObject",
  30.  *     collectionOperations={
  31.  *         "post"={
  32.  *             "controller"=CreateMediaObjectAction::class,
  33.  *             "deserialize"=false,
  34.  *             "security"="is_granted('ROLE_USER')",
  35.  *             "validation_groups"={
  36.  *                  "Default",
  37.  *                  "media_object_create",
  38.  *                  "ParticipationStep:io",
  39.  *              },
  40.  *             "openapi_context"={
  41.  *                 "requestBody"={
  42.  *                     "content"={
  43.  *                         "multipart/form-data"={
  44.  *                             "schema"={
  45.  *                                 "type"="object",
  46.  *                                 "properties"={
  47.  *                                     "file"={
  48.  *                                         "type"="string",
  49.  *                                         "format"="binary"
  50.  *                                     }
  51.  *                                 }
  52.  *                             }
  53.  *                         }
  54.  *                     }
  55.  *                 }
  56.  *             }
  57.  *         },
  58.  *         "get"
  59.  *     },
  60.  *     itemOperations={
  61.  *         "get"
  62.  *     }
  63.  * )
  64.  *
  65.  * @ORM\InheritanceType("SINGLE_TABLE")
  66.  * @ORM\DiscriminatorColumn(name="discr", type="string")
  67.  * @ORM\DiscriminatorMap({
  68.  *     "media_coupon" = "MediaCoupon",
  69.  *     "media_participation" = "MediaParticipation",
  70.  *     "media_blog" = "MediaBlog",
  71.  *     "media_thumbnail_blog" = "MediaThumbnailBlog",
  72.  *     "media_product" = "MediaProduct",
  73.  *     "media_gift" = "MediaGift",
  74.  *     "media_thumbnail_gift" = "MediaThumbnailGift",
  75.  *     "media_code_gift" = "MediaCodeGift",
  76.  *     "media_thumbnail_draw" = "MediaThumbnailDraw",
  77.  *     "media_desktop_draw" = "MediaDesktopDraw",
  78.  *     "media_mobile_draw" = "MediaMobileDraw",
  79.  *     "media_pdf_draw" = "MediaPdfDraw",
  80.  *     "media_code_draw" = "MediaCodeDraw",
  81.  *     "media_code_odr" = "MediaCodeOdr",
  82.  *     "media_promotion" = "MediaPromotion",
  83.  *     "media_image" = "MediaImage",
  84.  *     "media_pdf" = "MediaPdf",
  85.  *     "media_game" = "MediaGame",
  86.  *     "media_mobile_game" = "MediaMobileGame",
  87.  *     "media_slider" = "MediaSlider",
  88.  *     "media_mobile_slider" = "MediaMobileSlider",
  89.  *     "media_game_params" = "MediaGameParams",
  90.  *     "media_thumbnail_odr" = "MediaThumbnailOdr",
  91.  *     "media_desktop_odr" = "MediaDesktopOdr",
  92.  *     "media_mobile_odr" = "MediaMobileOdr",
  93.  *     "media_pdf_odr" = "MediaPdfOdr",
  94.  *     "media_multi_offer" = "MediaMultiOffer",
  95.  *     "media_recipe" = "MediaRecipe",
  96.  *     "media_pdf_documentation" = "MediaPdfDocumentation",
  97.  *     "media_knowledge_response" = "MediaKnowledgeResponse",
  98.  * })
  99.  *
  100.  * @Vich\Uploadable
  101.  */
  102. abstract class MediaObject
  103. {
  104.     public const ARRAY_LIBRARY_IMAGE_CLASSES = [
  105.         MediaCoupon::class,
  106.         MediaBlog::class,
  107.         MediaThumbnailBlog::class,
  108.         MediaProduct::class,
  109.         MediaGift::class,
  110.         MediaThumbnailGift::class,
  111.         MediaCodeGift::class,
  112.         MediaThumbnailDraw::class,
  113.         MediaDesktopDraw::class,
  114.         MediaMobileDraw::class,
  115.         MediaPromotion::class,
  116.         MediaImage::class,
  117.         MediaGame::class,
  118.         MediaMobileGame::class,
  119.         MediaGameParams::class,
  120.         MediaSlider::class,
  121.         MediaMobileSlider::class,
  122.         MediaThumbnailOdr::class,
  123.         MediaDesktopOdr::class,
  124.         MediaMobileOdr::class,
  125.         MediaMultiOffer::class,
  126.         MediaRecipe::class,
  127.         MediaKnowledgeResponse::class
  128.     ];
  129.     public const ARRAY_LIBRARY_PDF_CLASSES = [
  130.         MediaPdfDraw::class,
  131.         MediaPdf::class,
  132.         MediaPdfOdr::class
  133.     ];
  134.     /**
  135.      * @ORM\Id
  136.      * @ORM\Column(type="uuid", unique=true)
  137.      * @ORM\GeneratedValue(strategy="CUSTOM")
  138.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  139.      * @SerializedName("id")
  140.      * @ApiProperty(identifier=true)
  141.      * @Assert\Uuid()
  142.      * @Groups({
  143.      *     "MediaObject:output",
  144.      *     "media_object_create",
  145.      *     "MediaParticipation:io",
  146.      *     "MediaBlog:io",
  147.      *     "MediaProduct:io",
  148.      *     "MediaGift:io",
  149.      *     "ParticipationStep:output",
  150.      *     "ParticipationOdr:output",
  151.      *     "ParticipationMulti:io",
  152.      *     "MediaThumnbailDraw:io",
  153.      *     "MediaDesktopDraw:io",
  154.      *     "MediaMobileDraw:io",
  155.      *     "MediaPdfDraw:io",
  156.      *     "MediaImage:io",
  157.      *     "MediaPdf:io",
  158.      *     "MediaGame:io",
  159.      *     "MediaGameParams:io",
  160.      *     "MediaSlider:io",
  161.      *     "MediaMobileSlider:io",
  162.      *     "MediaThumbnailOdr:io",
  163.      *     "MediaDesktopOdr:io",
  164.      *     "MediaMobileOdr:io",
  165.      *     "MediaPdfOdr:io",
  166.      *     "MediaMultiOffer:io",
  167.      *     "MediaRecipe:io",
  168.      *     "Knowledge:output"
  169.      * })
  170.      */
  171.     private string $id;
  172.     /**
  173.      * @var \DateTime
  174.      * @ORM\Column(type="datetime", nullable=true)
  175.      * @SerializedName("created_at")
  176.      * @Gedmo\Timestampable(on="create")
  177.      */
  178.     public $createdAt;
  179.     /**
  180.      * @var \DateTime
  181.      * @ORM\Column(type="datetime", nullable=true)
  182.      * @SerializedName("updated_at")
  183.      * @Gedmo\Timestampable(on="update")
  184.      */
  185.     public $updatedAt;
  186.     /**
  187.      * @var \DateTime
  188.      * @ORM\Column(type="datetime", nullable=true)
  189.      * @SerializedName("deleted_at")
  190.      */
  191.     public $deletedAt;
  192.     /**
  193.      * @var string|null
  194.      *
  195.      * @ORM\Column(nullable=true)
  196.      * @SerializedName("file_path")
  197.      *
  198.      */
  199.     public $filePath;
  200.     /**
  201.      * Set $createdAt
  202.      *
  203.      * @param \DateTime $createdAt
  204.      *
  205.      * @return MediaObject
  206.      */
  207.     public function setCreatedAt($createdAt)
  208.     {
  209.         $this->createdAt $createdAt;
  210.         return $this;
  211.     }
  212.     /**
  213.      * Get createdAt
  214.      *
  215.      * @return \DateTime
  216.      */
  217.     public function getCreatedAt()
  218.     {
  219.         return $this->createdAt;
  220.     }
  221.     /**
  222.      * Set $updatedAt
  223.      *
  224.      * @param \DateTime $updatedAt
  225.      *
  226.      * @return MediaObject
  227.      */
  228.     public function setUpdatedAt($updatedAt)
  229.     {
  230.         $this->updatedAt $updatedAt;
  231.         return $this;
  232.     }
  233.     /**
  234.      * Get $updatedAt
  235.      *
  236.      * @return \DateTime
  237.      */
  238.     public function getUpdatedAt()
  239.     {
  240.         return $this->updatedAt;
  241.     }
  242.     /**
  243.      * Set $deletedAt
  244.      *
  245.      * @param \DateTime $deletedAt
  246.      *
  247.      * @return MediaObject
  248.      */
  249.     public function setDeletedAt($deletedAt)
  250.     {
  251.         $this->deletedAt $deletedAt;
  252.         return $this;
  253.     }
  254.     /**
  255.      * Get $deletedAt
  256.      *
  257.      * @return \DateTime
  258.      */
  259.     public function getDeletedAt()
  260.     {
  261.         return $this->deletedAt;
  262.     }
  263.     public function getId(): ?string
  264.     {
  265.         return $this->id;
  266.     }
  267.     /**
  268.      * @return string|null
  269.      */
  270.     public function getFilePath(): ?string
  271.     {
  272.         return $this->filePath;
  273.     }
  274.     /**
  275.      * @param string|null $filePath
  276.      * @return MediaObject
  277.      */
  278.     public function setFilePath(?string $filePath): MediaObject
  279.     {
  280.         $this->filePath $filePath;
  281.         return $this;
  282.     }
  283. }