UNPKG

@anpdgovbr/shared-types

Version:

Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)

145 lines 5.84 kB
/** * Utilitários para manipulação da estrutura organizacional (departamentos). * * Contém funções para converter a árvore em lista plana, buscar unidades, * construir/parsear caminhos no formato AD, validar hierarquias e gerar * visualizações hierárquicas amigáveis. */ import type { ADDepartmentPath, HierarquiaDepartamento, UnidadeFlat, UnidadeOption, UnidadeOrganizacional } from "./departments.types"; import { TipoUnidade } from "../../enums"; /** * Converter estrutura hierárquica em lista plana. * * Recebe uma unidade organizacional (nó da árvore) e produz uma lista plana * de unidades (UnidadeFlat) contendo referências ao pai, filhos e metadados * de hierarquia. * * @param unidade Unidade raiz a ser convertida. * @param pai Unidade pai no nível superior (opcional). * @param nivel Nível atual na árvore (padrão: 1). * @param caminho Caminho acumulado de siglas até a unidade atual. * @returns Array de UnidadeFlat representando a subárvore em lista plana. */ export declare function converterParaListaPlana(unidade: UnidadeOrganizacional, pai?: UnidadeFlat, nivel?: number, caminho?: string[]): UnidadeFlat[]; /** * Obter todas as unidades como lista plana. * * @returns Array com todas as unidades da organização na forma plana (UnidadeFlat). */ export declare function obterTodasUnidadesFlat(): UnidadeFlat[]; /** * Buscar unidade por sigla (case-insensitive). * * @param sigla Sigla da unidade a buscar. * @returns UnidadeFlat correspondente ou undefined se não encontrada. */ export declare function buscarUnidadePorSigla(sigla: string): UnidadeFlat | undefined; /** * Buscar unidade por código SIORG. * * @param codigo Código SIORG da unidade. * @returns UnidadeFlat correspondente ou undefined se não encontrada. */ export declare function buscarUnidadePorCodigo(codigo: string): UnidadeFlat | undefined; /** * Buscar unidades por termo (sigla ou nome). * * Faz busca parcial (case-insensitive) em sigla e nome e retorna opções * formatadas para uso em selects/autocomplete. * * @param termo Termo de busca. * @returns Array de UnidadeOption com unidades que casam com o termo. */ export declare function buscarUnidades(termo: string): UnidadeOption[]; /** * Obter todas as unidades como opções para select. * * @returns Array de UnidadeOption com todas as unidades disponíveis. */ export declare function obterOpcoesUnidadesTodas(): UnidadeOption[]; /** * Obter unidades por tipo. * * @param tipo Tipo de unidade (ex.: 'servico', 'setor', etc.). * @returns Array de UnidadeOption filtrado pelo tipo informado. */ export declare function obterUnidadesPorTipo(tipo: TipoUnidade): UnidadeOption[]; /** * Obter hierarquia completa de uma unidade. * * Retorna a unidade atual, o caminho completo da raiz até ela, as subordinadas * diretas e todas as subordinadas (recursivamente). * * @param sigla Sigla da unidade alvo. * @returns HierarquiaDepartamento com informações da hierarquia ou null se não encontrada. */ export declare function obterHierarquiaUnidade(sigla: string): HierarquiaDepartamento | null; /** * Construir visualização hierárquica formatada para exibição textual. * * Gera uma string com linhas indentadas representando o caminho da raiz até * a unidade, usando caracteres gráficos e espaços não-quebráveis para preservar * alinhamento. * * @param sigla Sigla da unidade a ser exibida. * @returns String formatada com a visualização hierárquica (linhas separadas por '\n'). */ export declare function construirVisualizacaoHierarquica(sigla: string): string; /** * Converter caminho de hierarquia do AD para objeto estruturado. * * Ex.: "DDSS/CGTI/ANPD" -> { siglas: ["DDSS","CGTI","ANPD"], path_string: "...", unidade_principal: "DDSS" } * * @param adPath Caminho no formato AD. * @returns ADDepartmentPath contendo siglas, path_string e unidade_principal. */ export declare function parseADDepartmentPath(adPath: string): ADDepartmentPath; /** * Construir caminho do AD a partir de uma sigla de unidade. * * Retorna o caminho formatado (hierarquia_display) ou a própria sigla se a unidade não for encontrada. * * @param sigla Sigla da unidade. * @returns Caminho AD (ex.: "DDSS/CGTI/ANPD") ou a sigla original quando não encontrada. */ export declare function construirADDepartmentPath(sigla: string): string; /** * Validar se um caminho de hierarquia é válido. * * Verifica existência das siglas, consistência da hierarquia e casos especiais * (ex.: caminho de uma única sigla deve ser "ANPD"). * * @param siglas Array de siglas representando o caminho hierárquico. * @returns true se válido, false caso contrário. */ export declare function validarHierarquiaPath(siglas: string[]): boolean; /** * Obter unidades que podem ser pai de um determinado tipo. * * A função aplica regras de quais tipos são permitidos como pai para cada tipo * de unidade e retorna as opções correspondentes. * * @param tipo Tipo de unidade cujo pai possível será buscado. * @returns Array de UnidadeOption com os candidatos a pai. */ export declare function obterUnidadesPaiPossiveis(tipo: TipoUnidade): UnidadeOption[]; /** * Obter estatísticas da estrutura organizacional. * * Retorna o objeto de estatísticas carregado do modelo estático. * * @returns Objeto de estatísticas da estrutura. */ export declare function obterEstatisticasEstrutura(): import("./departments.types").EstatisticasDepartamentos; /** * Obter enums disponíveis da estrutura organizacional. * * Retorna enums (tipos e constantes) presentes no modelo estático. * * @returns Objeto com enums da estrutura. */ export declare function obterEnumsEstrutura(): { tipos_unidade: TipoUnidade[]; niveis_hierarquicos: number[]; }; //# sourceMappingURL=departments.utils.d.ts.map