Get the existing reward from Clutch (Customer Data Marketing Platform)



/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/https', '../CC/JJ Clutch Library.js'],


    (https,clutchLib) => {


        function checkForParameter(parameter, parameterName) {
            if (
                parameter != "" &&
                parameter != null &&
                parameter != undefined &&
                parameter != "null" &&
                parameter != "undefined" &&
                parameter != " " &&
                parameter != false
            ) {
                return true;
            } else {
                if (parameterName)
                    log.debug(
                        "Empty Value found",
                        "Empty Value for parameter " + parameterName
                    );
                return false;
            }
        }

        const clutchLibrary = clutchLib.Library;

        /**
         * Defines the Suitelet script trigger point.
         * @param {Object} scriptContext
         * @param {ServerRequest} scriptContext.request - Incoming request
         * @param {ServerResponse} scriptContext.response - Suitelet response
         * @since 2015.2
         */

        const onRequest = (scriptContext) => {
            log.debug(scriptContext.request.method)
            if (scriptContext.request.method == "GET") {


                var custEmail = scriptContext.request.parameters.email;
                log.debug("custEmail", typeof custEmail)
                //var Email = JSON.parse(custEmail)
                var searchObj = {
                    "filters": {
                        "email": custEmail
                    },
                    "returnFields": {
                        "balances": true,
                        "customer": true,
                        "alternateCustomer": true,
                        "giverCustomer": true,
                        "isEnrolled": true,
                        "customData": true,
                        "customCardNumber": true
                    }
                }
                var searchObject = JSON.stringify(searchObj)
                log.debug("searchObject", searchObject)
                var headerObj = {
                    authorization: 'Basic ZWM3ODI5ODktNjRiOS00MzE5LTkwN2ItOTVjYzdhZmY4ZTBlOjVFUjFIVUlVUTgxUVhUSDFZUkI0',
                    brand: 'SME7267',
                    location: 'SMEECOMM',
                    terminal: 'SMEECOMMWS',
                    api: 'ec782989-64b9-4319-907b-95cc7aff8e0e',
                    secret: '5ER1HUIUQ81QXTH1YRB4',

                };

                let searchRequestUrl = clutchLibrary.CLUTCH_API_REQUESTS.POST_SEARCHCUSTOMER;
                //search request for customer
                var searchResponse = https.post({
                    url: searchRequestUrl,
                    body: searchObject,
                    headers: headerObj,
                });
                log.debug("searchResponse", searchResponse)
                var card = JSON.parse(searchResponse.body)
                var cards = card.cards
                log.debug("cards", cards)

                if (checkForParameter(cards)) {

                    var existingCustCardNum = cards[0].cardNumber
                    var existingReward = cards[0].balances[0].amount
                    log.debug("existingReward", existingReward)
                    var responseObj = {
                        "status": "SUCCESS",
                        "existingReward": existingReward
                    }
                    sendResponse(scriptContext, responseObj)

                } else {
                    var respObj=  scriptContext.response.write(JSON.stringify({
                        status: "NOT EXIST",
                        message: "This customer is not exist in clutch OR there is no existing reward for this customer"
                    }));

                    sendResponse(scriptContext, respObj)
                }

                /*****************************************************************************
                 * All response will be send from this common point
                 ******************************************************************************/
             function sendResponse(scriptContext, response)
            {
                let callBackFunction = scriptContext.request.parameters.callback ? scriptContext.request.parameters.callback : "?";
                return scriptContext.response.write(`${callBackFunction}('${decodeURIComponent(JSON.stringify({
                    "summary": response,
                    //"request": {parameters: scriptContext.request.parameters}
                }))}')`), true;
            }


        }

    }
        return {onRequest}

    });

Leave a comment

Your email address will not be published. Required fields are marked *