const loadCRM = require('./loadCRM') const lookupContactByPhone = require('./lookupCRMContactByPhone') const createContact = require('./createContact') const findProperty = require('./findProperty') const CRM_Contact = require('../models/CRM_Contact') const CRM_Ticket = require('../models/CRM_Ticket') const CRM = require('../models/CRM') const createTicket = require('./createTicket') const lookupCRMTicket = require('./lookupCRMTicket') const sendEventTicketCreatedToSocket = require('./sendEventTicketCreatedToSocket') const journalingRequest = require('./journalingRequest') async function redirectContactLinkCRM(companyId, crmPhone, crmAgent, crmFirstName = 'Username') { const crmFiles = await loadCRM(companyId) const crmContactIds = [] for (const crmConfig of crmFiles) { const { crmRest: rest, authentication } = crmConfig.crm // Send the edited contact/lead link url to hitphone to open on another browser tab let redirectLink = findProperty(rest, 'redirectLink') if (redirectLink) { let contact = await _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName) const { contactId, created } = contact const url = redirectLink?.request?.url?.replace(/crmContactId/g, contactId) console.log('===============> Edit url rediret sended to hitphone: ', url) console.log('new URL(url).hostname: ', new URL(url).hostname) crmContactIds.push({ crm: new URL(url).hostname, contactId, created }) // sendEventTicketCreatedToSocket({ companyId, extension: crmAgent, ticketUrl: url }) } // } return crmContactIds } module.exports = redirectContactLinkCRM async function _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName) { let contact = await lookupContactByPhone(rest, authentication, crmPhone, companyId) if (contact?.exist) { return { created: false, contactId: contact.contactId } } if (!contact?.exist) { contact = await createContact(companyId, rest, authentication, crmPhone, crmFirstName) } return { created: true, contactId: contact.contactId } }