From 4aad1c977f261af79031d7a511f0db5661242414 Mon Sep 17 00:00:00 2001 From: Kallesh B S Date: Wed, 16 Apr 2025 17:19:35 +0530 Subject: [PATCH] modified for holders --- .../manage-clients.controller.ts | 2 +- .../manage-holders.controller.ts | 28 ++++ .../manage-holders/manage-holders.module.ts | 9 ++ .../manage-holders/manage-holders.service.ts | 127 ++++++++++++++++++ src/mssql/mssql.module.ts | 3 +- 5 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 src/mssql/manage-holders/manage-holders.controller.ts create mode 100644 src/mssql/manage-holders/manage-holders.module.ts create mode 100644 src/mssql/manage-holders/manage-holders.service.ts diff --git a/src/mssql/manage-clients/manage-clients.controller.ts b/src/mssql/manage-clients/manage-clients.controller.ts index 14d3935..c9ee1fd 100644 --- a/src/mssql/manage-clients/manage-clients.controller.ts +++ b/src/mssql/manage-clients/manage-clients.controller.ts @@ -3,7 +3,7 @@ import { ManageClientsService } from './manage-clients.service'; import { ApiTags } from '@nestjs/swagger'; import { CreateClientDataDTO, GetPreparerByClientidContactsByClientidLocByClientidDTO } from 'src/oracle/manage-clients/manage-clients.dto'; -@Controller('manage-clients') +@Controller('mssql') export class ManageClientsController { constructor(private readonly manageClientsService: ManageClientsService) {} diff --git a/src/mssql/manage-holders/manage-holders.controller.ts b/src/mssql/manage-holders/manage-holders.controller.ts new file mode 100644 index 0000000..aa0f6f6 --- /dev/null +++ b/src/mssql/manage-holders/manage-holders.controller.ts @@ -0,0 +1,28 @@ +import { Body, Controller, Get, Param, ParseIntPipe, Post } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; +import { CreateHoldersDTO, GetHolderOrContactDTO } from 'src/oracle/manage-holders/manage-holders.dto'; +import { ManageHoldersService } from './manage-holders.service'; + +@Controller('mssql') +export class ManageHoldersController { + + constructor(private readonly manageHoldersService: ManageHoldersService) { } + + @ApiTags('Manage Holders - Mssql') + @Post('/CreateHolderData') + CreateHolders(@Body() body: CreateHoldersDTO) { + return this.manageHoldersService.CreateHolders(body); + // return {message:"Request received.."} + } + + @ApiTags('Manage Holders - Mssql') + @Get('/GetHolderRecord/:p_spid/:p_holderid') + GetHolderMaster( + @Param('p_spid', ParseIntPipe) p_spid: number, + @Param('p_holderid', ParseIntPipe) p_holderid: number, + ) { + const reqParams: GetHolderOrContactDTO = { p_spid, p_holderid }; + + return this.manageHoldersService.GetHolderRecord(reqParams); + } +} diff --git a/src/mssql/manage-holders/manage-holders.module.ts b/src/mssql/manage-holders/manage-holders.module.ts new file mode 100644 index 0000000..9f0de1a --- /dev/null +++ b/src/mssql/manage-holders/manage-holders.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ManageHoldersController } from './manage-holders.controller'; +import { ManageHoldersService } from './manage-holders.service'; + +@Module({ + controllers: [ManageHoldersController], + providers: [ManageHoldersService] +}) +export class ManageHoldersModule {} diff --git a/src/mssql/manage-holders/manage-holders.service.ts b/src/mssql/manage-holders/manage-holders.service.ts new file mode 100644 index 0000000..7100b14 --- /dev/null +++ b/src/mssql/manage-holders/manage-holders.service.ts @@ -0,0 +1,127 @@ +import { Injectable } from '@nestjs/common'; +import { Connection, Request } from 'mssql'; +import { MssqlDBService } from 'src/db/db.service'; +import { CreateHoldersDTO, GetHolderOrContactDTO } from 'src/oracle/manage-holders/manage-holders.dto'; +import * as mssql from 'mssql'; + +@Injectable() +export class ManageHoldersService { + constructor(private readonly mssqlDBService: MssqlDBService) { } + + CreateHolders = async (body: CreateHoldersDTO) => { + const newBody = { + p_spid: null, + p_clientlocationid: null, + p_holderno: null, + p_holdertype: null, + p_uscibmemberflag: null, + p_govagencyflag: null, + p_holdername: null, + p_namequalifier: null, + p_addlname: null, + p_address1: null, + p_address2: null, + p_city: null, + p_state: null, + p_zip: null, + p_country: null, + p_userid: null, + p_contactstable: null, + }; + + const reqBody = JSON.parse(JSON.stringify(body)); + + function setEmptyStringsToNull(obj) { + Object.keys(obj).forEach((key) => { + if (typeof obj[key] === 'object' && obj[key] !== null) { + setEmptyStringsToNull(obj[key]); + } else if (obj[key] === '') { + obj[key] = null; + } + }); + } + + setEmptyStringsToNull(reqBody); + + const finalBody: CreateHoldersDTO = { ...newBody, ...reqBody }; + + let connection: Connection; + try { + connection = await this.mssqlDBService.getConnection(); + const request = new Request(connection); + request.input('p_spid', mssql.Int, finalBody.p_spid); + request.input('p_clientlocationid', mssql.Int, finalBody.p_clientlocationid); + request.input('p_holderno', mssql.VarChar(15), finalBody.p_holderno); + request.input('p_holdertype', mssql.VarChar(3), finalBody.p_holdertype); + request.input('p_uscibmemberflag', mssql.VarChar(1), finalBody.p_uscibmemberflag); + request.input('p_govagencyflag', mssql.VarChar(1), finalBody.p_govagencyflag); + request.input('p_holdername', mssql.VarChar(50), finalBody.p_holdername); + request.input('p_namequalifier', mssql.VarChar(10), finalBody.p_namequalifier); + request.input('p_addlname', mssql.VarChar(50), finalBody.p_addlname); + request.input('p_address1', mssql.VarChar(50), finalBody.p_address1); + request.input('p_address2', mssql.VarChar(50), finalBody.p_address2); + request.input('p_city', mssql.VarChar(30), finalBody.p_city); + request.input('p_state', mssql.VarChar(2), finalBody.p_state); + request.input('p_zip', mssql.VarChar(10), finalBody.p_zip); + request.input('p_country', mssql.VarChar(2), finalBody.p_country); + request.input('p_userid', mssql.VarChar(50), finalBody.p_userid); + + const contactTable = new mssql.Table('carnetsys.ContactsTable'); + contactTable.create = true; + contactTable.columns.add('FirstName', mssql.VarChar(50)); + contactTable.columns.add('LastName', mssql.VarChar(50)); + contactTable.columns.add('MiddleInitial', mssql.VarChar(3)); + contactTable.columns.add('Title', mssql.VarChar(50)); + contactTable.columns.add('EmailAddress', mssql.VarChar(100)); + contactTable.columns.add('PhoneNo', mssql.VarChar(20)); + contactTable.columns.add('MobileNo', mssql.VarChar(20)); + contactTable.columns.add('FaxNo', mssql.VarChar(20)); + + finalBody.p_contactstable && finalBody.p_contactstable.forEach((contact) => { + contactTable.rows.add( + contact.FirstName, + contact.LastName, + contact.MiddleInitial, + contact.Title, + contact.EmailAddress, + contact.PhoneNo, + contact.MobileNo, + contact.FaxNo, + ); + }); + + request.input('p_contactstable', contactTable); + + const result = await request.execute('carnetsys.CreateHolderData'); + return { data: result.recordset }; + } catch (error) { + console.error('Error executing stored procedure:', error); + return { error: error.message }; + } finally { + if (connection) { + connection.close(); + } + } + + }; + + GetHolderRecord = async (body: GetHolderOrContactDTO) => { + 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_holderid', mssql.Int, body.p_holderid); + + const result = await request.execute('carnetsys.GetHolderMaster'); + return { data: result.recordset }; + } catch (error) { + console.error('Error executing stored procedure:', error); + return { error: error.message }; + } finally { + if (connection) { + connection.close(); + } + } + }; +} diff --git a/src/mssql/mssql.module.ts b/src/mssql/mssql.module.ts index 27165bd..e409acf 100644 --- a/src/mssql/mssql.module.ts +++ b/src/mssql/mssql.module.ts @@ -3,10 +3,11 @@ import { MssqlController } from './mssql.controller'; import { MssqlService } from './mssql.service'; 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'; @Module({ controllers: [MssqlController], providers: [MssqlService], - imports: [UscibManagedSpModule, ManageClientsModule] + imports: [UscibManagedSpModule, ManageClientsModule, ManageHoldersModule] }) export class MssqlModule {}