<?php

declare(strict_types=1);

namespace App\Module\Reporting\Infrastructure\ApiPlatform\Resource;

use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\GetCollection;
use App\Module\Reporting\Application\DTO\AbsencesByTypeOutput;
use App\Module\Reporting\Infrastructure\ApiPlatform\State\AbsencesByTypeProvider;

/**
 * Rapport en lecture seule : absences approuvees par type sur une periode.
 *
 * Filtres query-param : ?from=YYYY-MM-DD&to=YYYY-MM-DD&userId=
 * (bornes facultatives, sans defaut — un filtre absent n'applique pas la clause).
 *
 * Aucune entite Doctrine sous-jacente : le provider lit via DBAL et retourne
 * directement une liste de AbsencesByTypeOutput. Pagination desactivee.
 */
#[ApiResource(
    shortName: 'ReportAbsencesByType',
    operations: [
        new GetCollection(
            uriTemplate: '/reports/absences-by-type',
            paginationEnabled: false,
            security: "is_granted('reporting.view')",
            provider: AbsencesByTypeProvider::class,
        ),
    ],
    output: AbsencesByTypeOutput::class,
)]
final class AbsencesByTypeResource {}
