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
JavaScript
;
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;