88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
import { LoadingStatus } from 'client/common/loadingStatus';
|
|
import Spinner from 'client/Components/Spinner';
|
|
import { withStoreModal } from 'client/hocs/withStore';
|
|
import { useStores } from 'client/hooks/useStores';
|
|
import CalculationService from 'client/services/CalculationService';
|
|
import { Box, Flex } from 'client/UIKit/grid';
|
|
import initialOptions from 'core/Data/initialOptions';
|
|
import staticEntitiesList from 'core/Data/staticEntitiesList';
|
|
import React, { useEffect, useState } from 'react';
|
|
import Result from 'client/Components/Result';
|
|
import Modal from 'client/Elements/Modal';
|
|
import Results from './Results';
|
|
import Sections from './Sections';
|
|
|
|
const Calculation = () => {
|
|
const [status, setStatus] = useState(LoadingStatus.loading);
|
|
const { calculationStore } = useStores();
|
|
useEffect(() => {
|
|
Promise.all([
|
|
CalculationService.getEntities({
|
|
queries: initialOptions,
|
|
toOptions: true,
|
|
}),
|
|
CalculationService.getEntities({
|
|
queries: staticEntitiesList,
|
|
}),
|
|
CalculationService.getEntities({
|
|
queries: [
|
|
{
|
|
alias: 'insuranceCompany',
|
|
entityName: 'account',
|
|
where: { evo_account_type: 100000002, statecode: 0 },
|
|
fields: ['accountid', 'name', 'evo_type_ins_policy'],
|
|
many: true,
|
|
},
|
|
],
|
|
toOptions: true,
|
|
}),
|
|
])
|
|
.then(
|
|
([
|
|
{ entities: initialOptions },
|
|
{ entities: staticEntities },
|
|
{ entities: insuranceCompanies },
|
|
]) => {
|
|
calculationStore.applyOptions(initialOptions);
|
|
calculationStore.applyStaticData(staticEntities);
|
|
calculationStore.setTableColumns('tableInsurance')({
|
|
options: { ...insuranceCompanies },
|
|
});
|
|
setStatus(LoadingStatus.ready);
|
|
},
|
|
)
|
|
.catch(err => {
|
|
setStatus(LoadingStatus.error);
|
|
throw err;
|
|
});
|
|
}, []);
|
|
|
|
if (status === LoadingStatus.loading) {
|
|
return <Spinner />;
|
|
}
|
|
|
|
if (status === LoadingStatus.error) {
|
|
const ServerError = Result[500];
|
|
return <ServerError />;
|
|
}
|
|
|
|
const ModalComponent = withStoreModal(Modal);
|
|
|
|
return (
|
|
<Box mx={['0', '1%', '1%', '1.5%', '2%', '10%']}>
|
|
<Flex flexWrap="wrap" mb="50px">
|
|
<Sections flex={['1', '1', '1', '3']} />
|
|
<Results
|
|
flex={['1', '1', '1', '1']}
|
|
justifyContent="center"
|
|
// position={['sticky', 'sticky', 'sticky', 'relative']}
|
|
// bottom={[0, 0, 0, null]}
|
|
/>
|
|
<ModalComponent />
|
|
</Flex>
|
|
</Box>
|
|
);
|
|
};
|
|
|
|
export default Calculation;
|