new(all): hubspot.gblib new methods. New Keyword CREATE DEAL.
This commit is contained in:
		
							parent
							
								
									7410085e99
								
							
						
					
					
						commit
						d8044124e3
					
				
					 3 changed files with 123 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -125,15 +125,27 @@ export class DialogKeywords {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Quits the dialog, currently required to get out of VM context.
 | 
			
		||||
   * Get active tasks.
 | 
			
		||||
   *
 | 
			
		||||
   * @example list = ACTIVE TASKS
 | 
			
		||||
   */
 | 
			
		||||
  public async getActiveTasks() {
 | 
			
		||||
    let s = new HubSpotServices(null, null, 'ddcc3f4e-edfe-4dc5-a337-3d39bcc2d833');
 | 
			
		||||
    let s = new HubSpotServices(null, null, process.env.HUBSPOT_KEY);
 | 
			
		||||
    return await s.getActiveTasks();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new deal.
 | 
			
		||||
   *
 | 
			
		||||
   * @example CREATE DEAL dealname, contato, empresa, amount
 | 
			
		||||
   */
 | 
			
		||||
  public async createDeal(dealName, contact, company, amount) {
 | 
			
		||||
    let s = new HubSpotServices(null, null, process.env.HUBSPOT_KEY);
 | 
			
		||||
    let deal = await s.createDeal(dealName, contact, company, amount);
 | 
			
		||||
    return deal;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  public getContentLocaleWithCulture(contentLocale) {
 | 
			
		||||
    switch (contentLocale) {
 | 
			
		||||
      case 'pt':
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -264,6 +264,10 @@ export class GBVMService extends GBService {
 | 
			
		|||
      return `${$1} = sys().find(${$2})\n`;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    code = code.replace(/(\w)\s*\=\s*create deal(\s)(.*)/gi, ($0, $1, $2, $3) => {
 | 
			
		||||
      return `${$1} =createDeal(${$3})\n`;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    code = code.replace(/(\w)\s*\=\s*active tasks/gi, ($0, $1) => {
 | 
			
		||||
      return `${$1} = getActiveTasks()\n`;
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			@ -569,6 +573,9 @@ export class GBVMService extends GBService {
 | 
			
		|||
    code = code.replace(/("[^"]*"|'[^']*')|\btransfer\b/gi, ($0, $1) => {
 | 
			
		||||
      return $1 === undefined ? 'this.transfer' : $1;
 | 
			
		||||
    });
 | 
			
		||||
    code = code.replace(/("[^"]*"|'[^']*')|\bcreateDeal\b/gi, ($0, $1) => {
 | 
			
		||||
      return $1 === undefined ? 'this.createDeal' : $1;
 | 
			
		||||
    });
 | 
			
		||||
    code = code.replace(/("[^"]*"|'[^']*')|\bgetActiveTasks\b/gi, ($0, $1) => {
 | 
			
		||||
      return $1 === undefined ? 'this.getActiveTasks' : $1;
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,6 +69,106 @@ export class HubSpotServices extends GBService {
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async addDealNote(name, note)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async createDeal(dealName, contact, company, amount) {
 | 
			
		||||
    const dealObj = {
 | 
			
		||||
      properties: {
 | 
			
		||||
        dealname: dealName,
 | 
			
		||||
        dealstage: 'appointmentscheduled',
 | 
			
		||||
        pipeline: 'default',
 | 
			
		||||
        amount: amount
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
    const contactObj = {
 | 
			
		||||
      properties: {
 | 
			
		||||
        firstname: contact
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
    const companyObj = {
 | 
			
		||||
      properties: {
 | 
			
		||||
        name: company,
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const hubspotClient = new hubspot.Client({ apiKey: this.key });
 | 
			
		||||
    const createDealResponse = await hubspotClient.crm.deals.basicApi.create(dealObj);
 | 
			
		||||
    const createContactResponse = await hubspotClient.crm.contacts.basicApi.create(contactObj);
 | 
			
		||||
    const createCompanyResponse = await hubspotClient.crm.companies.basicApi.create(companyObj);
 | 
			
		||||
 | 
			
		||||
    await hubspotClient.crm.deals.associationsApi.create(
 | 
			
		||||
      createDealResponse.body.id,
 | 
			
		||||
      'contacts',
 | 
			
		||||
      createContactResponse.body.id,
 | 
			
		||||
      'deal_to_contact'
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    await hubspotClient.crm.deals.associationsApi.create(
 | 
			
		||||
      createDealResponse.body.id,
 | 
			
		||||
      'companies',
 | 
			
		||||
      createCompanyResponse.body.id,
 | 
			
		||||
      'deal_to_company'
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    return createDealResponse.body;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  public async createContact(firstName, lastName, domain, companyName) {
 | 
			
		||||
    const contactObj = {
 | 
			
		||||
      properties: {
 | 
			
		||||
        firstname: firstName,
 | 
			
		||||
        lastname: lastName,
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
    const companyObj = {
 | 
			
		||||
      properties: {
 | 
			
		||||
        domain: domain,
 | 
			
		||||
        name: companyName,
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const hubspotClient = new hubspot.Client({ apiKey: this.key })
 | 
			
		||||
    const createContactResponse = await hubspotClient.crm.contacts.basicApi.create(contactObj)
 | 
			
		||||
    const createCompanyResponse = await hubspotClient.crm.companies.basicApi.create(companyObj)
 | 
			
		||||
 | 
			
		||||
    return await hubspotClient.crm.companies.associationsApi.create(
 | 
			
		||||
      createCompanyResponse.body.id,
 | 
			
		||||
      'contacts',
 | 
			
		||||
      createContactResponse.body.id,
 | 
			
		||||
      'company_to_contact'
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async searchContact(query) {
 | 
			
		||||
    const client = new hubspot.Client({ apiKey: this.key });
 | 
			
		||||
    const filter = { propertyName: 'createdate', operator: 'GTE', value: Date.now() - 30 * 60000 }
 | 
			
		||||
    const filterGroup = { filters: [filter] }
 | 
			
		||||
    const sort = JSON.stringify({ propertyName: 'createdate', direction: 'DESCENDING' })
 | 
			
		||||
 | 
			
		||||
    const properties = ['createdate', 'firstname', 'lastname']
 | 
			
		||||
    const limit = 100
 | 
			
		||||
    const after = 0
 | 
			
		||||
 | 
			
		||||
    const publicObjectSearchRequest = {
 | 
			
		||||
      filterGroups: [filterGroup],
 | 
			
		||||
      sorts: [sort],
 | 
			
		||||
      query,
 | 
			
		||||
      properties,
 | 
			
		||||
      limit,
 | 
			
		||||
      after,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const result = await client.crm.contacts.searchApi.doSearch(publicObjectSearchRequest)
 | 
			
		||||
    console.log(JSON.stringify(result.body))
 | 
			
		||||
    return result.body;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  public async getActiveTasks(): Promise<[]> {
 | 
			
		||||
 | 
			
		||||
    const client = new hubspot.Client({ apiKey: this.key });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue