From 7425e2ea3b8a227acceef79cb3c32b1db6dbf214 Mon Sep 17 00:00:00 2001 From: Kallesh B S Date: Mon, 4 Aug 2025 18:10:36 +0530 Subject: [PATCH] added new api in carnet app --- .../carnet-application.controller.ts | 10 +++ .../carnet-application.service.ts | 84 +++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/src/oracle/carnet-application/carnet-application.controller.ts b/src/oracle/carnet-application/carnet-application.controller.ts index c18c393..a7c93e1 100644 --- a/src/oracle/carnet-application/carnet-application.controller.ts +++ b/src/oracle/carnet-application/carnet-application.controller.ts @@ -113,6 +113,16 @@ export class CarnetApplicationController { return this.carnetApplicationService.CloseCarnet(body); } + @Patch('ResetCarnet') + @Roles('sa') + ResetCarnet(@Body() body: CarnetProcessingCenterDTO) { + return this.carnetApplicationService.ResetCarnet(body); + } + + @Delete('DeleteCarnet') + DeleteCarnet(@Body() body: CarnetProcessingCenterDTO) { + return this.carnetApplicationService.DeleteCarnet(body); + } // [ CARNETCONTROLCENTER_PKG ] @Get('GetHolderstoEdit/:P_SPID/:P_USERID/:P_HEADERID') diff --git a/src/oracle/carnet-application/carnet-application.service.ts b/src/oracle/carnet-application/carnet-application.service.ts index 0d46de1..c940883 100644 --- a/src/oracle/carnet-application/carnet-application.service.ts +++ b/src/oracle/carnet-application/carnet-application.service.ts @@ -841,6 +841,90 @@ export class CarnetApplicationService { await closeOracleDbConnection(connection, CarnetApplicationService.name) } } + async ResetCarnet(body: CarnetProcessingCenterDTO) { + let connection; + try { + connection = await this.oracleDBService.getConnection(); + + const result = await connection.execute( + `BEGIN + PROCESSINGCENTER_PKG.ResetCarnet( + :P_USERID, :P_HEADERID :P_CURSOR + ); + END;`, + { + P_USERID: { val: body.P_USERID, type: oracledb.DB_TYPE_NUMBER }, + P_HEADERID: { val: body.P_HEADERID, type: oracledb.DB_TYPE_NUMBER }, + P_CURSOR: { dir: oracledb.BIND_OUT, type: oracledb.CURSOR }, + // P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } + }, + { outFormat: oracledb.OUT_FORMAT_OBJECT } + ); + + await connection.commit(); + + const outBinds = result.outBinds; + if (!outBinds?.P_CURSOR) { + this.logger.error('One or more expected cursors are missing from stored procedure output.'); + throw new InternalServerException("Incomplete data received from the database."); + } + + const fres: any = await fetchCursor(outBinds.P_CURSOR, CarnetApplicationService.name); + + if (fres.length > 0 && fres[0].ERRORMESG) { + this.logger.warn(fres[0].ERRORMESG); + throw new BadRequestException(fres[0].ERRORMESG) + } + + return { statusCode: 200, message: "Reset Successfull", ...fres[0] }; + } catch (error) { + handleError(error, CarnetApplicationService.name) + } finally { + await closeOracleDbConnection(connection, CarnetApplicationService.name) + } + } + async DeleteCarnet(body: CarnetProcessingCenterDTO) { + let connection; + try { + connection = await this.oracleDBService.getConnection(); + + const result = await connection.execute( + `BEGIN + PROCESSINGCENTER_PKG.DeleteCarnet( + :P_USERID, :P_HEADERID :P_CURSOR + ); + END;`, + { + P_USERID: { val: body.P_USERID, type: oracledb.DB_TYPE_NUMBER }, + P_HEADERID: { val: body.P_HEADERID, type: oracledb.DB_TYPE_NUMBER }, + P_CURSOR: { dir: oracledb.BIND_OUT, type: oracledb.CURSOR }, + // P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } + }, + { outFormat: oracledb.OUT_FORMAT_OBJECT } + ); + + await connection.commit(); + + const outBinds = result.outBinds; + if (!outBinds?.P_CURSOR) { + this.logger.error('One or more expected cursors are missing from stored procedure output.'); + throw new InternalServerException("Incomplete data received from the database."); + } + + const fres: any = await fetchCursor(outBinds.P_CURSOR, CarnetApplicationService.name); + + if (fres.length > 0 && fres[0].ERRORMESG) { + this.logger.warn(fres[0].ERRORMESG); + throw new BadRequestException(fres[0].ERRORMESG) + } + + return { statusCode: 200, message: "Deleted Successfully", ...fres[0] }; + } catch (error) { + handleError(error, CarnetApplicationService.name) + } finally { + await closeOracleDbConnection(connection, CarnetApplicationService.name) + } + } // [ CARNETCONTROLCENTER_PKG ]