<?php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use App\Controller\Action\MessageFilePostController;
use App\Repository\FileRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: FileRepository::class)]
#[ApiResource(
operations: [
new Post(
uriTemplate: 'message_files/upload',
controller: MessageFilePostController::class,
openapiContext: [
'requestBody' => [
'content' => [
'multipart/form-data' => [
'schema' => [
'type' => 'object',
'properties' => [
'type' => [
'type' => 'string',
'format' => 'string'
],
'name' => [
'type' => 'string',
'format' => 'string'
],
'size' => [
'type' => 'int',
'format' => 'int'
],
'file' => [
'type' => 'string',
'format' => 'binary'
],
]
]
]
]
]
],
deserialize: false,
validate: false,
name: '_api_/message_files/upload'
),
],
normalizationContext: ['groups' => ['messageFile.get','message.get']],
denormalizationContext: ['groups' => ['messageFile.write']]
)]
class MessageFile
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['messageFile.write','messageFile.get','message.get'])]
private ?int $id = null;
#[ORM\Column(type: "string", length: 255)]
#[Groups(['messageFile.write','messageFile.get','message.get'])]
private string $name;
#[ORM\Column(type: "string", length: 255)]
#[Groups(['messageFile.write','messageFile.get'])]
private string $type;
#[ORM\Column(type: "integer")]
#[Groups(['messageFile.write','messageFile.get'])]
private int $size;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['messageFile.write','messageFile.get'])]
private ?string $file = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['messageFile.write','messageFile.get'])]
private ?string $path = null;
#[ORM\Column(type: "datetime")]
#[Groups(['messageFile.write','messageFile.get'])]
private \DateTimeInterface $createdAt;
#[ORM\ManyToOne(inversedBy: 'messageFiles')]
#[Groups(['messageFile.write','messageFile.get'])]
private ?Message $message = null;
public function __construct(string $name, string $type, int $size)
{
$this->name = $name;
$this->type = $type;
$this->size = $size;
$this->createdAt = new \DateTimeImmutable();
}
public function getId(): int
{
return $this->id;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getType(): string
{
return $this->type;
}
public function setType(string $type): void
{
$this->type = $type;
}
public function getSize(): int
{
return $this->size;
}
public function setSize(int $size): void
{
$this->size = $size;
}
public function getCreatedAt(): \DateTimeInterface
{
return $this->createdAt;
}
/**
* @return string|null
*/
public function getFile(): ?string
{
return $this->file;
}
/**
* @param string|null $file
*/
public function setFile(?string $file): void
{
$this->file = $file;
}
/**
* @return string|null
*/
public function getPath(): ?string
{
return $this->path;
}
/**
* @param string|null $path
*/
public function setPath(?string $path): void
{
$this->path = $path;
}
public function getMessage(): ?Message
{
return $this->message;
}
public function setMessage(?Message $message): self
{
$this->message = $message;
return $this;
}
}