modified holder API according to updated holder spec

This commit is contained in:
Kallesh B S 2025-06-11 15:31:20 +05:30
parent 34c5b5d22d
commit 2f36ece39b
4 changed files with 98 additions and 23 deletions

View File

@ -35,7 +35,11 @@ export class CreateHoldersDTO extends IntersectionType(
ZIP_DTO,
COUNTRY_DTO,
USERID_DTO,
PartialType(CONTACTSTABLE_DTO)
// PartialType(CONTACTSTABLE_DTO)
) { }
export class CreateHolderContactsDTO extends IntersectionType(
SPID_DTO, HOLDERID_DTO, CONTACTSTABLE_DTO, USERID_DTO
) { }
@ -73,7 +77,6 @@ export class UpdateHolderContactDTO extends IntersectionType(
USERID_DTO
) { }
export class GetHolderDTO extends IntersectionType(
SPID_DTO,
HOLDERID_DTO
@ -89,9 +92,9 @@ export class HolderContactActivateOrInactivateDTO extends IntersectionType(
SPID_DTO,
HOLDERCONTACTID_DTO,
USERID_DTO
) {}
) { }
export class SearchHolderDTO extends IntersectionType(
SPID_DTO,
HOLDERNAME_DTO
){}
) { }

View File

@ -78,20 +78,20 @@ export class ManageHoldersService {
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,
);
});
// 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);
// request.input('p_contactstable', contactTable);
const result = await request.execute('carnetsys.CreateHolderData');
return { data: result.recordset };

View File

@ -13,6 +13,7 @@ import { ApiTags } from '@nestjs/swagger';
import { ManageHoldersService } from './manage-holders.service';
import {
CreateHolderContactsDTO,
CreateHoldersDTO, GetHolderDTO, HolderActivateOrInactivateDTO,
HolderContactActivateOrInactivateDTO, SearchHolderDTO, UpdateHolderContactDTO, UpdateHolderDTO
} from 'src/dto/property.dto';
@ -34,6 +35,11 @@ export class ManageHoldersController {
// return {message:"Request received.."}
}
@Post('CreateHoldercontact')
CreateHoldercontact(@Body() body: CreateHolderContactsDTO) {
return this.manageHoldersService.CreateHoldercontact(body);
}
@Put('/UpdateHolder')
UpdateHolder(@Body() body: UpdateHolderDTO) {
return this.manageHoldersService.UpdateHolder(body);

View File

@ -6,6 +6,7 @@ import { InternalServerException } from 'src/exceptions/internalServerError.exce
import { closeOracleDbConnection, fetchCursor, handleError, setEmptyStringsToNull } from 'src/utils/helper';
import {
CreateHolderContactsDTO,
CreateHoldersDTO, GetHolderDTO, HolderActivateOrInactivateDTO,
HolderContactActivateOrInactivateDTO, SearchHolderDTO, UpdateHolderContactDTO, UpdateHolderDTO
} from 'src/dto/property.dto';
@ -39,7 +40,7 @@ export class ManageHoldersService {
P_ZIP: null,
P_COUNTRY: null,
P_USERID: null,
P_CONTACTSTABLE: null,
// P_CONTACTSTABLE: null,
};
const reqBody = JSON.parse(JSON.stringify(body));
@ -54,7 +55,7 @@ export class ManageHoldersService {
connection = await this.oracleDBService.getConnection();
const CONTACTSTABLE_INSTANCE = await this.oracleService.get_CONTACTS_TABLE_INSTANCE(finalBody)
// const CONTACTSTABLE_INSTANCE = await this.oracleService.get_CONTACTS_TABLE_INSTANCE(finalBody)
const result = await connection.execute(
`BEGIN
@ -83,7 +84,7 @@ export class ManageHoldersService {
P_ZIP: { val: finalBody.P_ZIP, type: oracledb.DB_TYPE_NVARCHAR },
P_COUNTRY: { val: finalBody.P_COUNTRY, type: oracledb.DB_TYPE_NVARCHAR },
P_USERID: { val: finalBody.P_USERID, type: oracledb.DB_TYPE_NVARCHAR },
P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: oracledb.DB_TYPE_OBJECT },
// P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: oracledb.DB_TYPE_OBJECT },
P_HOLDERCURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT },
P_HOLDERCONTACTCURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},
@ -109,10 +110,75 @@ export class ManageHoldersService {
// throw new BadRequestException(fres[0].ERRORMESG)
// }
return {
holderDetails: await fetchCursor(outBinds.P_HOLDERCURSOR, ManageHoldersService.name),
holderContactDetails: await fetchCursor(outBinds.P_HOLDERCONTACTCURSOR, ManageHoldersService.name),
// return {
// holderDetails: await fetchCursor(outBinds.P_HOLDERCURSOR, ManageHoldersService.name),
// holderContactDetails: await fetchCursor(outBinds.P_HOLDERCONTACTCURSOR, ManageHoldersService.name),
// }
return await fetchCursor(outBinds.P_HOLDERCURSOR, ManageHoldersService.name);
} catch (error) {
handleError(error, ManageHoldersService.name)
} finally {
await closeOracleDbConnection(connection, ManageHoldersService.name)
}
}
async CreateHoldercontact(body: CreateHolderContactsDTO) {
// const CONTACTSTABLE_INSTANCE = await this.oracleService.get_CONTACTS_TABLE_INSTANCE(finalBody)
// P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: oracledb.DB_TYPE_OBJECT }
const newBody = {
P_SPID: null,
P_HOLDERID: null,
P_CONTACTSTABLE: null,
P_USERID: null,
};
const reqBody = JSON.parse(JSON.stringify(body));
setEmptyStringsToNull(reqBody);
const finalBody: CreateHolderContactsDTO = { ...newBody, ...reqBody };
let connection;
try {
connection = await this.oracleDBService.getConnection();
const CONTACTSTABLE_INSTANCE = await this.oracleService.get_CONTACTS_TABLE_INSTANCE(finalBody);
const result = await connection.execute(
`BEGIN
MANAGEPREPARER_PKG.CreateClientContact(
:P_SPID, :P_HOLDERID, :P_CONTACTSTABLE, :P_USERID, :P_CURSOR
);
END;`,
{
P_SPID: { val: finalBody.P_SPID, type: oracledb.DB_TYPE_NUMBER },
P_HOLDERID: { val: finalBody.P_HOLDERID, type: oracledb.DB_TYPE_NUMBER },
P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: oracledb.DB_TYPE_OBJECT },
P_USERID: { val: finalBody.P_USERID, type: oracledb.DB_TYPE_NVARCHAR },
P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},
{ outFormat: oracledb.OUT_FORMAT_OBJECT }
);
await connection.commit();
const outBinds = result.outBinds;
if (!outBinds?.P_CURSOR) {
this.logger.error('One or more expected cursors are missing from stored procedure output.');
throw new InternalServerException("Incomplete data received from the database.");
}
const fres: any = await fetchCursor(outBinds.P_CURSOR, ManageHoldersService.name);
if (fres.length > 0 && fres[0].ERRORMESG) {
this.logger.warn(fres[0].ERRORMESG);
throw new BadRequestException(fres[0].ERRORMESG)
}
return { statusCode: 201, message: "Created Successfully", ...fres[0] };
} catch (error) {
handleError(error, ManageHoldersService.name)