<?php
namespace App\Domain\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\Application\ApiResources\State\Processor\PressKit\PostProcessor;
use App\Application\ApiResources\State\Processor\PressKit\PutProcessor;
use App\Domain\Entity\Behavior\Identifiable;
use DateTime;
use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class PressKit
*
* @package App\Domain\Entity
*/
#[ApiResource(
operations : [
new Delete(security: "is_granted('ROLE_ADMIN')"),
new Get(),
new GetCollection(filters: ['press.search_filter', 'press_kit.query_filter', 'soft_delete_filter']),
new Post(security: "is_granted('ROLE_ADMIN')", processor: PostProcessor::class),
new Put(security: "is_granted('ROLE_ADMIN')", processor: PutProcessor::class),
],
normalizationContext : ['groups' => ['press_kit_read']],
denormalizationContext: ['groups' => ['press_kit_write']]
)]
class PressKit
{
use Identifiable;
use SoftDeleteable;
use Timestampable;
/**
* @param Locale $locale
* @param bool|null $isOnline
* @param Media|null $file
* @param string|null $name
*/
public function __construct(
public Locale $locale,
public ?bool $isOnline = false,
public ?Media $file = null,
public ?string $name = null,
) {}
public function getPublicationDate(): DateTime
{
return $this->updatedAt;
}
public function getFormattedPublicationDate(): string
{
return $this->updatedAt->format('F Y');
}
}