import _forEach from 'lodash/forEach' import _get from 'lodash/get' import _map from 'lodash/map' import { IGroupItem } from '../types' export const optionsAdapter = (options: any) => { const adaptedOptions = _map(options, option => ({ id: option.id, label: option.name, value: option.value, })) return adaptedOptions } export const fieldDataAdapter = (field: IGroupItem) => { const { name, label, required, description, type, options, ...restValues } = field const adaptedField: IGroupItem = { name, label, required, description, type, className: _get(restValues, 'settings.className', ''), value: _get(restValues, 'defaultValue'), } switch (type) { case 'textarea': adaptedField.type = 'text' adaptedField.multiline = true break case 'radio': adaptedField.radios = optionsAdapter(options) break case 'select_multi': adaptedField.isMultiple = true adaptedField.options = optionsAdapter(options) break case 'select': adaptedField.type = 'select_multi' adaptedField.isMultiple = false adaptedField.options = optionsAdapter(options) break default: break } return adaptedField } export const customFieldsDataAdapter = (data: any) => { const adaptedTicketFields: Array = [] const adaptedOrderFields: Array = [] const adaptedAddOnFields: Array = [] _forEach(data, field => { const ticketFields = _get(field, 'ticket.group.fields') const orderFields = _get(field, 'order.group.fields') const addOnFields = _get(field, 'add-on.group.fields') _forEach(ticketFields, ticketField => { adaptedTicketFields.push(fieldDataAdapter(ticketField)) }) _forEach(orderFields, orderField => { adaptedOrderFields.push(fieldDataAdapter(orderField)) }) _forEach(addOnFields, addOnField => { adaptedAddOnFields.push(fieldDataAdapter(addOnField)) }) }) return { ticketsFields: adaptedTicketFields, orderFields: adaptedOrderFields, addOnFields: adaptedAddOnFields } }