'use client';

/**
 * Banner persistente de alertas de release (atraso / bloqueado) — TASK-PPS-044.
 * Complementa toasts (uma vez/sessão); o banner permanece enquanto a condição existir.
 */

import Link from 'next/link';
import React from 'react';
import { Alert, Button, Space } from 'antd';
import type {
    ProdutoReleaseAlertaAtraso,
    ProdutoReleaseAlertaBloqueado,
} from './useProdutoReleaseAlertasInApp';

export type ProdutoReleaseAlertasBannerProps = {
    projetoId: string;
    atrasadas: ProdutoReleaseAlertaAtraso[];
    bloqueado: ProdutoReleaseAlertaBloqueado | null;
};

export function ProdutoReleaseAlertasBanner({
    projetoId,
    atrasadas,
    bloqueado,
}: ProdutoReleaseAlertasBannerProps) {
    if (atrasadas.length === 0 && !bloqueado) {
        return null;
    }

    const atrasoResumo =
        atrasadas.length === 1
            ? `Release "${atrasadas[0].nome}" com data alvo ${atrasadas[0].dataAlvo} em atraso (${atrasadas[0].diasAtraso} dia(s)).`
            : `${atrasadas.length} releases com data alvo em atraso (a mais antiga: "${atrasadas[0]?.nome}").`;

    return (
        <Space direction="vertical" size={12} style={{ width: '100%', marginBottom: 16 }}>
            {atrasadas.length > 0 ? (
                <Alert
                    type="warning"
                    showIcon
                    data-testid="produto-alerta-atraso-data-alvo"
                    message="Data alvo ultrapassada"
                    description={atrasoResumo}
                    action={
                        <Link href={`/projetos/${projetoId}/produto/releases`}>
                            <Button size="small" type="primary">
                                Ver releases
                            </Button>
                        </Link>
                    }
                />
            ) : null}
            {bloqueado ? (
                <Alert
                    type="error"
                    showIcon
                    data-testid="produto-alerta-superficie-bloqueada"
                    message="Status bloqueado no train"
                    description={`A release "${bloqueado.nome}" tem ${bloqueado.bloqueados} superfície(s) com status bloqueado.`}
                    action={
                        <Link
                            href={`/projetos/${projetoId}/produto/releases/${bloqueado.releaseId}`}
                        >
                            <Button size="small" danger>
                                Abrir checklist
                            </Button>
                        </Link>
                    }
                />
            ) : null}
        </Space>
    );
}
