import { listarRelacionamenosRapidos } from "@/requests/common/RelacionamentosRapidos/listarRelacionamenosRapidos";
import { listarCamposPersonalizadosRelacionamentos } from "@/requests/CRUD/CamposPersonalizados/listarCamposPersonalizados";
import { Template } from "@pdfme/common";
import { usePathname } from "next/navigation";
import {
  ReactNode,
  createContext,
  useContext,
  useEffect,
  useState,
} from "react";

interface IProviderProps {
  children: ReactNode;
}

interface IContractProviderData {
  relacionamentosContrato: {
    name: string;
    text: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  camposRelacionamentosContratos: {
    name: string;
    text: string;
    tiposNegocio_relacionamento_rapido?: string;
    mostrarDocPersonalizado_relacionamento_rapido?: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  camposPersonalizadosRelacionamentosContratos: {
    name: string;
    text: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  getRelacionamentosRapidosContratos: () => void;
  getRelacionamentosRapidosDocs: () => void;
  relacionamentos: {
    name: string;
    text: string;
    tiposNegocio_relacionamento_rapido?: string;
    mostrarDocPersonalizado_relacionamento_rapido?: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  camposRelacionamentosDocs: {
    name: string;
    text: string;
    tiposNegocio_relacionamento_rapido?: string;
    mostrarDocPersonalizado_relacionamento_rapido?: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  camposPersonalizadosRelacionamentos: {
    name: string;
    text: string;
    tiposNegocio_relacionamento_rapido?: string;
    mostrarDocPersonalizado_relacionamento_rapido?: string;
    relacionamento: any;
    grupo_relacionamento_rapido?: any;
  }[];
  relacionarDadosContrato: (
    template: Template,
    dadosCliente: any,
  ) => Promise<Template>;
  relacionar: (template: Template, dadosCliente: any) => Promise<Template>;
}

const ContractContext = createContext({} as IContractProviderData);

export const ContractProvider = ({ children }: IProviderProps) => {
  const pathname = usePathname() as any;

  const [relacionamentosContrato, setRelacionamentosContrato] = useState<any>(
    [],
  );
  const [relacionamentos, setRelacionamentos] = useState<any>([]);
  const [camposRelacionamentosDocs, setCamposRelacionamentosDocs] =
    useState<any>([]);

  const [
    camposPersonalizadosRelacionamentos,
    setCamposPersonalizadosRelacionamentos,
  ] = useState<any>([]);

  const [camposRelacionamentosContratos, setCamposRelacionamentosContratos] =
    useState<any>([]);
  const [
    camposPersonalizadosRelacionamentosContratos,
    setCamposPersonalizadosRelacionamentosContratos,
  ] = useState<any>([]);

  const getRelacionamentosRapidosContratos = () => {
    // const novosRelacionamentosContratos: any[] = [
    //   {
    //     name: "grupo_negocio",
    //     text: "Grupo do Negócio",
    //     relacionamento: "grupo_negocio",
    //   },
    //   {
    //     name: "subgrupo_negocio",
    //     text: "Subgrupo do Negócio",
    //     relacionamento: "subgrupo_negocio",
    //   },
    //   {
    //     name: "classificacao_negocio",
    //     text: "Classificação do Negócio",
    //     relacionamento: "classificacao_negocio",
    //   },
    //   {
    //     name: "media_irradiacao_diaria",
    //     text: "Média de Irradiação Diária",
    //     relacionamento: "media_irradiacao_diaria",
    //   },
    //   {
    //     name: "img_endereco_instalacao",
    //     text: "Imagem do Endereço de Instalação",
    //     relacionamento: "img_endereco_instalacao",
    //   },
    //   {
    //     name: "observacoes_negocio",
    //     text: "Observações do Negócio",
    //     relacionamento: "observacoes_negocio",
    //   },
    //   {
    //     name: "revisao_proposta",
    //     text: "Revisão da Proposta",
    //     relacionamento: "revisao_proposta",
    //   },
    //   {
    //     name: "area_ocupada",
    //     text: "Área Ocupada",
    //     relacionamento: "area_ocupada",
    //   },
    //   {
    //     name: "face_telhado",
    //     text: "Face do Telhado",
    //     relacionamento: "face_telhado",
    //   },
    //   {
    //     name: "min_modulos",
    //     text: "Quantidade Mínima de Módulos",
    //     relacionamento: "min_modulos",
    //   },
    //   {
    //     name: "nome_cliente",
    //     text: "Nome do cliente do contrato",
    //     relacionamento: "nome_cliente",
    //   },
    //   {
    //     name: "orientacoes_proposta",
    //     text: "Orientações dos módulos",
    //     relacionamento: "orientacoes_proposta",
    //   },
    //   {
    //     name: "tipoNegocio_coleta",
    //     text: "Tipo de negócio",
    //     relacionamento: "tipoNegocio_coleta",
    //   },
    //   {
    //     name: "origem_cliente",
    //     text: "Origem do cliente",
    //     relacionamento: "origem_cliente",
    //   },
    //   {
    //     name: "valor_conta_energia_geradora",
    //     text: "Valor da conta de energia da UC Geradora",
    //     relacionamento: "valor_conta_energia_geradora",
    //   },
    //   {
    //     name: "descricao_inversores",
    //     text: "Descrição dos inversores",
    //     relacionamento: "descricao_inversores",
    //   },
    //   {
    //     name: "id_loja_negocio",
    //     text: "ID da loja do negócio",
    //     relacionamento: "id_loja_negocio",
    //   },
    //   {
    //     name: "rua_loja",
    //     text: "Rua da Loja",
    //     relacionamento: "rua_loja",
    //   },
    //   {
    //     name: "nome_resp_tecnico",
    //     text: "Nome do técnico do negócio",
    //     relacionamento: "nome_resp_tecnico",
    //   },
    //   {
    //     name: "nome_distribuidor_proposta",
    //     text: "Nome do distribuidor do kit",
    //     relacionamento: "nome_distribuidor_proposta",
    //   },
    //   {
    //     name: "nomeResponsavelFisico_financiador",
    //     text: "Nome do financiador do contrato",
    //     relacionamento: "nomeResponsavelFisico_financiador",
    //   },
    //   {
    //     name: "cpfResponsavel_financiador",
    //     text: "CPF do financiador do contrato",
    //     relacionamento: "cpfResponsavel_financiador",
    //   },
    //   {
    //     name: "nomeResponsavelFisico_cliente",
    //     text: "Nome do responsável físico do cliente",
    //     relacionamento: "nomeResponsavelFisico_cliente",
    //   },
    //   {
    //     name: "cpfResponsavel_cliente",
    //     text: "CPF do responsável físico do cliente",
    //     relacionamento: "cpfResponsavel_cliente",
    //   },
    //   {
    //     name: "nome_vendedor",
    //     text: "Nome do vendedor do contrato",
    //     relacionamento: "nome_vendedor",
    //   },
    //   {
    //     name: "telefone_vendedor",
    //     text: "Telefone do vendedor do negócio",
    //     relacionamento: "telefone_vendedor",
    //   },
    //   {
    //     name: "email_vendedor",
    //     text: "Email do vendedor do negócio",
    //     relacionamento: "email_vendedor",
    //   },
    //   {
    //     name: "img_vendedor",
    //     text: "Foto do vendedor do negócio",
    //     relacionamento: "img_vendedor",
    //   },
    //   {
    //     name: "nome_supervisor",
    //     text: "Nome do supervisor do contrato",
    //     relacionamento: "nome_supervisor",
    //   },
    //   {
    //     name: "telefone_supervisor",
    //     text: "Telefone do supervisor do negócio",
    //     relacionamento: "telefone_supervisor",
    //   },
    //   {
    //     name: "email_supervisor",
    //     text: "Email do supervisor do negócio",
    //     relacionamento: "email_supervisor",
    //   },
    //   {
    //     name: "img_supervisor",
    //     text: "Foto do supervisor do negócio",
    //     relacionamento: "img_supervisor",
    //   },
    //   {
    //     name: "nome_adm",
    //     text: "Nome do administrador do negócio",
    //     relacionamento: "nome_adm",
    //   },
    //   {
    //     name: "telefone_adm",
    //     text: "Telefone do administrador do negócio",
    //     relacionamento: "telefone_adm",
    //   },
    //   {
    //     name: "email_adm",
    //     text: "Email do administrador do negócio",
    //     relacionamento: "email_adm",
    //   },
    //   {
    //     name: "img_adm",
    //     text: "Foto do administrador do negócio",
    //     relacionamento: "img_adm",
    //   },
    //   {
    //     name: "nome_pre_vendedor",
    //     text: "Nome do pré vendedor do negócio",
    //     relacionamento: "nome_pre_vendedor",
    //   },
    //   {
    //     name: "telefone_pre_vendedor",
    //     text: "Telefone do pré vendedor do negócio",
    //     relacionamento: "telefone_pre_vendedor",
    //   },
    //   {
    //     name: "email_pre_vendedor",
    //     text: "Email do pré vendedor do negócio",
    //     relacionamento: "email_pre_vendedor",
    //   },
    //   {
    //     name: "img_pre_vendedor",
    //     text: "Foto do pré vendedor do negócio",
    //     relacionamento: "img_pre_vendedor",
    //   },
    //   {
    //     name: "nome_tecnico",
    //     text: "Nome do técnico do negócio",
    //     relacionamento: "nome_tecnico",
    //   },
    //   {
    //     name: "telefone_tecnico",
    //     text: "Telefone do técnico do negócio",
    //     relacionamento: "telefone_tecnico",
    //   },
    //   {
    //     name: "email_tecnico",
    //     text: "Email do técnico do negócio",
    //     relacionamento: "email_tecnico",
    //   },
    //   {
    //     name: "img_tecnico",
    //     text: "Foto do técnico do negócio",
    //     relacionamento: "img_tecnico",
    //   },
    //   {
    //     name: "nome_instalador",
    //     text: "Nome do instalador do negócio",
    //     relacionamento: "nome_instalador",
    //   },
    //   {
    //     name: "telefone_instalador",
    //     text: "Telefone do instalador do negócio",
    //     relacionamento: "telefone_instalador",
    //   },
    //   {
    //     name: "email_instalador",
    //     text: "Email do instalador do negócio",
    //     relacionamento: "email_instalador",
    //   },
    //   {
    //     name: "img_instalador",
    //     text: "Foto do instalador do negócio",
    //     relacionamento: "img_instalador",
    //   },
    //   {
    //     name: "nome_gerente",
    //     text: "Nome do gerente do negócio",
    //     relacionamento: "nome_gerente",
    //   },
    //   {
    //     name: "telefone_gerente",
    //     text: "Telefone do gerente do negócio",
    //     relacionamento: "telefone_gerente",
    //   },
    //   {
    //     name: "email_gerente",
    //     text: "Email do gerente do negócio",
    //     relacionamento: "email_gerente",
    //   },
    //   {
    //     name: "img_gerente",
    //     text: "Foto do gerente do negócio",
    //     relacionamento: "img_gerente",
    //   },
    //   {
    //     name: "cliente_cpf",
    //     text: "CPF do cliente do contrato",
    //     relacionamento: "cpfcnpj_cliente",
    //   },
    //   {
    //     name: "numero_contrato",
    //     text: "Número do contrato",
    //     relacionamento: "contratoId",
    //   },
    //   {
    //     name: "numero_negocio",
    //     text: "Número do negócio",
    //     relacionamento: "id_coleta_cliente",
    //   },
    //   {
    //     name: "revisao_contrato",
    //     text: "Revisão do contrato",
    //     relacionamento: "revisaoContrato",
    //   },
    //   {
    //     name: "observacoes",
    //     text: "Observações da Proposta",
    //     relacionamento: "observacoes",
    //   },
    //   {
    //     name: "observacao_pagamento",
    //     text: "Observação de Pagamento",
    //     relacionamento: "observacao_pagamento",
    //   },
    //   {
    //     name: "observacoes",
    //     text: "Observações da Proposta",
    //     relacionamento: "observacoes",
    //   },
    //   {
    //     name: "observacao_pagamento",
    //     text: "Observação de Pagamento",
    //     relacionamento: "observacao_pagamento",
    //   },
    //   {
    //     name: "data_atual",
    //     text: "Data atual",
    //     relacionamento: capitalizeMonth(
    //       getDateTimeBrasil({
    //         day: "2-digit",
    //         month: "long",
    //         year: "numeric",
    //         hour: undefined, // Define a hora como undefined para excluí-la
    //         minute: undefined, // Define os minutos como undefined para excluí-los
    //         second: undefined, // Define os segundos como undefined para excluí-los
    //       })
    //     ),
    //   },
    //   {
    //     name: "dia_numero",
    //     text: "Numero do dia atual",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: undefined,
    //       day: "2-digit",
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "mes_numero",
    //     text: "Numero do mês atual",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: "2-digit",
    //       day: undefined,
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "mes_extenso",
    //     text: "Mês atual escrito por extenso",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: "long",
    //       day: undefined,
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "media_consumoTotal",
    //     text: "Média do consumo de energia total",
    //     relacionamento: "media_consumoTotal",
    //   },
    //   {
    //     name: "consumoTotal_anual",
    //     text: "consumo de energia total anual",
    //     relacionamento: "consumoTotal_anual",
    //   },
    //   {
    //     name: "max_modulos",
    //     text: "Máximo de módulos",
    //     relacionamento: "max_modulos",
    //   },
    //   // sasa start
    //   // {
    //   //   name: "dias_cronograma_instalacao",
    //   //   text: "dias estimados de instalação",
    //   //   relacionamento: "dias_cronograma_instalacao",
    //   // },
    //   {
    //     name: "endereco_loja",
    //     text: "endereco da loja",
    //     relacionamento: "endereco_loja",
    //   },
    //   {
    //     name: "cep_loja",
    //     text: "cep da loja",
    //     relacionamento: "cep_loja",
    //   },
    //   {
    //     name: "cidade_loja",
    //     text: "cidade da loja",
    //     relacionamento: "cidade_loja",
    //   },
    //   {
    //     name: "estado_loja",
    //     text: "estado da loja",
    //     relacionamento: "estado_loja",
    //   },
    //   {
    //     name: "proprietario_loja",
    //     text: "proprietario da loja",
    //     relacionamento: "proprietario_loja",
    //   },
    //   {
    //     name: "nome_loja",
    //     text: "nome da loja",
    //     relacionamento: "nome_loja",
    //   },
    //   {
    //     name: "complemento_loja",
    //     text: "complemento da loja",
    //     relacionamento: "complemento_loja",
    //   },
    //   {
    //     name: "razao_social_loja",
    //     text: "razão social da loja",
    //     relacionamento: "razao_social_loja",
    //   },
    //   {
    //     name: "numero_loja",
    //     text: "número da loja",
    //     relacionamento: "numero_loja",
    //   },
    //   {
    //     name: "bairro_loja",
    //     text: "bairro da loja",
    //     relacionamento: "bairro_loja",
    //   },
    //   {
    //     name: "complemento_loja",
    //     text: "complemento da loja",
    //     relacionamento: "complemento_loja",
    //   },
    //   {
    //     name: "razao_social_loja",
    //     text: "razão social da loja",
    //     relacionamento: "razao_social_loja",
    //   },
    //   {
    //     name: "numero_loja",
    //     text: "número da loja",
    //     relacionamento: "numero_loja",
    //   },
    //   {
    //     name: "bairro_loja",
    //     text: "bairro da loja",
    //     relacionamento: "bairro_loja",
    //   },
    //   {
    //     name: "mensagem_contratante",
    //     text: "mensagem do contratante",
    //     relacionamento: "mensagem_contratante",
    //   },
    //   {
    //     name: "email_loja",
    //     text: "email da loja",
    //     relacionamento: "email_loja",
    //   },
    //   {
    //     name: "site_loja",
    //     text: "site da loja",
    //     relacionamento: "site_loja",
    //   },
    //   {
    //     name: "facebook_loja",
    //     text: "facebook da loja",
    //     relacionamento: "facebook_loja",
    //   },
    //   {
    //     name: "instagram_loja",
    //     text: "instagram da loja",
    //     relacionamento: "instagram_loja",
    //   },
    //   {
    //     name: "site_loja",
    //     text: "site da loja",
    //     relacionamento: "site_loja",
    //   },
    //   {
    //     name: "facebook_loja",
    //     text: "facebook da loja",
    //     relacionamento: "facebook_loja",
    //   },
    //   {
    //     name: "instagram_loja",
    //     text: "instagram da loja",
    //     relacionamento: "instagram_loja",
    //   },
    //   {
    //     name: "tipoPessoa_cliente",
    //     text: "tipo pessoa cliente",
    //     relacionamento: "tipoPessoa_cliente",
    //   },
    //   // sasa end
    //   {
    //     name: "estimativa_geracao",
    //     text: "Média da estimativa de energia gerada mensalmente",
    //     relacionamento: "estimativa_geracao",
    //   },
    //   {
    //     name: "dias_prazo_entrega",
    //     text: "Dias previstos para o prazo de entrega",
    //     relacionamento: "dias_prazo_entrega",
    //   },
    //   {
    //     name: "media_consumo_uc_geradora",
    //     text: "Média de Consumo da UC Geradora",
    //     relacionamento: "media_consumo_uc_geradora",
    //   },
    //   {
    //     name: "media_consumo_ucs_beneficiarias",
    //     text: "Média de Consumo das UCs Beneficiárias",
    //     relacionamento: "media_consumo_ucs_beneficiarias",
    //   },
    //   {
    //     name: "numero_uc_geradora",
    //     text: "Número da UC Geradora",
    //     relacionamento: "numero_uc_geradora",
    //   },
    //   {
    //     name: "qtd_expansivel_modulos",
    //     text: "Qtx máx de Módulos - qtd de Módulos",
    //     relacionamento: "qtd_expansivel_modulos",
    //   },
    //   {
    //     name: "ano_numero",
    //     text: "Numero do ano atual",
    //     relacionamento: getDateTimeBrasil({
    //       day: undefined,
    //       month: undefined,
    //       year: "numeric",
    //       hour: undefined, // Define a hora como undefined para excluí-la
    //       minute: undefined, // Define os minutos como undefined para excluí-los
    //       second: undefined, // Define os segundos como undefined para excluí-los
    //     }),
    //   },
    //   {
    //     name: "valor_total_pagamento",
    //     text: "Valor Total do Contrato",
    //     relacionamento: "valorTotal_proposta",
    //   },
    //   {
    //     name: "garantia_modulos",
    //     text: "Garantia dos Modulos",
    //     relacionamento: "garantia_modulos",
    //   },
    //   {
    //     name: "garantia_inversores",
    //     text: "Garantia dos Inversores",
    //     relacionamento: "garantia_inversores",
    //   },
    //   {
    //     name: "garantia_servicos",
    //     text: "Garantia dos Serviços",
    //     relacionamento: "garantia_servicos",
    //   },
    //   {
    //     name: "garantia_estruturas",
    //     text: "Garantia das Estruturas",
    //     relacionamento: "garantia_estruturas",
    //   },
    //   {
    //     name: "garantia_baterias",
    //     text: "Garantia das Baterias",
    //     relacionamento: "garantia_baterias",
    //   },
    //   {
    //     name: "garantia_modulos",
    //     text: "Garantia dos Modulos",
    //     relacionamento: "garantia_modulos",
    //   },
    //   {
    //     name: "garantia_inversores",
    //     text: "Garantia dos Inversores",
    //     relacionamento: "garantia_inversores",
    //   },
    //   {
    //     name: "garantia_servicos",
    //     text: "Garantia dos Serviços",
    //     relacionamento: "garantia_servicos",
    //   },
    //   {
    //     name: "garantia_estruturas",
    //     text: "Garantia das Estruturas",
    //     relacionamento: "garantia_estruturas",
    //   },
    //   {
    //     name: "garantia_baterias",
    //     text: "Garantia das Baterias",
    //     relacionamento: "garantia_baterias",
    //   },
    //   {
    //     name: "valor_extenso_proposta",
    //     text: "Valor Total do Contrato por extenso",
    //     relacionamento: "valor_extenso_proposta",
    //   },
    //   {
    //     name: "condicao_pagamento_proposta",
    //     text: "Condição de Pagamento",
    //     relacionamento: "condicao_pagamento_proposta",
    //   },
    //   {
    //     name: "componentes_tabela_kit_val",
    //     text: "Tabela de componentes do kit",
    //     relacionamento: "componentes_tabela_kit_val",
    //   },
    //   {
    //     name: "tabela_ucs",
    //     text: "Tabela de componentes das UCS",
    //     relacionamento: "tabela_ucs",
    //     grupo_relacionamento_rapido: "12",
    //     colunas_tabela: ["uc", "concessionaria", "valor", "conta", "tipo"],
    //   },
    //   {
    //     name: "tabela_ubs",
    //     text: "Tabela de consumo das ubs",
    //     relacionamento: "tabela_ubs",
    //     grupo_relacionamento_rapido: "12",
    //     colunas_tabela: ["uc", "concessionaria", "valor", "conta"],
    //   },
    //   {
    //     name: "tabela_inversores",
    //     text: "Tabela de Inversores",
    //     relacionamento: "tabela_inversores",
    //     grupo_relacionamento_rapido: "12",
    //     colunas_tabela: ["qtd_item", "descricao_item"],
    //   },
    //   {
    //     name: "potencia_kit",
    //     text: "Potência do kit",
    //     relacionamento: "potencia_kit",
    //   },
    //   {
    //     name: "localizacao_instalacao",
    //     text: "Localização da instalação",
    //     relacionamento: "localizacao_instalacao",
    //   },
    //   {
    //     name: "numero_moradia_cliente",
    //     text: "Número da moradia do cliente",
    //     relacionamento: "nro_cliente",
    //   },
    //   {
    //     name: "cidade_moradia_cliente",
    //     text: "Cidade da moradia do cliente",
    //     relacionamento: "cidade_cliente",
    //   },
    //   {
    //     name: "estado_moradia_cliente",
    //     text: "Estado da moradia do cliente",
    //     relacionamento: "estado_cliente",
    //   },
    //   {
    //     name: "cep_moradia_cliente",
    //     text: "Cep da moradia do cliente",
    //     relacionamento: "cep_cliente",
    //   },
    //   {
    //     name: "rua_moradia_cliente",
    //     text: "Rua da moradia do cliente",
    //     relacionamento: "rua_cliente",
    //   },
    //   {
    //     name: "bairro_moradia_cliente",
    //     text: "Bairro da moradia do cliente",
    //     relacionamento: "bairro_cliente",
    //   },
    //   {
    //     name: "endereco_moradia_cliente",
    //     text: "Endereço completo da moradia do cliente",
    //     relacionamento: "endereco_moradia_cliente",
    //   },
    //   {
    //     name: "agencia_loja",
    //     text: "Agencia da loja",
    //     relacionamento: "agencia_loja",
    //   },
    //   {
    //     name: "banco_loja",
    //     text: "Banco da loja",
    //     relacionamento: "banco_loja",
    //   },
    //   {
    //     name: "telefone_loja",
    //     text: "Telefone da loja",
    //     relacionamento: "telefone_loja",
    //   },
    //   {
    //     name: "banco_loja",
    //     text: "Banco da loja",
    //     relacionamento: "banco_loja",
    //   },
    //   {
    //     name: "telefone_loja",
    //     text: "Telefone da loja",
    //     relacionamento: "telefone_loja",
    //   },
    //   {
    //     name: "conta_loja",
    //     text: "Conta da loja",
    //     relacionamento: "conta_loja",
    //   },
    //   {
    //     name: "pix_loja",
    //     text: "Pix da loja",
    //     relacionamento: "pix_loja",
    //   },
    //   {
    //     name: "complementos_bancarios_loja",
    //     text: "Complementos bancarios da loja",
    //     relacionamento: "complementos_bancarios_loja",
    //   },
    //   {
    //     name: "cnpj_loja",
    //     text: "Cnpj Loja",
    //     relacionamento: "cnpj_loja",
    //   },
    //   {
    //     name: "agencia_proposta",
    //     text: "Agência da proposta",
    //     relacionamento: "agencia_proposta",
    //   },
    //   {
    //     name: "conta_proposta",
    //     text: "Conta da proposta",
    //     relacionamento: "conta_proposta",
    //   },
    //   {
    //     name: "banco_proposta",
    //     text: "Banco da proposta",
    //     relacionamento: "banco_proposta",
    //   },
    //   {
    //     name: "agencia_proposta",
    //     text: "Agência da proposta",
    //     relacionamento: "agencia_proposta",
    //   },
    //   {
    //     name: "conta_proposta",
    //     text: "Conta da proposta",
    //     relacionamento: "conta_proposta",
    //   },
    //   {
    //     name: "complemento_moradia_cliente",
    //     text: "Complemento da moradia do cliente",
    //     relacionamento: "comp_cliente",
    //   },
    //   {
    //     name: "razao_social_cliente",
    //     text: "Razão social do cliente",
    //     relacionamento: "nomeEmpresa_cliente",
    //   },
    //   {
    //     name: "cpfcnpj_cliente",
    //     text: "CNPJ do cliente do contrato",
    //     relacionamento: "cpfcnpj_cliente",
    //   },
    //   {
    //     name: "rua_empresa_cliente",
    //     text: "Rua da empresa do cliente",
    //     relacionamento: "logradouroEmpresa_cliente",
    //   },
    //   {
    //     name: "numero_empresa_cliente",
    //     text: "Número do endereço da empresa do cliente",
    //     relacionamento: "numeroEmpresa",
    //   },
    //   {
    //     name: "email_cliente",
    //     text: "Email do Cliente",
    //     relacionamento: "email_cliente",
    //   },
    //   {
    //     name: "complemento_empresa_cliente",
    //     text: "Complemento do endereço da empresa do cliente",
    //     relacionamento: "complementoEmpresa_cliente",
    //   },
    //   {
    //     name: "bairro_empresa_cliente",
    //     text: "Bairro do endereço da empresa do cliente",
    //     relacionamento: "bairroEmpresa_cliente",
    //   },
    //   {
    //     name: "cep_empresa_cliente",
    //     text: "Número do CEP do endereço da empresa do cliente",
    //     relacionamento: "cepEmpresa_cliente",
    //   },
    //   {
    //     name: "cidade_empresa_cliente",
    //     text: "Cidade do endereço da empresa do cliente",
    //     relacionamento: "cidadeEmpresa_cliente",
    //   },
    //   {
    //     name: "estado_empresa_cliente",
    //     text: "Estado do endereço da empresa do cliente",
    //     relacionamento: "ufEmpresa_cliente",
    //   },
    //   {
    //     name: "nome_responsavel_empresa_cliente",
    //     text: "Nome do responsável da empresa do cliente",
    //     relacionamento: "nomeResponsavelFisico_cliente",
    //   },
    //   {
    //     name: "cpf_responsavel_empresa_cliente",
    //     text: "CPF do responsável da empresa do cliente",
    //     relacionamento: "cpfResponsavel_cliente",
    //   },
    //   {
    //     name: "orientacao_proposta",
    //     text: "Primeira orientação dos módulos na proposta",
    //     relacionamento: "orientacao_proposta",
    //   },
    //   {
    //     name: "instalador_nome_empresa_terceirizada",
    //     text: "Nome da empresa terceirizada do instalador",
    //     relacionamento: "instalador_nome_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_cnpj_empresa_terceirizada",
    //     text: "CNPJ da empresa do instalador",
    //     relacionamento: "instalador_cnpj_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_rua_empresa_terceirizada",
    //     text: "Rua da empresa do instalador",
    //     relacionamento: "instalador_rua_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_numero_empresa_terceirizada",
    //     text: "Numero da localização da empresa do instalador",
    //     relacionamento: "instalador_numero_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_bairro_empresa_terceirizada",
    //     text: "Bairro da empresa do instalador",
    //     relacionamento: "instalador_bairro_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_cidade_empresa_terceirizada",
    //     text: "Cidade da empresa do instalador",
    //     relacionamento: "instalador_cidade_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_estado_empresa_terceirizada",
    //     text: "Estado da empresa do instalador",
    //     relacionamento: "instalador_estado_empresa_terceirizada",
    //   },
    //   {
    //     name: "instalador_cep_empresa_terceirizada",
    //     text: "CEP da empresa do instalador",
    //     relacionamento: "instalador_cep_empresa_terceirizada",
    //   },
    //   {
    //     name: "forma_pagamento",
    //     text: "Forma de Pagamento",
    //     relacionamento: "forma_pagamento",
    //   },
    //   {
    //     name: "periodoEficiencia",
    //     text: "Período de Eficiencia (Anos)",
    //     relacionamento: "periodoEficiencia",
    //   },
    //   {
    //     name: "eficiencia_modulos_25anos",
    //     text: "Eficiência dos módulos durante o período",
    //     relacionamento: "eficiencia_modulos_25anos",
    //   },
    //   {
    //     name: "preco_kit",
    //     text: "Preço do kit",
    //     relacionamento: "preco_kit",
    //   },
    //   {
    //     name: "nomeRepresentanteLegal_loja",
    //     text: "Nome do representante legal da loja",
    //     relacionamento: "nomeRepresentanteLegal_loja",
    //   },
    //   {
    //     name: "cpfRepresentanteLegal_loja",
    //     text: "CPF do representante legal da loja",
    //     relacionamento: "cpfRepresentanteLegal_loja",
    //   },
    //   {
    //     name: "preco_extenso_kit",
    //     text: "Preço do kit por extenso",
    //     relacionamento: "preco_extenso_kit",
    //   },
    //   {
    //     name: "valor_sem_kit",
    //     text: "Valor sem o kit",
    //     relacionamento: "valor_sem_kit",
    //   },
    //   {
    //     name: "valor_extenso_sem_kit",
    //     text: "Valor sem o kit por extenso",
    //     relacionamento: "valor_extenso_sem_kit",
    //   },
    //   {
    //     name: "periodoEficiencia",
    //     text: "Período de Eficiencia (Anos)",
    //     relacionamento: "periodoEficiencia",
    //   },
    //   {
    //     name: "eficiencia_modulos_25anos",
    //     text: "Eficiência dos módulos durante o período",
    //     relacionamento: "eficiencia_modulos_25anos",
    //   },
    //   {
    //     name: "preco_kit",
    //     text: "Preço do kit",
    //     relacionamento: "preco_kit",
    //   },
    //   {
    //     name: "nomeRepresentanteLegal_loja",
    //     text: "Nome do representante legal da loja",
    //     relacionamento: "nomeRepresentanteLegal_loja",
    //   },
    //   {
    //     name: "cpfRepresentanteLegal_loja",
    //     text: "CPF do representante legal da loja",
    //     relacionamento: "cpfRepresentanteLegal_loja",
    //   },
    //   {
    //     name: "preco_extenso_kit",
    //     text: "Preço do kit por extenso",
    //     relacionamento: "preco_extenso_kit",
    //   },
    //   {
    //     name: "valor_sem_kit",
    //     text: "Valor sem o kit",
    //     relacionamento: "valor_sem_kit",
    //   },
    //   {
    //     name: "valor_extenso_sem_kit",
    //     text: "Valor sem o kit por extenso",
    //     relacionamento: "valor_extenso_sem_kit",
    //   },
    //   {
    //     name: "conta_bancaria_pagamento",
    //     text: "Conta Bancária",
    //     relacionamento: "conta_bancaria_pagamento",
    //   },
    //   {
    //     name: "data_primeiro_vencimento_pagamento",
    //     text: "Data Primeiro Vencimento",
    //     relacionamento: "data_primeiro_vencimento_pagamento",
    //   },
    //   {
    //     name: "informacoes_pagamento",
    //     text: "Informações do Pagamento",
    //     relacionamento: "informacoes_pagamento",
    //   },
    //   {
    //     name: "condicoes_pagamento_disponveis",
    //     text: "Condições de pagamento disponíveis na Loja",
    //     relacionamento: "condicoes_pagamento_disponveis",
    //   },
    //   {
    //     name: "mensagem_contratante",
    //     text: "Mensagem do contratante no contrato",
    //     relacionamento: "mensagem_contratante",
    //   },
    //   {
    //     name: "telhado_proposta",
    //     text: "Telhado da Proposta",
    //     relacionamento: "telhado_proposta",
    //   },
    //   {
    //     name: "simultaneidade_proposta",
    //     text: "Simultaneidade da Proposta",
    //     relacionamento: "simultaneidade_proposta",
    //   },
    //   {
    //     name: "tipo_ligacao_proposta",
    //     text: "Tipo de Ligação da Proposta",
    //     relacionamento: "tipo_ligacao_proposta",
    //   },
    //   {
    //     name: "cep_loja_padrao",
    //     text: "CEP da Loja Padrão",
    //     relacionamento: "cep_loja_padrao",
    //   },
    //   {
    //     name: "rua_loja_padrao",
    //     text: "Rua da Loja Padrão",
    //     relacionamento: "rua_loja_padrao",
    //   },
    //   {
    //     name: "numero_loja_padrao",
    //     text: "Número da Loja Padrão",
    //     relacionamento: "numero_loja_padrao",
    //   },
    //   {
    //     name: "bairro_loja_padrao",
    //     text: "Bairro da Loja Padrão",
    //     relacionamento: "bairro_loja_padrao",
    //   },
    //   {
    //     name: "complemento_loja_padrao",
    //     text: "Complemento da Loja Padrão",
    //     relacionamento: "complemento_loja_padrao",
    //   },
    //   {
    //     name: "cidade_loja_padrao",
    //     text: "Cidade da Loja Padrão",
    //     relacionamento: "cidade_loja_padrao",
    //   },
    //   {
    //     name: "estado_loja_padrao",
    //     text: "Estado da Loja Padrão",
    //     relacionamento: "estado_loja_padrao",
    //   },
    //   {
    //     name: "endereco_loja_padrao",
    //     text: "Endereço da Loja Padrão",
    //     relacionamento: "endereco_loja_padrao",
    //   },
    //   {
    //     name: "nome_responsavel_loja_padrao",
    //     text: "Nome do Responsável da Loja Padrão",
    //     relacionamento: "nome_responsavel_loja_padrao",
    //   },
    //   {
    //     name: "cpf_responsavel_loja_padrao",
    //     text: "CPF do Responsável da Loja Padrão",
    //     relacionamento: "cpf_responsavel_loja_padrao",
    //   },
    //   {
    //     name: "nomeResponsavelFisico_financiador",
    //     text: "Nome do Responsável Físico do Financiador",
    //     relacionamento: "nomeResponsavelFisico_financiador",
    //   },
    //   {
    //     name: "cpfResponsavel_financiador",
    //     text: "CPF do Responsável do Financiador",
    //     relacionamento: "cpfResponsavel_financiador",
    //   },
    //   {
    //     name: "tipoPessoa_financiador",
    //     text: "Tipo de Pessoa do Financiador",
    //     relacionamento: "tipoPessoa_financiador",
    //   },
    //   {
    //     name: "email_financiador",
    //     text: "Email do Financiador",
    //     relacionamento: "email_financiador",
    //   },
    //   {
    //     name: "dataNasc_financiador",
    //     text: "Data de Nascimento do Financiador",
    //     relacionamento: "dataNasc_financiador",
    //   },
    //   {
    //     name: "profissao_financiador",
    //     text: "Profissão do Financiador",
    //     relacionamento: "profissao_financiador",
    //   },
    //   {
    //     name: "celular1_financiador",
    //     text: "Celular 1 do Financiador",
    //     relacionamento: "celular1_financiador",
    //   },
    //   {
    //     name: "celular2_financiador",
    //     text: "Celular 2 do Financiador",
    //     relacionamento: "celular2_financiador",
    //   },
    //   {
    //     name: "cep_financiador",
    //     text: "CEP do Financiador",
    //     relacionamento: "cep_financiador",
    //   },
    //   {
    //     name: "rua_financiador",
    //     text: "Rua do Financiador",
    //     relacionamento: "rua_financiador",
    //   },
    //   {
    //     name: "numero_financiador",
    //     text: "Número do Endereço do Financiador",
    //     relacionamento: "numero_financiador",
    //   },
    //   {
    //     name: "bairro_financiador",
    //     text: "Bairro do Financiador",
    //     relacionamento: "bairro_financiador",
    //   },
    //   {
    //     name: "complemento_financiador",
    //     text: "Complemento do Endereço do Financiador",
    //     relacionamento: "complemento_financiador",
    //   },
    //   {
    //     name: "cidade_financiador",
    //     text: "Cidade do Financiador",
    //     relacionamento: "cidade_financiador",
    //   },
    //   {
    //     name: "uf_financiador",
    //     text: "UF do Financiador",
    //     relacionamento: "uf_financiador",
    //   },
    // ];

    if (pathname != "/") {
      Promise.all([
        listarRelacionamenosRapidos(),
        listarCamposPersonalizadosRelacionamentos(),
      ]).then(([resRelacionamentos, res]) => {
        const relacionamentosFiltrados = resRelacionamentos
          .filter(
            (e: any) =>
              e.status_relacionamento_rapido == 1 &&
              e.mostrarContrato_relacionamento_rapido == 1,
          )
          .map((rel: any) => ({
            name: rel.nome_relacionamento_rapido,
            text:
              rel.text_relacionamento_rapido || rel.nome_relacionamento_rapido,
            relacionamento: rel.nome_relacionamento_rapido,
            grupo_relacionamento_rapido: rel.grupo_relacionamento_rapido,
            colunas_tabela: rel.colunas_tabela_relacionamento_rapido,
          }));

        setRelacionamentosContrato((prev: any) => [
          ...relacionamentosFiltrados,
          ...res.map((campo: any) => ({
            name: campo.nome_relacionamento_rapido,
            text: campo.nome_campo_personalizado,
            relacionamento: campo.nome_relacionamento_rapido,
          })),
        ]);

        setCamposPersonalizadosRelacionamentosContratos((prev: any) => [
          ...res.map((campo: any) => ({
            name: campo.nome_relacionamento_rapido,
            text: campo.nome_campo_personalizado,
            relacionamento: campo.nome_relacionamento_rapido,
            local_campo_personalizado: campo.local_campo_personalizado,
          })),
        ]);

        setCamposRelacionamentosContratos(relacionamentosFiltrados);
      });
    }
  };

  useEffect(() => {
    getRelacionamentosRapidosDocs();
    getRelacionamentosRapidosContratos();
  }, [pathname]);
  const getRelacionamentosRapidosDocs = () => {
    // const novosRelacionamentos: any[] = [
    //   {
    //     // name: "cliente", // nome_cliente
    //     name: "nome_cliente",
    //     text: "Nome do cliente",
    //     relacionamento: "nome_cliente",
    //   },
    //   {
    //     name: "nome_vendedor",
    //     text: "Nome do Vendedor",
    //     relacionamento: "responsavel_coleta",
    //   },
    //   {
    //     name: "telefone_vendedor",
    //     text: "Telefone do vendedor do negócio",
    //     relacionamento: "telefone_vendedor",
    //   },
    //   {
    //     name: "email_vendedor",
    //     text: "Email do vendedor do negócio",
    //     relacionamento: "email_vendedor",
    //   },
    //   {
    //     name: "img_vendedor",
    //     text: "Foto do vendedor do negócio",
    //     relacionamento: "img_vendedor",
    //   },
    //   {
    //     name: "nome_supervisor",
    //     text: "Nome do Supervisor",
    //     relacionamento: "nome_supervisor",
    //   },
    //   {
    //     name: "telefone_supervisor",
    //     text: "Telefone do supervisor do negócio",
    //     relacionamento: "telefone_supervisor",
    //   },
    //   {
    //     name: "email_supervisor",
    //     text: "Email do supervisor do negócio",
    //     relacionamento: "email_supervisor",
    //   },
    //   {
    //     name: "img_supervisor",
    //     text: "Foto do supervisor do negócio",
    //     relacionamento: "img_supervisor",
    //   },
    //   {
    //     name: "nome_instalador",
    //     text: "Nome do Instalador",
    //     relacionamento: "nome_instalador",
    //   },
    //   {
    //     name: "telefone_instalador",
    //     text: "Telefone do instalador do negócio",
    //     relacionamento: "telefone_instalador",
    //   },
    //   {
    //     name: "email_instalador",
    //     text: "Email do instalador do negócio",
    //     relacionamento: "email_instalador",
    //   },
    //   {
    //     name: "img_instalador",
    //     text: "Foto do instalador do negócio",
    //     relacionamento: "img_instalador",
    //   },
    //   {
    //     name: "nome_adm",
    //     text: "Nome do administrador do negócio",
    //     relacionamento: "nome_adm",
    //   },
    //   {
    //     name: "telefone_adm",
    //     text: "Telefone do administrador do negócio",
    //     relacionamento: "telefone_adm",
    //   },
    //   {
    //     name: "email_adm",
    //     text: "Email do administrador do negócio",
    //     relacionamento: "email_adm",
    //   },
    //   {
    //     name: "img_adm",
    //     text: "Foto do administrador do negócio",
    //     relacionamento: "img_adm",
    //   },
    //   {
    //     name: "nome_pre_vendedor",
    //     text: "Nome do pré vendedor do negócio",
    //     relacionamento: "nome_pre_vendedor",
    //   },
    //   {
    //     name: "telefone_pre_vendedor",
    //     text: "Telefone do pré vendedor do negócio",
    //     relacionamento: "telefone_pre_vendedor",
    //   },
    //   {
    //     name: "email_pre_vendedor",
    //     text: "Email do pré vendedor do negócio",
    //     relacionamento: "email_pre_vendedor",
    //   },
    //   {
    //     name: "img_pre_vendedor",
    //     text: "Foto do pré vendedor do negócio",
    //     relacionamento: "img_pre_vendedor",
    //   },
    //   {
    //     name: "nome_tecnico",
    //     text: "Nome do técnico do negócio",
    //     relacionamento: "nome_tecnico",
    //   },
    //   {
    //     name: "telefone_tecnico",
    //     text: "Telefone do técnico do negócio",
    //     relacionamento: "telefone_tecnico",
    //   },
    //   {
    //     name: "email_tecnico",
    //     text: "Email do técnico do negócio",
    //     relacionamento: "email_tecnico",
    //   },
    //   {
    //     name: "img_tecnico",
    //     text: "Foto do técnico do negócio",
    //     relacionamento: "img_tecnico",
    //   },
    //   {
    //     name: "nome_gerente",
    //     text: "Nome do gerente do negócio",
    //     relacionamento: "nome_gerente",
    //   },
    //   {
    //     name: "telefone_gerente",
    //     text: "Telefone do gerente do negócio",
    //     relacionamento: "telefone_gerente",
    //   },
    //   {
    //     name: "email_gerente",
    //     text: "Email do gerente do negócio",
    //     relacionamento: "email_gerente",
    //   },
    //   {
    //     name: "img_gerente",
    //     text: "Foto do gerente do negócio",
    //     relacionamento: "img_gerente",
    //   },
    //   {
    //     // name: "cidade_cliente", // cidade_moradia_cliente
    //     name: "cidade_moradia_cliente",
    //     text: "Cidade do Cliente",
    //     relacionamento: "cidade_cliente",
    //   },
    //   {
    //     name: "numero_proposta",
    //     text: "Número da proposta",
    //     relacionamento: "id_proposta",
    //   },
    //   {
    //     name: "rua_moradia_cliente",
    //     text: "Rua do Cliente",
    //     relacionamento: "rua_cliente",
    //   },
    //   {
    //     name: "nro_endereco_cliente",
    //     text: "Numero do endereço do Cliente",
    //     relacionamento: "nro_cliente",
    //   },
    //   {
    //     name: "complemento_endereco_cliente",
    //     text: "Complemento do endereço do Cliente",
    //     relacionamento: "comp_cliente",
    //   },
    //   {
    //     name: "cep_endereco_cliente",
    //     text: "Cep do endereço do Cliente",
    //     relacionamento: "cep_cliente",
    //   },
    //   {
    //     name: "bairro_endereco_cliente",
    //     text: "Bairro do endereço do Cliente",
    //     relacionamento: "bairro_cliente",
    //   },
    //   {
    //     name: "estado_endereco_cliente",
    //     text: "Estado do endereço do Cliente",
    //     relacionamento: "estado_cliente",
    //   },
    //   {
    //     name: "dataNascimento_cliente",
    //     text: "Data de nascimento do Cliente",
    //     relacionamento: "dataNascimento_cliente",
    //   },
    //   {
    //     // name: "cpfcnpj_cliente", //cliente_cpf
    //     name: "cliente_cpf",
    //     // name: "cpfcnpj_cliente", //cliente_cpf
    //     text: "CPF/CNPJ do Cliente",
    //     relacionamento: "cpfcnpj_cliente",
    //   },
    //   {
    //     name: "ie_cliente",
    //     text: "IE do Cliente",
    //     relacionamento: "ie_cliente",
    //   },
    //   {
    //     name: "email_cliente",
    //     text: "Email do Cliente",
    //     relacionamento: "email_cliente",
    //   },
    //   {
    //     // name: "telefone1_cliente", // telefone_cliente
    //     name: "telefone1_cliente",
    //     text: "Telefone do Cliente",
    //     relacionamento: "telefone1_cliente",
    //   },
    //   {
    //     // name: "telefone1_cliente", // telefone_cliente
    //     name: "telefone2_cliente",
    //     text: "Telefone 2 do Cliente",
    //     relacionamento: "telefone2_cliente",
    //   },
    //   {
    //     name: "numero_negocio",
    //     text: "Número do negócio",
    //     relacionamento: "id_coleta_cliente",
    //   },
    //   {
    //     name: "nome_negocio",
    //     text: "Nome do negócio",
    //     relacionamento: "nome_negocio_coleta",
    //   },
    //   {
    //     name: "origem",
    //     text: "Origem do cliente",
    //     relacionamento: "nome_origem_coleta",
    //   },
    //   {
    //     name: "disjuntor_coleta",
    //     text: "Disjuntor da coleta",
    //     relacionamento: "disjuntor_coleta",
    //   },
    //   {
    //     name: "potencia_inversores",
    //     text: "Potência dos inversores do distribuidor",
    //     relacionamento: "potencia_inversores_proposta",
    //   },
    //   {
    //     name: "max_modulos",
    //     text: "Máximo de módulos",
    //     relacionamento: "max_modulos",
    //   },
    //   {
    //     name: "potencia_modulos",
    //     text: "Potência dos modulos do kit",
    //     relacionamento: "potencia_modulo_proposta",
    //   },
    //   {
    //     name: "potencia_kit",
    //     text: "Potência do kit",
    //     relacionamento: "potencia_kit",
    //   },
    //   {
    //     name: "quantidade_modulos",
    //     text: "Quantidade de Módulos",
    //     relacionamento: "quantidade_modulos",
    //   },
    //   {
    //     name: "quantidade_inversores",
    //     text: "Quantidade de Inversores",
    //     relacionamento: "quantidade_inversores",
    //   },
    //   {
    //     name: "modelo_modulo",
    //     text: "Modelo dos Módulos",
    //     relacionamento: "modelo_modulo",
    //   },
    //   {
    //     name: "fabricante_modulos",
    //     text: "Fabricante dos Módulos",
    //     relacionamento: "fabricante_modulos",
    //   },
    //   {
    //     name: "distribuidor_modulos",
    //     text: "Distribuidor dos Módulos",
    //     relacionamento: "distribuidor_modulos",
    //   },
    //   {
    //     name: "modelos_inversores",
    //     text: "Modelos dos Inversores",
    //     relacionamento: "modelos_inversores",
    //   },
    //   {
    //     name: "fabricantes_inversores",
    //     text: "Fabricantes dos Inversores",
    //     relacionamento: "fabricantes_inversores",
    //   },
    //   {
    //     name: "distribuidores_inversores",
    //     text: "Distribuidores dos Inversores",
    //     relacionamento: "distribuidores_inversores",
    //   },
    //   {
    //     name: "numero_uc_geradora",
    //     text: "Número da UC Geradora",
    //     relacionamento: "uc_coleta_numero",
    //   },
    //   {
    //     name: "obs_proposta",
    //     text: "Observações da Proposta",
    //     relacionamento: "obs_proposta",
    //   },
    //   {
    //     name: "tipo_ligacao",
    //     text: "Tipo de Ligação da Proposta",
    //     relacionamento: "tipoLigacao_proposta",
    //   },
    //   {
    //     name: "telhado_proposta",
    //     text: "consumo_ampliacao da Proposta",
    //     relacionamento: "telhado_proposta",
    //   },
    //   {
    //     name: "area_modulos",
    //     text: "Área ocupada pelos módulos",
    //     relacionamento: "area_modulos",
    //   },
    //   {
    //     name: "descricao_modulos",
    //     text: "Descrição dos módulos",
    //     relacionamento: "descricao_modulos",
    //   },
    //   {
    //     name: "descricao_inversores",
    //     text: "Descrição dos inversores",
    //     relacionamento: "descricao_inversores",
    //   },
    //   {
    //     name: "concessionaria",
    //     text: "Concessionária do negócio",
    //     relacionamento: "concessionaria",
    //   },
    //   {
    //     name: "ucs_beneficiarias",
    //     text: "Unidades consumidoras beneficiárias",
    //     relacionamento: "ucs_beneficiarias",
    //   },
    //   {
    //     name: "consumo_ug",
    //     text: "Consumo da Unidade Geradora",
    //     relacionamento: "consumo_ug",
    //   },
    //   {
    //     name: "valor_consumo_ug",
    //     text: "Valor da conta de energia da Unidade Geradora",
    //     relacionamento: "valor_consumo_ug",
    //   },
    //   {
    //     name: "tipo_fase",
    //     text: "Tipo da Fase/Tipo de ligação",
    //     relacionamento: "tipo_fase",
    //   },

    //   {
    //     name: "preco_venda",
    //     text: "Valor da precificação",
    //     relacionamento: "preco_venda",
    //   },
    //   {
    //     name: "valor_proposta",
    //     text: "Valor final da proposta",
    //     relacionamento: "valor_proposta",
    //   },
    //   {
    //     name: "valor_desconto",
    //     text: "Desconto da proposta",
    //     relacionamento: "valor_desconto",
    //   },
    //   {
    //     name: "razao_social_loja",
    //     text: "Razão social da loja",
    //     relacionamento: "razao_social_loja",
    //   },
    //   {
    //     name: "cnpj_loja",
    //     text: "CNPJ da Loja",
    //     relacionamento: "cnpj_loja",
    //   },
    //   {
    //     name: "rua_loja",
    //     text: "Rua da Loja",
    //     relacionamento: "rua_loja",
    //   },
    //   {
    //     name: "numero_loja",
    //     text: "Número da Loja",
    //     relacionamento: "numero_loja",
    //   },
    //   {
    //     name: "bairro_loja",
    //     text: "Bairro da Loja",
    //     relacionamento: "bairro_loja",
    //   },
    //   {
    //     name: "cidade_loja",
    //     text: "Cidade da Loja",
    //     relacionamento: "cidade_loja",
    //   },
    //   {
    //     name: "cep_loja",
    //     text: "CEP da loja",
    //     relacionamento: "cep_loja",
    //   },
    //   {
    //     name: "cep_instalacao",
    //     text: "Cep da Instalação",
    //     relacionamento: "cep_instalacao",
    //   },
    //   {
    //     name: "cidade_instalacao",
    //     text: "Cidade da Instalação",
    //     relacionamento: "cidade_instalacao",
    //   },
    //   {
    //     name: "estado_instalacao",
    //     text: "Estado da Instalação",
    //     relacionamento: "estado_instalacao",
    //   },
    //   {
    //     name: "bairro_instalacao",
    //     text: "Bairro da Instalação",
    //     relacionamento: "bairro_instalacao",
    //   },
    //   // {
    //   //   name: "endereco_instalacao",
    //   //   text: "Endereço da Instalação",
    //   //   relacionamento: "endereco_instalacao",
    //   // },
    //   {
    //     name: "rua_instalacao",
    //     text: "Rua da Instalação",
    //     relacionamento: "rua_instalacao",
    //   },
    //   {
    //     name: "numero_instalacao",
    //     text: "Número da Instalação",
    //     relacionamento: "numero_instalacao",
    //   },
    //   {
    //     name: "complemento_instalacao",
    //     text: "Complemento da Instalação",
    //     relacionamento: "complemento_instalacao",
    //   },
    //   {
    //     name: "data_instalacao",
    //     text: "Data da Instalação",
    //     relacionamento: "data_instalacao",
    //   },
    //   {
    //     name: "observacoes_instalacao",
    //     text: "Observações da Instalação",
    //     relacionamento: "observacoes_instalacao",
    //   },
    //   {
    //     name: "observacoes",
    //     text: "Observações da Proposta",
    //     relacionamento: "observacoes",
    //   },
    //   {
    //     name: "observacao_pagamento",
    //     text: "Observação de Pagamento",
    //     relacionamento: "observacao_pagamento",
    //   },
    //   {
    //     name: "observacoes",
    //     text: "Observações da Proposta",
    //     relacionamento: "observacoes",
    //   },
    //   {
    //     name: "observacao_pagamento",
    //     text: "Observação de Pagamento",
    //     relacionamento: "observacao_pagamento",
    //   },
    //   {
    //     name: "telefone_loja",
    //     text: "Telefone da Loja",
    //     relacionamento: "telefone_loja",
    //   },
    //   {
    //     name: "site_loja",
    //     text: "Site da Loja",
    //     relacionamento: "site_loja",
    //   },
    //   {
    //     name: "facebook_loja",
    //     text: "Facebook da Loja",
    //     relacionamento: "facebook_loja",
    //   },
    //   {
    //     name: "instagram_loja",
    //     text: "Instagram da Loja",
    //     relacionamento: "instagram_loja",
    //   },
    //   {
    //     name: "site_loja",
    //     text: "Site da Loja",
    //     relacionamento: "site_loja",
    //   },
    //   {
    //     name: "facebook_loja",
    //     text: "Facebook da Loja",
    //     relacionamento: "facebook_loja",
    //   },
    //   {
    //     name: "instagram_loja",
    //     text: "Instagram da Loja",
    //     relacionamento: "instagram_loja",
    //   },
    //   {
    //     name: "condicao_pagamento",
    //     text: "Condição de Pagamento",
    //     relacionamento: "condicao_pagamento_proposta",
    //   },
    //   {
    //     name: "tabela_ubs",
    //     text: "Tabela de consumo das ubs",
    //     relacionamento: "tabela_ubs",
    //   },
    //   {
    //     name: "marca_inversor_complemento",
    //     text: "Marca do Inversor levando em conta complementos",
    //     relacionamento: "marca_inversor_complemento",
    //   },
    //   {
    //     name: "qtd_inversor_complemento",
    //     text: "Quantidade de Inversores levando em conta complementos",
    //     relacionamento: "qtd_inversor_complemento",
    //   },
    //   {
    //     name: "potencia_inversor_complemento",
    //     text: "Potência do Inversor levando em conta complementos",
    //     relacionamento: "potencia_inversor_complemento",
    //   },
    //   {
    //     name: "descricao_inversor_complemento",
    //     text: "Descrição do Inversor levando em conta complementos",
    //     relacionamento: "descricao_inversor_complemento",
    //   },
    //   {
    //     name: "modelo_inversor_complemento",
    //     text: "Modelo do Inversor levando em conta complementos",
    //     relacionamento: "modelo_inversor_complemento",
    //   },
    //   {
    //     name: "fornecedor_inversor_complemento",
    //     text: "Fornecedor do Inversor levando em conta complementos",
    //     relacionamento: "fornecedor_inversor_complemento",
    //   },
    //   {
    //     name: "marca_modulo_complemento",
    //     text: "Marca do Modulo levando em conta complementos",
    //     relacionamento: "marca_modulo_complemento",
    //   },
    //   {
    //     name: "qtd_modulo_complemento",
    //     text: "Quantidade de Modulos levando em conta complementos",
    //     relacionamento: "qtd_modulo_complemento",
    //   },
    //   {
    //     name: "potencia_modulo_complemento",
    //     text: "Potência dos Modulos levando em conta complementos",
    //     relacionamento: "potencia_modulo_complemento",
    //   },
    //   {
    //     name: "descricao_modulo_complemento",
    //     text: "Descrição dos Módulos levando em conta complementos",
    //     relacionamento: "descricao_modulo_complemento",
    //   },
    //   {
    //     name: "modelo_modulo_complemento",
    //     text: "Modelo dos Módulos levando em conta complementos",
    //     relacionamento: "modelo_modulo_complemento",
    //   },
    //   {
    //     name: "fornecedor_modulo_complemento",
    //     text: "Fornecedor dos módulos levando em conta complementos",
    //     relacionamento: "fornecedor_modulo_complemento",
    //   },
    //   {
    //     name: "garantia_modulos",
    //     text: "Garantia dos Modulos",
    //     relacionamento: "garantia_modulos",
    //   },
    //   {
    //     name: "garantia_inversores",
    //     text: "Garantia dos Inversores",
    //     relacionamento: "garantia_inversores",
    //   },
    //   {
    //     name: "garantia_servicos",
    //     text: "Garantia dos Serviços",
    //     relacionamento: "garantia_servicos",
    //   },
    //   {
    //     name: "garantia_estruturas",
    //     text: "Garantia das Estruturas",
    //     relacionamento: "garantia_estruturas",
    //   },
    //   {
    //     name: "garantia_baterias",
    //     text: "Garantia das Baterias",
    //     relacionamento: "garantia_baterias",
    //   },
    //   {
    //     name: "garantia_modulos",
    //     text: "Garantia dos Modulos",
    //     relacionamento: "garantia_modulos",
    //   },
    //   {
    //     name: "garantia_inversores",
    //     text: "Garantia dos Inversores",
    //     relacionamento: "garantia_inversores",
    //   },
    //   {
    //     name: "garantia_servicos",
    //     text: "Garantia dos Serviços",
    //     relacionamento: "garantia_servicos",
    //   },
    //   {
    //     name: "garantia_estruturas",
    //     text: "Garantia das Estruturas",
    //     relacionamento: "garantia_estruturas",
    //   },
    //   {
    //     name: "garantia_baterias",
    //     text: "Garantia das Baterias",
    //     relacionamento: "garantia_baterias",
    //   },
    //   {
    //     name: "observacoes_engenharia",
    //     text: "Observações da Etapa de Engenharia",
    //     relacionamento: "observacoes_engenharia",
    //   },
    //   {
    //     name: "data_atual",
    //     text: "Data atual",
    //     relacionamento: capitalizeMonth(
    //       getDateTimeBrasil({
    //         day: "2-digit",
    //         month: "long",
    //         year: "numeric",
    //         hour: undefined, // Define a hora como undefined para excluí-la
    //         minute: undefined, // Define os minutos como undefined para excluí-los
    //         second: undefined, // Define os segundos como undefined para excluí-los
    //       })
    //     ),
    //   },
    //   {
    //     name: "dia_numero",
    //     text: "Numero do dia atual",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: undefined,
    //       day: "2-digit",
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "mes_numero",
    //     text: "Numero do mês atual",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: "2-digit",
    //       day: undefined,
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "mes_extenso",
    //     text: "Mês atual escrito por extenso",
    //     relacionamento: getDateTimeBrasil({
    //       year: undefined,
    //       month: "long",
    //       day: undefined,
    //       hour: undefined,
    //       minute: undefined,
    //       second: undefined,
    //     }),
    //   },
    //   {
    //     name: "ano_numero",
    //     text: "Numero do ano atual",
    //     relacionamento: getDateTimeBrasil({
    //       day: undefined,
    //       month: undefined,
    //       year: "numeric",
    //       hour: undefined, // Define a hora como undefined para excluí-la
    //       minute: undefined, // Define os minutos como undefined para excluí-los
    //       second: undefined, // Define os segundos como undefined para excluí-los
    //     }),
    //   },
    // ];
    if (pathname != "/") {
      Promise.all([
        listarRelacionamenosRapidos(),
        listarCamposPersonalizadosRelacionamentos(),
      ]).then(([resRelacionamentos, res]) => {
        const relacionamentosFiltrados = resRelacionamentos
          .filter(
            (e: any) =>
              e.status_relacionamento_rapido == 1 &&
              e.mostrarDocPersonalizado_relacionamento_rapido == 1,
          )
          .map((rel: any) => ({
            name: rel.nome_relacionamento_rapido,
            text:
              rel.text_relacionamento_rapido || rel.nome_relacionamento_rapido,
            relacionamento: rel.nome_relacionamento_rapido,
            grupo_relacionamento_rapido: rel.grupo_relacionamento_rapido,
          }));

        setRelacionamentos((prev: any) => [
          ...relacionamentosFiltrados,
          ...res.map((campo: any) => ({
            name: campo.nome_relacionamento_rapido,
            text: campo.nome_campo_personalizado,
            relacionamento: campo.nome_relacionamento_rapido,
          })),
        ]);
        setCamposPersonalizadosRelacionamentos(
          res.map((campo: any) => ({
            name: campo.nome_relacionamento_rapido,
            text: campo.nome_campo_personalizado,
            relacionamento: campo.nome_relacionamento_rapido,
            local_campo_personalizado: campo.local_campo_personalizado,
          })),
        );

        setCamposRelacionamentosDocs(relacionamentosFiltrados);
      });
    }
  };

  async function relacionarDadosContrato(
    template: Template,
    dadosCliente: any,
  ): Promise<Template> {
    return listarRelacionamenosRapidos().then(async (res) => {
      res = res
        .filter((e: any) => e.status_relacionamento_rapido == 1)
        .map((e: any) => e.nome_relacionamento_rapido);
      const camposPersonalizados =
        await listarCamposPersonalizadosRelacionamentos();
      const novosRelacionamentos = [
        ...relacionamentosContrato, // Certifique-se de que essa variável está acessível
        ...camposPersonalizados.map((campo: any) => ({
          name: campo.nome_relacionamento_rapido,
          text: campo.nome_campo_personalizado,
          relacionamento: campo.nome_relacionamento_rapido,
        })),
      ];
      novosRelacionamentos
        // .filter((relacionamento: any) => res.includes(relacionamento.name))
        .map((relacionamento: any) => {
          let dadoRelacional = dadosCliente[relacionamento.relacionamento];
          // dadoRelacional = dadoRelacional
          //   ? dadoRelacional
          //   : dadoRelacional === null || dadoRelacional === ""
          //     ? ""
          //     : relacionamento.relacionamento;
          dadoRelacional = Object.keys(dadosCliente).includes(
            relacionamento.relacionamento,
          )
            ? dadosCliente[relacionamento.relacionamento] || ""
            : relacionamento.relacionamento;
          const schemas = template.schemas.map((page) => {
            return page.map((schema) => {
              if (
                schema.type == "image" &&
                relacionamento.name.includes("img") &&
                schema.name === `{${relacionamento.name}}`
              ) {
                schema.content = dadoRelacional;
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_kit_val") &&
                schema.name === "{tabela_kit_val}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const schemaRows = JSON.parse(schema.content);
                  const orderLabels = schemaRows[0];
                  // orderLabels = ["c", "b", "a"]

                  //   // const numericOrder = orderLables.map((column: string) =>
                  //   //   labelsTable.indexOf(column)
                  //   // );
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column]),
                      ),
                    );
                  }
                  const linhasForaOrdenacao = schemaRows.filter((row: any) =>
                    row.some(
                      (cell: any) => cell != "" && !orderLabels.includes(cell),
                    ),
                  );
                  schema.content = JSON.stringify([
                    ...content,
                    ...linhasForaOrdenacao,
                  ]);
                }
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_inversores") &&
                schema.name === "{tabela_inversores}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const orderLabels = JSON.parse(schema.content)[0];
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column] || column),
                      ),
                    );
                  }
                  schema.content = JSON.stringify(content);
                }
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_inversores") &&
                schema.name === "{tabela_inversores}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const orderLabels = JSON.parse(schema.content)[0];
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column] || column),
                      ),
                    );
                  }
                  schema.content = JSON.stringify(content);
                }
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_ucs") &&
                schema.name === "{tabela_ucs}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const orderLabels = JSON.parse(schema.content)[0];
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column] || column),
                      ),
                    );
                  }
                  schema.content = JSON.stringify(content);
                }
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_ubs") &&
                schema.name === "{tabela_ubs}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const orderLabels = JSON.parse(schema.content)[0];
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column] || column),
                      ),
                    );
                  }
                  schema.content = JSON.stringify(content);
                }
              } else {
                schema.content = schema.content?.replaceAll(
                  `{${relacionamento.name}}`,
                  dadoRelacional,
                );
                if (
                  schema.head &&
                  Object.values(schema.head as any)?.length > 0
                ) {
                  schema.head = (schema.head as string[]).map((head) =>
                    head?.replaceAll(
                      `{${relacionamento.name}}`,
                      dadoRelacional,
                    ),
                  );
                }
              }
              return schema;
            });
          });
          template = { ...template, schemas };
          // if (relacionamento.name.includes("tabela_kit_val")) {
          //   const tabelaValues = dadosCliente[
          //     relacionamento.relacionamento
          //   ].filter((e: any) => e.name != null);
          //   for (let index = 1; index <= 14; index++) {
          //     const labelsTable = ["name_item", "category_item", "qtd_item"];
          //     for (let i = 1; i <= labelsTable.length; i++) {
          //       if (index <= tabelaValues?.length) {
          //         str = str.replaceAll(
          //           `{tabela_kit_val_${i}.${index}}`,
          //           tabelaValues[index - 1][labelsTable[i - 1]]
          //             ? tabelaValues[index - 1][labelsTable[i - 1]]
          //             : labelsTable[i - 1]
          //         );
          //       } else {
          //         str = str.replaceAll(`{tabela_kit_val_${i}.${index}}`, "");
          //       }
          //     }
          //   }
          // } else {
          //   str = str.replaceAll(`{${relacionamento.name}}`, dadoRelacional);
          // }
        });
      return template;
    });
  }
  function escaparCaracteresDeControle(str: string): string {
    return String(str)
      .replace(/\\/g, "\\\\") // escapa \
      .replace(/\r/g, "\\r") // escapa carriage return
      .replace(/\n/g, "\\n"); // escapa newline
  }

  async function relacionar(
    template: Template,
    dadosCliente: any,
  ): Promise<Template> {
    return listarRelacionamenosRapidos().then(async (res) => {
      res = res
        .filter((e: any) => e.status_relacionamento_rapido == 1)
        .map((e: any) => e.nome_relacionamento_rapido);

      const camposPersonalizados =
        await listarCamposPersonalizadosRelacionamentos();
      const novosRelacionamentos = [
        ...relacionamentos, // Certifique-se de que essa variável está acessível
        ...camposPersonalizados.map((campo: any) => ({
          name: campo.nome_relacionamento_rapido,
          text: campo.nome_campo_personalizado,
          relacionamento: campo.nome_relacionamento_rapido,
        })),
      ];
      novosRelacionamentos
        .filter((relacionamento) => res.includes(relacionamento.name))
        .map((relacionamento) => {
          let dadoRelacional = dadosCliente[relacionamento.relacionamento];
          dadoRelacional = Object.keys(dadosCliente).includes(
            relacionamento.relacionamento,
          )
            ? dadosCliente[relacionamento.relacionamento] || ""
            : relacionamento.relacionamento;

          // str = str.replaceAll(`{${relacionamento.name}}`, dadoRelacional);

          const schemas = template.schemas.map((page) => {
            return page.map((schema) => {
              if (
                schema.type == "image" &&
                relacionamento.name.includes("img") &&
                schema.name === `{${relacionamento.name}}`
              ) {
                schema.content = dadoRelacional;
              } else if (
                schema.type == "table" &&
                relacionamento.name.includes("tabela_ubs") &&
                schema.name === "{tabela_ubs}"
              ) {
                const tabelaValues =
                  dadosCliente[relacionamento.relacionamento];

                if (schema.content) {
                  const orderLabels = JSON.parse(schema.content)[0];
                  const content: any[] = [];
                  for (let index = 0; index < tabelaValues?.length; index++) {
                    content.push(
                      orderLabels.map((column: string) =>
                        String(tabelaValues[index][column] || column),
                      ),
                    );
                  }
                  schema.content = JSON.stringify(content);
                }
              } else {
                const dadoRelacionalSeguro =
                  escaparCaracteresDeControle(dadoRelacional);

                schema.content = schema.content?.replaceAll(
                  `{${relacionamento.name}}`,
                  dadoRelacionalSeguro,
                );
                if (
                  schema.head &&
                  Object.values(schema.head as any)?.length > 0
                ) {
                  schema.head = (schema.head as string[]).map((head) =>
                    head?.replaceAll(
                      `{${relacionamento.name}}`,
                      dadoRelacionalSeguro,
                    ),
                  );
                }
              }

              return schema;
            });
          });
          template = { ...template, schemas };
        });

      return template;
    });
  }

  return (
    <ContractContext.Provider
      value={{
        getRelacionamentosRapidosDocs,
        getRelacionamentosRapidosContratos,
        relacionamentosContrato,
        camposRelacionamentosContratos,
        camposPersonalizadosRelacionamentosContratos,
        relacionamentos,
        camposRelacionamentosDocs,
        camposPersonalizadosRelacionamentos,
        relacionarDadosContrato,
        relacionar,
      }}
    >
      {children}
    </ContractContext.Provider>
  );
};

export const useContractContext = () => {
  return useContext(ContractContext);
};
