NODE 16X - Empresa automática (emails gratuitos)

mail@pastecode.io avatar
unknown
plain_text
5 months ago
3.2 kB
2
Indexable
const hubspot = require("@hubspot/api-client");

exports.main = (event, callback) => {
  const hubspotClient = new hubspot.Client({
    accessToken: "CODIGO API",
  });

  hubspotClient.crm.contacts.basicApi
    .getById(event.object.objectId, ["company"])  // Alterado para "company"
    .then((results) => {
      const companyName = results.body.properties.company;

      if (!companyName) {
        console.error("Nome da empresa está vazio ou nulo.");
        callback({ error: "Nome da empresa não fornecido." });
        return;
      }

      const searchCriteria = {
        filterGroups: [
          {
            filters: [
              {
                propertyName: "name",
                operator: "EQ",
                value: companyName,
              },
            ],
          },
        ],
        properties: ["name"],
        limit: 1,
      };

      hubspotClient.crm.companies.searchApi
        .doSearch(searchCriteria)
        .then((searchCompanyResponse) => {
          if (searchCompanyResponse.body.total === 0) {
            // Nenhuma empresa encontrada, cria uma nova
            const companyObj = {
              properties: {
                name: companyName,
              },
            };

            hubspotClient.crm.companies.basicApi
              .create(companyObj)
              .then((companyCreateResponse) => {
                return hubspotClient.crm.companies.associationsApi.create(
                  companyCreateResponse.body.id,
                  "contacts",
                  event.object.objectId,
                  "company_to_contact"
                );
              })
              .then(() =>
                callback({
                  outputFields: {
                    message: "Empresa criada e associada com sucesso.",
                  },
                })
              )
              .catch((err) => {
                console.error("Erro ao criar ou associar empresa:", err);
                callback({ error: "Falha ao criar ou associar empresa." });
              });
          } else {
            const companyId = searchCompanyResponse.body.results[0].id;

            hubspotClient.crm.companies.associationsApi
              .create(
                companyId,
                "contacts",
                event.object.objectId,
                "company_to_contact"
              )
              .then(() =>
                callback({
                  outputFields: { message: "Associação criada com sucesso." },
                })
              )
              .catch((err) => {
                console.error("Erro ao associar empresa existente:", err);
                callback({ error: "Falha ao associar com empresa existente." });
              });
          }
        })
        .catch((err) => {
          console.error("Erro na pesquisa de empresa:", err);
          callback({ error: "Falha na pesquisa de empresa." });
        });
    })
    .catch((err) => {
      console.error("Erro ao recuperar contato:", err);
      callback({ error: "Falha ao recuperar informações do contato." });
    });
};
Leave a Comment