2024-02-17 17:39:31 +03:00

75 lines
2.0 KiB
TypeScript

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<object>, 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,
},
};
}