/* eslint-disable no-unsafe-optional-chaining */ /* eslint-disable no-restricted-globals */ import type { PropsWithChildren } from "react"; import { Skeleton } from "@/components/ui/skeleton/skeleton"; import { EarlyBookingDiscount, RezervationSummaryDivider, RezervationSummaryFlightInfo, RezervationSummaryFlightTotalPrice, RezervationSummaryProvider, RezervationSummaryTitle, } from "@/components/widget/rezervation-summary/rezervation-summary"; import { CoreSummaryAdditionalPrices } from "@/features/core/summary/components/core-summary-additional-prices"; import { useCoreSummaryCtx } from "@/features/core/summary/context/core-summary-context"; import { useSummaryCtxState } from "@/features/modules/hotel/summary/context/summary-context"; import { DateHelper, getFormatedFlightTime, } from "@/libs/helpers/date-time-helper"; import { getAirportCode, sortCombinationGroups, sortFlightSegments, } from "@/libs/helpers/flight-helper"; import { PriceManager } from "@/libs/price-manager/price-manager"; import type { IFlightDetailResponse } from "@/services/eva-display/flight/flight-detail/flight-detail.service"; const FlightSummaryReservationInfo = ( props: PropsWithChildren<{ detailData: IFlightDetailResponse; }>, ) => { const combinationGroups = sortCombinationGroups( props.detailData.pricingCombinations.length > 1 ? props.detailData.pricingCombinations.flatMap( (pricingCombination) => pricingCombination.combinationGroups, ) : (props.detailData.pricingCombinations[0]?.combinationGroups ?? []), ); const summaryState = useSummaryCtxState(); const { state: { discounts }, } = useCoreSummaryCtx(); if (!combinationGroups) { return (
); } const mainCurrency = props.detailData.pricingCombinations[0]!.totalPrice.slice(0, 3); const totaledPrice = props.detailData.pricingCombinations?.length > 1 ? props.detailData.pricingCombinations.reduce((acc, curr) => { return acc + +curr.totalPrice.slice(3); }, 0) : +props.detailData.pricingCombinations[0]!.totalPrice.slice(3); const totalPrice = PriceManager({ currency: mainCurrency, value: totaledPrice - (isNaN(+summaryState.campaing?.discountAmount.slice(3)) ? 0 : +summaryState.campaing?.discountAmount.slice(3)) - discounts.reduce((acc, curr) => acc + +curr.price, 0), }); const isRoundTrip = props.detailData.pricingCombinations[0]!.combinationGroups.length > 1 || props.detailData.pricingCombinations?.length > 1; return ( {combinationGroups.map((combinationGroup) => { const flightSegmentsItem = sortFlightSegments( combinationGroup.flightSegments, ); const originSegmentItem = flightSegmentsItem[0]!; const departureSegmentItem = flightSegmentsItem[flightSegmentsItem.length - 1]!; return ( ); })} {Boolean(summaryState.campaing) && summaryState.campaing?.name && summaryState.campaing?.discountAmount && ( )} {/* TODO:Total price ile toplamları eşit gelmiyor be problemi fixlenirse burası gösterilir */} {/* */} {props.children} ); }; export default FlightSummaryReservationInfo;