<?php
namespace App\Entity\MediaObject;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Controller\Api\MediaObject\CreateMediaObjectAction;
use App\Repository\MediaObject\MediaObjectRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Ramsey\Uuid\Doctrine\UuidGenerator;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\SerializedName;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass=MediaObjectRepository::class)
* @ApiResource(
* attributes={
* "normalization_context"={"groups"={
* "media_object_read",
* "MediaObject:io",
* "MediaObject:output",
* }},
* "denormalization_context"={"groups"={
* "media_object_read",
* "MediaObject:io",
* "MediaObject:input",
* }}
* },
* iri="http://schema.org/MediaObject",
* collectionOperations={
* "post"={
* "controller"=CreateMediaObjectAction::class,
* "deserialize"=false,
* "security"="is_granted('ROLE_USER')",
* "validation_groups"={
* "Default",
* "media_object_create",
* "ParticipationStep:io",
* },
* "openapi_context"={
* "requestBody"={
* "content"={
* "multipart/form-data"={
* "schema"={
* "type"="object",
* "properties"={
* "file"={
* "type"="string",
* "format"="binary"
* }
* }
* }
* }
* }
* }
* }
* },
* "get"
* },
* itemOperations={
* "get"
* }
* )
*
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "media_coupon" = "MediaCoupon",
* "media_participation" = "MediaParticipation",
* "media_blog" = "MediaBlog",
* "media_thumbnail_blog" = "MediaThumbnailBlog",
* "media_product" = "MediaProduct",
* "media_gift" = "MediaGift",
* "media_thumbnail_gift" = "MediaThumbnailGift",
* "media_code_gift" = "MediaCodeGift",
* "media_thumbnail_draw" = "MediaThumbnailDraw",
* "media_desktop_draw" = "MediaDesktopDraw",
* "media_mobile_draw" = "MediaMobileDraw",
* "media_pdf_draw" = "MediaPdfDraw",
* "media_code_draw" = "MediaCodeDraw",
* "media_code_odr" = "MediaCodeOdr",
* "media_promotion" = "MediaPromotion",
* "media_image" = "MediaImage",
* "media_pdf" = "MediaPdf",
* "media_game" = "MediaGame",
* "media_mobile_game" = "MediaMobileGame",
* "media_slider" = "MediaSlider",
* "media_mobile_slider" = "MediaMobileSlider",
* "media_game_params" = "MediaGameParams",
* "media_thumbnail_odr" = "MediaThumbnailOdr",
* "media_desktop_odr" = "MediaDesktopOdr",
* "media_mobile_odr" = "MediaMobileOdr",
* "media_pdf_odr" = "MediaPdfOdr",
* "media_multi_offer" = "MediaMultiOffer",
* "media_recipe" = "MediaRecipe",
* "media_pdf_documentation" = "MediaPdfDocumentation",
* "media_knowledge_response" = "MediaKnowledgeResponse",
* })
*
* @Vich\Uploadable
*/
abstract class MediaObject
{
public const ARRAY_LIBRARY_IMAGE_CLASSES = [
MediaCoupon::class,
MediaBlog::class,
MediaThumbnailBlog::class,
MediaProduct::class,
MediaGift::class,
MediaThumbnailGift::class,
MediaCodeGift::class,
MediaThumbnailDraw::class,
MediaDesktopDraw::class,
MediaMobileDraw::class,
MediaPromotion::class,
MediaImage::class,
MediaGame::class,
MediaMobileGame::class,
MediaGameParams::class,
MediaSlider::class,
MediaMobileSlider::class,
MediaThumbnailOdr::class,
MediaDesktopOdr::class,
MediaMobileOdr::class,
MediaMultiOffer::class,
MediaRecipe::class,
MediaKnowledgeResponse::class
];
public const ARRAY_LIBRARY_PDF_CLASSES = [
MediaPdfDraw::class,
MediaPdf::class,
MediaPdfOdr::class
];
/**
* @ORM\Id
* @ORM\Column(type="uuid", unique=true)
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class=UuidGenerator::class)
* @SerializedName("id")
* @ApiProperty(identifier=true)
* @Assert\Uuid()
* @Groups({
* "MediaObject:output",
* "media_object_create",
* "MediaParticipation:io",
* "MediaBlog:io",
* "MediaProduct:io",
* "MediaGift:io",
* "ParticipationStep:output",
* "ParticipationOdr:output",
* "ParticipationMulti:io",
* "MediaThumnbailDraw:io",
* "MediaDesktopDraw:io",
* "MediaMobileDraw:io",
* "MediaPdfDraw:io",
* "MediaImage:io",
* "MediaPdf:io",
* "MediaGame:io",
* "MediaGameParams:io",
* "MediaSlider:io",
* "MediaMobileSlider:io",
* "MediaThumbnailOdr:io",
* "MediaDesktopOdr:io",
* "MediaMobileOdr:io",
* "MediaPdfOdr:io",
* "MediaMultiOffer:io",
* "MediaRecipe:io",
* "Knowledge:output"
* })
*/
private string $id;
/**
* @var \DateTime
* @ORM\Column(type="datetime", nullable=true)
* @SerializedName("created_at")
* @Gedmo\Timestampable(on="create")
*/
public $createdAt;
/**
* @var \DateTime
* @ORM\Column(type="datetime", nullable=true)
* @SerializedName("updated_at")
* @Gedmo\Timestampable(on="update")
*/
public $updatedAt;
/**
* @var \DateTime
* @ORM\Column(type="datetime", nullable=true)
* @SerializedName("deleted_at")
*/
public $deletedAt;
/**
* @var string|null
*
* @ORM\Column(nullable=true)
* @SerializedName("file_path")
*
*/
public $filePath;
/**
* Set $createdAt
*
* @param \DateTime $createdAt
*
* @return MediaObject
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set $updatedAt
*
* @param \DateTime $updatedAt
*
* @return MediaObject
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get $updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set $deletedAt
*
* @param \DateTime $deletedAt
*
* @return MediaObject
*/
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* Get $deletedAt
*
* @return \DateTime
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
public function getId(): ?string
{
return $this->id;
}
/**
* @return string|null
*/
public function getFilePath(): ?string
{
return $this->filePath;
}
/**
* @param string|null $filePath
* @return MediaObject
*/
public function setFilePath(?string $filePath): MediaObject
{
$this->filePath = $filePath;
return $this;
}
}