From fc47e32747c6a6a0f88c4ec68850b09b3fbc5378 Mon Sep 17 00:00:00 2001 From: PeterSmallenbroek Date: Wed, 29 Jan 2025 18:34:34 +0100 Subject: [PATCH 1/3] fix: rename endpoint & check for array --- ...solve-voucher-reconciliation.controller.ts | 2 +- ...tersolve-voucher-reconciliation.service.ts | 22 +- services/121-service/swagger.json | 342 ++++-------------- 3 files changed, 87 insertions(+), 279 deletions(-) diff --git a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts index 8c79bfe3a6..3616078652 100644 --- a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts +++ b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts @@ -55,7 +55,7 @@ export class IntersolveVoucherReconciliationController { status: HttpStatus.CREATED, description: 'Cached unused vouchers', }) - @Patch('/financial-service-providers/intersolve-voucher/vouchers') + @Patch('/financial-service-providers/intersolve-voucher/unused-vouchers') public async cronRetrieveAndUpdatedUnusedIntersolveVouchers(): Promise { console.info( 'CronjobService - Started: cronRetrieveAndUpdatedUnusedIntersolveVouchers', diff --git a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service.ts b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service.ts index 92d07b311e..6fdf66e514 100644 --- a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service.ts +++ b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service.ts @@ -112,16 +112,18 @@ export class IntersolveVoucherReconciliationService { programId, }) .getMany(); - const credentials = - await this.programFspConfigurationRepository.getUsernamePasswordPropertiesByVoucherId( - previouslyUnusedVouchers[0].id, - ); - for await (const voucher of previouslyUnusedVouchers) { - await this.intersolveVoucherService.getAndUpdateBalance( - voucher, - programId, - credentials, - ); + if (previouslyUnusedVouchers.length) { + const credentials = + await this.programFspConfigurationRepository.getUsernamePasswordPropertiesByVoucherId( + previouslyUnusedVouchers[0].id, + ); + for await (const voucher of previouslyUnusedVouchers) { + await this.intersolveVoucherService.getAndUpdateBalance( + voucher, + programId, + credentials, + ); + } } id += 1000; } diff --git a/services/121-service/swagger.json b/services/121-service/swagger.json index f275b776bb..b4b3e26b81 100644 --- a/services/121-service/swagger.json +++ b/services/121-service/swagger.json @@ -33,17 +33,13 @@ { "method": "put", "path": "/api/roles/{userRoleId}", - "params": [ - "userRoleId" - ], + "params": ["userRoleId"], "returnType": "UserRoleResponseDTO" }, { "method": "delete", "path": "/api/roles/{userRoleId}", - "params": [ - "userRoleId" - ], + "params": ["userRoleId"], "returnType": "UserRoleResponseDTO" }, { @@ -80,17 +76,13 @@ { "method": "delete", "path": "/api/users/{userId}", - "params": [ - "userId" - ], + "params": ["userId"], "returnType": "UserEntity" }, { "method": "patch", "path": "/api/users/{userId}", - "params": [ - "userId" - ] + "params": ["userId"] }, { "method": "get", @@ -100,53 +92,36 @@ { "method": "get", "path": "/api/programs/{programId}/users/search", - "params": [ - "programId", - "username" - ] + "params": ["programId", "username"] }, { "method": "get", "path": "/api/programs/{programId}/users/{userId}", - "params": [ - "programId", - "userId" - ], + "params": ["programId", "userId"], "returnType": "AssignmentResponseDTO" }, { "method": "put", "path": "/api/programs/{programId}/users/{userId}", - "params": [ - "programId", - "userId" - ], + "params": ["programId", "userId"], "returnType": "AssignmentResponseDTO" }, { "method": "patch", "path": "/api/programs/{programId}/users/{userId}", - "params": [ - "programId", - "userId" - ], + "params": ["programId", "userId"], "returnType": "AssignmentResponseDTO" }, { "method": "delete", "path": "/api/programs/{programId}/users/{userId}", - "params": [ - "programId", - "userId" - ], + "params": ["programId", "userId"], "returnType": "AssignmentResponseDTO" }, { "method": "get", "path": "/api/programs/{programId}/users", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", @@ -164,9 +139,7 @@ { "method": "post", "path": "/api/scripts/duplicate-registrations", - "params": [ - "mockPowerNumberRegistrations" - ] + "params": ["mockPowerNumberRegistrations"] }, { "method": "post", @@ -176,93 +149,62 @@ { "method": "get", "path": "/api/notifications/{programId}/message-templates", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/notifications/{programId}/message-templates", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", "path": "/api/notifications/{programId}/message-templates/{type}/{language}", - "params": [ - "language", - "type", - "programId" - ], + "params": ["language", "type", "programId"], "returnType": "MessageTemplateEntity" }, { "method": "delete", "path": "/api/notifications/{programId}/message-templates/{type}", - "params": [ - "language", - "type", - "programId" - ], + "params": ["language", "type", "programId"], "returnType": "DeleteResult" }, { "method": "get", "path": "/api/programs/{programId}", - "params": [ - "programId", - "formatProgramReturnDto" - ] + "params": ["programId", "formatProgramReturnDto"] }, { "method": "delete", "path": "/api/programs/{programId}", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", "path": "/api/programs/{programId}", - "params": [ - "programId" - ], + "params": ["programId"], "returnType": "ProgramReturnDto" }, { "method": "post", "path": "/api/programs", - "params": [ - "importFromKobo", - "koboToken", - "koboAssetId" - ], + "params": ["importFromKobo", "koboToken", "koboAssetId"], "returnType": "ProgramEntity" }, { "method": "post", "path": "/api/programs/{programId}/registration-attributes", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", "path": "/api/programs/{programId}/registration-attributes/{programRegistrationAttributeName}", - "params": [ - "programId", - "programRegistrationAttributeName" - ], + "params": ["programId", "programRegistrationAttributeName"], "returnType": "ProgramRegistrationAttributeEntity" }, { "method": "delete", "path": "/api/programs/{programId}/registration-attributes/{programRegistrationAttributeId}", - "params": [ - "programId", - "programRegistrationAttributeId" - ] + "params": ["programId", "programRegistrationAttributeId"] }, { "method": "get", @@ -277,25 +219,18 @@ { "method": "get", "path": "/api/programs/{programId}/financial-service-providers/intersolve-visa/funding-wallet", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", "path": "/api/programs/{programId}/actions", - "params": [ - "programId", - "actionType" - ], + "params": ["programId", "actionType"], "returnType": "ActionReturnDto" }, { "method": "post", "path": "/api/programs/{programId}/actions", - "params": [ - "programId" - ], + "params": ["programId"], "returnType": "ActionReturnDto" }, { @@ -307,66 +242,43 @@ { "method": "get", "path": "/api/financial-service-providers/{financialServiceProviderName}", - "params": [ - "financialServiceProviderName" - ], + "params": ["financialServiceProviderName"], "returnType": "FinancialServiceProviderDto" }, { "method": "get", "path": "/api/programs/{programId}/financial-service-provider-configurations", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/programs/{programId}/financial-service-provider-configurations", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", "path": "/api/programs/{programId}/financial-service-provider-configurations/{name}", - "params": [ - "programId", - "name" - ] + "params": ["programId", "name"] }, { "method": "delete", "path": "/api/programs/{programId}/financial-service-provider-configurations/{name}", - "params": [ - "programId", - "name" - ] + "params": ["programId", "name"] }, { "method": "post", "path": "/api/programs/{programId}/financial-service-provider-configurations/{name}/properties", - "params": [ - "programId", - "name" - ] + "params": ["programId", "name"] }, { "method": "patch", "path": "/api/programs/{programId}/financial-service-provider-configurations/{name}/properties/{propertyName}", - "params": [ - "programId", - "name", - "propertyName" - ] + "params": ["programId", "name", "propertyName"] }, { "method": "delete", "path": "/api/programs/{programId}/financial-service-provider-configurations/{name}/properties/{propertyName}", - "params": [ - "programId", - "name", - "propertyName" - ] + "params": ["programId", "name", "propertyName"] }, { "method": "get", @@ -392,48 +304,32 @@ { "method": "get", "path": "/api/notifications/whatsapp/templates/{sessionId}", - "params": [ - "sessionId" - ] + "params": ["sessionId"] }, { "method": "get", "path": "/api/notifications/imageCode/{secret}", - "params": [ - "secret" - ] + "params": ["secret"] }, { "method": "get", "path": "/api/programs/{programId}/financial-service-providers/intersolve-voucher/vouchers", - "params": [ - "programId", - "referenceId", - "payment" - ] + "params": ["programId", "referenceId", "payment"] }, { "method": "get", "path": "/api/programs/{programId}/financial-service-providers/intersolve-voucher/vouchers/balance", - "params": [ - "programId", - "referenceId", - "payment" - ] + "params": ["programId", "referenceId", "payment"] }, { "method": "get", "path": "/api/programs/{programId}/financial-service-providers/intersolve-voucher/instructions", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/programs/{programId}/financial-service-providers/intersolve-voucher/instructions", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", @@ -448,30 +344,17 @@ { "method": "get", "path": "/api/programs/{programId}/transactions", - "params": [ - "programId", - "referenceId", - "payment" - ] + "params": ["programId", "referenceId", "payment"] }, { "method": "get", "path": "/api/programs/{programId}/events", - "params": [ - "programId", - "format", - "toDate", - "fromDate", - "referenceId" - ] + "params": ["programId", "format", "toDate", "fromDate", "referenceId"] }, { "method": "get", "path": "/api/programs/{programId}/registrations/{registrationId}/events", - "params": [ - "registrationId", - "programId" - ] + "params": ["registrationId", "programId"] }, { "method": "get", @@ -520,37 +403,27 @@ { "method": "get", "path": "/api/programs/{programId}/metrics/payment-state-sums", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", "path": "/api/programs/{programId}/metrics/program-stats-summary", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", "path": "/api/programs/{programId}/metrics/registration-status", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/programs/{programId}/registrations/import", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/programs/{programId}/registrations", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", @@ -588,9 +461,7 @@ { "method": "patch", "path": "/api/programs/{programId}/registrations", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "delete", @@ -630,9 +501,7 @@ { "method": "get", "path": "/api/programs/{programId}/registrations/import/template", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", @@ -672,17 +541,12 @@ { "method": "patch", "path": "/api/programs/{programId}/registrations/{referenceId}", - "params": [ - "programId", - "referenceId" - ] + "params": ["programId", "referenceId"] }, { "method": "get", "path": "/api/registrations", - "params": [ - "phonenumber" - ] + "params": ["phonenumber"] }, { "method": "post", @@ -722,77 +586,49 @@ { "method": "get", "path": "/api/programs/{programId}/registrations/{referenceId}/messages", - "params": [ - "referenceId", - "programId" - ] + "params": ["referenceId", "programId"] }, { "method": "get", "path": "/api/programs/{programId}/registrations/referenceid/{paId}", - "params": [ - "paId", - "programId" - ] + "params": ["paId", "programId"] }, { "method": "post", "path": "/api/programs/{programId}/registrations/{referenceId}/financial-service-providers/intersolve-visa/wallet/cards", - "params": [ - "programId", - "referenceId" - ] + "params": ["programId", "referenceId"] }, { "method": "patch", "path": "/api/programs/{programId}/registrations/{referenceId}/financial-service-providers/intersolve-visa/wallet/cards/{tokenCode}", - "params": [ - "programId", - "referenceId", - "tokenCode", - "pause" - ] + "params": ["programId", "referenceId", "tokenCode", "pause"] }, { "method": "patch", "path": "/api/programs/{programId}/registrations/{referenceId}/financial-service-providers/intersolve-visa/wallet", - "params": [ - "referenceId", - "programId" - ], + "params": ["referenceId", "programId"], "returnType": "IntersolveVisaWalletDto" }, { "method": "get", "path": "/api/programs/{programId}/registrations/{referenceId}/financial-service-providers/intersolve-visa/wallet", - "params": [ - "referenceId", - "programId" - ], + "params": ["referenceId", "programId"], "returnType": "IntersolveVisaWalletDto" }, { "method": "post", "path": "/api/programs/{programId}/registrations/{referenceId}/financial-service-providers/intersolve-visa/contact-information", - "params": [ - "programId", - "referenceId" - ] + "params": ["programId", "referenceId"] }, { "method": "get", "path": "/api/programs/{programId}/registrations/{id}", - "params": [ - "programId", - "id" - ] + "params": ["programId", "id"] }, { "method": "get", "path": "/api/programs/{programId}/payments", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", @@ -832,48 +668,34 @@ { "method": "patch", "path": "/api/programs/{programId}/payments", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", "path": "/api/programs/{programId}/payments/status", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "get", "path": "/api/programs/{programId}/payments/{payment}", - "params": [ - "payment", - "programId" - ], + "params": ["payment", "programId"], "returnType": "PaymentReturnDto" }, { "method": "get", "path": "/api/programs/{programId}/payments/{payment}/fsp-instructions", - "params": [ - "programId", - "payment" - ] + "params": ["programId", "payment"] }, { "method": "get", "path": "/api/programs/{programId}/financial-service-providers/commercial-bank-ethiopia/account-enquiries", - "params": [ - "programId" - ], + "params": ["programId"], "returnType": "CommercialBankEthiopiaValidationReportDto" }, { "method": "put", "path": "/api/programs/{programId}/financial-service-providers/commercial-bank-ethiopia/account-enquiries", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", @@ -893,26 +715,17 @@ { "method": "post", "path": "/api/programs/{programId}/registrations/{referenceId}/notes", - "params": [ - "programId", - "referenceId" - ] + "params": ["programId", "referenceId"] }, { "method": "get", "path": "/api/programs/{programId}/registrations/{referenceId}/notes", - "params": [ - "programId", - "referenceId" - ] + "params": ["programId", "referenceId"] }, { "method": "get", "path": "/api/programs/{programId}/registrations/{registrationId}/activities", - "params": [ - "programId", - "registrationId" - ] + "params": ["programId", "registrationId"] }, { "method": "put", @@ -922,17 +735,12 @@ { "method": "get", "path": "/api/programs/{programId}/payments/excel-reconciliation/template", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "post", "path": "/api/programs/{programId}/payments/{payment}/excel-reconciliation", - "params": [ - "programId", - "payment" - ] + "params": ["programId", "payment"] }, { "method": "patch", @@ -942,13 +750,11 @@ { "method": "patch", "path": "/api/programs/{programId}/financial-service-providers/intersolve-voucher/all", - "params": [ - "programId" - ] + "params": ["programId"] }, { "method": "patch", - "path": "/api/financial-service-providers/intersolve-voucher/vouchers", + "path": "/api/financial-service-providers/intersolve-voucher/unused-vouchers", "params": [] }, { @@ -961,4 +767,4 @@ "path": "/api/financial-service-providers/safaricom/timeout-callback", "params": [] } -] \ No newline at end of file +] From 9407cf4778e4924535a9bdf86cd46a0085c77816 Mon Sep 17 00:00:00 2001 From: PeterSmallenbroek Date: Thu, 30 Jan 2025 10:25:56 +0100 Subject: [PATCH 2/3] fix --- .../intersolve-voucher-reconciliation.controller.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts index 3616078652..0e415c11ed 100644 --- a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts +++ b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.controller.ts @@ -13,6 +13,7 @@ import { AuthenticatedUser } from '@121-service/src/guards/authenticated-user.de import { AuthenticatedUserGuard } from '@121-service/src/guards/authenticated-user.guard'; import { IntersolveVoucherJobDetails } from '@121-service/src/payments/fsp-integration/intersolve-voucher/dto/job-details.dto'; import { IntersolveVoucherReconciliationService } from '@121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service'; +import { AzureLogService } from '@121-service/src/shared/services/azure-log.service'; @UseGuards(AuthenticatedUserGuard) @ApiTags('financial-service-providers/intersolve-voucher') @@ -20,6 +21,7 @@ import { IntersolveVoucherReconciliationService } from '@121-service/src/payment export class IntersolveVoucherReconciliationController { public constructor( private intersolveVoucherReconciliationService: IntersolveVoucherReconciliationService, + private azureLogService: AzureLogService, ) {} //TODO: mention this in WORKFLOWS? @@ -69,9 +71,7 @@ export class IntersolveVoucherReconciliationController { return; }) .catch((error) => { - throw new Error( - `CronjobService - Failed: cronRetrieveAndUpdatedUnusedIntersolveVouchers - ${error}`, - ); + this.azureLogService.logError(error, true); }); } } From 16ed5789569851a49d1849d6baa3d6ee298c70a2 Mon Sep 17 00:00:00 2001 From: PeterSmallenbroek Date: Thu, 30 Jan 2025 10:36:00 +0100 Subject: [PATCH 3/3] fix --- .../intersolve-voucher-reconciliation.module.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.module.ts b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.module.ts index b2c416f200..02a1355cd7 100644 --- a/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.module.ts +++ b/services/121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.module.ts @@ -7,6 +7,7 @@ import { IntersolveVoucherReconciliationController } from '@121-service/src/paym import { IntersolveVoucherReconciliationService } from '@121-service/src/payments/reconciliation/intersolve-voucher-reconciliation/intersolve-voucher-reconciliation.service'; import { ProgramFinancialServiceProviderConfigurationsModule } from '@121-service/src/program-financial-service-provider-configurations/program-financial-service-provider-configurations.module'; import { ProgramModule } from '@121-service/src/programs/programs.module'; +import { AzureLogService } from '@121-service/src/shared/services/azure-log.service'; import { createScopedRepositoryProvider } from '@121-service/src/utils/scope/createScopedRepositoryProvider.helper'; @Module({ @@ -19,6 +20,7 @@ import { createScopedRepositoryProvider } from '@121-service/src/utils/scope/cre providers: [ IntersolveVoucherReconciliationService, createScopedRepositoryProvider(IntersolveVoucherEntity), + AzureLogService, ], controllers: [IntersolveVoucherReconciliationController], })