/* Copyright 2022 - GovPath Inc. Description: Creates Xpolicy entries that enabled ACA to connect to GovPath middleware interface. This script enables Xpolicy entries for all prod and non-prod adapters. Once enabled in Xpolicy select the adapter for use by setting the proper "EPaymentAdapter" standard choice value. Requires Accela 21.1 or later. */ //************************************************************************************************************** */ //IMPORTANT ENVIRONMENT SPECIFIC SETTINGS - You must confirm or update before running in Install Step #6 //************************************************************************************************************** */ //set isSQLServer to true for SQL Server (Accela Hosted or Self Hosted SQL Server), or false if Self Hosted Oracle database var isSQLServer = true; //set unique identify for environemnt (ex. SUPP or TEST). If installing to multiple Accela environment, must be unique and 4 or less characters. var accelaEnv = "SUPP"; //************************************************************************************************************** */ //END ENVIRONMENT SPECIFIC SETTINGS //************************************************************************************************************** */ //************************************************************************************************************** */ //DO NOT EDIT BELOW THIS LINE //************************************************************************************************************** */ showDebug =false; var results = doXpolicyInsert(String(aa.getServiceProviderCode()) , "GQ_TESTPAY2" , "HostURL=https://payhub.gqapplications.com/api/v1/TestPay/StartPayment" , "Adapter=Redirect" , "ApplicationID="+accelaEnv , isSQLServer); aa.print(results) function doXpolicyInsert(AGENCY_CODE, ADAPTER_NAME, GATEWAY_CONF, ADAPTER_CONF, PAYMENT_CONF, isMSSQL) { var MERCHANT_CONF = ""; var SEQ = parseInt(getMaxPolicy(AGENCY_CODE), 10) + 1; var exists = getExisting(AGENCY_CODE, ADAPTER_NAME) if (exists && exists.length > 0) { return "[" + ADAPTER_NAME + "] XPOLICY ALREADY INSTALLED"; } else { var sql = "INSERT INTO XPOLICY "; sql += "(SERV_PROV_CODE, POLICY_SEQ, POLICY_NAME, LEVEL_TYPE, LEVEL_DATA, DATA1, RIGHT_GRANTED, "; sql += "STATUS, REC_DATE, REC_FUL_NAM, REC_STATUS, MENUITEM_CODE, DATA2, DATA3, DATA4, MENU_LEVEL, "; sql += "DATA5, RES_ID) "; sql += "VALUES "; sql += "('" + AGENCY_CODE + "', " + SEQ + ", 'PaymentAdapterSec', 'Adapter', '" + ADAPTER_NAME + "', '" + ADAPTER_CONF + "', 'F', "; if (isMSSQL) { sql += "'A', GETDATE(), 'ADMIN', 'A', '','" + GATEWAY_CONF + "' , '" + MERCHANT_CONF + "','" + PAYMENT_CONF + "', "; } else { sql += "'A', sysdate, 'ADMIN', 'A', '','" + GATEWAY_CONF + "' , '" + MERCHANT_CONF + "','" + PAYMENT_CONF + "', "; } sql += "'', '', '') "; logDebug("Insert SQL = " + sql); rSet = aa.db.update(sql,[]) if(rSet.getSuccess()){ return "[" + ADAPTER_NAME + "] INSTALLED TO DATABASE"; } else{ return "[" + ADAPTER_NAME + "] INSTALL FAILED " + rSet.getErrorMessage(); } } } function getMaxPolicy(spc) { var dq = getRecordsV20("select MAX(POLICY_SEQ) MAX_VAL from XPOLICY p where SERV_PROV_CODE='" + spc + "'", 1); if (dq.length && dq.length > 0) { return dq[0]['MAX_VAL']; } else { logDebug("WARNING: XPOLICY SEQUENCE NOT FOUND"); } return -1; } function getExisting(spc, name) { var dq = getRecordsV20("select * from xpolicy where serv_prov_code='" + spc + "' and policy_name='PaymentAdapterSec' and level_data='" + name + "'", 1); if (dq.length && dq.length > 0) { return dq; } else { logDebug("No existing install found for: " + name); } return null; } function logDebug(vmsg) { if(showDebug){ aa.print(vmsg); } } function getRecordsV20(sql, maxRows) { var dq = aa.db.select(sql, []); var recs = []; var rowCount = 0; if (dq.getSuccess()) { var dso = dq.getOutput(); if (dso) { var ds = dso.toArray(); for (var x in ds) { var row = ds[x]; var ks = ds[x].keySet().toArray(); var newRow = {}; for (var c in ks) { newRow[String(ks[c]).toUpperCase()] = row.get(ks[c]); } recs.push(newRow); rowCount++; if (rowCount > maxRows) { break; } } } } return recs; }