<?php
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use App\Application\Controller\Api\LocaleMessage\ExportAction;
use App\Application\Controller\Api\LocaleMessage\GenerateAction;
use App\Application\Controller\Api\LocaleMessage\ImportAction;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class LocaleMessage
*
* @package App\Domain\Entity
*/
#[ApiResource(
operations : [
new GetCollection(filters: ['locale_message.search_filter', 'soft_delete_filter']),
new GetCollection(
uriTemplate : '/locale_messages/export',
formats : ['csv' => ['text/csv']],
controller : ExportAction::class,
paginationEnabled : false,
normalizationContext: ['groups' => ['locale_message_export'], 'csv_delimiter' => ';'],
filters : ['locale_message.search_filter'],
),
new GetCollection(
uriTemplate: '/locale_messages/generate',
controller : GenerateAction::class
),
new Post(
uriTemplate: '/locale_messages/import',
controller : ImportAction::class,
deserialize: false,
),
new Get(),
new Post(),
new Put(),
],
normalizationContext : ['groups' => ['locale_message_read']],
denormalizationContext: ['groups' => ['locale_message_write']]
)]
class LocaleMessage
{
use Identifiable;
use SoftDeleteable;
use Timestampable;
public function __construct(
public string $code,
public ?string $value,
public ?string $markdown,
public Locale $locale,
) {}
}