Add search filters to contacts and companies (AgileCRM) (#2373)

* Added search options for the AgileCRM node

* Adjusting AgileCRM getAll operation (using Magento 2 node as a reference)

*  Small improvements to #2238

Co-authored-by: Valentina <valentina.lilova98@gmail.com>
This commit is contained in:
Ricardo Espinoza
2021-10-26 23:45:26 -04:00
committed by GitHub
parent 15d05c7f01
commit 3e1fb3e0c9
6 changed files with 745 additions and 55 deletions

View File

@@ -71,25 +71,7 @@ export const contactFields = [
/* -------------------------------------------------------------------------- */
/* contact:get all */
/* -------------------------------------------------------------------------- */
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 20,
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
returnAll: [
false,
],
},
},
},
{
displayName: 'Return All',
name: 'returnAll',
@@ -107,6 +89,296 @@ export const contactFields = [
default: false,
description: 'If all results should be returned or only up to a given limit.',
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
returnAll: [
false,
],
},
},
default: 20,
description: 'Number of results to fetch.',
},
{
displayName: 'Filter',
name: 'filterType',
type: 'options',
options: [
{
name: 'None',
value: 'none',
},
{
name: 'Build Manually',
value: 'manual',
},
{
name: 'JSON',
value: 'json',
},
],
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
},
},
default: 'none',
},
{
displayName: 'Must Match',
name: 'matchType',
type: 'options',
options: [
{
name: 'Any filter',
value: 'anyFilter',
},
{
name: 'All Filters',
value: 'allFilters',
},
],
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
filterType: [
'manual',
],
},
},
default: 'anyFilter',
},
{
displayName: 'Simplify Response',
name: 'simple',
type: 'boolean',
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
},
},
default: false,
description: 'Return a simplified version of the response instead of the raw data.',
},
{
displayName: 'Filters',
name: 'filters',
type: 'fixedCollection',
typeOptions: {
multipleValues: true,
},
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
filterType: [
'manual',
],
},
},
default: '',
placeholder: 'Add Condition',
options: [
{
displayName: 'Conditions',
name: 'conditions',
values: [
{
displayName: 'Field',
name: 'field',
type: 'string',
default: '',
description: 'Any searchable field.',
},
{
displayName: 'Condition Type',
name: 'condition_type',
type: 'options',
options: [
{
name: 'Equals',
value: 'EQUALS',
},
{
name: 'Not Equal',
value: 'NOTEQUALS',
},
{
name: 'Last',
value: 'LAST',
},
{
name: 'Between',
value: 'BETWEEN',
},
{
name: 'On',
value: 'ON',
},
{
name: 'Before',
value: 'BEFORE',
},
{
name: 'After',
value: 'AFTER',
},
],
default: 'EQUALS',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
},
{
displayName: 'Value 2',
name: 'value2',
type: 'string',
displayOptions: {
show: {
condition_type: [
'BETWEEN',
],
},
},
default: '',
},
],
},
],
},
{
displayName: 'See <a href="https://github.com/agilecrm/rest-api#121-get-contacts-by-dynamic-filter" target="_blank">Agile CRM guide</a> to creating filters',
name: 'jsonNotice',
type: 'notice',
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
filterType: [
'json',
],
},
},
default: '',
},
{
displayName: 'Filters (JSON)',
name: 'filterJson',
type: 'string',
typeOptions: {
alwaysOpenEditWindow: true,
},
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
filterType: [
'json',
],
},
},
default: '',
description: '',
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: [
'contact',
],
operation: [
'getAll',
],
},
},
options: [
{
displayName: 'Sort',
name: 'sort',
type: 'fixedCollection',
placeholder: 'Add Sort',
default: [],
options: [
{
displayName: 'Sort',
name: 'sort',
values: [
{
displayName: 'Direction',
name: 'direction',
type: 'options',
options: [
{
name: 'Ascending',
value: 'ASC',
},
{
name: 'Descending',
value: 'DESC',
},
],
default: 'ASC',
description: 'The sorting direction',
},
{
displayName: 'Field',
name: 'field',
type: 'string',
default: '',
description: `The sorting field`,
},
],
},
],
},
],
},
/* -------------------------------------------------------------------------- */
/* contact:create */
@@ -988,4 +1260,5 @@ export const contactFields = [
},
],
},
] as INodeProperties[];