import _isEmpty from 'lodash/isEmpty' import _map from 'lodash/map' import { IBillingInfoData } from '../types' export const getDataWithCustomFields = ( initialData: IBillingInfoData[], ticketHoldersFields: IBillingInfoData, customFields: any ) => { // Custom Fields are not specified case if (_isEmpty(customFields)) { const dataWithCustomFields = { ...initialData } const ticketHoldersWithCustomFields = { ...ticketHoldersFields } return { dataWithCustomFields, ticketHoldersWithCustomFields } } // Add Custom Fields for Order const orderWithCustomFields = { groupClassname: 'billing-info-container__customFields', groupItems: [...customFields.orderFields], } const initialDataFields = [...initialData[0].fields] // Add Custom Fields to penultimate position initialDataFields.splice(initialDataFields.length - 1, 0, { ...orderWithCustomFields, }) const dataWithCustomFields = [ { ...initialData[0], fields: initialDataFields, }, ] // Add Custom Fields for Ticket Holders const ticketHoldersFieldsArr = ticketHoldersFields.fields || [] const ticketHoldersCustomFieldsBlueprint = { id: ticketHoldersFieldsArr.length + 1, customFields: true, groupClassname: 'billing-info-container__customFields', groupItems: [...customFields.ticketsFields], } const ticketHoldersWithCustomFields = { ...ticketHoldersFields, fields: _isEmpty(ticketHoldersFieldsArr) ? [] : [...ticketHoldersFieldsArr, ticketHoldersCustomFieldsBlueprint], } return { dataWithCustomFields, ticketHoldersWithCustomFields } } export const getAddOnDataWithCustomFields = (customFields: any) => { // Custom Fields are not specified case if (_isEmpty(customFields)) { return { addOnDataWithCustomFields: [] } } // Add Custom Fields for Order const orderWithCustomFields = [ { id: 1, groupClassname: 'billing-info-container__customFields', groupItems: [...customFields.addOnFields], }, ] const addOnDataWithCustomFields = { fields: orderWithCustomFields, } return { addOnDataWithCustomFields } } export const getFieldsKeys = (customFields: any) => _map(customFields, field => field.name)