#How to Access headers in CustomPipe

1 messages · Page 1 of 1 (latest)

patent lance
#

Basically I want to access headers and from header I want to get orgId and call db to fetch details. Also want that existing dto run as it is like for firstName, lastName only want to validate gender dynamically.

// proposal.controller.ts
@Post()
@UsePipes(new GenderValidatorPipe())
async createProposal(
@Body() proposalRequest: ProposalRequestDto,
@Headers() headers,
): Promise<ProposalResponseDto> {
try {
this.logger.log({
userData: '',
message: 'entry in proposal controller and proposal data is ->',
data: proposalRequest,
});
console.log('proposal created', proposalRequest);
return;

// gender-validator.pipe.ts
import {
Injectable,
PipeTransform,
ArgumentMetadata,
BadRequestException,
} from '@nestjs/common';

@Injectable()
export class GenderValidatorPipe implements PipeTransform {
constructor() {}

async transform(request: any) {
    console.log('request-->>', request);
    const value = request.data.insuredDetails[0].applicantDetails.gender;
    // db call
    const validGenders = ['Male', 'Others'];

    if (!validGenders.includes(value)) {
        throw new BadRequestException(
            `Invalid gender: ${value}, acceptable gender: ${validGenders}`,
        );
    }
    return request;
}

}

//proposal.dto.ts
import { IsGenderValid } from './is-gender-valid.decorator';
export class ApplicantDetails {
@IsGenderValid()
gender: string;

@IsEnum(State)
@IsString()
@IsNotEmpty()
@ApiProperty()
state: string;

@IsString()
@IsEnum(Occupation)
@IsNotEmpty()
@ApiProperty()
occupation: string;

}