import { differenceInMinutes, parseISO } from "date-fns"; import dayjs from "dayjs"; import type { BookingRequestCombinationGroup, BookingRequestFlightSegment, } from "@/services/eva-display/demand/demand-service.types"; import type { CombinationGroup, IFlightSegment, } from "@/services/eva-display/flight/flight-search/flight-search-services.types"; export function getAirportCode(location: string) { const match = location.match(/\((.*?)\)/); return match ? match[1]?.split("-")[0] : "Bilinmeyen havalimanı"; } export function sortCombinationGroupsForBookingRequest( combinationGroups: BookingRequestCombinationGroup[], ) { return combinationGroups.sort((a, b) => a.GroupId - b.GroupId); } export function sortCombinationGroups(combinationGroups: CombinationGroup[]) { return combinationGroups?.sort((a, b) => a.groupId - b.groupId); } export function sortFlightSegments(flightSegments: IFlightSegment[]) { return flightSegments?.sort( (a, b) => dayjs(a.departureTime).valueOf() - dayjs(b.departureTime).valueOf(), ); } export function sortFlightSegmentsForBookingRequest( flightSegments: BookingRequestFlightSegment[], ) { return flightSegments.sort( (a, b) => dayjs(a.DepartureTime).valueOf() - dayjs(b.DepartureTime).valueOf(), ); } export function getWaitingTime( arrivalTime: string, departureTime: string | undefined, ) { if (!departureTime) return null; const startDateObj = parseISO(arrivalTime); const endDateObj = parseISO(departureTime); const diffInMinutesResult = differenceInMinutes(endDateObj, startDateObj); const hour: number = Math.floor(diffInMinutesResult / 60); const minute: number = diffInMinutesResult % 60; return `${hour}sa ${minute}dk`; } export function getCityName(text: any) { let cityName = text.replace(/\([^)]*\)/g, "").trim(); if (cityName.includes(",")) { cityName = cityName.split(",")[0].trim(); } return cityName; }