38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
import * as CRMTypes from '@/graphql/crm.types';
|
|
import { useStore } from '@/stores/hooks';
|
|
import { useApolloClient } from '@apollo/client';
|
|
import { useEffect } from 'react';
|
|
import { normalizeOptions } from 'tools';
|
|
|
|
/**
|
|
* @param {import('@apollo/client').ApolloClient} apolloClient
|
|
* @param {*} onCompleted
|
|
*/
|
|
export function getUsers({ query }, onCompleted) {
|
|
query({
|
|
query: CRMTypes.GetRolesDocument,
|
|
variables: { roleName: 'МПЛ' },
|
|
}).then(({ data }) => {
|
|
const users = data.roles?.flatMap((x) => x?.systemusers);
|
|
onCompleted({
|
|
selectUser: users,
|
|
});
|
|
});
|
|
}
|
|
|
|
export function useGetUsers() {
|
|
const { $calculation } = useStore();
|
|
const apolloClient = useApolloClient();
|
|
|
|
function handleOnCompleted(options) {
|
|
Object.keys(options).forEach((elementName) => {
|
|
const elementOptions = options[elementName];
|
|
$calculation.element(elementName).setOptions(normalizeOptions(elementOptions));
|
|
});
|
|
}
|
|
|
|
useEffect(() => {
|
|
getUsers(apolloClient, handleOnCompleted);
|
|
}, []);
|
|
}
|