@lyxa.ai/core 1.4.206 → 1.4.208-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libraries/cash-settlement/providers/bob.js +3 -0
- package/dist/libraries/cash-settlement/providers/bob.js.map +1 -1
- package/dist/libraries/event/EventEnums.d.ts +2 -1
- package/dist/libraries/event/EventEnums.js +1 -0
- package/dist/libraries/event/EventEnums.js.map +1 -1
- package/dist/libraries/event/events/rider/cash/index.d.ts +3 -0
- package/dist/libraries/event/events/rider/cash/index.js +10 -0
- package/dist/libraries/event/events/rider/cash/index.js.map +1 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-added.event.d.ts +9 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-added.event.js +16 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-added.event.js.map +1 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-event.d.ts +14 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-event.js +21 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-event.js.map +1 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-settled.event.d.ts +9 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-settled.event.js +16 -0
- package/dist/libraries/event/events/rider/cash/rider-cash-settled.event.js.map +1 -0
- package/dist/libraries/event/events/rider/index.d.ts +1 -0
- package/dist/libraries/event/events/rider/index.js +1 -0
- package/dist/libraries/event/events/rider/index.js.map +1 -1
- package/dist/libraries/mongo/models/rider.model.d.ts +6 -1
- package/dist/libraries/mongo/models/rider.model.js +25 -0
- package/dist/libraries/mongo/models/rider.model.js.map +1 -1
- package/dist/libraries/trpc/middlewares/auth.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/createRoleProtectedProcedure.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/phone-verified.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/publicUserDecoder.d.ts +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/types/utilities/enum.d.ts +8 -0
- package/dist/types/utilities/enum.js +13 -3
- package/dist/types/utilities/enum.js.map +1 -1
- package/dist/types/utilities/validation/common-validation.d.ts +12 -12
- package/dist/utilities/enum.d.ts +8 -0
- package/dist/utilities/enum.js +13 -3
- package/dist/utilities/enum.js.map +1 -1
- package/dist/utilities/environment/rabbitmq-environments.js +1 -1
- package/dist/utilities/environment/rabbitmq-environments.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,8 @@ const __1 = require("../../..");
|
|
|
24
24
|
const error_common_1 = require("../../../utilities/error-common");
|
|
25
25
|
const currency_1 = require("../../../utilities/shared/currency");
|
|
26
26
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
27
|
+
const event_1 = require("../../event");
|
|
28
|
+
const events_1 = require("../../event/events");
|
|
27
29
|
var BOBTransferStatus;
|
|
28
30
|
(function (BOBTransferStatus) {
|
|
29
31
|
BOBTransferStatus["NOT_PAID"] = "NOT PAID";
|
|
@@ -210,6 +212,7 @@ let BOBService = class BOBService {
|
|
|
210
212
|
financeSettlementId: financeSettlement._id.toString(),
|
|
211
213
|
},
|
|
212
214
|
});
|
|
215
|
+
(0, event_1.publishEvent)(new events_1.RiderCashSettledEvent(rider._id));
|
|
213
216
|
}
|
|
214
217
|
calculateAmountsToDeduct(data) {
|
|
215
218
|
let primaryToDeduct = data.totalSettlement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bob.js","sourceRoot":"/","sources":["libraries/cash-settlement/providers/bob.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { ICashSettlementService, ISettlementInfo, ISettlementStatus } from '../interfaces/ICashSettlement';\nimport { SoftDeleteModel } from '../../mongo/plugins/soft-delete-plugin';\nimport {\n\tBOBFinance,\n\tBOBFinanceModel,\n\tFinanceSettlement,\n\tFinanceSettlementModel,\n\tRider,\n\tRiderModel,\n\tSetting,\n} from '../../mongo/models';\nimport { Service } from 'typedi';\nimport https from 'https';\nimport zlib from 'zlib';\nimport { TRPCError } from '@trpc/server';\nimport {\n\tAccountType,\n\tBobChannelType,\n\tBobModel,\n\tBobSettlementStatus,\n\tBobSettlementType,\n\tBobType,\n\tLogTag,\n\tSettlementType,\n} from '../../../utilities/enum';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { getLibraries } from '../../..';\nimport { badRequestError, notFoundError } from '../../../utilities/error-common';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '../../../utilities/shared/currency';\nimport dayjs from 'dayjs';\n\nexport type BOBSecrets = {\n\tBOB_USER_NAME: string;\n\tBOB_PASSWORD: string;\n\tBOB_URL: string;\n};\n\nexport enum BOBTransferStatus {\n\tNOT_PAID = 'NOT PAID',\n\tPAID = 'PAID',\n}\n\n@Service()\nexport class BOBService implements ICashSettlementService {\n\tprivate model: typeof BOBFinanceModel & SoftDeleteModel<BOBFinance>;\n\tprivate riderModel: typeof RiderModel & SoftDeleteModel<Rider>;\n\tprivate financeSettlementModel: typeof FinanceSettlementModel & SoftDeleteModel<FinanceSettlement>;\n\n\tprivate BOB_USER_NAME: string;\n\tprivate BOB_PASSWORD: string;\n\tprivate BOB_URL: string;\n\n\tconstructor(secrets: BOBSecrets) {\n\t\tthis.BOB_USER_NAME = secrets.BOB_USER_NAME;\n\t\tthis.BOB_PASSWORD = secrets.BOB_PASSWORD;\n\t\tthis.BOB_URL = secrets.BOB_URL;\n\n\t\tthis.model = BOBFinanceModel as typeof BOBFinanceModel & SoftDeleteModel<BOBFinance>;\n\t\tthis.riderModel = RiderModel as typeof RiderModel & SoftDeleteModel<Rider>;\n\t\tthis.financeSettlementModel = FinanceSettlementModel as typeof FinanceSettlementModel &\n\t\t\tSoftDeleteModel<FinanceSettlement>;\n\t}\n\n\t/**\n\t * Initiates a cash settlement process\n\t *\n\t * @param amount - The amount to be settled\n\t * @param currency - The currency of the amount\n\t * @param reference - A unique reference for the settlement\n\t * @param firstName - The first name of the settler\n\t * @param lastName - The last name of the settler\n\t * @param riderId - The ID of the rider associated with the settlement\n\t * @param location - Optional location of the settler\n\t * @returns Confirmation of the settlement initiation\n\t */\n\tpublic async initiateSettlement(\n\t\tamount: number,\n\t\tcurrency: string,\n\t\treference: string,\n\t\tfirstName: string,\n\t\tlastName: string,\n\t\triderId: mongoose.Types.ObjectId,\n\t\tlocation?: string\n\t): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Initiating BOB settlement', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_INITIATE,\n\t\t\tdata: {\n\t\t\t\tamount,\n\t\t\t\tcurrency,\n\t\t\t\treference,\n\t\t\t\tfirstName,\n\t\t\t\tlastName,\n\t\t\t\triderId: riderId.toString(),\n\t\t\t\tlocation,\n\t\t\t},\n\t\t});\n\n\t\t// BOB cannot handle amount > 20000000\n\t\tif (amount > 20000000) {\n\t\t\tbadRequestError('Please provide a value between 0 and 20000000');\n\t\t}\n\n\t\tconst crmNumber = reference;\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tFirstName: firstName,\n\t\t\tLastName: lastName,\n\t\t\tCRMNumber: crmNumber,\n\t\t\tAmount: String(amount),\n\t\t\tCurrency: currency,\n\t\t};\n\n\t\tconst { data } = await axios.post(`${this.BOB_URL}InsertTransferData`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB initiateSettlement: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject || !responseObject.isSuccess) {\n\t\t\tconsole.error('Failed to initiate settlement in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to initiate settlement in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tconst bobSettlement = await this.model.create({\n\t\t\tamount: currency === 'USD' ? amount : 0,\n\t\t\tsecondaryAmount: currency === 'USD' ? 0 : amount,\n\t\t\tcrmNumber: crmNumber,\n\t\t\trider: riderId,\n\t\t\tbobLocation: location,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t\tsettlementType: BobSettlementType.SETTLE_CASH,\n\t\t\tbobModel: BobModel.C2B,\n\t\t\tbobType: BobType.INWARD,\n\t\t});\n\n\t\tlogger.info('Created BOB settlement in database', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_INITIATE,\n\t\t\tdata: {\n\t\t\t\tbobSettlementId: bobSettlement._id.toString(),\n\t\t\t\tcrmNumber,\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Mark a settlement as paid\n\t *\n\t * @param settlementId - The ID of the settlement to update\n\t * @returns Confirmation of the update\n\t */\n\tpublic async markSettlementAsPaid(settlementId: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Marking BOB settlement as paid', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t},\n\t\t});\n\n\t\tconst settlement = await this.model.findById(settlementId);\n\n\t\tif (!settlement) {\n\t\t\tlogger.info('Settlement not found', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\t\tdata: {\n\t\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t\t},\n\t\t\t});\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Settlement not found.',\n\t\t\t});\n\t\t}\n\n\t\tif (settlement.status === BobSettlementStatus.PAID) {\n\t\t\tlogger.info('Settlement is already marked as paid', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\t\tdata: {\n\t\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t\t},\n\t\t\t});\n\t\t\tbadRequestError('Settlement is already marked as paid.');\n\t\t}\n\n\t\tawait this.settlePayment(settlement);\n\n\t\tif (settlement.status === BobSettlementStatus.NOT_PAID) {\n\t\t\tawait this.removeTransfer(settlement.crmNumber); // Remove the transfer from BOB so future settlements with the same reference do not fail\n\t\t}\n\n\t\tlogger.info('BOB settlement marked as paid', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tprivate async settlePayment(settlement: DocumentType<BOBFinance>) {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Settling BOB payment', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tcrmNumber: settlement.crmNumber,\n\t\t\t},\n\t\t});\n\n\t\tconst updatedSettlement = await this.model.findByIdAndUpdate(\n\t\t\tsettlement._id,\n\t\t\t{ status: BobSettlementStatus.PAID },\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tconst financeSettlement = await this.financeSettlementModel.create({\n\t\t\tamount: settlement.amount,\n\t\t\tsecondaryAmount: settlement.secondaryAmount,\n\t\t\trider: settlement.rider,\n\t\t\tsettlementType: SettlementType.RIDER_SETTLE_CASH,\n\t\t\taccountType: AccountType.RIDER,\n\t\t});\n\n\t\tconst rider = await this.riderModel.findById(settlement.rider);\n\t\tif (!rider) {\n\t\t\tconsole.error(`Rider with ID ${settlement.rider} not found.`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Rider not found.',\n\t\t\t});\n\t\t}\n\n\t\tconst settings: Setting = (await getLibraries().getCachedSettingsService().getSettings()) as Setting;\n\t\tconst exchangeRate = settings?.currencySetting?.exchangeRate || 1;\n\n\t\tconst totalSettlement = settlement.amount || 0;\n\t\tconst totalSecondarySettlement = settlement.secondaryAmount || 0;\n\n\t\tconst { deltaPrimary, deltaSecondary } = this.calculateAmountsToDeduct({\n\t\t\texchangeRate,\n\t\t\ttotalSettlement,\n\t\t\ttotalSecondarySettlement,\n\t\t\tcashInHandAmount: rider.cashInHand?.amount ?? 0,\n\t\t\tcashInHandSecondaryAmount: rider.cashInHand?.secondaryAmount ?? 0,\n\t\t});\n\n\t\tconst updatedRider = await this.riderModel.findByIdAndUpdate(\n\t\t\trider._id,\n\t\t\t{\n\t\t\t\t$inc: {\n\t\t\t\t\t'cashInHand.secondaryAmount': deltaSecondary,\n\t\t\t\t\t'cashInHand.amount': deltaPrimary,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tlogger.info('Settled BOB payment and updated rider cash in hand', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tcrmNumber: settlement.crmNumber,\n\t\t\t\tdeltaSecondary,\n\t\t\t\tdeltaPrimary,\n\t\t\t\triderId: rider._id.toString(),\n\t\t\t\tpreviousRiderCashInHand: rider.cashInHand,\n\t\t\t\tupdatedRiderCashInHand: updatedRider?.cashInHand,\n\t\t\t\tfinanceSettlementId: financeSettlement._id.toString(),\n\t\t\t},\n\t\t});\n\t}\n\n\tpublic calculateAmountsToDeduct(data: {\n\t\texchangeRate: number;\n\t\ttotalSettlement: number;\n\t\ttotalSecondarySettlement: number;\n\t\tcashInHandAmount: number;\n\t\tcashInHandSecondaryAmount: number;\n\t}) {\n\t\tlet primaryToDeduct = data.totalSettlement;\n\t\tlet secondaryToDeduct = 0;\n\n\t\tlet availablePrimary = data.cashInHandAmount;\n\t\tlet availableSecondary = data.cashInHandSecondaryAmount;\n\n\t\t// 1. Handle primary settlement\n\t\tlet deductedPrimary = Math.min(availablePrimary, primaryToDeduct);\n\t\tprimaryToDeduct -= deductedPrimary;\n\t\tavailablePrimary -= deductedPrimary;\n\n\t\t// fallback to secondary if needed\n\t\tif (primaryToDeduct > 0) {\n\t\t\tconst neededSecondary = roundSecondaryCurrency(primaryToDeduct * data.exchangeRate);\n\n\t\t\tconst deductedSecondary = Math.min(availableSecondary, neededSecondary);\n\n\t\t\tsecondaryToDeduct += deductedSecondary; // accumulate deduction\n\t\t\tavailableSecondary -= deductedSecondary;\n\n\t\t\tprimaryToDeduct = 0;\n\t\t}\n\n\t\t// 2. Handle secondary settlement\n\t\tlet deductedSecondaryDirect = Math.min(availableSecondary, data.totalSecondarySettlement);\n\t\tsecondaryToDeduct += deductedSecondaryDirect;\n\t\tavailableSecondary -= deductedSecondaryDirect;\n\n\t\tconst remainingSecondary = data.totalSecondarySettlement - deductedSecondaryDirect;\n\n\t\t// fallback to primary\n\t\tif (remainingSecondary > 0) {\n\t\t\tconst neededPrimary = roundBaseCurrency(remainingSecondary / data.exchangeRate);\n\n\t\t\tconst deductedPrimaryFallback = Math.min(availablePrimary, neededPrimary);\n\n\t\t\tdeductedPrimary += deductedPrimaryFallback;\n\t\t\tavailablePrimary -= deductedPrimaryFallback;\n\t\t}\n\n\t\tconst deltaPrimary = -deductedPrimary;\n\t\tconst deltaSecondary = -secondaryToDeduct;\n\n\t\treturn { deltaPrimary, deltaSecondary };\n\t}\n\n\t/**\n\t * Revokes a cash settlement\n\t *\n\t * @param reference - The reference ID of the settlement to revoke\n\t * @returns Confirmation of the revocation\n\t */\n\tpublic async revokeSettlement(reference: string): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Revoking BOB settlement', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\treference,\n\t\t\t},\n\t\t});\n\n\t\tconst settlement = await this.model.findOne({\n\t\t\tcrmNumber: reference,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!settlement) {\n\t\t\tconsole.error(`Settlement with reference ${reference} not found.`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Settlement not found.',\n\t\t\t});\n\t\t}\n\n\t\tawait this.removeTransfer(reference);\n\n\t\tconst result = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\tcrmNumber: reference,\n\t\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t\t},\n\t\t\t{\n\t\t\t\tstatus: BobSettlementStatus.REVOKED,\n\t\t\t},\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tlogger.info('BOB settlement revoked', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\treference,\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tresult,\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Revokes a cash settlement\n\t *\n\t * @param reference - The reference ID of the settlement to revoke\n\t * @returns Confirmation of the revocation\n\t */\n\tpublic async revokeRiderSettlements(rider: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Revoking BOB settlements for rider', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\triderId: rider.toString(),\n\t\t\t},\n\t\t});\n\n\t\tconst settlements = await this.model.find({\n\t\t\trider: rider,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!settlements.length) {\n\t\t\tlogger.info('No unpaid BOB settlements found for rider', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\t\tdata: {\n\t\t\t\t\triderId: rider.toString(),\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tnotFoundError('No unpaid settlements found.');\n\t\t}\n\n\t\tfor (const settlement of settlements) {\n\t\t\tawait this.removeTransfer(settlement.crmNumber);\n\t\t\tawait this.model.findByIdAndUpdate(settlement._id, {\n\t\t\t\tstatus: BobSettlementStatus.REVOKED,\n\t\t\t});\n\t\t}\n\n\t\tlogger.info('BOB settlements revoked for rider', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\triderId: rider.toString(),\n\t\t\t\tsettlementIds: settlements.map(s => s._id.toString()),\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tprivate async removeTransfer(crmNumber: string) {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Removing transfer from BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REMOVE,\n\t\t\tdata: {\n\t\t\t\tcrmNumber,\n\t\t\t},\n\t\t});\n\n\t\tconst transferExists = await this.hasUnpaidTransfer(crmNumber);\n\n\t\tif (!transferExists) {\n\t\t\tlogger.info('No transfer exists for this crm number in bob', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\t\tdata: {\n\t\t\t\t\tcrmNumber,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tCRMNumber: crmNumber,\n\t\t};\n\n\t\tconst { data } = await axios.post(`${this.BOB_URL}RemoveTransfer`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode == 213) {\n\t\t\t// Record does not exist\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB removeTransfer: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject || !responseObject.isSuccess) {\n\t\t\tconsole.error('Failed to remove transfer in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to remove transfer in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tlogger.info('Removed transfer from BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REMOVE,\n\t\t\tdata: {\n\t\t\t\tcrmNumber,\n\t\t\t\tresponseObject,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Check if there are pending settlements\n\t *\n\t * @param reference - The reference ID of the settlement to check\n\t * @returns true if there are pending settlements, false otherwise\n\t */\n\tpublic async hasPendingSettlements(reference: string): Promise<boolean> {\n\t\tconst pendingSettlements = await this.model.find({\n\t\t\tcrmNumber: reference,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\t\treturn pendingSettlements.length > 0;\n\t}\n\n\t/**\n\t * Check if there are pending settlements\n\t *\n\t * @param riderId - The ID of the rider to check\n\t * @returns true if there are pending settlements, false otherwise\n\t */\n\tpublic async hasPendingRiderSettlements(riderId: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst pendingSettlements = await this.model.find({\n\t\t\trider: riderId,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\t\treturn pendingSettlements.length > 0;\n\t}\n\n\t/**\n\t * Get latest settlement info\n\t *\n\t * @param reference - The reference ID of the settlement to check\n\t * @returns the latest settlement if it exists, null otherwise\n\t */\n\tpublic async getLastSettlement(reference: string): Promise<ISettlementInfo | null> {\n\t\tconst pendingSettlements = await this.model\n\t\t\t.findOne({\n\t\t\t\tcrmNumber: reference,\n\t\t\t})\n\t\t\t.sort({ createdAt: -1 });\n\n\t\tif (!pendingSettlements) return null;\n\n\t\treturn {\n\t\t\tamount: pendingSettlements.amount || pendingSettlements.secondaryAmount || 0,\n\t\t\tcurrency: pendingSettlements.amount ? 'USD' : 'LBP',\n\t\t\treferenceNumber: pendingSettlements.crmNumber,\n\t\t\tstatus: (pendingSettlements.status ?? BobSettlementStatus.NOT_PAID) as unknown as ISettlementStatus,\n\t\t\tcreatedAt: pendingSettlements.createdAt ?? new Date(),\n\t\t\tupdatedAt: pendingSettlements.createdAt ?? new Date(),\n\t\t};\n\t}\n\n\t/**\n\t * Get latest settlement info\n\t *\n\t * @param riderId - The ID of the rider to check\n\t * @returns the latest settlement if it exists, null otherwise\n\t */\n\tpublic async getLastRiderSettlement(rider: mongoose.Types.ObjectId): Promise<ISettlementInfo | null> {\n\t\tconst lastSettlement = await this.model\n\t\t\t.findOne({\n\t\t\t\trider: rider,\n\t\t\t})\n\t\t\t.sort({ createdAt: -1 });\n\n\t\tif (!lastSettlement) return null;\n\n\t\treturn {\n\t\t\tamount: lastSettlement.amount || lastSettlement.secondaryAmount || 0,\n\t\t\tcurrency: lastSettlement.amount ? 'USD' : 'LBP',\n\t\t\treferenceNumber: lastSettlement.crmNumber,\n\t\t\tstatus: (lastSettlement.status ?? BobSettlementStatus.NOT_PAID) as unknown as ISettlementStatus,\n\t\t\tcreatedAt: lastSettlement.createdAt ?? new Date(),\n\t\t\tupdatedAt: lastSettlement.updatedAt ?? new Date(),\n\t\t};\n\t}\n\n\tprivate async getTransfers(timeframe: { startDate: Date; endDate: Date }) {\n\t\tconst DateTimeFrom = new Date(timeframe.startDate).toISOString().split('.')[0] + 'Z';\n\t\tconst DateTimeTo = new Date(timeframe.endDate).toISOString().split('.')[0] + 'Z';\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tDateTimeFrom,\n\t\t\tDateTimeTo,\n\t\t};\n\t\tconst { data } = await axios.post(`${this.BOB_URL}GetTransfers`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB getTransfers: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject) {\n\t\t\tconsole.error('Failed to get transfers in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to get transfers in BOB.',\n\t\t\t});\n\t\t}\n\n\t\treturn responseObject;\n\t}\n\n\tprivate async decompressResponse(response: string): Promise<any> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Step 1: Decode Base64\n\t\t\tconst decodedBuffer = Buffer.from(response, 'base64');\n\n\t\t\t// Step 2: Decompress GZIP\n\t\t\tzlib.gunzip(decodedBuffer, (err, decompressedBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error('Error decompressing GZIP:', err);\n\t\t\t\t\tthrow new TRPCError({\n\t\t\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\t\t\tmessage: 'Failed to decompress data from BOB API.',\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Step 3: Convert decompressed buffer to string\n\t\t\t\t\tconst decodedString = decompressedBuffer.toString('utf-8');\n\n\t\t\t\t\t// Step 4: Parse the JSON string to a JavaScript object\n\t\t\t\t\tconst responseObject = JSON.parse(decodedString);\n\n\t\t\t\t\tresolve(responseObject);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async hasUnpaidTransfer(crmNumber: string): Promise<Boolean> {\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tCRMNumber: crmNumber,\n\t\t};\n\t\tconst { data } = await axios.post(`${this.BOB_URL}GetTransferStatus`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode == 213) {\n\t\t\t// Record does not exist\n\t\t\treturn false;\n\t\t}\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB getTransferStatus: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject) {\n\t\t\tconsole.error('Failed to get settlement status in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to get settlement status in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tconst hasUnpaidTransfer = responseObject.some(\n\t\t\t(item: any) => item.CRMNumber == crmNumber && item.Status == BOBTransferStatus.NOT_PAID\n\t\t);\n\n\t\treturn hasUnpaidTransfer;\n\t}\n\n\tpublic async checkAllPendingTransfers() {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Checking pending BOB settlements', { tag: LogTag.BOB_TRANSACTION_CHECK });\n\n\t\tconst notPaidSettlements = await this.model.find({\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!notPaidSettlements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlogger.info('Checking pending settlements', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\tcount: notPaidSettlements.length,\n\t\t\t\tsettlementIds: notPaidSettlements.map(s => s._id.toString()),\n\t\t\t},\n\t\t});\n\n\t\tlet maxDate = dayjs();\n\t\tlet minDate = dayjs();\n\n\t\tconst createdAtDates = notPaidSettlements.map(item => dayjs(item.createdAt!));\n\n\t\tif (createdAtDates.length > 0) {\n\t\t\tmaxDate = dayjs.max(...createdAtDates)!;\n\t\t\tminDate = dayjs.min(...createdAtDates)!;\n\t\t}\n\n\t\tconst maxDatePlusOneDay = maxDate.add(1, 'day').toDate();\n\t\tconst minDateMinusOneDay = minDate.subtract(1, 'day').toDate();\n\n\t\tconst transfers = await this.getTransfers({\n\t\t\tstartDate: minDateMinusOneDay,\n\t\t\tendDate: maxDatePlusOneDay,\n\t\t});\n\n\t\tlogger.info('Transactions on BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\tcount: transfers.length,\n\t\t\t\ttransfers,\n\t\t\t\tstartDate: minDateMinusOneDay,\n\t\t\t\tendDate: maxDatePlusOneDay,\n\t\t\t},\n\t\t});\n\n\t\tif (!transfers || transfers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transferStatusMap = new Map<string, string>();\n\n\t\tfor (const trx of transfers) {\n\t\t\ttransferStatusMap.set(trx.ReferenceNumber, trx.Status);\n\t\t}\n\n\t\tlogger.info('Mapped transfer statuses', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\ttransferStatusMap,\n\t\t\t},\n\t\t});\n\n\t\tawait Promise.all(\n\t\t\tnotPaidSettlements.map(async settlement => {\n\t\t\t\ttry {\n\t\t\t\t\tconst status = transferStatusMap.get(settlement.crmNumber);\n\n\t\t\t\t\tif (status == BOBTransferStatus.PAID) {\n\t\t\t\t\t\tawait this.settlePayment(settlement);\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.info(`Settled payment for crmNumber ${settlement.crmNumber}`, {\n\t\t\t\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\t\t\t\tdata: { status },\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`Failed settlement with crmNumber ${settlement.crmNumber}, id: ${settlement._id}`,\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t{ tag: LogTag.BOB_TRANSACTION_CHECK }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bob.js","sourceRoot":"/","sources":["libraries/cash-settlement/providers/bob.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { ICashSettlementService, ISettlementInfo, ISettlementStatus } from '../interfaces/ICashSettlement';\nimport { SoftDeleteModel } from '../../mongo/plugins/soft-delete-plugin';\nimport {\n\tBOBFinance,\n\tBOBFinanceModel,\n\tFinanceSettlement,\n\tFinanceSettlementModel,\n\tRider,\n\tRiderModel,\n\tSetting,\n} from '../../mongo/models';\nimport { Service } from 'typedi';\nimport https from 'https';\nimport zlib from 'zlib';\nimport { TRPCError } from '@trpc/server';\nimport {\n\tAccountType,\n\tBobChannelType,\n\tBobModel,\n\tBobSettlementStatus,\n\tBobSettlementType,\n\tBobType,\n\tLogTag,\n\tSettlementType,\n} from '../../../utilities/enum';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { getLibraries } from '../../..';\nimport { badRequestError, notFoundError } from '../../../utilities/error-common';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '../../../utilities/shared/currency';\nimport dayjs from 'dayjs';\nimport { publishEvent } from '../../event';\nimport { RiderCashSettledEvent } from '../../event/events';\n\nexport type BOBSecrets = {\n\tBOB_USER_NAME: string;\n\tBOB_PASSWORD: string;\n\tBOB_URL: string;\n};\n\nexport enum BOBTransferStatus {\n\tNOT_PAID = 'NOT PAID',\n\tPAID = 'PAID',\n}\n\n@Service()\nexport class BOBService implements ICashSettlementService {\n\tprivate model: typeof BOBFinanceModel & SoftDeleteModel<BOBFinance>;\n\tprivate riderModel: typeof RiderModel & SoftDeleteModel<Rider>;\n\tprivate financeSettlementModel: typeof FinanceSettlementModel & SoftDeleteModel<FinanceSettlement>;\n\n\tprivate BOB_USER_NAME: string;\n\tprivate BOB_PASSWORD: string;\n\tprivate BOB_URL: string;\n\n\tconstructor(secrets: BOBSecrets) {\n\t\tthis.BOB_USER_NAME = secrets.BOB_USER_NAME;\n\t\tthis.BOB_PASSWORD = secrets.BOB_PASSWORD;\n\t\tthis.BOB_URL = secrets.BOB_URL;\n\n\t\tthis.model = BOBFinanceModel as typeof BOBFinanceModel & SoftDeleteModel<BOBFinance>;\n\t\tthis.riderModel = RiderModel as typeof RiderModel & SoftDeleteModel<Rider>;\n\t\tthis.financeSettlementModel = FinanceSettlementModel as typeof FinanceSettlementModel &\n\t\t\tSoftDeleteModel<FinanceSettlement>;\n\t}\n\n\t/**\n\t * Initiates a cash settlement process\n\t *\n\t * @param amount - The amount to be settled\n\t * @param currency - The currency of the amount\n\t * @param reference - A unique reference for the settlement\n\t * @param firstName - The first name of the settler\n\t * @param lastName - The last name of the settler\n\t * @param riderId - The ID of the rider associated with the settlement\n\t * @param location - Optional location of the settler\n\t * @returns Confirmation of the settlement initiation\n\t */\n\tpublic async initiateSettlement(\n\t\tamount: number,\n\t\tcurrency: string,\n\t\treference: string,\n\t\tfirstName: string,\n\t\tlastName: string,\n\t\triderId: mongoose.Types.ObjectId,\n\t\tlocation?: string\n\t): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Initiating BOB settlement', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_INITIATE,\n\t\t\tdata: {\n\t\t\t\tamount,\n\t\t\t\tcurrency,\n\t\t\t\treference,\n\t\t\t\tfirstName,\n\t\t\t\tlastName,\n\t\t\t\triderId: riderId.toString(),\n\t\t\t\tlocation,\n\t\t\t},\n\t\t});\n\n\t\t// BOB cannot handle amount > 20000000\n\t\tif (amount > 20000000) {\n\t\t\tbadRequestError('Please provide a value between 0 and 20000000');\n\t\t}\n\n\t\tconst crmNumber = reference;\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tFirstName: firstName,\n\t\t\tLastName: lastName,\n\t\t\tCRMNumber: crmNumber,\n\t\t\tAmount: String(amount),\n\t\t\tCurrency: currency,\n\t\t};\n\n\t\tconst { data } = await axios.post(`${this.BOB_URL}InsertTransferData`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB initiateSettlement: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject || !responseObject.isSuccess) {\n\t\t\tconsole.error('Failed to initiate settlement in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to initiate settlement in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tconst bobSettlement = await this.model.create({\n\t\t\tamount: currency === 'USD' ? amount : 0,\n\t\t\tsecondaryAmount: currency === 'USD' ? 0 : amount,\n\t\t\tcrmNumber: crmNumber,\n\t\t\trider: riderId,\n\t\t\tbobLocation: location,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t\tsettlementType: BobSettlementType.SETTLE_CASH,\n\t\t\tbobModel: BobModel.C2B,\n\t\t\tbobType: BobType.INWARD,\n\t\t});\n\n\t\tlogger.info('Created BOB settlement in database', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_INITIATE,\n\t\t\tdata: {\n\t\t\t\tbobSettlementId: bobSettlement._id.toString(),\n\t\t\t\tcrmNumber,\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Mark a settlement as paid\n\t *\n\t * @param settlementId - The ID of the settlement to update\n\t * @returns Confirmation of the update\n\t */\n\tpublic async markSettlementAsPaid(settlementId: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Marking BOB settlement as paid', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t},\n\t\t});\n\n\t\tconst settlement = await this.model.findById(settlementId);\n\n\t\tif (!settlement) {\n\t\t\tlogger.info('Settlement not found', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\t\tdata: {\n\t\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t\t},\n\t\t\t});\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Settlement not found.',\n\t\t\t});\n\t\t}\n\n\t\tif (settlement.status === BobSettlementStatus.PAID) {\n\t\t\tlogger.info('Settlement is already marked as paid', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\t\tdata: {\n\t\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t\t},\n\t\t\t});\n\t\t\tbadRequestError('Settlement is already marked as paid.');\n\t\t}\n\n\t\tawait this.settlePayment(settlement);\n\n\t\tif (settlement.status === BobSettlementStatus.NOT_PAID) {\n\t\t\tawait this.removeTransfer(settlement.crmNumber); // Remove the transfer from BOB so future settlements with the same reference do not fail\n\t\t}\n\n\t\tlogger.info('BOB settlement marked as paid', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlementId.toString(),\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tprivate async settlePayment(settlement: DocumentType<BOBFinance>) {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Settling BOB payment', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tcrmNumber: settlement.crmNumber,\n\t\t\t},\n\t\t});\n\n\t\tconst updatedSettlement = await this.model.findByIdAndUpdate(\n\t\t\tsettlement._id,\n\t\t\t{ status: BobSettlementStatus.PAID },\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tconst financeSettlement = await this.financeSettlementModel.create({\n\t\t\tamount: settlement.amount,\n\t\t\tsecondaryAmount: settlement.secondaryAmount,\n\t\t\trider: settlement.rider,\n\t\t\tsettlementType: SettlementType.RIDER_SETTLE_CASH,\n\t\t\taccountType: AccountType.RIDER,\n\t\t});\n\n\t\tconst rider = await this.riderModel.findById(settlement.rider);\n\t\tif (!rider) {\n\t\t\tconsole.error(`Rider with ID ${settlement.rider} not found.`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Rider not found.',\n\t\t\t});\n\t\t}\n\n\t\tconst settings: Setting = (await getLibraries().getCachedSettingsService().getSettings()) as Setting;\n\t\tconst exchangeRate = settings?.currencySetting?.exchangeRate || 1;\n\n\t\tconst totalSettlement = settlement.amount || 0;\n\t\tconst totalSecondarySettlement = settlement.secondaryAmount || 0;\n\n\t\tconst { deltaPrimary, deltaSecondary } = this.calculateAmountsToDeduct({\n\t\t\texchangeRate,\n\t\t\ttotalSettlement,\n\t\t\ttotalSecondarySettlement,\n\t\t\tcashInHandAmount: rider.cashInHand?.amount ?? 0,\n\t\t\tcashInHandSecondaryAmount: rider.cashInHand?.secondaryAmount ?? 0,\n\t\t});\n\n\t\tconst updatedRider = await this.riderModel.findByIdAndUpdate(\n\t\t\trider._id,\n\t\t\t{\n\t\t\t\t$inc: {\n\t\t\t\t\t'cashInHand.secondaryAmount': deltaSecondary,\n\t\t\t\t\t'cashInHand.amount': deltaPrimary,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tlogger.info('Settled BOB payment and updated rider cash in hand', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_SETTLE,\n\t\t\tdata: {\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tcrmNumber: settlement.crmNumber,\n\t\t\t\tdeltaSecondary,\n\t\t\t\tdeltaPrimary,\n\t\t\t\triderId: rider._id.toString(),\n\t\t\t\tpreviousRiderCashInHand: rider.cashInHand,\n\t\t\t\tupdatedRiderCashInHand: updatedRider?.cashInHand,\n\t\t\t\tfinanceSettlementId: financeSettlement._id.toString(),\n\t\t\t},\n\t\t});\n\n\t\tpublishEvent(new RiderCashSettledEvent(rider._id));\n\t}\n\n\tpublic calculateAmountsToDeduct(data: {\n\t\texchangeRate: number;\n\t\ttotalSettlement: number;\n\t\ttotalSecondarySettlement: number;\n\t\tcashInHandAmount: number;\n\t\tcashInHandSecondaryAmount: number;\n\t}) {\n\t\tlet primaryToDeduct = data.totalSettlement;\n\t\tlet secondaryToDeduct = 0;\n\n\t\tlet availablePrimary = data.cashInHandAmount;\n\t\tlet availableSecondary = data.cashInHandSecondaryAmount;\n\n\t\t// 1. Handle primary settlement\n\t\tlet deductedPrimary = Math.min(availablePrimary, primaryToDeduct);\n\t\tprimaryToDeduct -= deductedPrimary;\n\t\tavailablePrimary -= deductedPrimary;\n\n\t\t// fallback to secondary if needed\n\t\tif (primaryToDeduct > 0) {\n\t\t\tconst neededSecondary = roundSecondaryCurrency(primaryToDeduct * data.exchangeRate);\n\n\t\t\tconst deductedSecondary = Math.min(availableSecondary, neededSecondary);\n\n\t\t\tsecondaryToDeduct += deductedSecondary; // accumulate deduction\n\t\t\tavailableSecondary -= deductedSecondary;\n\n\t\t\tprimaryToDeduct = 0;\n\t\t}\n\n\t\t// 2. Handle secondary settlement\n\t\tlet deductedSecondaryDirect = Math.min(availableSecondary, data.totalSecondarySettlement);\n\t\tsecondaryToDeduct += deductedSecondaryDirect;\n\t\tavailableSecondary -= deductedSecondaryDirect;\n\n\t\tconst remainingSecondary = data.totalSecondarySettlement - deductedSecondaryDirect;\n\n\t\t// fallback to primary\n\t\tif (remainingSecondary > 0) {\n\t\t\tconst neededPrimary = roundBaseCurrency(remainingSecondary / data.exchangeRate);\n\n\t\t\tconst deductedPrimaryFallback = Math.min(availablePrimary, neededPrimary);\n\n\t\t\tdeductedPrimary += deductedPrimaryFallback;\n\t\t\tavailablePrimary -= deductedPrimaryFallback;\n\t\t}\n\n\t\tconst deltaPrimary = -deductedPrimary;\n\t\tconst deltaSecondary = -secondaryToDeduct;\n\n\t\treturn { deltaPrimary, deltaSecondary };\n\t}\n\n\t/**\n\t * Revokes a cash settlement\n\t *\n\t * @param reference - The reference ID of the settlement to revoke\n\t * @returns Confirmation of the revocation\n\t */\n\tpublic async revokeSettlement(reference: string): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Revoking BOB settlement', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\treference,\n\t\t\t},\n\t\t});\n\n\t\tconst settlement = await this.model.findOne({\n\t\t\tcrmNumber: reference,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!settlement) {\n\t\t\tconsole.error(`Settlement with reference ${reference} not found.`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Settlement not found.',\n\t\t\t});\n\t\t}\n\n\t\tawait this.removeTransfer(reference);\n\n\t\tconst result = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\tcrmNumber: reference,\n\t\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t\t},\n\t\t\t{\n\t\t\t\tstatus: BobSettlementStatus.REVOKED,\n\t\t\t},\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tlogger.info('BOB settlement revoked', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\treference,\n\t\t\t\tsettlementId: settlement._id.toString(),\n\t\t\t\tresult,\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Revokes a cash settlement\n\t *\n\t * @param reference - The reference ID of the settlement to revoke\n\t * @returns Confirmation of the revocation\n\t */\n\tpublic async revokeRiderSettlements(rider: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Revoking BOB settlements for rider', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\triderId: rider.toString(),\n\t\t\t},\n\t\t});\n\n\t\tconst settlements = await this.model.find({\n\t\t\trider: rider,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!settlements.length) {\n\t\t\tlogger.info('No unpaid BOB settlements found for rider', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\t\tdata: {\n\t\t\t\t\triderId: rider.toString(),\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tnotFoundError('No unpaid settlements found.');\n\t\t}\n\n\t\tfor (const settlement of settlements) {\n\t\t\tawait this.removeTransfer(settlement.crmNumber);\n\t\t\tawait this.model.findByIdAndUpdate(settlement._id, {\n\t\t\t\tstatus: BobSettlementStatus.REVOKED,\n\t\t\t});\n\t\t}\n\n\t\tlogger.info('BOB settlements revoked for rider', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REVOKE,\n\t\t\tdata: {\n\t\t\t\triderId: rider.toString(),\n\t\t\t\tsettlementIds: settlements.map(s => s._id.toString()),\n\t\t\t},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tprivate async removeTransfer(crmNumber: string) {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Removing transfer from BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REMOVE,\n\t\t\tdata: {\n\t\t\t\tcrmNumber,\n\t\t\t},\n\t\t});\n\n\t\tconst transferExists = await this.hasUnpaidTransfer(crmNumber);\n\n\t\tif (!transferExists) {\n\t\t\tlogger.info('No transfer exists for this crm number in bob', {\n\t\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\t\tdata: {\n\t\t\t\t\tcrmNumber,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tCRMNumber: crmNumber,\n\t\t};\n\n\t\tconst { data } = await axios.post(`${this.BOB_URL}RemoveTransfer`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode == 213) {\n\t\t\t// Record does not exist\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB removeTransfer: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject || !responseObject.isSuccess) {\n\t\t\tconsole.error('Failed to remove transfer in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to remove transfer in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tlogger.info('Removed transfer from BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_REMOVE,\n\t\t\tdata: {\n\t\t\t\tcrmNumber,\n\t\t\t\tresponseObject,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Check if there are pending settlements\n\t *\n\t * @param reference - The reference ID of the settlement to check\n\t * @returns true if there are pending settlements, false otherwise\n\t */\n\tpublic async hasPendingSettlements(reference: string): Promise<boolean> {\n\t\tconst pendingSettlements = await this.model.find({\n\t\t\tcrmNumber: reference,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\t\treturn pendingSettlements.length > 0;\n\t}\n\n\t/**\n\t * Check if there are pending settlements\n\t *\n\t * @param riderId - The ID of the rider to check\n\t * @returns true if there are pending settlements, false otherwise\n\t */\n\tpublic async hasPendingRiderSettlements(riderId: mongoose.Types.ObjectId): Promise<boolean> {\n\t\tconst pendingSettlements = await this.model.find({\n\t\t\trider: riderId,\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\t\treturn pendingSettlements.length > 0;\n\t}\n\n\t/**\n\t * Get latest settlement info\n\t *\n\t * @param reference - The reference ID of the settlement to check\n\t * @returns the latest settlement if it exists, null otherwise\n\t */\n\tpublic async getLastSettlement(reference: string): Promise<ISettlementInfo | null> {\n\t\tconst pendingSettlements = await this.model\n\t\t\t.findOne({\n\t\t\t\tcrmNumber: reference,\n\t\t\t})\n\t\t\t.sort({ createdAt: -1 });\n\n\t\tif (!pendingSettlements) return null;\n\n\t\treturn {\n\t\t\tamount: pendingSettlements.amount || pendingSettlements.secondaryAmount || 0,\n\t\t\tcurrency: pendingSettlements.amount ? 'USD' : 'LBP',\n\t\t\treferenceNumber: pendingSettlements.crmNumber,\n\t\t\tstatus: (pendingSettlements.status ?? BobSettlementStatus.NOT_PAID) as unknown as ISettlementStatus,\n\t\t\tcreatedAt: pendingSettlements.createdAt ?? new Date(),\n\t\t\tupdatedAt: pendingSettlements.createdAt ?? new Date(),\n\t\t};\n\t}\n\n\t/**\n\t * Get latest settlement info\n\t *\n\t * @param riderId - The ID of the rider to check\n\t * @returns the latest settlement if it exists, null otherwise\n\t */\n\tpublic async getLastRiderSettlement(rider: mongoose.Types.ObjectId): Promise<ISettlementInfo | null> {\n\t\tconst lastSettlement = await this.model\n\t\t\t.findOne({\n\t\t\t\trider: rider,\n\t\t\t})\n\t\t\t.sort({ createdAt: -1 });\n\n\t\tif (!lastSettlement) return null;\n\n\t\treturn {\n\t\t\tamount: lastSettlement.amount || lastSettlement.secondaryAmount || 0,\n\t\t\tcurrency: lastSettlement.amount ? 'USD' : 'LBP',\n\t\t\treferenceNumber: lastSettlement.crmNumber,\n\t\t\tstatus: (lastSettlement.status ?? BobSettlementStatus.NOT_PAID) as unknown as ISettlementStatus,\n\t\t\tcreatedAt: lastSettlement.createdAt ?? new Date(),\n\t\t\tupdatedAt: lastSettlement.updatedAt ?? new Date(),\n\t\t};\n\t}\n\n\tprivate async getTransfers(timeframe: { startDate: Date; endDate: Date }) {\n\t\tconst DateTimeFrom = new Date(timeframe.startDate).toISOString().split('.')[0] + 'Z';\n\t\tconst DateTimeTo = new Date(timeframe.endDate).toISOString().split('.')[0] + 'Z';\n\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tDateTimeFrom,\n\t\t\tDateTimeTo,\n\t\t};\n\t\tconst { data } = await axios.post(`${this.BOB_URL}GetTransfers`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB getTransfers: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject) {\n\t\t\tconsole.error('Failed to get transfers in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to get transfers in BOB.',\n\t\t\t});\n\t\t}\n\n\t\treturn responseObject;\n\t}\n\n\tprivate async decompressResponse(response: string): Promise<any> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Step 1: Decode Base64\n\t\t\tconst decodedBuffer = Buffer.from(response, 'base64');\n\n\t\t\t// Step 2: Decompress GZIP\n\t\t\tzlib.gunzip(decodedBuffer, (err, decompressedBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error('Error decompressing GZIP:', err);\n\t\t\t\t\tthrow new TRPCError({\n\t\t\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\t\t\tmessage: 'Failed to decompress data from BOB API.',\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Step 3: Convert decompressed buffer to string\n\t\t\t\t\tconst decodedString = decompressedBuffer.toString('utf-8');\n\n\t\t\t\t\t// Step 4: Parse the JSON string to a JavaScript object\n\t\t\t\t\tconst responseObject = JSON.parse(decodedString);\n\n\t\t\t\t\tresolve(responseObject);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async hasUnpaidTransfer(crmNumber: string): Promise<Boolean> {\n\t\tconst bobData = {\n\t\t\tChannelType: BobChannelType.CO,\n\t\t\tCredentials: {\n\t\t\t\tUser: this.BOB_USER_NAME,\n\t\t\t\tPassword: this.BOB_PASSWORD,\n\t\t\t},\n\t\t\tModel: BobModel.C2B,\n\t\t\tCRMNumber: crmNumber,\n\t\t};\n\t\tconst { data } = await axios.post(`${this.BOB_URL}GetTransferStatus`, bobData, {\n\t\t\thttpsAgent: new https.Agent({ rejectUnauthorized: false }),\n\t\t});\n\n\t\tif (data.ErrorCode == 213) {\n\t\t\t// Record does not exist\n\t\t\treturn false;\n\t\t}\n\n\t\tif (data.ErrorCode != 100) {\n\t\t\tconsole.error(`Error in BOB getTransferStatus: ${data.ErrorDescription}`);\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to post data to BOB API.',\n\t\t\t});\n\t\t}\n\n\t\tconst responseObject = await this.decompressResponse(data.Response);\n\n\t\tif (!responseObject) {\n\t\t\tconsole.error('Failed to get settlement status in BOB');\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Failed to get settlement status in BOB.',\n\t\t\t});\n\t\t}\n\n\t\tconst hasUnpaidTransfer = responseObject.some(\n\t\t\t(item: any) => item.CRMNumber == crmNumber && item.Status == BOBTransferStatus.NOT_PAID\n\t\t);\n\n\t\treturn hasUnpaidTransfer;\n\t}\n\n\tpublic async checkAllPendingTransfers() {\n\t\tconst logger = getLibraries().getLoggerKit();\n\n\t\tlogger.info('Checking pending BOB settlements', { tag: LogTag.BOB_TRANSACTION_CHECK });\n\n\t\tconst notPaidSettlements = await this.model.find({\n\t\t\tstatus: BobSettlementStatus.NOT_PAID,\n\t\t});\n\n\t\tif (!notPaidSettlements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlogger.info('Checking pending settlements', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\tcount: notPaidSettlements.length,\n\t\t\t\tsettlementIds: notPaidSettlements.map(s => s._id.toString()),\n\t\t\t},\n\t\t});\n\n\t\tlet maxDate = dayjs();\n\t\tlet minDate = dayjs();\n\n\t\tconst createdAtDates = notPaidSettlements.map(item => dayjs(item.createdAt!));\n\n\t\tif (createdAtDates.length > 0) {\n\t\t\tmaxDate = dayjs.max(...createdAtDates)!;\n\t\t\tminDate = dayjs.min(...createdAtDates)!;\n\t\t}\n\n\t\tconst maxDatePlusOneDay = maxDate.add(1, 'day').toDate();\n\t\tconst minDateMinusOneDay = minDate.subtract(1, 'day').toDate();\n\n\t\tconst transfers = await this.getTransfers({\n\t\t\tstartDate: minDateMinusOneDay,\n\t\t\tendDate: maxDatePlusOneDay,\n\t\t});\n\n\t\tlogger.info('Transactions on BOB', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\tcount: transfers.length,\n\t\t\t\ttransfers,\n\t\t\t\tstartDate: minDateMinusOneDay,\n\t\t\t\tendDate: maxDatePlusOneDay,\n\t\t\t},\n\t\t});\n\n\t\tif (!transfers || transfers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transferStatusMap = new Map<string, string>();\n\n\t\tfor (const trx of transfers) {\n\t\t\ttransferStatusMap.set(trx.ReferenceNumber, trx.Status);\n\t\t}\n\n\t\tlogger.info('Mapped transfer statuses', {\n\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\tdata: {\n\t\t\t\ttransferStatusMap,\n\t\t\t},\n\t\t});\n\n\t\tawait Promise.all(\n\t\t\tnotPaidSettlements.map(async settlement => {\n\t\t\t\ttry {\n\t\t\t\t\tconst status = transferStatusMap.get(settlement.crmNumber);\n\n\t\t\t\t\tif (status == BOBTransferStatus.PAID) {\n\t\t\t\t\t\tawait this.settlePayment(settlement);\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.info(`Settled payment for crmNumber ${settlement.crmNumber}`, {\n\t\t\t\t\t\ttag: LogTag.BOB_TRANSACTION_CHECK,\n\t\t\t\t\t\tdata: { status },\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`Failed settlement with crmNumber ${settlement.crmNumber}, id: ${settlement._id}`,\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t{ tag: LogTag.BOB_TRANSACTION_CHECK }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n}\n"]}
|
|
@@ -19,5 +19,6 @@ export declare enum PublishEventEnums {
|
|
|
19
19
|
RIDER_SCORE_EVENT = "rider.score.calculate",
|
|
20
20
|
RIDER_ORDER_COMPLETED_EVENT = "rider_order_completed_event",
|
|
21
21
|
MARKETING_RETURN_PUNCH_COUPON_EVENT = "marketing_return_punch_coupon_event",
|
|
22
|
-
SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT = "sync_all_products_parent_sub_categories_event"
|
|
22
|
+
SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT = "sync_all_products_parent_sub_categories_event",
|
|
23
|
+
RIDER_CASH_EVENT = "rider_cash_event"
|
|
23
24
|
}
|
|
@@ -24,5 +24,6 @@ var PublishEventEnums;
|
|
|
24
24
|
PublishEventEnums["RIDER_ORDER_COMPLETED_EVENT"] = "rider_order_completed_event";
|
|
25
25
|
PublishEventEnums["MARKETING_RETURN_PUNCH_COUPON_EVENT"] = "marketing_return_punch_coupon_event";
|
|
26
26
|
PublishEventEnums["SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT"] = "sync_all_products_parent_sub_categories_event";
|
|
27
|
+
PublishEventEnums["RIDER_CASH_EVENT"] = "rider_cash_event";
|
|
27
28
|
})(PublishEventEnums || (exports.PublishEventEnums = PublishEventEnums = {}));
|
|
28
29
|
//# sourceMappingURL=EventEnums.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAuBX;AAvBD,WAAY,iBAAiB;IAC5B,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,wGAAmF,CAAA;IACnF,sHAAiG,CAAA;IACjG,oGAA+E,CAAA;IAC/E,sFAAiE,CAAA;IACjE,8FAAyE,CAAA;IACzE,sHAAiG,CAAA;IACjG,4GAAuF,CAAA;IACvF,kFAA6D,CAAA;IAC7D,0GAAqF,CAAA;IACrF,oGAA+E,CAAA;IAC/E,oHAA+F,CAAA;IAC/F,8HAAyG,CAAA;IACzG,8HAAyG,CAAA;IACzG,gEAA2C,CAAA;IAC3C,gFAA2D,CAAA;IAC3D,gGAA2E,CAAA;IAC3E,oHAA+F,CAAA;IAC/F,0DAAqC,CAAA;AACtC,CAAC,EAvBW,iBAAiB,iCAAjB,iBAAiB,QAuB5B","sourcesContent":["export enum PublishEventEnums {\n\tADMIN_ACTIVITY_LOGS_EVENT = 'admin_activity_logs_event',\n\tMESSAGE_RECEIVED_EVENT = 'message_received_event',\n\tTICKET_NOTIFICATION_EVENT = 'ticket_notification_event',\n\tCART_ITEM_UPSERT_EVENT = 'cart_item_upsert_event',\n\tSHOP_ACTIVE_TIMINGS_BATCH_PROCESS_EVENT = 'shop_active_timings_batch_process_event',\n\tMONGO_STREAM_CHANGES_BATCH_PROCESS_SHOPS_EVENT = 'mongo_stream_changes_batch_process_shops_event',\n\tBULK_UPDATE_SHOPS_SEARCH_FIELDS_EVENT = 'bulk_update_shops_search_fields_event',\n\tSOCKET_PUSH_NOTIFICATION_EVENT = 'socket_push_notification_event',\n\tBULK_UPDATE_SHOP_ZONE_STATUS_EVENT = 'bulk_update_shop_zone_status_event',\n\tSYNC_ALL_PRODUCTS_PRODUCT_MARKETING_INFO_EVENT = 'sync_all_products_product_marketing_info_event',\n\tSYNC_ALL_SHOPS_AVG_PREPARATION_TIME_EVENT = 'sync_all_shops_avg_preperation_time_event',\n\tSYNC_SINGLE_SHOP_CACHE_EVENT = 'sync_single_shop_cache_event',\n\tSYNC_SINGLE_SHOP_ORDER_AGAIN_CACHE_EVENT = 'sync_single_shop_order_again_cache_event',\n\tSYNC_SINGLE_SHOP_SECTIONS_CACHE_EVENT = 'sync_single_shop_sections_cache_event',\n\tSYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT = 'sync_all_customized_shop_sections_cache_event',\n\tSYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_all_users_punch_marketing_history_cache_event',\n\tSYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_user_shop_punch_marketing_history_cache_event',\n\tRIDER_SCORE_EVENT = 'rider.score.calculate',\n\tRIDER_ORDER_COMPLETED_EVENT = 'rider_order_completed_event',\n\tMARKETING_RETURN_PUNCH_COUPON_EVENT = 'marketing_return_punch_coupon_event',\n\tSYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT = 'sync_all_products_parent_sub_categories_event',\n\tRIDER_CASH_EVENT = 'rider_cash_event',\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RiderCashSettledEvent = exports.RiderCashAddedEvent = exports.RiderCashEvent = void 0;
|
|
4
|
+
var rider_cash_event_1 = require("./rider-cash-event");
|
|
5
|
+
Object.defineProperty(exports, "RiderCashEvent", { enumerable: true, get: function () { return rider_cash_event_1.RiderCashEvent; } });
|
|
6
|
+
var rider_cash_added_event_1 = require("./rider-cash-added.event");
|
|
7
|
+
Object.defineProperty(exports, "RiderCashAddedEvent", { enumerable: true, get: function () { return rider_cash_added_event_1.RiderCashAddedEvent; } });
|
|
8
|
+
var rider_cash_settled_event_1 = require("./rider-cash-settled.event");
|
|
9
|
+
Object.defineProperty(exports, "RiderCashSettledEvent", { enumerable: true, get: function () { return rider_cash_settled_event_1.RiderCashSettledEvent; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/rider/cash/index.ts"],"names":[],"mappings":";;;AAAA,uDAA2E;AAAlE,kHAAA,cAAc,OAAA;AACvB,mEAA2F;AAAlF,6HAAA,mBAAmB,OAAA;AAC5B,uEAAiG;AAAxF,iIAAA,qBAAqB,OAAA","sourcesContent":["export { RiderCashEvent, RiderCashEventPayload } from './rider-cash-event';\nexport { RiderCashAddedEvent, RiderCashAddedEventPayload } from './rider-cash-added.event';\nexport { RiderCashSettledEvent, RiderCashSettledEventPayload } from './rider-cash-settled.event';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Types } from 'mongoose';
|
|
2
|
+
import { RiderCashEventTag } from '../../../../../utilities/enum';
|
|
3
|
+
import { RiderCashEvent, RiderCashEventPayload } from './rider-cash-event';
|
|
4
|
+
export interface RiderCashAddedEventPayload extends RiderCashEventPayload {
|
|
5
|
+
tag: RiderCashEventTag.CASH_ADDED;
|
|
6
|
+
}
|
|
7
|
+
export declare class RiderCashAddedEvent extends RiderCashEvent<RiderCashAddedEventPayload> {
|
|
8
|
+
constructor(riderId: Types.ObjectId);
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RiderCashAddedEvent = void 0;
|
|
4
|
+
const enum_1 = require("../../../../../utilities/enum");
|
|
5
|
+
const rider_cash_event_1 = require("./rider-cash-event");
|
|
6
|
+
class RiderCashAddedEvent extends rider_cash_event_1.RiderCashEvent {
|
|
7
|
+
constructor(riderId) {
|
|
8
|
+
super({
|
|
9
|
+
tag: enum_1.RiderCashEventTag.CASH_ADDED,
|
|
10
|
+
riderId,
|
|
11
|
+
timestamp: new Date(),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.RiderCashAddedEvent = RiderCashAddedEvent;
|
|
16
|
+
//# sourceMappingURL=rider-cash-added.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rider-cash-added.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/cash/rider-cash-added.event.ts"],"names":[],"mappings":";;;AACA,wDAAkE;AAClE,yDAA2E;AAM3E,MAAa,mBAAoB,SAAQ,iCAA0C;IAClF,YAAY,OAAuB;QAClC,KAAK,CAAC;YACL,GAAG,EAAE,wBAAiB,CAAC,UAAU;YACjC,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC,CAAC;IACJ,CAAC;CACD;AARD,kDAQC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderCashEventTag } from '../../../../../utilities/enum';\nimport { RiderCashEvent, RiderCashEventPayload } from './rider-cash-event';\n\nexport interface RiderCashAddedEventPayload extends RiderCashEventPayload {\n\ttag: RiderCashEventTag.CASH_ADDED;\n}\n\nexport class RiderCashAddedEvent extends RiderCashEvent<RiderCashAddedEventPayload> {\n\tconstructor(riderId: Types.ObjectId) {\n\t\tsuper({\n\t\t\ttag: RiderCashEventTag.CASH_ADDED,\n\t\t\triderId,\n\t\t\ttimestamp: new Date(),\n\t\t});\n\t}\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Types } from 'mongoose';
|
|
2
|
+
import { RiderCashEventTag } from '../../../../../utilities/enum';
|
|
3
|
+
import { BaseEvent } from '../../../BaseEvent';
|
|
4
|
+
export interface RiderCashEventPayload {
|
|
5
|
+
tag: RiderCashEventTag;
|
|
6
|
+
riderId: Types.ObjectId;
|
|
7
|
+
timestamp: Date;
|
|
8
|
+
}
|
|
9
|
+
export declare abstract class RiderCashEvent<TPayload extends RiderCashEventPayload = RiderCashEventPayload> extends BaseEvent<TPayload> {
|
|
10
|
+
protected constructor(payload: TPayload);
|
|
11
|
+
get tag(): RiderCashEventTag;
|
|
12
|
+
get riderId(): Types.ObjectId;
|
|
13
|
+
get timestamp(): Date;
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RiderCashEvent = void 0;
|
|
4
|
+
const BaseEvent_1 = require("../../../BaseEvent");
|
|
5
|
+
const EventEnums_1 = require("../../../EventEnums");
|
|
6
|
+
class RiderCashEvent extends BaseEvent_1.BaseEvent {
|
|
7
|
+
constructor(payload) {
|
|
8
|
+
super(EventEnums_1.PublishEventEnums.RIDER_CASH_EVENT, payload);
|
|
9
|
+
}
|
|
10
|
+
get tag() {
|
|
11
|
+
return this.payload.tag;
|
|
12
|
+
}
|
|
13
|
+
get riderId() {
|
|
14
|
+
return this.payload.riderId;
|
|
15
|
+
}
|
|
16
|
+
get timestamp() {
|
|
17
|
+
return this.payload.timestamp;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.RiderCashEvent = RiderCashEvent;
|
|
21
|
+
//# sourceMappingURL=rider-cash-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rider-cash-event.js","sourceRoot":"/","sources":["libraries/event/events/rider/cash/rider-cash-event.ts"],"names":[],"mappings":";;;AAEA,kDAA+C;AAC/C,oDAAwD;AAQxD,MAAsB,cAEpB,SAAQ,qBAAmB;IAC5B,YAAsB,OAAiB;QACtC,KAAK,CAAC,8BAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,CAAC;CACD;AAlBD,wCAkBC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderCashEventTag } from '../../../../../utilities/enum';\nimport { BaseEvent } from '../../../BaseEvent';\nimport { PublishEventEnums } from '../../../EventEnums';\n\nexport interface RiderCashEventPayload {\n\ttag: RiderCashEventTag;\n\triderId: Types.ObjectId;\n\ttimestamp: Date;\n}\n\nexport abstract class RiderCashEvent<\n\tTPayload extends RiderCashEventPayload = RiderCashEventPayload,\n> extends BaseEvent<TPayload> {\n\tprotected constructor(payload: TPayload) {\n\t\tsuper(PublishEventEnums.RIDER_CASH_EVENT, payload);\n\t}\n\n\tget tag(): RiderCashEventTag {\n\t\treturn this.payload.tag;\n\t}\n\n\tget riderId(): Types.ObjectId {\n\t\treturn this.payload.riderId;\n\t}\n\n\tget timestamp(): Date {\n\t\treturn this.payload.timestamp;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Types } from 'mongoose';
|
|
2
|
+
import { RiderCashEventTag } from '../../../../../utilities/enum';
|
|
3
|
+
import { RiderCashEvent, RiderCashEventPayload } from './rider-cash-event';
|
|
4
|
+
export interface RiderCashSettledEventPayload extends RiderCashEventPayload {
|
|
5
|
+
tag: RiderCashEventTag.CASH_SETTLED;
|
|
6
|
+
}
|
|
7
|
+
export declare class RiderCashSettledEvent extends RiderCashEvent<RiderCashSettledEventPayload> {
|
|
8
|
+
constructor(riderId: Types.ObjectId);
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RiderCashSettledEvent = void 0;
|
|
4
|
+
const enum_1 = require("../../../../../utilities/enum");
|
|
5
|
+
const rider_cash_event_1 = require("./rider-cash-event");
|
|
6
|
+
class RiderCashSettledEvent extends rider_cash_event_1.RiderCashEvent {
|
|
7
|
+
constructor(riderId) {
|
|
8
|
+
super({
|
|
9
|
+
tag: enum_1.RiderCashEventTag.CASH_SETTLED,
|
|
10
|
+
riderId,
|
|
11
|
+
timestamp: new Date(),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.RiderCashSettledEvent = RiderCashSettledEvent;
|
|
16
|
+
//# sourceMappingURL=rider-cash-settled.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rider-cash-settled.event.js","sourceRoot":"/","sources":["libraries/event/events/rider/cash/rider-cash-settled.event.ts"],"names":[],"mappings":";;;AACA,wDAAkE;AAClE,yDAA2E;AAM3E,MAAa,qBAAsB,SAAQ,iCAA4C;IACtF,YAAY,OAAuB;QAClC,KAAK,CAAC;YACL,GAAG,EAAE,wBAAiB,CAAC,YAAY;YACnC,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC,CAAC;IACJ,CAAC;CACD;AARD,sDAQC","sourcesContent":["import { Types } from 'mongoose';\nimport { RiderCashEventTag } from '../../../../../utilities/enum';\nimport { RiderCashEvent, RiderCashEventPayload } from './rider-cash-event';\n\nexport interface RiderCashSettledEventPayload extends RiderCashEventPayload {\n\ttag: RiderCashEventTag.CASH_SETTLED;\n}\n\nexport class RiderCashSettledEvent extends RiderCashEvent<RiderCashSettledEventPayload> {\n\tconstructor(riderId: Types.ObjectId) {\n\t\tsuper({\n\t\t\ttag: RiderCashEventTag.CASH_SETTLED,\n\t\t\triderId,\n\t\t\ttimestamp: new Date(),\n\t\t});\n\t}\n}\n"]}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./scoring"), exports);
|
|
18
|
+
__exportStar(require("./cash"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/rider/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB","sourcesContent":["export * from \"./scoring\""]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/events/rider/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,yCAAsB","sourcesContent":["export * from \"./scoring\"\nexport * from \"./cash\""]}
|
|
@@ -3,7 +3,7 @@ import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';
|
|
|
3
3
|
import { GeoLocation } from './shared/geo-location.model';
|
|
4
4
|
import { Zone } from './zone.model';
|
|
5
5
|
import { Shop } from './shop.model';
|
|
6
|
-
import { CreatedBy, Language, LiveStatus, RiderBagSize, ShiftType, Status } from '../../../utilities/enum';
|
|
6
|
+
import { CreatedBy, Language, LiveStatus, RiderBagSize, RiderCashLimitReason, ShiftType, Status } from '../../../utilities/enum';
|
|
7
7
|
import { RiderEquipment } from './embedded/rider-equipment.model';
|
|
8
8
|
import { RiderReview } from './providers/rider-review.model';
|
|
9
9
|
import { RiderStatistics } from './embedded/rider-statistics';
|
|
@@ -53,6 +53,7 @@ export declare class Rider extends TimeStamps {
|
|
|
53
53
|
riderNationality?: string;
|
|
54
54
|
cashInHand?: CashInHand;
|
|
55
55
|
isCashSettlementLimitReached?: boolean;
|
|
56
|
+
cashLimitReason?: RiderCashLimitReason | null;
|
|
56
57
|
cashSettlementReference?: string;
|
|
57
58
|
firstActiveAt?: Date | null;
|
|
58
59
|
riderEquipments?: RiderEquipment[];
|
|
@@ -61,4 +62,8 @@ export declare class Rider extends TimeStamps {
|
|
|
61
62
|
proofOfResidence?: string;
|
|
62
63
|
receiveAllOrders?: boolean;
|
|
63
64
|
statistics: RiderStatistics;
|
|
65
|
+
useIndividualCashSettlementLimit?: boolean;
|
|
66
|
+
cashSettlementLimit?: number;
|
|
67
|
+
cashInHandHoldPeriodLimit?: Date | null;
|
|
68
|
+
ignoreCashInHandLimits?: boolean;
|
|
64
69
|
}
|
|
@@ -77,6 +77,7 @@ let Rider = class Rider extends defaultClasses_1.TimeStamps {
|
|
|
77
77
|
riderNationality;
|
|
78
78
|
cashInHand;
|
|
79
79
|
isCashSettlementLimitReached;
|
|
80
|
+
cashLimitReason;
|
|
80
81
|
cashSettlementReference;
|
|
81
82
|
firstActiveAt;
|
|
82
83
|
riderEquipments;
|
|
@@ -85,6 +86,10 @@ let Rider = class Rider extends defaultClasses_1.TimeStamps {
|
|
|
85
86
|
proofOfResidence;
|
|
86
87
|
receiveAllOrders;
|
|
87
88
|
statistics;
|
|
89
|
+
useIndividualCashSettlementLimit;
|
|
90
|
+
cashSettlementLimit;
|
|
91
|
+
cashInHandHoldPeriodLimit;
|
|
92
|
+
ignoreCashInHandLimits;
|
|
88
93
|
};
|
|
89
94
|
exports.Rider = Rider;
|
|
90
95
|
__decorate([
|
|
@@ -257,6 +262,10 @@ __decorate([
|
|
|
257
262
|
(0, typegoose_1.prop)({ type: Boolean, default: false }),
|
|
258
263
|
__metadata("design:type", Boolean)
|
|
259
264
|
], Rider.prototype, "isCashSettlementLimitReached", void 0);
|
|
265
|
+
__decorate([
|
|
266
|
+
(0, typegoose_1.prop)({ type: String, enum: enum_1.RiderCashLimitReason, default: null }),
|
|
267
|
+
__metadata("design:type", Object)
|
|
268
|
+
], Rider.prototype, "cashLimitReason", void 0);
|
|
260
269
|
__decorate([
|
|
261
270
|
(0, typegoose_1.prop)({ type: String }),
|
|
262
271
|
__metadata("design:type", String)
|
|
@@ -301,6 +310,22 @@ __decorate([
|
|
|
301
310
|
}),
|
|
302
311
|
__metadata("design:type", rider_statistics_1.RiderStatistics)
|
|
303
312
|
], Rider.prototype, "statistics", void 0);
|
|
313
|
+
__decorate([
|
|
314
|
+
(0, typegoose_1.prop)({ type: Boolean, default: false }),
|
|
315
|
+
__metadata("design:type", Boolean)
|
|
316
|
+
], Rider.prototype, "useIndividualCashSettlementLimit", void 0);
|
|
317
|
+
__decorate([
|
|
318
|
+
(0, typegoose_1.prop)({ type: Number, default: Infinity, min: 0 }),
|
|
319
|
+
__metadata("design:type", Number)
|
|
320
|
+
], Rider.prototype, "cashSettlementLimit", void 0);
|
|
321
|
+
__decorate([
|
|
322
|
+
(0, typegoose_1.prop)({ type: Date, default: null }),
|
|
323
|
+
__metadata("design:type", Object)
|
|
324
|
+
], Rider.prototype, "cashInHandHoldPeriodLimit", void 0);
|
|
325
|
+
__decorate([
|
|
326
|
+
(0, typegoose_1.prop)({ type: Boolean, default: false }),
|
|
327
|
+
__metadata("design:type", Boolean)
|
|
328
|
+
], Rider.prototype, "ignoreCashInHandLimits", void 0);
|
|
304
329
|
exports.Rider = Rider = __decorate([
|
|
305
330
|
(0, typegoose_1.pre)('save', async function (next) {
|
|
306
331
|
if (this.isModified('password')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rider.model.js","sourceRoot":"/","sources":["libraries/mongo/models/rider.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { index, modelOptions, pre, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { GeoLocation } from './shared/geo-location.model';\nimport { Zone } from './zone.model';\nimport { Shop } from './shop.model';\nimport {\n\tCounterType,\n\tCreatedBy,\n\tLanguage,\n\tLiveStatus,\n\tRiderBagSize,\n\tShiftType,\n\tStatus,\n} from '../../../utilities/enum';\nimport { RiderEquipment } from './embedded/rider-equipment.model';\nimport { Query } from 'mongoose';\nimport { hashPassword } from '../../../utilities/password';\nimport { RiderReview } from './providers/rider-review.model';\nimport { generateId } from '../../../utilities/id-generator';\nimport { CounterModel } from '.';\nimport { RiderStatistics } from './embedded/rider-statistics';\n\nexport class CashInHand {\n\t@prop({ type: Number, default: 0 })\n\tpublic amount?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryAmount?: number;\n}\n\n@pre<Rider>('save', async function (next) {\n\tif (this.isModified('password')) {\n\t\tthis.password = await hashPassword(this.password);\n\t}\n\tnext();\n})\n@pre<Query<any, Rider>>('findOneAndUpdate', async function (next) {\n\tconst update = this.getUpdate() as Record<string, any>;\n\tif (update?.password) {\n\t\tupdate.password = await hashPassword(update.password);\n\t\tthis.setUpdate(update);\n\t}\n\tnext();\n})\n@pre<Rider>('save', async function () {\n\tif (this.isNew) {\n\t\tthis.riderId = await generateId(CounterModel, CounterType.RIDER);\n\t}\n})\n@modelOptions({ schemaOptions: { collection: 'riders', timestamps: true } })\n@index({ location: '2dsphere' })\n@index({ status: 1, createdAt: 1, location: 1 }, { partialFilterExpression: { deletedAt: null } })\nexport class Rider extends TimeStamps {\n\t@prop({ type: String, required: true })\n\tpublic name!: string;\n\n\t@prop({ type: String, unique: true })\n\tpublic riderId: string;\n\n\t@prop({ type: String })\n\tpublic image?: string;\n\n\t@prop({ type: String, required: true })\n\tpublic email!: string;\n\n\t@prop({ type: String })\n\tpublic password!: string;\n\n\t@prop({ type: String })\n\tpublic countryCode?: string;\n\n\t@prop({ type: String, enum: Language, default: Language.EN })\n\tpublic language?: Language;\n\n\t@prop({ type: String })\n\tpublic number?: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status?: Status;\n\n\t@prop({ type: Date })\n\tpublic dob?: Date;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalOrder?: number;\n\n\t@prop({ type: String, enum: LiveStatus, default: LiveStatus.OFFLINE })\n\tpublic liveStatus?: LiveStatus;\n\n\t@prop({ type: () => String })\n\tpublic fcmToken?: string;\n\n\t@prop({ type: Date })\n\tpublic lastLogin?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastOnline?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastActive?: Date;\n\n\t@prop({ type: String })\n\tpublic nationalIdDocument?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleRegistrationDocument?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleType?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleNumber?: string;\n\n\t@prop({ type: String })\n\tpublic address?: string;\n\n\t@prop({ type: GeoLocation })\n\tpublic location?: GeoLocation;\n\n\t@prop({ type: String })\n\tpublic forgetToken?: string;\n\n\t@prop({ type: Date })\n\tpublic forgetExpired?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastLocationUpdateAt?: Date;\n\n\t@prop({ type: String })\n\tpublic contractImage?: string;\n\n\t@prop({ type: String, enum: CreatedBy, default: CreatedBy.ADMIN })\n\tpublic createdBy?: CreatedBy;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLogin?: boolean;\n\n\t@prop({ type: String })\n\tpublic lastLoginDeviceId?: string;\n\n\t@prop({ type: () => [String], ref: () => RiderReview, default: [] })\n\tpublic reviews?: Ref<RiderReview>[];\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgRating?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic ratingCount?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic sumRatings?: number;\n\n\t@prop({ type: [String], enum: ShiftType, default: [] })\n\tpublic shifts?: ShiftType[];\n\n\t@prop({ type: Boolean, default: false })\n\tpublic fullTimeEmployee: boolean;\n\n\t@prop({ ref: () => Zone })\n\tpublic zone?: Ref<Zone>;\n\n\t@prop({ type: String, enum: RiderBagSize, default: RiderBagSize.REGULAR })\n\tpublic bagSize?: RiderBagSize;\n\n\t@prop({ type: String, ref: () => Shop })\n\tpublic shop?: Ref<Shop>;\n\n\t@prop({ type: String })\n\tpublic riderNationality?: string;\n\n\t@prop({\n\t\ttype: CashInHand,\n\t\tdefault: () => ({\n\t\t\tamount: 0,\n\t\t\tsecondaryAmount: 0,\n\t\t}),\n\t})\n\tpublic cashInHand?: CashInHand;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isCashSettlementLimitReached?: boolean;\n\n\t@prop({ type: String })\n\tpublic cashSettlementReference?: string;\n\n\t@prop({ type: Date, default: null })\n\tpublic firstActiveAt?: Date | null;\n\n\t@prop({ type: () => [RiderEquipment], default: [] })\n\tpublic riderEquipments?: RiderEquipment[];\n\n\t@prop({ type: String })\n\tpublic insurance?: string;\n\n\t@prop({ type: String })\n\tpublic powerOfAttorney?: string;\n\n\t@prop({ type: String })\n\tpublic proofOfResidence?: string;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic receiveAllOrders?: boolean;\n\n\t@prop({\n\t\ttype: () => RiderStatistics,\n\t\tdefault: () => ({\n\t\t\tperformanceScore: 0,\n\t\t\treceivedOrders: 0,\n\t\t\tacceptedOrders: 0,\n\t\t\tacceptanceRate: 0,\n\t\t\tavgPickupScore: 0,\n\t\t\tavgDeliveryScore: 0,\n\t\t\tlastCalculatedAt: null,\n\t\t}),\n\t\t_id: false,\n\t})\n\tpublic statistics!: RiderStatistics;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rider.model.js","sourceRoot":"/","sources":["libraries/mongo/models/rider.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { index, modelOptions, pre, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { GeoLocation } from './shared/geo-location.model';\nimport { Zone } from './zone.model';\nimport { Shop } from './shop.model';\nimport {\n\tCounterType,\n\tCreatedBy,\n\tLanguage,\n\tLiveStatus,\n\tRiderBagSize,\n\tRiderCashLimitReason,\n\tShiftType,\n\tStatus,\n} from '../../../utilities/enum';\nimport { RiderEquipment } from './embedded/rider-equipment.model';\nimport { Query } from 'mongoose';\nimport { hashPassword } from '../../../utilities/password';\nimport { RiderReview } from './providers/rider-review.model';\nimport { generateId } from '../../../utilities/id-generator';\nimport { CounterModel } from '.';\nimport { RiderStatistics } from './embedded/rider-statistics';\n\nexport class CashInHand {\n\t@prop({ type: Number, default: 0 })\n\tpublic amount?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic secondaryAmount?: number;\n}\n\n@pre<Rider>('save', async function (next) {\n\tif (this.isModified('password')) {\n\t\tthis.password = await hashPassword(this.password);\n\t}\n\tnext();\n})\n@pre<Query<any, Rider>>('findOneAndUpdate', async function (next) {\n\tconst update = this.getUpdate() as Record<string, any>;\n\tif (update?.password) {\n\t\tupdate.password = await hashPassword(update.password);\n\t\tthis.setUpdate(update);\n\t}\n\tnext();\n})\n@pre<Rider>('save', async function () {\n\tif (this.isNew) {\n\t\tthis.riderId = await generateId(CounterModel, CounterType.RIDER);\n\t}\n})\n@modelOptions({ schemaOptions: { collection: 'riders', timestamps: true } })\n@index({ location: '2dsphere' })\n@index({ status: 1, createdAt: 1, location: 1 }, { partialFilterExpression: { deletedAt: null } })\nexport class Rider extends TimeStamps {\n\t@prop({ type: String, required: true })\n\tpublic name!: string;\n\n\t@prop({ type: String, unique: true })\n\tpublic riderId: string;\n\n\t@prop({ type: String })\n\tpublic image?: string;\n\n\t@prop({ type: String, required: true })\n\tpublic email!: string;\n\n\t@prop({ type: String })\n\tpublic password!: string;\n\n\t@prop({ type: String })\n\tpublic countryCode?: string;\n\n\t@prop({ type: String, enum: Language, default: Language.EN })\n\tpublic language?: Language;\n\n\t@prop({ type: String })\n\tpublic number?: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status?: Status;\n\n\t@prop({ type: Date })\n\tpublic dob?: Date;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalOrder?: number;\n\n\t@prop({ type: String, enum: LiveStatus, default: LiveStatus.OFFLINE })\n\tpublic liveStatus?: LiveStatus;\n\n\t@prop({ type: () => String })\n\tpublic fcmToken?: string;\n\n\t@prop({ type: Date })\n\tpublic lastLogin?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastOnline?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastActive?: Date;\n\n\t@prop({ type: String })\n\tpublic nationalIdDocument?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleRegistrationDocument?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleType?: string;\n\n\t@prop({ type: String })\n\tpublic vehicleNumber?: string;\n\n\t@prop({ type: String })\n\tpublic address?: string;\n\n\t@prop({ type: GeoLocation })\n\tpublic location?: GeoLocation;\n\n\t@prop({ type: String })\n\tpublic forgetToken?: string;\n\n\t@prop({ type: Date })\n\tpublic forgetExpired?: Date;\n\n\t@prop({ type: Date })\n\tpublic lastLocationUpdateAt?: Date;\n\n\t@prop({ type: String })\n\tpublic contractImage?: string;\n\n\t@prop({ type: String, enum: CreatedBy, default: CreatedBy.ADMIN })\n\tpublic createdBy?: CreatedBy;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLogin?: boolean;\n\n\t@prop({ type: String })\n\tpublic lastLoginDeviceId?: string;\n\n\t@prop({ type: () => [String], ref: () => RiderReview, default: [] })\n\tpublic reviews?: Ref<RiderReview>[];\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgRating?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic ratingCount?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic sumRatings?: number;\n\n\t@prop({ type: [String], enum: ShiftType, default: [] })\n\tpublic shifts?: ShiftType[];\n\n\t@prop({ type: Boolean, default: false })\n\tpublic fullTimeEmployee: boolean;\n\n\t@prop({ ref: () => Zone })\n\tpublic zone?: Ref<Zone>;\n\n\t@prop({ type: String, enum: RiderBagSize, default: RiderBagSize.REGULAR })\n\tpublic bagSize?: RiderBagSize;\n\n\t@prop({ type: String, ref: () => Shop })\n\tpublic shop?: Ref<Shop>;\n\n\t@prop({ type: String })\n\tpublic riderNationality?: string;\n\n\t@prop({\n\t\ttype: CashInHand,\n\t\tdefault: () => ({\n\t\t\tamount: 0,\n\t\t\tsecondaryAmount: 0,\n\t\t}),\n\t})\n\tpublic cashInHand?: CashInHand;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isCashSettlementLimitReached?: boolean;\n\n\t@prop({ type: String, enum: RiderCashLimitReason, default: null })\n\tpublic cashLimitReason?: RiderCashLimitReason | null;\n\n\t@prop({ type: String })\n\tpublic cashSettlementReference?: string;\n\n\t@prop({ type: Date, default: null })\n\tpublic firstActiveAt?: Date | null;\n\n\t@prop({ type: () => [RiderEquipment], default: [] })\n\tpublic riderEquipments?: RiderEquipment[];\n\n\t@prop({ type: String })\n\tpublic insurance?: string;\n\n\t@prop({ type: String })\n\tpublic powerOfAttorney?: string;\n\n\t@prop({ type: String })\n\tpublic proofOfResidence?: string;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic receiveAllOrders?: boolean;\n\n\t@prop({\n\t\ttype: () => RiderStatistics,\n\t\tdefault: () => ({\n\t\t\tperformanceScore: 0,\n\t\t\treceivedOrders: 0,\n\t\t\tacceptedOrders: 0,\n\t\t\tacceptanceRate: 0,\n\t\t\tavgPickupScore: 0,\n\t\t\tavgDeliveryScore: 0,\n\t\t\tlastCalculatedAt: null,\n\t\t}),\n\t\t_id: false,\n\t})\n\tpublic statistics!: RiderStatistics;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic useIndividualCashSettlementLimit?: boolean;\n\n\t@prop({ type: Number, default: Infinity, min: 0 })\n\tpublic cashSettlementLimit?: number;\n\n\t@prop({ type: Date, default: null })\n\tpublic cashInHandHoldPeriodLimit?: Date | null;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic ignoreCashInHandLimits?: boolean;\n}\n"]}
|
|
@@ -5,9 +5,9 @@ interface AuthOptions {
|
|
|
5
5
|
autoRefresh?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare function createAuthenticatedProcedure(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
8
|
+
req: import("http").IncomingMessage;
|
|
8
9
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
9
10
|
tokenType: TokenType | undefined;
|
|
10
|
-
req: import("http").IncomingMessage;
|
|
11
11
|
requestId: string | undefined;
|
|
12
12
|
entity: import("../context").EntityContext | undefined;
|
|
13
13
|
usedRefreshToken: boolean | undefined;
|
|
@@ -4,9 +4,9 @@ interface RoleProtectedOptions {
|
|
|
4
4
|
allowedRoles: string[];
|
|
5
5
|
}
|
|
6
6
|
export declare function createRoleProtectedProcedure(options: RoleProtectedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
7
|
+
req: import("http").IncomingMessage;
|
|
7
8
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
8
9
|
tokenType: import("../../auth").TokenType | undefined;
|
|
9
|
-
req: import("http").IncomingMessage;
|
|
10
10
|
requestId: string | undefined;
|
|
11
11
|
entity: import("../context").EntityContext | undefined;
|
|
12
12
|
usedRefreshToken: boolean | undefined;
|
|
@@ -3,9 +3,9 @@ interface PhoneVerifiedOptions {
|
|
|
3
3
|
entityTypes: AuthEntityType[];
|
|
4
4
|
}
|
|
5
5
|
export declare function createPhoneVerifiedProcedure(options: PhoneVerifiedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
6
|
+
req: import("http").IncomingMessage;
|
|
6
7
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
7
8
|
tokenType: import("../../auth").TokenType | undefined;
|
|
8
|
-
req: import("http").IncomingMessage;
|
|
9
9
|
requestId: string | undefined;
|
|
10
10
|
entity: import("../context").EntityContext | undefined;
|
|
11
11
|
usedRefreshToken: boolean | undefined;
|
|
@@ -5,9 +5,9 @@ interface AuthOptions {
|
|
|
5
5
|
autoRefresh?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare function publicUserDecoder(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
8
|
+
req: import("http").IncomingMessage;
|
|
8
9
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
9
10
|
tokenType: TokenType | undefined;
|
|
10
|
-
req: import("http").IncomingMessage;
|
|
11
11
|
requestId: string | undefined;
|
|
12
12
|
entity: import("../context").EntityContext | undefined;
|
|
13
13
|
usedRefreshToken: boolean | undefined;
|