From bc294ce7ce907e11e1c53dc57ede0089672afb42 Mon Sep 17 00:00:00 2001 From: Kallesh B S Date: Tue, 15 Apr 2025 15:47:35 +0530 Subject: [PATCH] added manage client api mssql --- ormconfig.ts | 12 +- .../manage-clients.controller.ts | 23 +++ .../manage-clients/manage-clients.module.ts | 9 ++ .../manage-clients/manage-clients.service.ts | 142 ++++++++++++++++++ src/mssql/mssql.module.ts | 3 +- 5 files changed, 184 insertions(+), 5 deletions(-) create mode 100644 src/mssql/manage-clients/manage-clients.controller.ts create mode 100644 src/mssql/manage-clients/manage-clients.module.ts create mode 100644 src/mssql/manage-clients/manage-clients.service.ts diff --git a/ormconfig.ts b/ormconfig.ts index 397511c..c6ca94e 100644 --- a/ormconfig.ts +++ b/ormconfig.ts @@ -14,11 +14,15 @@ export const OracleConfig: any = { export const MssqlConfig: any = { // type: 'mssql', - server: '172.31.18.76', + // server: '172.31.18.76', + server: 'localhost', // port: 1433, - user: 'Carnetsys', - password: 'Carnet1234', - database: 'CarnetDB', + // user: 'Carnetsys', + user: 'mssql1433', + // password: 'Carnet1234', + password: 'root', + // database: 'CarnetDB', + database: 'demo', // entities: [__dirname + '/**/*.entity{.ts,.js}'], // synchronize: true, options: { diff --git a/src/mssql/manage-clients/manage-clients.controller.ts b/src/mssql/manage-clients/manage-clients.controller.ts new file mode 100644 index 0000000..14d3935 --- /dev/null +++ b/src/mssql/manage-clients/manage-clients.controller.ts @@ -0,0 +1,23 @@ +import { Body, Controller, Get, Post, Query } from '@nestjs/common'; +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') +export class ManageClientsController { + constructor(private readonly manageClientsService: ManageClientsService) {} + + @ApiTags('Manage Clients - Oracle') + @Post('CreateNewClients') + async CreateClientData(@Body() body: CreateClientDataDTO) { + return this.manageClientsService.CreateClientData(body); + } + + @ApiTags('Manage Clients - Mssql') + @Get('GetPreparerByClientid') + GetPreparerByClientid( + @Query() body: GetPreparerByClientidContactsByClientidLocByClientidDTO, + ) { + return this.manageClientsService.GetPreparerByClientid(body); + } +} diff --git a/src/mssql/manage-clients/manage-clients.module.ts b/src/mssql/manage-clients/manage-clients.module.ts new file mode 100644 index 0000000..72b2df6 --- /dev/null +++ b/src/mssql/manage-clients/manage-clients.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ManageClientsController } from './manage-clients.controller'; +import { ManageClientsService } from './manage-clients.service'; + +@Module({ + controllers: [ManageClientsController], + providers: [ManageClientsService] +}) +export class ManageClientsModule {} diff --git a/src/mssql/manage-clients/manage-clients.service.ts b/src/mssql/manage-clients/manage-clients.service.ts new file mode 100644 index 0000000..6393fdd --- /dev/null +++ b/src/mssql/manage-clients/manage-clients.service.ts @@ -0,0 +1,142 @@ +import { Injectable } from '@nestjs/common'; +import { Connection, Request } from 'mssql'; +import { MssqlDBService } from 'src/db/db.service'; +import { CreateClientDataDTO, GetPreparerByClientidContactsByClientidLocByClientidDTO } from 'src/oracle/manage-clients/manage-clients.dto'; +import * as mssql from 'mssql'; + +@Injectable() +export class ManageClientsService { + constructor(private readonly mssqlDBService: MssqlDBService) {} + + CreateClientData = async (body: CreateClientDataDTO) => { + const newBody = { + p_spid: null, + p_clientname: null, + p_lookupcode: null, + p_address1: null, + p_address2: null, + p_city: null, + p_state: null, + p_zip: null, + p_country: null, + p_issuingregion: null, + p_revenuelocation: null, + p_userid: null, + p_contactstable: null, + p_clientlocaddresstable: null, + }; + + const reqBody = JSON.parse(JSON.stringify(body)); + + function setEmptyStringsToNull(obj: any) { + 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: CreateClientDataDTO = { ...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_clientname', mssql.VarChar(50), finalBody.p_clientname); + request.input('p_lookupcode', mssql.VarChar(20), finalBody.p_lookupcode); + 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_issuingregion', mssql.VarChar(2), finalBody.p_issuingregion); + request.input('p_revenuelocation', mssql.VarChar(2), finalBody.p_revenuelocation); + request.input('p_userid', mssql.VarChar(100), 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.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 clientLocAddressTable = new mssql.Table('carnetsys.ClientLocAddressTable'); + clientLocAddressTable.create = true; + clientLocAddressTable.columns.add('Nameof', mssql.VarChar(50)); + clientLocAddressTable.columns.add('Address1', mssql.VarChar(50)); + clientLocAddressTable.columns.add('Address2', mssql.VarChar(50)); + clientLocAddressTable.columns.add('City', mssql.VarChar(30)); + clientLocAddressTable.columns.add('State', mssql.VarChar(2)); + clientLocAddressTable.columns.add('Zip', mssql.VarChar(10)); + clientLocAddressTable.columns.add('Country', mssql.VarChar(2)); + + finalBody.p_clientlocaddresstable.forEach((contact) => { + clientLocAddressTable.rows.add( + contact.Nameof, + contact.Address1, + contact.Address2, + contact.City, + contact.State, + contact.Zip, + contact.Country, + ); + }); + + request.input('p_clientlocaddresstable', clientLocAddressTable); + + const result = await request.execute('carnetsys.CreateClientData'); + return { data: result.recordset }; + } catch (error) { + console.error('Error executing stored procedure:', error); + return { error: error.message }; + } finally { + if (connection) { + connection.close(); + } + } + }; + + GetPreparerByClientid = async (body: GetPreparerByClientidContactsByClientidLocByClientidDTO) => { + let connection; + + try { + connection = await this.mssqlDBService.getConnection(); + const request = new Request(connection); + request.input('p_spid', mssql.Int, body.p_spid); + request.input('p_clientid', mssql.Int, body.p_clientid); + const result = await request.execute('carnetsys.GetPreparerbyClientID'); + return { data: result.recordset }; + } catch (error) { + console.error('Error executing stored procedure:', error); + } finally { + if (connection) { + connection.close(); + } + } + }; +} diff --git a/src/mssql/mssql.module.ts b/src/mssql/mssql.module.ts index 8861bde..27165bd 100644 --- a/src/mssql/mssql.module.ts +++ b/src/mssql/mssql.module.ts @@ -2,10 +2,11 @@ import { Module } from '@nestjs/common'; 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'; @Module({ controllers: [MssqlController], providers: [MssqlService], - imports: [UscibManagedSpModule] + imports: [UscibManagedSpModule, ManageClientsModule] }) export class MssqlModule {}