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.
216 lines (215 loc) • 8.56 kB
JavaScript
import { Entity, EntityData, EntityVerificationStatus } from "../constant";
import { createDefaultUserData } from "../api/data/user/userDefaults";
import { isNullOrUndefined } from "../utils/data/validation";
class UserHelper {
// #region "Modify"
static modifyListByEntity = (entityList, entity) => {
try {
if (!entity)
return entityList;
const modifiedList = entityList.map((e) => {
if (e.id == entity.id) {
return { ...e, ...entity };
}
if (entity.is_primary == 1) {
return { ...e, is_primary: 0 };
}
return e;
});
const sortedList = this.sortEntity(modifiedList);
return sortedList;
}
catch (error) {
console.error("Error in ModifyListByEntity:", error);
return entityList;
}
};
static modifyByDocumentData = (entityList, documentData) => {
if (!documentData)
return entityList;
const modifiedList = entityList.map((e) => {
if (e.id == documentData.info.entity_id) {
return { ...e, verification_status: EntityVerificationStatus.Pending };
}
return e;
});
const sortedList = this.sortEntity(modifiedList);
return sortedList;
};
static modifyOrganizationByDocumentData = (organizationList, documentData) => {
if (!documentData)
return organizationList;
const modifiedList = organizationList.map((e) => {
if (e.info.id == documentData.info.entity_id) {
const modifiedOrganizationData = {
...e,
info: {
...e.info,
verification_status: EntityVerificationStatus.Pending,
},
};
return modifiedOrganizationData;
}
return e;
});
return modifiedList;
};
static modifyOrganizationList = (organizationList, organization) => {
if (!organization?.info?.id)
return organizationList;
return organizationList.map((org) => {
if (org?.info?.id === organization.info.id) {
return {
...org,
...organization,
info: { ...org.info, ...organization.info },
details: { ...org.details, ...organization.details },
address: organization.address || org.address,
};
}
return org;
});
};
static modifyProfilePicture = (personal_info, documentData) => {
if (!documentData)
return personal_info;
const picture = documentData.attachment[0].file_url;
const modifiedPersonalInfo = {
...personal_info,
picture: picture,
};
return modifiedPersonalInfo;
};
static modifySecurityByResetUserSecurity = (userSecurity, resetUserSecurity) => {
if (!resetUserSecurity?.reset_security_data)
return userSecurity;
const { reset_password, reset_security_questions, reset_security_code } = resetUserSecurity.reset_security_data;
if (reset_security_questions) {
return {
...userSecurity,
secret_question_1: reset_security_questions.secret_question_1,
secret_answer_1: reset_security_questions.secret_answer_1,
secret_question_2: reset_security_questions.secret_question_2,
secret_answer_2: reset_security_questions.secret_answer_2,
};
}
if (reset_security_code) {
return {
...userSecurity,
security_code: reset_security_code.new_security_code,
};
}
if (reset_password) {
return {
...userSecurity,
password: reset_password.new_password,
};
}
return userSecurity;
};
// #endregion
// #region "Sort"
static sortEntity = (entityList) => {
return entityList.sort((a, b) => {
const sortByIsPrimary = this.sortByIsPrimary(a, b);
if (sortByIsPrimary != 0) {
return sortByIsPrimary;
}
const sortByVerificationStatus = this.sortByVerificationStatus(a, b);
if (sortByVerificationStatus != 0) {
return sortByVerificationStatus;
}
return this.sortById(a, b);
});
};
static sortByIsPrimary = (a, b) => {
if (!isNullOrUndefined(a.is_primary) && !isNullOrUndefined(b.is_primary)) {
return b.is_primary - a.is_primary;
}
return 0;
};
static sortByVerificationStatus = (a, b) => {
if (!isNullOrUndefined(a.verification_status) &&
!isNullOrUndefined(b.verification_status)) {
const priority = {
[EntityVerificationStatus.Verified]: 4,
[EntityVerificationStatus.Pending]: 3,
[EntityVerificationStatus.Failed]: 2,
[EntityVerificationStatus.Not_Verified]: 1,
[EntityVerificationStatus.Undefined]: 0,
};
return priority[b.verification_status] - priority[a.verification_status];
}
return 0;
};
static sortById = (a, b) => {
if (!isNullOrUndefined(a.id) && !isNullOrUndefined(b.id)) {
return a.id - b.id;
}
return 0;
};
// #endregion
// #region "Utils"
static extractDeviceData = (data) => {
if (Array.isArray(data.device)) {
return data.device[0];
}
return data.device;
};
static fillUserDataByEntity(entity, entityData, data, id) {
switch (entity) {
case Entity.Entity_Address:
return createDefaultUserData({ addresses: [{ ...data[0], id }] });
case Entity.Entity_Bank:
return createDefaultUserData({ bank_account: [{ ...data[0], id }] });
case Entity.Entity_Device:
return createDefaultUserData({ device: [{ ...data[0], id }] });
case Entity.Entity_Email:
return createDefaultUserData({ email: [{ ...data[0], id }] });
case Entity.Entity_Identification:
return createDefaultUserData({ identification: [{ ...data[0], id }] });
case Entity.Organization:
return createDefaultUserData({ organization: [{ ...data[0], id }] });
case Entity.Entity_Phone:
return createDefaultUserData({ phone: [{ ...data[0], id }] });
case Entity.Ticket:
return createDefaultUserData({ ticket: [{ ...data[0], id }] });
case Entity.Account:
return createDefaultUserData({ account: [{ ...data[0], id }] });
case Entity.Entity_Custom_Field:
return createDefaultUserData({ custom_field: data });
case Entity.Entity_Device_History:
return createDefaultUserData({ device_history: [{ ...data[0], id }] });
case Entity.User_Personal_Info:
return createDefaultUserData({ personal_info: data });
case Entity.User:
switch (entityData) {
case EntityData.Personal_Info:
return createDefaultUserData({ personal_info: data });
case EntityData.Verification:
return createDefaultUserData({ security: data });
default:
return createDefaultUserData({ addresses: [] });
}
default:
return createDefaultUserData({ addresses: [] });
}
}
static fillPromotionData = (data) => {
if (!data ||
(!data.giftData && !data.referralCode && !data.referralCodeType))
return;
const customField = { promotion_data: {} };
if (data.giftData) {
customField.promotion_data.gift_data = [data.giftData];
}
if (data.referralCode && data.referralCodeType) {
customField.promotion_data.referral_data = {
code: data.referralCode,
type: data.referralCodeType,
};
}
return customField;
};
}
export { UserHelper };