<?php
declare (strict_types=1);

namespace App\ApiResources\Export\LicenceCmf;

use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Patch;
use ApiPlatform\Metadata\Put;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\ApiResource;
use App\ApiResources\Export\ExportRequest;
use App\ApiResources\Export\ExportRequestInterface;
use App\State\Processor\Export\LicenceCmf\ExportRequestProcessor;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Requête d'export d'une licence CMF pour l'organization ciblée
 *
 * Appeler avec une requête POST à /export/licence-cmf/organization,
 * avec un body comme :
 *
 *   {"organizationId" : 1}
 */
#[ApiResource(
    operations: [
        new Post(
            uriTemplate: '/cmf-licence/organization',
            security: '(is_granted("ROLE_ADMIN_CORE") or is_granted("ROLE_ADMINISTRATIF_MANAGER_CORE"))'
        ),
    ],
    routePrefix: '/export',
    processor: ExportRequestProcessor::class
)]
class LicenceCmfOrganizationER extends ExportRequest
{
    /**
     * Format de sortie attendu (pdf seulement ici)
     * @var string
     */
    #[Assert\EqualTo('pdf')]
    protected string $format = 'pdf';

    /**
     * Retourne l'année de la licence
     * (toujours l'année courante, sauf dans le cas des tests où on pourra mocker cette méthode)
     *
     * @return int
     */
    public function getYear(): int
    {
        return (int)date('Y');
    }
}
