Untitled

 avatar
unknown
plain_text
10 months ago
3.9 kB
9
Indexable
export const getHomeInfoResponseMapper = (getHomeInfoBawabaResponse: any, record: HomeApplication): HomeInsuranceFormBody => {
    const { transactionDetails, feesAndTaxes, mandatoryCovers, listedItems, buildingDetails, underWritingQuestions } = getHomeInfoBawabaResponse;
    const { stage } = record;
    const error = (stage === HomeFormStage.OFFER_FAILED) ? getQuotesError(record.errors) : undefined;
    const response: HomeInsuranceFormBody = {
        coverageDetails: {
            effectiveDate: transactionDetails.effectiveDate,
            ownershipCode: buildingDetails.ownershipCode,
        },
        feesAndTaxes: feesAndTaxes,
        mandatoryCovers: mandatoryCovers.map((element: any) => {
            return {
                coverCode: element.coverCode,
                coverIncluded: element.coverIncluded,
                coverageLimit: element.coverageLimit,
            };
        }),
        contents: getItemFromListedItems(CoverCode.CT, listedItems),
        personalPossessions: getItemFromListedItems(CoverCode.PP, listedItems),
        propertyDetails: {
            ..._.omit(buildingDetails, ['ownershipCode', 'ownershipStatus']),
        },
        underWritingQuestions: underWritingQuestions,
        stage,
        error,
    };
    return response;
    return plainToClass(HomeInsuranceFormBody, response, { enableImplicitConversion: true });
};





export class HomeInsuranceFormBody {

    @ValidateNested({ each: true })
    @Type((): any => CoverageDetails)
    public coverageDetails: CoverageDetails;

    public feesAndTaxes: FeeAndTax[];

    @ValidateNested({ each: true })
    public mandatoryCovers: MandatoryCover[];

    @ValidateNested({ each: true })
    @Type((): any => PropertyDetails)
    public propertyDetails: PropertyDetails;

    @ValidateNested({ each: true })
    public contents: ListedItemData[];

    @ValidateNested({ each: true })
    public personalPossessions: ListedItemData[];

    public underWritingQuestions: UnderWritingQuestion[];

    @IsString()
    @IsOptional()
    public stage: string;

    @IsOptional()
    @Type((): any => ErrorVO)
    public error: ErrorVO;
}



{
    "coverageDetails": {
        "effectiveDate": "2023-04-03 00:00:00"
    },
    "feesAndTaxes": [
        {
            "key": "loadingOrDiscountPercentage",
            "value": -10
        },
        {
            "key": "loadingOrDiscountAmount",
            "value": 75
        },
        {
            "key": "promoCodeDiscountPercentage",
            "value": 0
        },
        {
            "key": "promoCodeDiscountAmount",
            "value": 0
        },
        {
            "key": "vatRatePercentage",
            "value": 5
        },
        {
            "key": "vatAmount",
            "value": 33.75
        }
    ],
    "mandatoryCovers": [
        [],
        [],
        []
    ],
    "contents": [
        []
    ],
    "personalPossessions": [
        []
    ],
    "propertyDetails": {
        "cityCode": 1,
        "city": "DUBAI",
        "areaCode": "589",
        "area": "Downtown Dubai",
        "propertyTypeCode": 174,
        "propertyType": "Apartment",
        "buildingName": "Bel**levue Towers",
        "flatVillaNo": 395,
        "poBox": 560076,
        "numberOfFloors": 165,
        "numberOfBedrooms": 10,
        "latitude": 25.186958,
        "longitude": 55.275236,
        "street": "Burj Khalifa St",
        "zone": "Business Bay",
        "grl": "723377",
        "infoMapStatus": "1"
    },
    "underWritingQuestions": [
        {
            "key": "HomeUnattended",
            "value": "false"
        },
        {
            "key": "Claim",
            "value": "true"
        }
    ],
    "stage": "OfferCreated"
}
Editor is loading...
Leave a Comment