faxno optional, clientcontact-id added for client-contact-controls, Search-Holder API in holder section

This commit is contained in:
Kallesh B S 2025-06-10 16:20:00 +05:30
parent 4572ea4bcc
commit 34c5b5d22d
7 changed files with 106 additions and 19 deletions

View File

@ -121,7 +121,8 @@ export class GetClientDTO extends IntersectionType(
) { }
export class ClientContactControlsDTO extends IntersectionType(
GetClientDTO,
SPID_DTO,
CLIENT_CONTACTID_DTO,
USERID_DTO
) { }

View File

@ -98,7 +98,7 @@ export class CONTACTSTABLE_ROW_DTO extends IntersectionType(
EMAIL_ADDRESS_DTO,
PHONE_NO_DTO,
MOBILE_NO_DTO,
FAX_NO_DTO
PartialType(FAX_NO_DTO)
) { }
export class CONTACTSTABLE_DTO {

View File

@ -89,5 +89,9 @@ export class HolderContactActivateOrInactivateDTO extends IntersectionType(
SPID_DTO,
HOLDERCONTACTID_DTO,
USERID_DTO
) {
}
) {}
export class SearchHolderDTO extends IntersectionType(
SPID_DTO,
HOLDERNAME_DTO
){}

View File

@ -403,7 +403,7 @@ export class ManageClientsService {
END;`,
{
P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER },
P_USERID: { val: body.P_USERID, type: oracledb.DB_TYPE_NVARCHAR },
P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},
@ -447,7 +447,7 @@ export class ManageClientsService {
END;`,
{
P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER },
P_USERID: { val: body.P_USERID, type: oracledb.DB_TYPE_NVARCHAR },
P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},
@ -491,7 +491,7 @@ export class ManageClientsService {
END;`,
{
P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTID, type: oracledb.DB_TYPE_NUMBER },
P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER },
P_USERID: { val: body.P_USERID, type: oracledb.DB_TYPE_NVARCHAR },
P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},

View File

@ -14,14 +14,19 @@ import { ManageHoldersService } from './manage-holders.service';
import {
CreateHoldersDTO, GetHolderDTO, HolderActivateOrInactivateDTO,
HolderContactActivateOrInactivateDTO, UpdateHolderContactDTO, UpdateHolderDTO
HolderContactActivateOrInactivateDTO, SearchHolderDTO, UpdateHolderContactDTO, UpdateHolderDTO
} from 'src/dto/property.dto';
@ApiTags('Manage Holders - Oracle')
@Controller('oracle')
export class ManageHoldersController {
constructor(private readonly manageHoldersService: ManageHoldersService) { }
@ApiTags('Manage Holders - Oracle')
@Get('SearchHolder/:P_SPID/:P_HOLDERNAME')
SearchHolder(@Param() param: SearchHolderDTO) {
return this.manageHoldersService.SearchHolder(param)
}
@Post('/CreateHolderData')
CreateHolders(@Body() body: CreateHoldersDTO) {
return this.manageHoldersService.CreateHolders(body);
@ -29,49 +34,41 @@ export class ManageHoldersController {
// return {message:"Request received.."}
}
@ApiTags('Manage Holders - Oracle')
@Put('/UpdateHolder')
UpdateHolder(@Body() body: UpdateHolderDTO) {
return this.manageHoldersService.UpdateHolder(body);
}
@ApiTags('Manage Holders - Oracle')
@Put('/UpdateHolderContact')
UpdateHolderContact(@Body() body: UpdateHolderContactDTO) {
return this.manageHoldersService.UpdateHolderContact(body);
}
@ApiTags('Manage Holders - Oracle')
@Get('/GetHolderRecord/:P_SPID/:P_HOLDERID')
GetHolderMaster(@Param() body: GetHolderDTO) {
return this.manageHoldersService.GetHolderRecord(body);
}
@ApiTags('Manage Holders - Oracle')
@Get('/GetHolderContacts/:P_SPID/:P_HOLDERID')
GetHolderContacts(@Param() body: GetHolderDTO) {
return this.manageHoldersService.GetHolderContacts(body);
}
@ApiTags('Manage Holders - Oracle')
@Patch('/InactivateHolder/:P_SPID/:P_HOLDERID/:P_USERID')
InactivateHolder(@Param() body: HolderActivateOrInactivateDTO) {
return this.manageHoldersService.InactivateHolder(body);
}
@ApiTags('Manage Holders - Oracle')
@Patch('/ReactivateHolder/:P_SPID/:P_HOLDERID/:P_USERID')
ReactivateHolder(@Param() body: HolderActivateOrInactivateDTO) {
return this.manageHoldersService.ReactivateHolder(body);
}
@ApiTags('Manage Holders - Oracle')
@Patch('/InactivateHolderContact/:P_SPID/:P_HOLDERCONTACTID/:P_USERID')
InactivateHolderContact(@Param() body: HolderContactActivateOrInactivateDTO) {
return this.manageHoldersService.InactivateHolderContact(body);
}
@ApiTags('Manage Holders - Oracle')
@Patch('/ReactivateHolderContact/:P_SPID/:P_HOLDERCONTACTID/:P_USERID')
ReactivateHolderContact(@Param() body: HolderContactActivateOrInactivateDTO) {
return this.manageHoldersService.ReactivateHolderContact(body);

View File

@ -7,7 +7,7 @@ import { closeOracleDbConnection, fetchCursor, handleError, setEmptyStringsToNul
import {
CreateHoldersDTO, GetHolderDTO, HolderActivateOrInactivateDTO,
HolderContactActivateOrInactivateDTO, UpdateHolderContactDTO, UpdateHolderDTO
HolderContactActivateOrInactivateDTO, SearchHolderDTO, UpdateHolderContactDTO, UpdateHolderDTO
} from 'src/dto/property.dto';
import { OracleService } from '../oracle.service';
import { BadRequestException } from 'src/exceptions/badRequest.exception';
@ -562,4 +562,49 @@ export class ManageHoldersService {
await closeOracleDbConnection(connection, ManageHoldersService.name)
}
};
SearchHolder = async (body: SearchHolderDTO) => {
let connection;
try {
connection = await this.oracleDBService.getConnection();
const result: Result<any> = await connection.execute(
`BEGIN
MANAGEHOLDER_PKG.SearchHolder(
:P_SPID, :P_HOLDERNAME, :P_CURSOR
);
END;`,
{
P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER },
P_HOLDERCONTACTID: { val: body.P_HOLDERNAME, type: oracledb.DB_TYPE_NUMBER },
P_CURSOR: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
},
{
outFormat: oracledb.OUT_FORMAT_OBJECT,
},
);
await connection.commit();
const outBinds: any = 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 fres;
} catch (error) {
handleError(error, ManageHoldersService.name)
} finally {
await closeOracleDbConnection(connection, ManageHoldersService.name)
}
}
}

View File

@ -165,7 +165,7 @@ export class OracleService {
x.P_EMAILADDRESS,
x.P_PHONENO,
x.P_MOBILENO,
x.P_FAXNO,
x?.P_FAXNO,
);
}),
)
@ -182,6 +182,46 @@ export class OracleService {
}
}
async get_CONTACTS_TABLE_INSTANCEX(finalBody: any) {
// P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: 'CARNETSYS.CONTACTSTABLE' }
// P_CONTACTSTABLE: { val: CONTACTSTABLE_INSTANCE, type: oracledb.DB_TYPE_OBJECT }
// this is working fine for CreateCientContact
let connection;
try {
connection = await this.oracleDBService.getConnection();
const CONTACTSROW = await connection.getDbObjectClass('C##CARNETSYS.CONTACTSROW');
const CONTACTSARRAY = await connection.getDbObjectClass('C##CARNETSYS.CONTACTSARRAY');
const CONTACTSTABLE = await connection.getDbObjectClass('C##CARNETSYS.CONTACTSTABLE');
const contactRows = finalBody.P_CONTACTSTABLE?.map((x: CONTACTSTABLE_ROW_DTO) => {
return new CONTACTSROW({
FIRSTNAME: x.P_FIRSTNAME,
LASTNAME: x.P_LASTNAME,
MIDDLEINITIAL: x.P_MIDDLEINITIAL,
TITLE: x.P_TITLE,
EMAILADDRESS: x.P_EMAILADDRESS,
PHONENO: x.P_PHONENO,
MOBILENO: x.P_MOBILENO,
FAXNO: x.P_FAXNO,
});
}) ?? [];
const contactsArrayInstance = new CONTACTSARRAY(contactRows);
const CONTACTSTABLE_INSTANCE = new CONTACTSTABLE({ CONTACTS: contactsArrayInstance });
return CONTACTSTABLE_INSTANCE;
} catch (error) {
throw new Error("Error occured completing this process")
} finally {
await closeOracleDbConnection(connection, OracleService.name)
}
}
async get_CLIENTLOCADDRESS_TABLE_INSTANCE(finalBody: any) {
// P_CLIENTLOCADDRESSTABLE: { val: CLIENTLOCADDRESSTABLE_INSTANCE, type: 'CARNETSYS.CLIENTLOCADDRESSTABLE' }