<?php
declare(strict_types=1);
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use App\Application\Controller\Api\PromoCodeImport\DownloadAction;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class PromoCode
*
* @package App\Domain\Entity
*/
#[ApiResource(
operations : [
new GetCollection(security: 'is_granted("ROLE_ADMIN")'),
new Get(uriTemplate: '/promo_code_imports/{uuid}', security: "is_granted('ROLE_ADMIN')"),
new Get(
uriTemplate: '/promo_code_imports/{uuid}/download',
controller : DownloadAction::class,
security : "is_granted('ROLE_ADMIN')"
),
],
normalizationContext : ['groups' => ['promo_code_import_read']],
denormalizationContext: ['groups' => ['promo_code_import_write']],
)]
class PromoCodeImport
{
use Identifiable;
use Timestampable;
public const STATUS_PENDING = "pending";
public const STATUS_SUCCESS = "success";
public const STATUS_ERROR = "error";
public function __construct(
public ?string $importPath = null,
public ?string $path = null,
public string $status = self::STATUS_PENDING,
public ?string $error = null,
) {}
}