diff --git a/src/dto/manage-clients/manage-clients-property.dto.ts b/src/dto/manage-clients/manage-clients-property.dto.ts index f94d961..deff5a9 100644 --- a/src/dto/manage-clients/manage-clients-property.dto.ts +++ b/src/dto/manage-clients/manage-clients-property.dto.ts @@ -29,6 +29,7 @@ export class CLIENT_CONTACTID_DTO { @Min(0, { message: 'Property P_CLIENTCONTACTID must be at least 0 or more' }) @IsInt({ message: 'Property P_CLIENTCONTACTID allows only whole numbers' }) @IsNumber({}, { message: 'Property P_CLIENTCONTACTID must be a number' }) + @Transform(({ value }) => Number(value)) @IsDefined({ message: 'Property P_CLIENTCONTACTID is required' }) P_CLIENTCONTACTID: number; } diff --git a/src/dto/manage-clients/manage-clients.dto.ts b/src/dto/manage-clients/manage-clients.dto.ts index d163bae..15c8e42 100644 --- a/src/dto/manage-clients/manage-clients.dto.ts +++ b/src/dto/manage-clients/manage-clients.dto.ts @@ -60,7 +60,7 @@ export class UpdateClientContactsDTO extends IntersectionType( PartialType(MIDDLE_INITIAL_DTO), PartialType(TITLE_DTO), PHONE_NO_DTO, - FAX_NO_DTO, + PartialType(FAX_NO_DTO), PartialType(MOBILE_NO_DTO), EMAIL_ADDRESS_DTO, USERID_DTO diff --git a/src/dto/uscib-managed-sp/sp-contacts/sp-contacts.dto.ts b/src/dto/uscib-managed-sp/sp-contacts/sp-contacts.dto.ts index 7e6981b..88faf5a 100644 --- a/src/dto/uscib-managed-sp/sp-contacts/sp-contacts.dto.ts +++ b/src/dto/uscib-managed-sp/sp-contacts/sp-contacts.dto.ts @@ -1,4 +1,4 @@ -import { IntersectionType } from '@nestjs/swagger'; +import { IntersectionType, PartialType } from '@nestjs/swagger'; import { DEFAULT_CONTACT_FLAG_DTO, EMAIL_ADDRESS_DTO, FAX_NO_DTO, @@ -10,11 +10,11 @@ import { SPID_DTO } from '../sp/sp-property.dto'; export class InsertSPContactsDTO extends IntersectionType( SPID_DTO, DEFAULT_CONTACT_FLAG_DTO, FIRSTNAME_DTO, LASTNAME_DTO, MIDDLE_INITIAL_DTO, TITLE_DTO, - PHONE_NO_DTO, MOBILE_NO_DTO, FAX_NO_DTO, EMAIL_ADDRESS_DTO, USER_ID_DTO + PHONE_NO_DTO, MOBILE_NO_DTO, PartialType(FAX_NO_DTO), EMAIL_ADDRESS_DTO, USER_ID_DTO ) { } export class UpdateSPContactsDTO extends IntersectionType( SP_CONTACTID_DTO, FIRSTNAME_DTO, LASTNAME_DTO, MIDDLE_INITIAL_DTO, TITLE_DTO, PHONE_NO_DTO, - MOBILE_NO_DTO, FAX_NO_DTO, EMAIL_ADDRESS_DTO, USER_ID_DTO + MOBILE_NO_DTO, PartialType(FAX_NO_DTO), EMAIL_ADDRESS_DTO, USER_ID_DTO ) { } diff --git a/src/oracle/manage-clients/manage-clients.service.ts b/src/oracle/manage-clients/manage-clients.service.ts index 2dbb72e..0ecdb97 100644 --- a/src/oracle/manage-clients/manage-clients.service.ts +++ b/src/oracle/manage-clients/manage-clients.service.ts @@ -397,13 +397,13 @@ export class ManageClientsService { const result = await connection.execute( `BEGIN - MANAGEPREPARER_PKG.CreateClientContact( - :P_SPID, :P_CLIENTID, :P_USERID, :P_CURSOR + MANAGEPREPARER_PKG.SetDefaultClientContacts( + :P_SPID, :P_CLIENTCONTACTID, :P_USERID, :P_CURSOR ); END;`, { P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER }, - P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER }, + P_CLIENTCONTACTID: { 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 } }, @@ -441,13 +441,13 @@ export class ManageClientsService { const result = await connection.execute( `BEGIN - MANAGEPREPARER_PKG.CreateClientContact( - :P_SPID, :P_CLIENTID, :P_USERID, :P_CURSOR + MANAGEPREPARER_PKG.InactivateClientContacts( + :P_SPID, :P_CLIENTCONTACTID, :P_USERID, :P_CURSOR ); END;`, { P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER }, - P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER }, + P_CLIENTCONTACTID: { 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 } }, @@ -485,13 +485,13 @@ export class ManageClientsService { const result = await connection.execute( `BEGIN - MANAGEPREPARER_PKG.CreateClientContact( - :P_SPID, :P_CLIENTID, :P_USERID, :P_CURSOR + MANAGEPREPARER_PKG.ReactivateClientContacts( + :P_SPID, :P_CLIENTCONTACTID, :P_USERID, :P_CURSOR ); END;`, { P_SPID: { val: body.P_SPID, type: oracledb.DB_TYPE_NUMBER }, - P_CLIENTID: { val: body.P_CLIENTCONTACTID, type: oracledb.DB_TYPE_NUMBER }, + P_CLIENTCONTACTID: { 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 } }, diff --git a/src/oracle/user-maintenance/user-maintenance.service.ts b/src/oracle/user-maintenance/user-maintenance.service.ts index f473c93..e76c728 100644 --- a/src/oracle/user-maintenance/user-maintenance.service.ts +++ b/src/oracle/user-maintenance/user-maintenance.service.ts @@ -9,6 +9,7 @@ import { EMAIL_DTO, USERID_DTO, CreateClientLoginsDTO, CreateSPLoginsDTO, CreateUSCIBLoginsDTO, SPID_CLIENTID_DTO, SPID_EMAIL_DTO } from 'src/dto/property.dto'; +import { BadRequestException } from 'src/exceptions/badRequest.exception'; interface RoleDetail { [key: string]: any; } @@ -172,9 +173,15 @@ export class UserMaintenanceService { throw new InternalServerException("Incomplete data received from the database."); } - return { - data: await fetchCursor(outBinds.P_CURSOR), - }; + const fres: any = await fetchCursor(outBinds.P_CURSOR, UserMaintenanceService.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, UserMaintenanceService.name) } finally { @@ -250,7 +257,15 @@ export class UserMaintenanceService { throw new InternalServerException("Incomplete data received from the database."); } - return await fetchCursor(outBinds.P_CURSOR, UserMaintenanceService.name); + const fres: any = await fetchCursor(outBinds.P_CURSOR, UserMaintenanceService.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, UserMaintenanceService.name) } finally { @@ -359,7 +374,15 @@ export class UserMaintenanceService { throw new InternalServerException("Incomplete data received from the database."); } - return await fetchCursor(outBinds.P_CURSOR, UserMaintenanceService.name); + const fres: any = await fetchCursor(outBinds.P_CURSOR, UserMaintenanceService.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, UserMaintenanceService.name) } finally {