Untitled

 avatar
unknown
plain_text
a year ago
3.6 kB
4
Indexable
import { GetAllAgencies, GetAllCurrencies, GetAllSourceEnum } from '@/services/request.service';
import { GetAllUsers } from '@/services/user.service';
import { capitalize } from '@/utils/inputHelpers';

export const getAddRequestConfig = async () => {
  // Fetch the sources from the API
  const { response: sourcesResponse } = await GetAllSourceEnum();
  const { response: currenciesResponse } = await GetAllCurrencies();
  const { response: agenciesResponse } = await GetAllAgencies();
  const { response: userResponse } = await GetAllUsers();

  // Process users
  const users =
    userResponse?.data?.map((user: any) => ({
      label: `${user.firstName} ${user.lastName}`,
      value: user.id,
      type: 'User'
    })) || [];

  // Process agencies
  const agencies =
    agenciesResponse?.data.agencies?.map((agency) => ({
      label: agency.name,
      value: agency._id,
      type: 'Agency'
    })) || [];

  // Log agencies to the console
  // console.log('🚀 ~ getAddRequestConfig ~ agencies:', agencies);

  // Combine users and agencies
  const userModels = [...users, ...agencies];

  // Process sources
  const sources =
    sourcesResponse?.data.sources?.map((item) => ({
      name: capitalize(item),
      value: item
    })) || [];
  // console.log('🚀 ~ getAddRequestConfig ~ sources:', sources);

  // Process currencies
  const allCurrencies =
    currenciesResponse?.currencies?.map((currency) => ({
      label: currency.label,
      code: currency.code,
      displayedValue: `${currency.label} | ${currency.code.toUpperCase()}`
    })) || [];
  const currencies = Array.from(new Map(allCurrencies.map((item) => [item.code, item])).values());

  const addRequestConfig = [
    {
      name: 'source',
      type: 'select',
      required: true,
      label: 'Source',
      options: sources
    },
    {
      name: 'isB2B',
      type: 'checkbox',
      label: 'B2B Request',
      placeholderInactive: 'B2C',
      placeholderActive: 'B2B',
      defaultChecked: false
    },
    {
      name: 'customer',
      type: 'ac',
      label: 'Choose Please Contact',
      required: true,
      options: userModels,
      filterFields: ['label'],
      displayFields: ['label']
    },
    {
      name: 'onModel',
      type: 'hidden',
      label: 'Customer Model',
      defaultValue: 'User',
      required: true,
      options: [
        { name: 'User', value: 'User' },
        { name: 'Agency', value: 'Agency' }
      ]
    },
    {
      name: 'isUrgent',
      type: 'checkbox',
      placeholderInactive: 'No',
      placeholderActive: 'Yes',
      label: 'Urgent Request',
      defaultChecked: false
    },
    {
      name: 'isDelegation',
      type: 'checkbox',
      placeholderInactive: 'No',
      placeholderActive: 'Yes',
      label: 'Delegated Request',
      defaultChecked: false
    },
    {
      name: 'vatIncluded',
      type: 'checkbox',
      placeholderInactive: 'No',
      placeholderActive: 'Yes',
      label: 'VAT Included',
      defaultChecked: false
    },
    {
      name: 'comments',
      type: 'area',
      label: 'Comments',
      required: false,
      placeholder: 'Enter comments here, separate each by pressing Enter',
      rows: 4
    },
    {
      name: 'currency',
      type: 'ac',
      label: 'Currency',
      required: true,
      options: currencies,
      filterFields: ['label', 'code'],
      displayFields: ['displayedValue']
    }
  ];

  return addRequestConfig;
};

export default getAddRequestConfig;
Editor is loading...
Leave a Comment