From 05c0e9dc43fbae71b79c832cc23cae56d60d944e Mon Sep 17 00:00:00 2001 From: Kallesh B S Date: Thu, 8 May 2025 17:01:12 +0530 Subject: [PATCH] added for mssql mf --- ormconfig.ts | 2 +- src/mssql/manage-fee/manage-fee.controller.ts | 28 ++++++++ src/mssql/manage-fee/manage-fee.module.ts | 9 +++ src/mssql/manage-fee/manage-fee.service.ts | 70 +++++++++++++++++++ src/mssql/mssql.module.ts | 3 +- src/oracle/manage-fee/manage-fee.dto.ts | 5 +- .../region/region.controller.ts | 6 ++ .../uscib-managed-sp/region/region.service.ts | 33 +++++++++ 8 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 src/mssql/manage-fee/manage-fee.controller.ts create mode 100644 src/mssql/manage-fee/manage-fee.module.ts create mode 100644 src/mssql/manage-fee/manage-fee.service.ts diff --git a/ormconfig.ts b/ormconfig.ts index 677d70e..1095c53 100644 --- a/ormconfig.ts +++ b/ormconfig.ts @@ -6,7 +6,7 @@ export const OracleConfig: any = { password: 'Carnet1234', connectString: '172.31.18.76/xe', - // user: 'system', + // user: 'C##carnetsys', // password: 'root', // connectString: '192.168.1.96/xe', diff --git a/src/mssql/manage-fee/manage-fee.controller.ts b/src/mssql/manage-fee/manage-fee.controller.ts new file mode 100644 index 0000000..1bf4233 --- /dev/null +++ b/src/mssql/manage-fee/manage-fee.controller.ts @@ -0,0 +1,28 @@ +import { Body, Controller, Get, Patch, Post, Query } from '@nestjs/common'; +import { ManageFeeService } from './manage-fee.service'; +import { CreateBasicFeeDTO, GetFeeGeneralDTO, UpdateBasicFeeDTO } from 'src/oracle/manage-fee/manage-fee.dto'; +import { ApiTags } from '@nestjs/swagger'; + +@Controller('mssql') +export class ManageFeeController { + + constructor(private readonly manageFeeService: ManageFeeService) { } + + @ApiTags('Manage Fee - Mssql') + @Get('/GetBasicFeeRates') + GetBasicFeeRates(@Query() body: GetFeeGeneralDTO) { + return this.manageFeeService.GETBASICFEERATES(body); + } + + @ApiTags('Manage Fee - Mssql') + @Post('/CreateBasicFee') + CreateBasicFee(@Body() body: CreateBasicFeeDTO) { + return this.manageFeeService.CREATEBASICFEE(body); + } + + @ApiTags('Manage Fee - Mssql') + @Patch('/UpdateBasicFee') + UpdateBasicFee(@Body() body: UpdateBasicFeeDTO) { + return this.manageFeeService.UPDATEBASICFEE(body); + } +} diff --git a/src/mssql/manage-fee/manage-fee.module.ts b/src/mssql/manage-fee/manage-fee.module.ts new file mode 100644 index 0000000..a92b621 --- /dev/null +++ b/src/mssql/manage-fee/manage-fee.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ManageFeeController } from './manage-fee.controller'; +import { ManageFeeService } from './manage-fee.service'; + +@Module({ + controllers: [ManageFeeController], + providers: [ManageFeeService] +}) +export class ManageFeeModule {} diff --git a/src/mssql/manage-fee/manage-fee.service.ts b/src/mssql/manage-fee/manage-fee.service.ts new file mode 100644 index 0000000..7bd47c4 --- /dev/null +++ b/src/mssql/manage-fee/manage-fee.service.ts @@ -0,0 +1,70 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { MssqlDBService, OracleDBService } from 'src/db/db.service'; +import { InternalServerException } from 'src/exceptions/internalServerError.exception'; +import { CreateBasicFeeDTO, GetFeeGeneralDTO, UpdateBasicFeeDTO } from 'src/oracle/manage-fee/manage-fee.dto'; +import * as oracledb from 'oracledb'; +import { BadRequestException } from 'src/exceptions/badRequest.exception'; +import { Connection, Request } from 'mssql'; +import * as mssql from 'mssql'; + +@Injectable() +export class ManageFeeService { + + private readonly logger = new Logger(ManageFeeService.name); + + constructor(private readonly mssqlDBService: MssqlDBService) { } + + // get + + async GETBASICFEERATES(body: GetFeeGeneralDTO): Promise { + let connection: Connection; + try { + connection = await this.mssqlDBService.getConnection(); + const request = new Request(connection); + request.input('p_spid', mssql.Int, body.P_SPID); + request.input('p_active_inactive', mssql.VarChar(8), body.P_ACTIVE_INACTIVE); + const result = await request.execute('carnetsys.GetBasicFeeRates'); + return result.recordset; + } catch (error) { + throw new InternalServerException(); + } + } + + // post + + async CREATEBASICFEE(body: CreateBasicFeeDTO) { + let connection: Connection; + try { + connection = await this.mssqlDBService.getConnection(); + const request = new Request(connection); + request.input('P_SPID', mssql.Int, body.P_SPID); + request.input('P_STARTCARNETVALUE', mssql.Int, body.P_STARTCARNETVALUE); + request.input('P_ENDCARNETVALUE', mssql.Int, body.P_ENDCARNETVALUE); + request.input('P_EFFDATE', mssql.VarChar(100), body.P_EFFDATE); + request.input('P_FEES', mssql.Int, body.P_FEES); + request.input('P_USERID', mssql.VarChar(100), body.P_USERID); + const result = await request.execute('carnetsys.CreateBasicFee'); + return result.recordset; + } catch (error) { + throw new InternalServerException(); + } + } + + // update + + async UPDATEBASICFEE(body: UpdateBasicFeeDTO) { + let connection: Connection; + try { + connection = await this.mssqlDBService.getConnection(); + const request = new Request(connection); + request.input('P_BASICFEESETUPID', mssql.Int, body.P_BASICFEESETUPID); + request.input('P_FEES', mssql.Int, body.P_FEES); + request.input('P_EFFDATE', mssql.VarChar(100), body.P_EFFDATE); + request.input('P_USERID', mssql.VarChar(100), body.P_USERID); + const result = await request.execute('carnetsys.UpdateBasicFee'); + return result.recordset; + } catch (error) { + throw new InternalServerException(); + } + } +} diff --git a/src/mssql/mssql.module.ts b/src/mssql/mssql.module.ts index 30e2abd..8de23a2 100644 --- a/src/mssql/mssql.module.ts +++ b/src/mssql/mssql.module.ts @@ -5,10 +5,11 @@ import { UscibManagedSpModule } from './uscib-managed-sp/uscib-managed-sp.module import { ManageClientsModule } from './manage-clients/manage-clients.module'; import { ManageHoldersModule } from './manage-holders/manage-holders.module'; import { ParamTableModule } from './param-table/param-table.module'; +import { ManageFeeModule } from './manage-fee/manage-fee.module'; @Module({ controllers: [MssqlController], providers: [MssqlService], - imports: [UscibManagedSpModule, ManageClientsModule, ManageHoldersModule, ParamTableModule] + imports: [UscibManagedSpModule, ManageClientsModule, ManageHoldersModule, ParamTableModule, ManageFeeModule] }) export class MssqlModule {} diff --git a/src/oracle/manage-fee/manage-fee.dto.ts b/src/oracle/manage-fee/manage-fee.dto.ts index a3bed95..53f734e 100644 --- a/src/oracle/manage-fee/manage-fee.dto.ts +++ b/src/oracle/manage-fee/manage-fee.dto.ts @@ -1,6 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; import { Transform } from 'class-transformer'; -import { IsDefined, IsInt, IsNumber, IsString, Min } from 'class-validator'; +import { IsDefined, IsInt, IsNumber, IsString, Matches, Min } from 'class-validator'; export class GetFeeGeneralDTO { @ApiProperty({ required: true }) @@ -12,6 +12,9 @@ export class GetFeeGeneralDTO { P_SPID: number; @ApiProperty({ required: true }) + @Matches(/^.{6}$|^.{8}$/, { + message: 'Property P_ACTIVE_INACTIVE must be either too long or short', + }) @IsString({ message: 'Property P_ACTIVE_INACTIVE must be a string' }) @IsDefined({ message: 'Property P_ACTIVE_INACTIVE is required' }) P_ACTIVE_INACTIVE: string; diff --git a/src/oracle/uscib-managed-sp/region/region.controller.ts b/src/oracle/uscib-managed-sp/region/region.controller.ts index 804c908..9d28b2e 100644 --- a/src/oracle/uscib-managed-sp/region/region.controller.ts +++ b/src/oracle/uscib-managed-sp/region/region.controller.ts @@ -26,4 +26,10 @@ export class RegionController { getRegions() { return this.regionService.getRegions(); } + + // @ApiTags('Regions - Oracle') + // @Get('/getDetails') + selectAll() { + return this.regionService.selectAll(); + } } diff --git a/src/oracle/uscib-managed-sp/region/region.service.ts b/src/oracle/uscib-managed-sp/region/region.service.ts index f260c98..fc895b4 100644 --- a/src/oracle/uscib-managed-sp/region/region.service.ts +++ b/src/oracle/uscib-managed-sp/region/region.service.ts @@ -11,6 +11,39 @@ export class RegionService { constructor(private readonly oracleDBService: OracleDBService) { } + async selectAll() { + let connection: oracledb.Connection | undefined; + try { + connection = await this.oracleDBService.getConnection(); + if (!connection) { + throw new InternalServerException(); + } + + const result = await connection.execute( + `SELECT * FROM BasicFeeSetup`, + [], + { + outFormat: oracledb.OUT_FORMAT_OBJECT, + } + ); + + return result.rows; + } catch (error) { + this.logger.error('selectAll failed', error.stack || error); + throw new InternalServerException(); + } finally { + if (connection) { + try { + await connection.close(); + } catch (closeErr) { + this.logger.error('Failed to close DB connection', closeErr); + } + } + } + } + + + async insertRegions(body: InsertRegionsDto) { let connection; try {