BE/src/mssql/manage-holders/manage-holders.service.ts

128 lines
5.2 KiB
TypeScript
Raw Normal View History

2025-04-16 17:19:35 +05:30
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();
}
}
};
}