import { Provider_Type } from '@support-onboard/data_model/provider_type';
import { User_Type } from '@support-onboard/data_model/user_type';
import { CreditCard, LoyaltyInfo } from '@flight-modal/model';
import { DEFAULT_LOCALE_EN_US } from '@fixtures/onboard';
import {
  CompanyCustomFields,
  CustomField,
  CustomFiledOption
} from '@utility-lib/custom_fields';

export type CompanyLoginOptions = {
  providers: Provider_Type[];
  users: User_Type[];
  locale: string;
  creditCardInfo: CreditCard | undefined;
  loyaltyInfo: LoyaltyInfo | undefined;
  feeModelInfo: string;
  tripProposal: boolean;
  companyCustomFields: CompanyCustomFields;
  vip: boolean;
  companySuffix: string;
  phoneNumber: string;
};

export type CompanyLoginOptionsInitial = Partial<CompanyLoginOptions>;

export class CompanyUtility {
  static initCompanyLoginOptions(
    options: CompanyLoginOptionsInitial = {}
  ): CompanyLoginOptions {
    return {
      providers: options.providers ?? [],
      users: options.users ?? [],
      locale: options.locale || DEFAULT_LOCALE_EN_US,
      creditCardInfo: options.creditCardInfo ?? undefined,
      loyaltyInfo: options.loyaltyInfo ?? undefined,
      feeModelInfo: options.feeModelInfo || '',
      tripProposal: options.tripProposal ?? false,
      companyCustomFields:
        options.companyCustomFields ?? new Map<CustomField, CustomFiledOption[]>(),
      vip: options.vip ?? false,
      companySuffix: options.companySuffix || '',
      phoneNumber: options.phoneNumber || ''
    };
  }
}
