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.

216 lines (215 loc) 8.56 kB
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 };