import type { User } from '@/api/user/types'; import { crmTools } from '@/graphql/crm.tools'; import * as CRMTypes from '@/graphql/crm.types'; import { getCurrentISODate } from '@/utils/date'; import type { ApolloClient } from '@apollo/client'; export async function getInitialData({ query }: ApolloClient, user: User) { const leadsQuery = query({ query: CRMTypes.GetLeadsDocument, variables: { domainname: user.domainName }, }); const opportunitiesQuery = query({ query: CRMTypes.GetOpportunitiesDocument, variables: { domainname: user.domainName }, }); const transactionCurrenciesQuery = query({ query: CRMTypes.GetTransactionCurrenciesDocument }); const productsQuery = query({ fetchPolicy: 'network-only', query: CRMTypes.GetProductsDocument, variables: { currentDate: getCurrentISODate() }, }); const systemUserQuery = query({ fetchPolicy: 'network-only', query: CRMTypes.GetSystemUserDocument, variables: { domainname: user?.domainName }, }); const [ { data: { leads }, }, { data: { opportunities }, }, { data: { transactioncurrencies }, }, { data: { evo_baseproducts }, }, { data: { systemuser }, }, ] = await Promise.all([ leadsQuery, opportunitiesQuery, transactionCurrenciesQuery, productsQuery, systemUserQuery, ]); const transactioncurrency_rub = transactioncurrencies?.find((x) => x?.isocurrencycode === 'RUB'); if (transactioncurrency_rub?.transactioncurrencyid) { await query({ query: CRMTypes.GetTransactionCurrencyDocument, variables: { currencyid: transactioncurrency_rub?.transactioncurrencyid, }, }); } return { options: { selectLead: leads, selectOpportunity: opportunities, selectProduct: crmTools.evo_baseproducts(evo_baseproducts).filterBy.systemuser(systemuser), selectSupplierCurrency: transactioncurrencies, }, values: { supplierCurrency: transactioncurrency_rub?.transactioncurrencyid ?? null, }, }; }