/* eslint-disable no-param-reassign */ import type { ICorePassengerInformation } from "@/features/core/summary/types/core-summary.types"; import type { IPassengerInformation } from "@/services/eva-display/hotel/hotel-booking-request/hotel-booking-request-service.types"; import { DateHelper } from "./date-time-helper"; import { PhoneNumberHelper } from "./phone-number-helper"; export class CorePassengerHelper { private static DEFAULT_COUNTRY_VALUE = { Id: 277, ParentId: null, ParentRegion: null, Label: "", }; public static corePassengerToPassengerInformation( corePassengerInfo: Partial, ): IPassengerInformation { let phoneNumber = this.formatPhoneNumber(corePassengerInfo.phoneNumber); const passengerType = corePassengerInfo.passengerType === "child" ? 1 : 0; if (passengerType === 1) phoneNumber = ""; return { Id: 0, IsMaster: corePassengerInfo.index === 0, Address: this.createAddress(corePassengerInfo), Email: passengerType === 1 ? "" : (corePassengerInfo.email ?? ""), Prefix: "", Suffix: "", PhoneNumbers: [phoneNumber] as any, Country: corePassengerInfo.country ?? this.DEFAULT_COUNTRY_VALUE, LoyaltyCode: corePassengerInfo.milesCode ? `TK${corePassengerInfo.milesCode}` : "", TcKimlikNo: passengerType === 1 ? "" : (corePassengerInfo.identity ?? ""), SpecialServiceRequests: corePassengerInfo.specialServiceRequests ?? [], ZipCode: "", SecretCustomer: null, PassportTypeId: corePassengerInfo.identityCheck ? 1 : 0, MernisQueryStatus: 0, Key: corePassengerInfo.key ?? "Key", Name: corePassengerInfo.name ?? "", Surname: corePassengerInfo.surname ?? "", Age: 0, PassengerType: passengerType, Birthday: this.getBirthday(corePassengerInfo), Gender: this.getGender(corePassengerInfo), CrmCode: "", MilesCode: corePassengerInfo?.milesCode ?? "", HesCode: "", PassportNumber: corePassengerInfo.passportNumber ?? "", }; } private static formatPhoneNumber(phoneNumber: string | undefined): string { if (!phoneNumber) return "944444444444"; if (typeof phoneNumber === "object") { phoneNumber = PhoneNumberHelper.phoneNumberToString(phoneNumber); } if (!phoneNumber.startsWith("+90") && !phoneNumber.startsWith("90")) { phoneNumber = phoneNumber.startsWith("0") ? phoneNumber.replace("0", "+90") : `90${phoneNumber}`; } return phoneNumber.split(" ").join(""); } private static createAddress( corePassengerInfo: Partial, ) { return { AddressName: "", Street: corePassengerInfo.address ?? "", City: corePassengerInfo.city ?? "", Country: corePassengerInfo.country ?? this.DEFAULT_COUNTRY_VALUE, PostalCode: "", }; } private static getBirthday( corePassengerInfo: Partial, ): string { if (!corePassengerInfo.birthDate) return "1990-01-01T00:00:00.000"; return corePassengerInfo.type === "employee" ? DateHelper.fullYearStringToISOString( corePassengerInfo.birthDate, ".", "yyyy.MM.dd", ) : DateHelper.fullYearStringToISOString(corePassengerInfo.birthDate, "."); } private static getGender( corePassengerInfo: Partial, ): number | null { if (corePassengerInfo.passengerType === "child") return 0; return corePassengerInfo.gender == null ? null : +corePassengerInfo.gender; } public static getPassengersWithoutGenderInfo( corePassengerInfo: Partial[], ): Partial[] { return corePassengerInfo.filter((psg) => psg.gender === null); } }