diff --git a/src/shared/apis/geogridService.js b/src/shared/apis/geogridService.js index 809f79a..bc884f5 100644 --- a/src/shared/apis/geogridService.js +++ b/src/shared/apis/geogridService.js @@ -33,29 +33,34 @@ const consultaViabilidade = async (lat, lon) => { } }); - // Extrai o primeiro registro da resposta em que a pasta.sigla seja "São Bernardo do Campo - SP", "São Paulo - SP", "Barueri - São Paulo" e "TMC" descartar os demais + // Extrai o primeiro registro da resposta em que a pasta.sigla seja igual as siglas autorizadas no .env const registros = response.data && response.data.registros; - const registrosFiltrados = registros.filter(r => { + // Filtra registros autorizados (ex: SOTHIS, VIVO, OI) + const registros_autorizados = registros.filter(r => { const sigla = r.pasta && r.pasta.sigla; - const isAuthorized = apiConfig.geogridAuthorizedSiglasPastas.includes(sigla); - const isParceiro = sigla && (sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros")); - return isAuthorized || isParceiro; + return apiConfig.geogridAuthorizedSiglasPastas.includes(sigla); }); - const primeiro = registrosFiltrados[0]; - - if (primeiro && primeiro.pasta && primeiro.pasta.sigla && apiConfig.geogridAuthorizedSiglasPastas.includes(primeiro.pasta.sigla)) { - primeiro.pasta.sigla = "Sothis"; + // Se encontrar autorizado, retorna com sigla "Sothis" + if (registros_autorizados.length > 0) { + const resultado = registros_autorizados[0]; + resultado.pasta.sigla = "Sothis"; + return { data: resultado }; } - if (!primeiro || !primeiro.pasta || !primeiro.pasta.sigla) { - // Retorna um objeto padrão se não houver dados válidos - return { data: { pasta: { sigla: "Nenhum provedor disponível" } } }; + // Se não encontrar autorizado, tenta buscar parceiro + const registros_parceiros = registros.filter(r => { + const sigla = r.pasta && r.pasta.sigla; + return sigla && (sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros")); + }); + + if (registros_parceiros.length > 0) { + return { data: registros_parceiros[0] }; } - // Retorna no formato esperado pelo controller (viabilidade.data.distancia) - return { data: primeiro }; + // Se não encontrar autorizado nem parceiro, retorna mensagem padrão + return { data: { pasta: { sigla: "Nenhum provedor disponível" } } }; } catch (error) { logger.error("Erro ao consultar viabilidade no GeoGrid", { message: error.message, stack: error.stack, lat, lon }); throw new Error("Erro ao consultar viabilidade");