196 lines
4.8 KiB
JavaScript
196 lines
4.8 KiB
JavaScript
/* eslint-disable import/prefer-default-export */
|
||
import { gql, useQuery } from '@apollo/client';
|
||
import dayjs from 'dayjs';
|
||
import utc from 'dayjs/plugin/utc';
|
||
import { useStore } from 'stores/hooks';
|
||
|
||
dayjs.extend(utc);
|
||
|
||
const QUERY_GET_MAIN_OPTIONS = gql`
|
||
query GetMainOptions($currentDate: DateTime) {
|
||
selectSupplierCurrency: transactioncurrencies {
|
||
label: currencyname
|
||
currencysymbol
|
||
value: transactioncurrencyid
|
||
}
|
||
|
||
selectProduct: evo_baseproducts(
|
||
statecode: 0
|
||
evo_relation: [100000000]
|
||
evo_datefrom_param: { lte: $currentDate }
|
||
evo_dateto_param: { gte: $currentDate }
|
||
) {
|
||
label: evo_name
|
||
value: evo_baseproductid
|
||
}
|
||
|
||
selectLeaseObjectType: evo_leasingobject_types(statecode: 0) {
|
||
label: evo_name
|
||
value: evo_leasingobject_typeid
|
||
}
|
||
|
||
selectGPSBrand: evo_gps_brands(statecode: 0) {
|
||
label: evo_name
|
||
value: evo_gps_brandid
|
||
}
|
||
}
|
||
`;
|
||
|
||
const QUERY_GET_SUBSIDIES = gql`
|
||
query GetSubsidies($currentDate: DateTime) {
|
||
evo_subsidies(
|
||
statecode: 0
|
||
evo_datefrom_param: { lte: $currentDate }
|
||
evo_dateto_param: { gte: $currentDate }
|
||
) {
|
||
label: evo_name
|
||
value: evo_subsidyid
|
||
evo_subsidy_type
|
||
}
|
||
}
|
||
`;
|
||
|
||
const QUERY_GET_REGIONS = gql`
|
||
query GetRegions {
|
||
evo_regions {
|
||
label: evo_name
|
||
value: evo_regionid
|
||
}
|
||
}
|
||
`;
|
||
|
||
const QUERY_GET_BRANDS = gql`
|
||
query GetBrands {
|
||
selectBrand: evo_brands(statecode: 0) {
|
||
label: evo_name
|
||
value: evo_brandid
|
||
}
|
||
}
|
||
`;
|
||
|
||
const QUERY_GET_DEALERS = gql`
|
||
query GetDealers {
|
||
selectDealer: accounts(evo_account_type: [100000001], statecode: 0, evo_legal_form: 100000001) {
|
||
label: name
|
||
value: accountid
|
||
}
|
||
}
|
||
`;
|
||
|
||
const QUERY_GET_ADDPRODUCT_TYPES = gql`
|
||
query GetAddproductTypes {
|
||
evo_addproduct_types(statecode: 0) {
|
||
label: evo_name
|
||
value: evo_addproduct_typeid
|
||
evo_graph_price
|
||
evo_product_type
|
||
}
|
||
}
|
||
`;
|
||
|
||
const currentDate = dayjs().utc(false).toISOString();
|
||
|
||
export function useMainData() {
|
||
const { $calculation } = useStore();
|
||
|
||
function handleOnCompleted(options) {
|
||
Object.keys(options).forEach((elementName) => {
|
||
const elementOptions = options[elementName];
|
||
$calculation.element(elementName).setOptions(elementOptions);
|
||
});
|
||
}
|
||
|
||
useQuery(QUERY_GET_MAIN_OPTIONS, {
|
||
variables: {
|
||
currentDate,
|
||
},
|
||
onCompleted: handleOnCompleted,
|
||
});
|
||
|
||
useQuery(QUERY_GET_SUBSIDIES, {
|
||
variables: {
|
||
currentDate,
|
||
},
|
||
onCompleted: (subsidies) => {
|
||
const selectSubsidy = subsidies?.evo_subsidies?.filter(
|
||
(x) => x?.evo_subsidy_type && [100_000_000, 100_000_001].includes(x?.evo_subsidy_type)
|
||
);
|
||
|
||
const selectImportProgram = subsidies?.evo_subsidies?.filter(
|
||
(x) => x?.evo_subsidy_type && [100_000_002].includes(x?.evo_subsidy_type)
|
||
);
|
||
|
||
handleOnCompleted({
|
||
selectSubsidy,
|
||
selectImportProgram,
|
||
});
|
||
},
|
||
});
|
||
|
||
useQuery(QUERY_GET_REGIONS, {
|
||
onCompleted: (regions) => {
|
||
const selectRegionRegistration = regions?.evo_regions;
|
||
const selectObjectRegionRegistration = regions?.evo_regions;
|
||
const selectLegalClientRegion = regions?.evo_regions;
|
||
|
||
handleOnCompleted({
|
||
selectRegionRegistration,
|
||
selectObjectRegionRegistration,
|
||
selectLegalClientRegion,
|
||
});
|
||
},
|
||
});
|
||
|
||
useQuery(QUERY_GET_BRANDS, {
|
||
onCompleted: handleOnCompleted,
|
||
});
|
||
|
||
useQuery(QUERY_GET_DEALERS, {
|
||
onCompleted: handleOnCompleted,
|
||
});
|
||
|
||
useQuery(QUERY_GET_ADDPRODUCT_TYPES, {
|
||
onCompleted: (addproductTypes) => {
|
||
const selectRegistration = addproductTypes.evo_addproduct_types
|
||
?.filter((x) => x?.evo_product_type === 100_000_001)
|
||
.map((x) => ({
|
||
...x,
|
||
label: `${x?.label} (${x?.evo_graph_price} руб.)`,
|
||
}));
|
||
|
||
const selectTechnicalCard = addproductTypes.evo_addproduct_types
|
||
?.filter((x) => x?.evo_product_type === 100_000_000)
|
||
.map((x) => ({
|
||
...x,
|
||
label: `${x?.label} (${x?.evo_graph_price} руб.)`,
|
||
}));
|
||
|
||
const selectTelematic = addproductTypes.evo_addproduct_types
|
||
?.filter((x) => x?.evo_product_type === 100_000_004)
|
||
.map((x) => ({
|
||
...x,
|
||
label: `${x?.label} (${x?.evo_graph_price} руб.)`,
|
||
}));
|
||
|
||
const selectTracker = addproductTypes.evo_addproduct_types
|
||
?.filter((x) => x?.evo_product_type === 100_000_003)
|
||
.map((x) => ({
|
||
...x,
|
||
label: `${x?.label} (${x?.evo_graph_price} руб.)`,
|
||
}));
|
||
|
||
const selectInsNSIB = addproductTypes.evo_addproduct_types?.filter(
|
||
(x) => x?.evo_product_type === 100_000_002
|
||
);
|
||
|
||
handleOnCompleted({
|
||
selectRegistration,
|
||
selectTechnicalCard,
|
||
selectTelematic,
|
||
selectTracker,
|
||
selectInsNSIB,
|
||
});
|
||
},
|
||
});
|
||
}
|