import { BreakfastPackageEnum } from "@/types/enums/breakfast" export function hasBreakfastPackageFromBookingFlow( packages: { code: string }[] ) { return packages.some( (p) => p.code === BreakfastPackageEnum.REGULAR_BREAKFAST || p.code === BreakfastPackageEnum.FREE_MEMBER_BREAKFAST || p.code === BreakfastPackageEnum.SPECIAL_PACKAGE_BREAKFAST ) } export function getBreakfastPackagesFromBookingFlow( packages: T[] ): T[] | undefined { // Since `FREE_CHILD_BREAKFAST` has the same code when breakfast is added // in the booking flow and as ancillary we can't just do a simple filter on the codes. // So we shortcircuit if there are no booking flow specific packages. if (!packages || !hasBreakfastPackageFromBookingFlow(packages)) { return undefined } return packages.filter( (p) => p.code === BreakfastPackageEnum.REGULAR_BREAKFAST || p.code === BreakfastPackageEnum.FREE_MEMBER_BREAKFAST || p.code === BreakfastPackageEnum.CHILD_PAYING_BREAKFAST || p.code === BreakfastPackageEnum.FREE_CHILD_BREAKFAST || p.code === BreakfastPackageEnum.SPECIAL_PACKAGE_BREAKFAST ) } export function getBreakfastPackagesFromAncillaryFlow< T extends { code: string }, >(packages: T[]): T[] | undefined { // Since `FREE_CHILD_BREAKFAST` has the same code when breakfast is added // in the booking flow and as ancillary we can't just do a simple filter on the codes. // So we shortcircuit if there are any booking flow specific packages. if (!packages || hasBreakfastPackageFromBookingFlow(packages)) { return undefined } return packages.filter( (p) => p.code === BreakfastPackageEnum.ANCILLARY_REGULAR_BREAKFAST || p.code === BreakfastPackageEnum.ANCILLARY_CHILD_PAYING_BREAKFAST || p.code === BreakfastPackageEnum.FREE_CHILD_BREAKFAST ) }