BE/src/mssql/manage-holders/manage-holders.service.ts
2025-07-21 20:34:23 +05:30

269 lines
12 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { Connection, Request } from 'mssql';
import { MssqlDBService } from 'src/db/db.service';
import * as mssql from 'mssql';
import { CreateHoldersDTO, GetHolderDTO, HolderActivateOrInactivateDTO, HolderContactActivateOrInactivateDTO, UpdateHolderContactDTO, UpdateHolderDTO } from 'src/dto/manage-holders/manage-holders.dto';
@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: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: 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.P_FIRSTNAME,
// contact.P_LASTNAME,
// contact.P_MIDDLEINITIAL,
// contact.P_TITLE,
// contact.P_EMAILADDRESS,
// contact.P_PHONENO,
// contact.P_MOBILENO,
// contact.P_FAXNO,
// );
// });
// request.input('p_contactstable', contactTable);
const result = await request.execute('carnetsys.CreateHolderData');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
GetHolderRecord = async (body: GetHolderDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: 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) {
return { error: error.message };
}
};
UpdateHolder = async (body: UpdateHolderDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new mssql.Request(connection);
request.input('P_HOLDERID', mssql.Int, body.P_HOLDERID);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_LOCATIONID', mssql.Int, body.P_LOCATIONID);
request.input('P_HOLDERNO', mssql.VarChar(15), body.P_HOLDERNO);
request.input('P_HOLDERTYPE', mssql.VarChar(3), body.P_HOLDERTYPE);
request.input('P_USCIBMEMBERFLAG', mssql.VarChar(1), body.P_USCIBMEMBERFLAG);
request.input('P_GOVAGENCYFLAG', mssql.VarChar(1), body.P_GOVAGENCYFLAG);
request.input('P_HOLDERNAME', mssql.VarChar(50), body.P_HOLDERNAME);
request.input('P_NAMEQUALIFIER', mssql.VarChar(10), body.P_NAMEQUALIFIER);
request.input('P_ADDLNAME', mssql.VarChar(50), body.P_ADDLNAME);
request.input('P_ADDRESS1', mssql.VarChar(50), body.P_ADDRESS1);
request.input('P_ADDRESS2', mssql.VarChar(50), body.P_ADDRESS2);
request.input('P_CITY', mssql.VarChar(30), body.P_CITY);
request.input('P_STATE', mssql.VarChar(2), body.P_STATE);
request.input('P_ZIP', mssql.VarChar(10), body.P_ZIP);
request.input('P_COUNTRY', mssql.VarChar(2), body.P_COUNTRY);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.UpdateHolders');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
UpdateHolderContact = async (body: UpdateHolderContactDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new mssql.Request(connection);
request.input('P_HOLDERCONTACTID', mssql.Int, body.P_HOLDERCONTACTID);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_FIRSTNAME', mssql.VarChar(50), body.P_FIRSTNAME);
request.input('P_LASTNAME', mssql.VarChar(50), body.P_LASTNAME);
request.input('P_MIDDLEINITIAL', mssql.VarChar(3), body.P_MIDDLEINITIAL);
request.input('P_TITLE', mssql.VarChar(50), body.P_TITLE);
request.input('P_PHONENO', mssql.VarChar(20), body.P_PHONENO);
request.input('P_MOBILENO', mssql.VarChar(20), body.P_MOBILENO);
request.input('P_FAXNO', mssql.VarChar(20), body.P_FAXNO);
request.input('P_EMAILADDRESS', mssql.VarChar(100), body.P_EMAILADDRESS);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.UpdateHolderContacts');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
GetHolderContacts = async (body: GetHolderDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: 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.GetHolderContacts');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
InactivateHolder = async (body: HolderActivateOrInactivateDTO) => {
console.log(body);
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new Request(connection);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_HOLDERID', mssql.Int, body.P_HOLDERID);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.InactivateHolder');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
ReactivateHolder = async (body: HolderActivateOrInactivateDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new Request(connection);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_HOLDERID', mssql.Int, body.P_HOLDERID);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.ReactivateHolder');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
InactivateHolderContact = async (body: HolderContactActivateOrInactivateDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new Request(connection);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_HOLDERCONTACTID', mssql.Int, body.P_HOLDERCONTACTID);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.InactivateHolderContact');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
ReactivateHolderContact = async (body: HolderContactActivateOrInactivateDTO) => {
let connection: mssql.ConnectionPool;
try {
connection = await this.mssqlDBService.getConnection();
const request: Request = new Request(connection);
request.input('P_SPID', mssql.Int, body.P_SPID);
request.input('P_HOLDERCONTACTID', mssql.Int, body.P_HOLDERCONTACTID);
request.input('P_USERID', mssql.VarChar(100), body.P_USERID);
const result = await request.execute('carnetsys.ReactivateHolderContact');
return { data: result.recordset };
} catch (error) {
return { error: error.message };
}
};
}