async function addDeal (data) {
const { name, email, telephone, title } = data
async function queryBitrix ({ method, dataQuery }) {
const url = `https://mentorama.bitrix24.com.br/rest/3/8w623vjk0pgf30jt/${method}`
const { data } = await axios.post(url, dataQuery)
async function searchContact (dataQuery) {
const { result: answerValue } = await queryBitrix({ method: 'crm.contact.list', dataQuery })
if (answerValue.length > 0) return answerValue[0].ID
async function createNewDeal (idContact) {
const dataQueryAddDeal = { fields: { 'TITLE': title, 'CONTACT_ID': idContact, 'ASSIGNED_BY_ID': 1654 } }
await queryBitrix({ method: 'crm.deal.add', dataQuery: dataQueryAddDeal })
const dataQuerySearchPhone = { filter: { 'PHONE': telephone }, select: ['ID'], }
const dataQuerySearchEmail = { filter: { 'EMAIL': email }, select: ['ID'], }
const idContact = await searchContact(dataQuerySearchPhone) || await searchContact(dataQuerySearchEmail)
const controlDate = new Date() - 2628000000
const dataQuerySearchDeal = {
filter: { 'CONTACT_ID': idContact, 'TITLE': title, '>DATE_CREATE': new Date(controlDate) },
select: ['ID', 'ASSIGNED_BY_ID', 'DATE_CREATE', 'CLOSED', 'STAGE_ID', 'IS_NEW']
const { result: dataDeal } = await queryBitrix({ method: 'crm.deal.list', dataQuery: dataQuerySearchDeal })
if (dataDeal.length > 0) {
const monthDateDeals = new Date(dataDeal[0].DATE_CREATE).getMonth()
const monthNow = new Date().getMonth()
if (monthDateDeals === monthNow) {
const idManager = dataDeal[0].ASSIGNED_BY_ID
const dataQueryGetManagerContact = {
filter: { 'ID': idManager },
const { result: managerContact } = await queryBitrix({
dataQuery: dataQueryGetManagerContact
await createNewDeal(idContact)
await createNewDeal(idContact)
const dataQueryAddContact = {
'PHONE': [{ 'VALUE': `${telephone}`, 'VALUE_TYPE': 'WORK' }],
'EMAIL': [{ 'VALUE': `${email}` }]
const { result: idNewContact } = await queryBitrix({ method: 'crm.contact.add', dataQuery: dataQueryAddContact })
await createNewDeal(idNewContact)
return 'new contact and deal'