<?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\Domain\Entity\Behavior\Identifiable;
use App\Domain\Entity\Enumeration\MediaType;
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', 'soft_delete_filter', 'press.order_filter']),
new Post(security: "is_granted('ROLE_ADMIN')"),
new Put(security: "is_granted('ROLE_ADMIN')"),
],
normalizationContext : ['groups' => ['press_release_read']],
denormalizationContext: ['groups' => ['press_release_write']]
)]
class PressRelease
{
use Identifiable;
use SoftDeleteable;
use Timestampable;
/**
* @param Locale $locale
* @param string|null $extract
* @param string|null $link
* @param Media|null $logo
* @param MediaType|null $mediaType
* @param Media|null $pdf
* @param DateTime|null $publicationDate
* @param string|null $title
*/
public function __construct(
public Locale $locale,
public ?string $extract = null,
public ?string $link = null,
public ?Media $logo = null,
public ?MediaType $mediaType = null,
public ?Media $pdf = null,
public ?DateTime $publicationDate = null,
public ?string $title = null,
) {}
public function getFormattedPublicationDate(): string
{
return $this->publicationDate->format('d l Y');
}
}