From 38793c28d2767ba2c164f17057e0f4c35f7c2abe Mon Sep 17 00:00:00 2001 From: Chika Date: Fri, 13 Nov 2020 12:08:22 +0300 Subject: [PATCH] clean code --- src/client/Containers/Calculation/index.jsx | 151 ++---------------- .../Containers/Calculation/lib/fetchData.js | 136 ++++++++++++++++ src/client/services/CalculationService.ts | 10 +- src/core/tools/query.test.ts | 20 --- .../controllers/CalculationController.ts | 3 - src/server/controllers/ValuesController.ts | 12 -- src/server/index.ts | 10 +- src/server/routes/calculation.ts | 6 - src/server/routes/index.ts | 4 - src/server/routes/values.ts | 8 - 10 files changed, 155 insertions(+), 205 deletions(-) create mode 100644 src/client/Containers/Calculation/lib/fetchData.js delete mode 100644 src/core/tools/query.test.ts delete mode 100644 src/server/controllers/CalculationController.ts delete mode 100644 src/server/controllers/ValuesController.ts delete mode 100644 src/server/routes/calculation.ts delete mode 100644 src/server/routes/values.ts diff --git a/src/client/Containers/Calculation/index.jsx b/src/client/Containers/Calculation/index.jsx index b951c3e..633d178 100644 --- a/src/client/Containers/Calculation/index.jsx +++ b/src/client/Containers/Calculation/index.jsx @@ -1,151 +1,24 @@ 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 React, { useEffect, useState } from 'react'; import Result from 'client/Components/Result'; +import Spinner from 'client/Components/Spinner'; import Modal from 'client/Elements/Modal'; +import { withStoreModal } from 'client/hocs/withStore'; +import { Box, Flex } from 'client/UIKit/grid'; +import React, { useEffect, useState } from 'react'; +import fetchData from './lib/fetchData'; import Results from './Results'; import Sections from './Sections'; -import { gql } from '@apollo/client'; -import { currentDate } from 'client/common/constants'; -import { getUser } from 'client/tools/user'; const Calculation = () => { const [status, setStatus] = useState(LoadingStatus.loading); - const { calculationStore } = useStores(); - //TODO: move to external file useEffect(() => { - getUser().then(({ UserName, DomainName }) => { - Promise.all([ - CalculationService.getEntities({ - queries: initialOptions, - }), - CalculationService.crmgqlquery({ - query: gql` - query($statecode: Int, $currentDate: DateTime) { - evo_impairment_group: evo_impairment_groups( - statecode: $statecode - ) { - evo_impairment_groupid - evo_name - } - evo_currencychange: evo_currencychanges( - statecode: $statecode - evo_coursedate_param: { eq: $currentDate } - ) { - evo_currencychange - evo_ref_transactioncurrency - } - evo_coefficient: evo_coefficients( - statecode: $statecode - evo_datefrom_param: { lte: $currentDate } - evo_dateto_param: { gte: $currentDate } - ) { - evo_correction_coefficient - evo_graph_type - evo_season_type - evo_job_titleid - evo_sot_coefficient_typeid - evo_sot_coefficient - evo_corfficient_type - evo_min_period - evo_max_period - evo_graph_type - evo_season_type - evo_correction_coefficient - evo_client_riskid - evo_client_typeid - evo_risk_delta - evo_leasingobject_types { - evo_name - evo_id - evo_leasingobject_typeid - } - } - evo_sot_coefficient_type: evo_sot_coefficient_types( - statecode: $statecode - ) { - evo_id - evo_name - evo_sot_coefficient_typeid - } - evo_job_title: evo_job_titles(statecode: $statecode) { - evo_id - evo_name - evo_job_titleid - } - } - `, - variables: { - statecode: 0, - currentDate, - }, - }), - CalculationService.crmgqlquery({ - query: gql` - query($username: String) { - systemuser(domainname: $username) { - evo_job_titleid - businessunitid - firstname - lastname - fullname - } - } - `, - variables: { username: `${DomainName}\\${UserName}` }, - }), - CalculationService.getEntities({ - queries: [ - { - alias: 'insuranceCompany', - entityName: 'account', - where: { evo_account_type: 100000002, statecode: 0 }, - fields: ['accountid', 'name', 'evo_type_ins_policy'], - many: true, - }, - ], - }), - ]) - .then( - ([ - { entities: initialOptions }, - { entities: staticEntities }, - { - entities: { systemuser }, - }, - { entities: insuranceCompanies }, - ]) => { - console.log('Calculation -> staticEntities', staticEntities); - calculationStore.applyOptions(initialOptions); - calculationStore.applyStaticData(staticEntities); - calculationStore.applyStaticData({ systemuser: [systemuser] }); - calculationStore.setTableColumns('tableInsurance')({ - options: { ...insuranceCompanies }, - }); - - //TODO: move to external file - var supplierCurrency = calculationStore.options.selectSupplierCurrency.find( - x => x.isocurrencycode === 'RUB', - ); - calculationStore.setValue( - 'supplierCurrency', - supplierCurrency.transactioncurrencyid, - ); - - setStatus(LoadingStatus.ready); - }, - ) - .catch(err => { - setStatus(LoadingStatus.error); - throw err; - }); - }); - //TODO: makes 2 requests, need 1 + fetchData() + .then(() => { + setStatus(LoadingStatus.ready); + }) + .catch(() => { + setStatus(LoadingStatus.error); + }); }, []); if (status === LoadingStatus.loading) { diff --git a/src/client/Containers/Calculation/lib/fetchData.js b/src/client/Containers/Calculation/lib/fetchData.js new file mode 100644 index 0000000..b380bb1 --- /dev/null +++ b/src/client/Containers/Calculation/lib/fetchData.js @@ -0,0 +1,136 @@ +import { gql } from '@apollo/client'; +import { currentDate } from 'client/common/constants'; +import CalculationService from 'client/services/CalculationService'; +import CalculationStore from 'client/stores/CalculationStore'; +import { getUser } from 'client/tools/user'; +import initialOptions from 'core/Data/initialOptions'; + +export default () => + new Promise((resolve, reject) => { + getUser().then(({ UserName, DomainName }) => { + Promise.all([ + CalculationService.getEntities({ + queries: initialOptions, + }), + CalculationService.crmgqlquery({ + query: gql` + query($statecode: Int, $currentDate: DateTime) { + evo_impairment_group: evo_impairment_groups( + statecode: $statecode + ) { + evo_impairment_groupid + evo_name + } + evo_currencychange: evo_currencychanges( + statecode: $statecode + evo_coursedate_param: { eq: $currentDate } + ) { + evo_currencychange + evo_ref_transactioncurrency + } + evo_coefficient: evo_coefficients( + statecode: $statecode + evo_datefrom_param: { lte: $currentDate } + evo_dateto_param: { gte: $currentDate } + ) { + evo_correction_coefficient + evo_graph_type + evo_season_type + evo_job_titleid + evo_sot_coefficient_typeid + evo_sot_coefficient + evo_corfficient_type + evo_min_period + evo_max_period + evo_graph_type + evo_season_type + evo_correction_coefficient + evo_client_riskid + evo_client_typeid + evo_risk_delta + evo_leasingobject_types { + evo_name + evo_id + evo_leasingobject_typeid + } + } + evo_sot_coefficient_type: evo_sot_coefficient_types( + statecode: $statecode + ) { + evo_id + evo_name + evo_sot_coefficient_typeid + } + evo_job_title: evo_job_titles(statecode: $statecode) { + evo_id + evo_name + evo_job_titleid + } + } + `, + variables: { + statecode: 0, + currentDate, + }, + }), + CalculationService.crmgqlquery({ + query: gql` + query($username: String) { + systemuser(domainname: $username) { + evo_job_titleid + businessunitid + firstname + lastname + fullname + } + } + `, + variables: { username: `${DomainName}\\${UserName}` }, + }), + CalculationService.getEntities({ + queries: [ + { + //@ts-ignore + alias: 'insuranceCompany', + entityName: 'account', + where: { evo_account_type: 100000002, statecode: 0 }, + fields: ['accountid', 'name', 'evo_type_ins_policy'], + many: true, + }, + ], + }), + ]) + .then( + ([ + { entities: initialOptions }, + { entities: staticEntities }, + { + entities: { systemuser }, + }, + { entities: insuranceCompanies }, + ]) => { + CalculationStore.applyOptions(initialOptions); + CalculationStore.applyStaticData(staticEntities); + CalculationStore.applyStaticData({ systemuser: [systemuser] }); + CalculationStore.setTableColumns('tableInsurance')({ + options: { ...insuranceCompanies }, + }); + + var supplierCurrency = CalculationStore.options.selectSupplierCurrency?.find( + x => x.isocurrencycode === 'RUB', + ); + if (supplierCurrency) + CalculationStore.setValue( + 'supplierCurrency', + supplierCurrency.transactioncurrencyid, + ); + + resolve(); + }, + ) + .catch(err => { + reject(err); + throw err; + }); + }); + }); diff --git a/src/client/services/CalculationService.ts b/src/client/services/CalculationService.ts index 9091e14..2c1a904 100644 --- a/src/client/services/CalculationService.ts +++ b/src/client/services/CalculationService.ts @@ -4,19 +4,19 @@ import { getServerUrl } from 'client/common/urls'; import { CORE_PROXY_URL, CRM_GRAPHQL_PROXY_URL, - CRM_GRAPHQL_URL + CRM_GRAPHQL_URL, } from 'core/constants/urls'; import { convertEntityToOption } from 'core/tools/entities'; import { convertJSONToGQLQuery } from 'core/tools/query'; import { IGetCalculationRequest, IGetEntitiesRequest, - IRequestToCRMGQL + IRequestToCRMGQL, } from 'core/types/Calculation/Requests'; import { IGetCalculationResponse, IGetEntitiesResponse, - IGetUserResponse + IGetUserResponse, } from 'core/types/Calculation/Responses'; import { IBaseOption } from 'core/types/Calculation/Store/options'; import { TCRMEntity } from 'core/types/Entities/crmEntities'; @@ -43,7 +43,6 @@ class CalculationService { static getUser = (): Promise => new Promise((resolve, reject) => { axios.get('/api/users/getUser').then(res => { - console.log('User', res.data); resolve(res.data); }); }); @@ -67,7 +66,6 @@ class CalculationService { preparedData, ) .then(res => { - console.log(res); resolve(res.data); }) .catch(err => { @@ -99,8 +97,8 @@ class CalculationService { resEntities[targetName]; if (toOptions) + //@ts-ignore if (toOptions.includes(targetName)) { - //@ts-ignore //@ts-ignore if (Array.isArray(targetEnt)) { let optionatedEntities: (TCRMEntity & IBaseOption)[] = []; diff --git a/src/core/tools/query.test.ts b/src/core/tools/query.test.ts deleted file mode 100644 index 800d6d5..0000000 --- a/src/core/tools/query.test.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { convertJSONToGQL } from './query'; - -it('query converter works', () => { - const res = convertJSONToGQL([ - { - entityName: 'evo_baseproducts', - where: { statecode: 0 }, - fields: ['evo_id', 'evo_name'], - relatedEntities: [ - { - entityName: 'evo_leasingobject_types', - fields: ['evo_id', 'evo_name'], - }, - ], - }, - ]); - - console.log(res); - expect(res).not.toBeUndefined(); -}); diff --git a/src/server/controllers/CalculationController.ts b/src/server/controllers/CalculationController.ts deleted file mode 100644 index 2986369..0000000 --- a/src/server/controllers/CalculationController.ts +++ /dev/null @@ -1,3 +0,0 @@ -class CalculationController {} - -export default CalculationController; diff --git a/src/server/controllers/ValuesController.ts b/src/server/controllers/ValuesController.ts deleted file mode 100644 index e95f550..0000000 --- a/src/server/controllers/ValuesController.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Request, Response } from "express"; - -class ValuesController { - static getValue = async (req: Request, res: Response): Promise => { - res.send({ - a: 1, - b: 2, - }); - }; -} - -export default ValuesController; diff --git a/src/server/index.ts b/src/server/index.ts index 9911071..3a5798e 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -13,14 +13,10 @@ import { SERVER_PORT } from './../core/constants/urls'; const isDevelopmentMode = process.env.NODE_ENV === 'development'; -const buildDir = path.join( - process.cwd(), - process.env.NODE_ENV === 'development' ? '/build' : '', -); +const buildDir = path.join(process.cwd(), isDevelopmentMode ? '/build' : ''); const app = express(); -app.use(cors({ origin: isDevelopmentMode && '*', credentials: false })); /** AUTHENTICATION */ if (!isDevelopmentMode) app.use( @@ -32,14 +28,14 @@ if (!isDevelopmentMode) /** AUTHENTICATION */ /**EXTENTIONS */ +app.use(cors({ origin: isDevelopmentMode && '*', credentials: true })); +app.use(helmet({ contentSecurityPolicy: { reportOnly: true } })); app.use(bodyParser.json()); app.use( bodyParser.urlencoded({ extended: true, }), ); -app.use(helmet({ contentSecurityPolicy: { reportOnly: true } })); - // app.use(cookieParser()); app.use(compression()); app.use(morgan(isDevelopmentMode ? 'dev' : 'tiny')); diff --git a/src/server/routes/calculation.ts b/src/server/routes/calculation.ts deleted file mode 100644 index c7329c2..0000000 --- a/src/server/routes/calculation.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Router } from 'express'; -import CalculationController from '../controllers/CalculationController'; - -const router = Router(); - -export default router; diff --git a/src/server/routes/index.ts b/src/server/routes/index.ts index 8b4c68b..a6734d7 100644 --- a/src/server/routes/index.ts +++ b/src/server/routes/index.ts @@ -1,14 +1,10 @@ import { Router } from 'express'; -import values from './values'; import users from './users'; -import calculation from './calculation'; import proxy from './proxy'; const routes = Router(); -routes.use('/api/values', values); routes.use('/api/users', users); -routes.use('/api/calculation', calculation); routes.use('/proxy', proxy); export default routes; diff --git a/src/server/routes/values.ts b/src/server/routes/values.ts deleted file mode 100644 index c494c28..0000000 --- a/src/server/routes/values.ts +++ /dev/null @@ -1,8 +0,0 @@ -import ValuesController from "../controllers/ValuesController"; -import { Router } from "express"; - -const router = Router(); - -router.get("/", ValuesController.getValue); - -export default router;