'use client';

/**
 * Modelo de dados tipológico — `/projetos/[id]/software/modelo-dados` (DOC-TEC-123).
 */

import {
    ProjetoSoftwareDocTecFormScreen,
} from '@/features/projetos/projeto-software-doc-tec-form/ProjetoSoftwareDocTecFormScreen';
import { TIPOLOGICO_EMPTY_DOMAIN } from '@/features/projetos/projeto-tipologico-empty-state';
import type { Projeto } from '@/types';

function pickInitialValues(projeto: Projeto | undefined) {
    return {
        modelo_dados: projeto?.modelo_dados ?? '',
        modelo_dados_erd_path: projeto?.modelo_dados_erd_path ?? '',
    };
}

export function ProjetoSoftwareModeloDadosScreen() {
    return (
        <ProjetoSoftwareDocTecFormScreen
            pageTitle="Modelo de dados"
            pageIcon="database"
            titleSection="Modelo de dados"
            guardKey="modelo-dados"
            emptyTitle="Modelo de dados ainda vazio"
            emptyDomainDescription={TIPOLOGICO_EMPTY_DOMAIN.modeloDados}
            successMessage="Modelo de dados salvo com sucesso!"
            data-testid="projeto-modelo-dados"
            fields={[
                {
                    name: 'modelo_dados',
                    label: 'Dicionário / modelo de dados',
                    placeholder:
                        'Descreva entidades, relacionamentos e regras de persistência (markdown)…',
                    rows: 16,
                },
                {
                    name: 'modelo_dados_erd_path',
                    label: 'Caminho ou URL do ERD (opcional)',
                    kind: 'input',
                    placeholder: 'ex.: docs/erd.png ou https://…',
                    maxLength: 2000,
                },
            ]}
            pickInitialValues={pickInitialValues}
            buildPayload={(values) => ({
                modelo_dados: values.modelo_dados?.trim() || null,
                modelo_dados_erd_path: values.modelo_dados_erd_path?.trim() || null,
            })}
            isEmpty={(p) =>
                !String(p?.modelo_dados ?? '').trim() &&
                !String(p?.modelo_dados_erd_path ?? '').trim()
            }
        />
    );
}
