<?php

declare(strict_types=1);

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

use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\GetCollection;
use App\Module\Integration\Infrastructure\ApiPlatform\State\GiteaPullRequestProvider;
use Symfony\Component\Serializer\Attribute\Groups;

#[ApiResource(
    operations: [
        new GetCollection(
            uriTemplate: '/tasks/{taskId}/gitea/pull-requests',
            normalizationContext: ['groups' => ['gitea_pr:read']],
            provider: GiteaPullRequestProvider::class,
            security: "is_granted('ROLE_USER')",
        ),
    ],
)]
final class GiteaPullRequest
{
    #[Groups(['gitea_pr:read'])]
    public int $number = 0;

    #[Groups(['gitea_pr:read'])]
    public string $title = '';

    #[Groups(['gitea_pr:read'])]
    public string $state = '';

    #[Groups(['gitea_pr:read'])]
    public bool $merged = false;

    #[Groups(['gitea_pr:read'])]
    public string $headBranch = '';

    #[Groups(['gitea_pr:read'])]
    public string $author = '';

    #[Groups(['gitea_pr:read'])]
    public string $url = '';

    /**
     * @var array<array{context: string, status: string, target_url: string}>
     */
    #[Groups(['gitea_pr:read'])]
    public array $ciStatuses = [];
}
