UNPKG

ggez-banking-sdk

Version:

A Node.js package to handle GGEZ Banking API endpoints, Simplify the process of managing CRUD operations with this efficient and easy-to-use package.

412 lines (411 loc) 16.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const sortUserInfo_1 = require("../utils/sortUserInfo"); const generateSourceId_1 = require("../utils/generateSourceId"); const restApi_1 = __importDefault(require("../restApi")); const qs_1 = __importDefault(require("qs")); const enum_1 = require("../constants/enum"); const fillDeviceDetails_1 = require("../utils/fillDeviceDetails"); const info_1 = require("../utils/info"); const constants_1 = require("../constants"); const Helper = (userInfo) => { // error Handler const errorHandler = (error, funcName, response) => { return { response: null, newUser: null, message: error.message, status: "failed", }; }; // action type const newUserInfo = () => { let error = null; const addInfo = (key, data) => { if (Array.isArray(userInfo[`${key}`])) { let newData = [...userInfo[`${key}`], data[0]]; let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(newData) }; return { newUserInfo: newUserInfo }; } else { const newUserInfo = { ...userInfo, [key]: data }; return { newUserInfo: newUserInfo }; } }; const updateInfo = (key, data) => { let updatedData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].map((el, i) => { if (el.id == data[0].id) { return data[0]; } else { return el; } }); let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(updatedData) }; return { newUserInfo: newUserInfo }; }; const removeInfo = (key, data) => { let newUserInfo; if (Array.isArray(userInfo[`${key}`]) && data != null) { let removeData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].filter((el, i) => { return el.id !== data[0].id; }); newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(removeData) }; } else if (data == null) { let userInfoObj = { ...userInfo }; userInfoObj[key] = data; newUserInfo = userInfoObj; } return { newUserInfo: newUserInfo }; }; const updatePrimaryInfo = (key, data) => { let updateData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].map((el, i) => { if (el.id == data[0].id) { return { ...el, is_primary: 1 }; } else if (el.is_primary == 1) { return { ...el, is_primary: 0 }; } else { return el; } }); let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(updateData) }; return { newUserInfo: newUserInfo }; }; const updateDocumentInfo = (key, data) => { let updateData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].map((el, i) => { if (el.id == data?.info?.entity_id) { return { ...el, verification_status: enum_1.EntityVerificationStatus.Pending, }; } else { return el; } }); let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(updateData) }; return { newUserInfo: newUserInfo, error: error }; }; const updateObjectInfo = (key, data) => { let updateData = { ...userInfo[`${key}`], ...data }; let newUserInfo = { ...userInfo, [key]: updateData }; return { newUserInfo: newUserInfo }; }; const updateProfilePicture = (key, res) => { let data = res.data.attachment[0].file_url; let updateData = { ...userInfo[`${key}`], ["picture"]: data }; let newUserInfo = { ...userInfo, [`${key}`]: updateData }; return { newUserInfo: newUserInfo }; }; const getUserInfo = (data) => { let newUserInfo = { ...userInfo, data }; return { newUserInfo: newUserInfo }; }; const resetSecurity = (key, keyAction) => { let security = null; if (keyAction == "resetQuestions") { security = { ...userInfo[`${key}`], ["secret_answer_1"]: "____", ["secret_answer_2"]: "____", }; } else if (keyAction == "resetSecurityCode") { security = { ...userInfo[`${key}`], ["security_code"]: "____", }; } let newUserInfo = { ...userInfo, [`${key}`]: security }; return { newUserInfo: newUserInfo }; }; const addOrganizationInfo = (key, data) => { if (Array.isArray(userInfo[`${key}`])) { let newData = [...userInfo[`${key}`], data]; let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(newData) }; return { newUserInfo: newUserInfo }; } else { const newUserInfo = { ...userInfo, [key]: [data] }; return { newUserInfo: newUserInfo }; } }; const updateOrganizationInfo = (key, data) => { let updatedData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].map((el, i) => { if (el.info.id == data.info.id) { return data; } else { return el; } }); let newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(updatedData) }; return { newUserInfo: newUserInfo }; }; const removeOrganizationInfo = (key, data) => { let newUserInfo; if (Array.isArray(userInfo[`${key}`]) && data != null) { let removeData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].filter((el, i) => { return el.info.id !== data.info.id; }); if (removeData.length <= 0) { removeData = null; } newUserInfo = { ...userInfo, [key]: (0, sortUserInfo_1.sortUserInfo)(removeData) }; } else if (data == null) { let userInfoObj = { ...userInfo }; userInfoObj[key] = data; newUserInfo = userInfoObj; } return { newUserInfo: newUserInfo }; }; const createDocumentOrganization = (key, data) => { let updateData = Array.isArray(userInfo[`${key}`]) && userInfo[`${key}`].map((el, i) => { if (el.info.id == data?.info?.entity_id) { let newInfo = { ...el.info, verification_status: enum_1.EntityVerificationStatus.Pending, }; return { ...el, ["info"]: newInfo }; } else { return el; } }); let newUserInfo = { ...userInfo, [key]: updateData }; return { newUserInfo: newUserInfo }; }; return { addInfo, removeInfo, updateInfo, updatePrimaryInfo, updateDocumentInfo, updateObjectInfo, updateProfilePicture, getUserInfo, resetSecurity, addOrganizationInfo, updateOrganizationInfo, removeOrganizationInfo, createDocumentOrganization, }; }; const { addInfo, removeInfo, updateInfo, updatePrimaryInfo, updateDocumentInfo, updateObjectInfo, updateProfilePicture, getUserInfo, resetSecurity, addOrganizationInfo, updateOrganizationInfo, removeOrganizationInfo, createDocumentOrganization, } = newUserInfo(); // convert data json to data url encoded const convertDataToUrlEncoded = () => { const dataSignInUrlEncoded = (values, programId) => { let data = qs_1.default.stringify({ grant_type: "user_credential", user_name: values.email, password: values.password, program_Id: programId, language: "en", generate_jwt: true, //fingerprint: fingerPrintHandler().fingerPrintCode, installation_id: values.installationId, device_details: JSON.stringify((0, fillDeviceDetails_1.fillDeviceDetails)()), }); return data; }; const dataSignInUrlEncodedWithGoogle = (values, programId) => { let data = qs_1.default.stringify({ grant_type: "user_credential", token: values.token, token_id: values.token_id, program_Id: programId, language: "en", token_type: "3", generate_jwt: true, //fingerprint: fingerPrintHandler().fingerPrintCode, installation_id: values.installationId, device_details: JSON.stringify((0, fillDeviceDetails_1.fillDeviceDetails)()), }); return data; }; const dataSignInDeviceEncoded = (values, programId) => { let data = qs_1.default.stringify({ grant_type: "device_credential", device_security_code: values.device_security_code, user_Id: values.user_id, device_Id: values.device_id, program_Id: programId, language: "en", token_type: "3", generate_jwt: true, // fingerprint: fingerPrintHandler().fingerPrintCode, device_details: JSON.stringify((0, fillDeviceDetails_1.fillDeviceDetails)()), }); return data; }; const dataTokenUrlEncoded = (values) => { const data = { installationId: values.installationId, }; return data; }; return { dataSignInUrlEncoded, dataSignInDeviceEncoded, dataSignInUrlEncodedWithGoogle, dataTokenUrlEncoded, }; }; // header config const headerConfig = (headersData) => { const { header, isUrlEncoded, token, lang, installationId, disableCache } = headersData; let headers; if (!header) return undefined; if (isUrlEncoded) { headers = { "Content-Type": "application/x-www-form-urlencoded", }; } else { headers = { Authorization: restApi_1.default.bearer(token), "Content-Type": "application/json", language: lang ? lang : "en", source_id: (0, generateSourceId_1.GenerateSourceID)(), time_zone: (0, info_1.getTimezone)().userTimeZone, show_sensitive_data: "1", show_custom_field: "1", show_ticket: "1", // finger_print: fingerPrintHandler().fingerPrintCode, installation_id: installationId ? installationId : "", generate_jwt: true, }; } if (disableCache) { headers = { ...headers, "Cache-Control": "no-cache", Pragma: "no-cache", Expires: "0", }; } return headers; }; // check response const checkResponse = () => { const errorHandler = (error, funcName, response) => { let errorObj = { status: "failed", message: error, funcName: funcName, response: response, }; throw errorObj; }; const actionTypeHandler = (key, response, keyAction) => { const data = response?.data[`${key}`]; if (keyAction == "create") { return addInfo(`${key}`, data); } else if (keyAction == "update") { return updateInfo(`${key}`, data); } else if (keyAction == "delete") { return removeInfo(`${key}`, data); } else if (keyAction == "updatePrimary") { return updatePrimaryInfo(`${key}`, data); } else if (keyAction == "confirm") { let data = response?.data?.verify_data[`${key}`]; return updateInfo(`${key}`, [data]); } else if (keyAction == "createDocument") { return updateDocumentInfo(`${key}`, response?.data); } else if (keyAction == "updateObjectInfo") { return updateObjectInfo(`${key}`, data); } else if (keyAction == "updateProfilePicture") { return updateProfilePicture(`${key}`, response); } else if (keyAction == "userInfo") { return getUserInfo(response?.data); } else if (keyAction == "resetQuestions" || keyAction == "resetSecurityCode") { return resetSecurity(`${key}`, keyAction); } else if (keyAction == "createOrganization") { return addOrganizationInfo(`${key}`, response?.data); } else if (keyAction == "updateOrganization") { return updateOrganizationInfo(`${key}`, response?.data); } else if (keyAction == "deleteOrganization") { return removeOrganizationInfo(`${key}`, response?.data); } else if (keyAction == "createDocumentOrganization") { return createDocumentOrganization(`${key}`, response?.data); } else { return { newUserInfo: null }; } }; const checkUserResponseAuth = (response, showMessageSuccess, funcName) => { let check = response?.data?.result?.code; if (check != constants_1.SystemResponses.Approved && check != constants_1.SystemResponses.Create_User_Completed_Partially) { errorHandler(response?.data?.result?.message, funcName, response); } else if (!showMessageSuccess) { let value = response.data; value.email = (0, sortUserInfo_1.sortUserInfo)(value.email); value.phone = (0, sortUserInfo_1.sortUserInfo)(value.phone); value.identification = (0, sortUserInfo_1.sortUserInfo)(value.identification); value.addresses = (0, sortUserInfo_1.sortUserInfo)(value.addresses); value.bank_account = (0, sortUserInfo_1.sortUserInfo)(value.bank_account); return value; } else { return { action: "Success", message: "User Created Successfully", }; } }; const checkGlobalResponse = (key, response, funcName, keyAction) => { let check = response?.data?.result?.code; if (check == "0000") { return actionTypeHandler(key, response, keyAction); } else if (check.startsWith("0")) { return actionTypeHandler(key, response, keyAction); } else { return errorHandler(response?.data?.result?.message, funcName, response); } }; return { checkUserResponseAuth, checkGlobalResponse, errorHandler, }; }; return { checkResponse, headerConfig, convertDataToUrlEncoded, }; }; exports.default = Helper;