<?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\TimePerProjectOutput;
use App\Module\Reporting\Infrastructure\ApiPlatform\State\TimePerProjectProvider;

/**
 * Rapport en lecture seule : heures travaillees par projet sur une periode.
 *
 * Filtres query-param : ?from=YYYY-MM-DD&to=YYYY-MM-DD&userId=&projectId=
 * (from/to par defaut = mois courant si absents).
 *
 * Aucune entite Doctrine sous-jacente : le provider lit via DBAL et retourne
 * directement une liste de TimePerProjectOutput. Pagination desactivee
 * (volume borne par le nombre de projets).
 */
#[ApiResource(
    shortName: 'ReportTimePerProject',
    operations: [
        new GetCollection(
            uriTemplate: '/reports/time-per-project',
            paginationEnabled: false,
            security: "is_granted('reporting.view')",
            provider: TimePerProjectProvider::class,
        ),
    ],
    output: TimePerProjectOutput::class,
)]
final class TimePerProjectResource {}
