diff --git a/package.json b/package.json index ef1e73d..42d3989 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@types/cookie-parser": "^1.4.2", "@types/cors": "^2.8.7", "@types/express": "^4.17.7", + "@types/faker": "^5.1.0", "@types/lodash": "^4.14.159", "@types/morgan": "^1.9.1", "@types/node": "^14.6.0", @@ -58,6 +59,7 @@ "@types/styled-system": "^5.1.10", "agentkeepalive": "^4.1.3", "dotenv": "^8.2.0", + "faker": "^5.1.0", "http-proxy-middleware": "^1.0.5", "rimraf": "^3.0.2", "webpack-node-externals": "^2.5.1" diff --git a/src/client/Containers/Calculation/Sections/list.js b/src/client/Containers/Calculation/Sections/list.js index 1f21cde..8b592e6 100644 --- a/src/client/Containers/Calculation/Sections/list.js +++ b/src/client/Containers/Calculation/Sections/list.js @@ -946,7 +946,7 @@ export default [ title: 'Условие АВ агента ФЛ', Component: Select, props: { - name: 'SelectIndAgentRewardCondition', + name: 'selectIndAgentRewardCondition', valueName: 'indAgentRewardCondition', }, }, diff --git a/src/client/Containers/Calculation/index.jsx b/src/client/Containers/Calculation/index.jsx index a7a207c..e4020c0 100644 --- a/src/client/Containers/Calculation/index.jsx +++ b/src/client/Containers/Calculation/index.jsx @@ -1,15 +1,25 @@ +import { useStores } from 'client/hooks/useStores'; +import { getOptions } from 'client/services/CalculationService'; import { Box, Flex } from 'client/UIKit/grid'; -import React from 'react'; +import React, { useEffect } from 'react'; import Results from './Results'; import Sections from './Sections'; const Calculation = () => { + const { calculationStore } = useStores(); + useEffect(() => { + getOptions() + .then(options => { + calculationStore.applyOptions(options); + }) + .catch(err => { + throw err; + }); + }, []); return ( - + + new Promise((resolve, reject) => { + axios + .get('/api/calculation/getOptions') + //@ts-ignore + .then(res => { + console.log(res); + const { options } = res.data; + resolve(options); + }) + .catch(err => { + reject(err); + }); + }); diff --git a/src/client/stores/CalculationStore/Data/values.js b/src/client/stores/CalculationStore/Data/values.js index c36dc9c..932954c 100644 --- a/src/client/stores/CalculationStore/Data/values.js +++ b/src/client/stores/CalculationStore/Data/values.js @@ -31,6 +31,10 @@ const valuesActions = { setValidation(elementName, validation) { this.validations[elementName] = validation; }, + + applyOptions(options) { + this.options = { ...this.options, ...options }; + }, }; export { valuesData, valuesActions }; diff --git a/src/core/fakeData/calculation.ts b/src/core/fakeData/calculation.ts new file mode 100644 index 0000000..9b403d3 --- /dev/null +++ b/src/core/fakeData/calculation.ts @@ -0,0 +1,364 @@ +import { TElements } from 'core/types/elements'; +import faker from 'faker'; + +const calculationFakeData: TElements = { + selectSupplier: [ + { + name: 'RENAULT (Престиж)', + value: faker.random.uuid(), + }, + { + name: 'MITSUBISHI (Рольф)', + value: faker.random.uuid(), + }, + { + name: 'Volkswagen (ФаворитАвто)', + value: faker.random.uuid(), + }, + ], + selectFinDepartment: [ + { + name: 'Финотдел1', + value: faker.random.uuid(), + }, + { + name: 'Финотдел2', + value: faker.random.uuid(), + }, + { + name: 'Финотдел3', + value: faker.random.uuid(), + }, + ], + selectAddEquipmentCurrency: [ + { + name: 'RUB', + value: 'rub', + }, + { + name: 'USD', + value: 'usd', + }, + { + name: 'EUR', + value: 'eur', + }, + ], + selectClientType: [ + { + name: 'Новый', + value: 'new', + }, + { + name: 'Повторный', + value: 'repeat', + }, + ], + selectClientRisk: [ + { + name: 'Низкий', + value: 'low', + }, + { + name: 'Средний', + value: 'mid', + }, + { + name: 'Высокий', + value: 'high', + }, + ], + selectProduct: [ + { + name: 'Такси', + value: 'Taxi', + }, + { + name: 'ЕвоХард', + value: 'EuroHard', + }, + ], + selectLeaseObjectType: [ + { + name: 'Легковой автомобиль', + value: 'lehkovoy', + }, + { + name: 'Грузовой автомобиль', + value: 'gruzovoy', + }, + { + name: 'Спецтехника', + value: 'special', + }, + { + name: 'Прицеп', + value: 'prizep', + }, + ], + selectBrand: [ + { + name: 'Audi', + value: 'audi', + }, + { + name: 'BMW', + value: 'bmw', + }, + { + name: 'Chevrolet', + value: 'chevrolet', + }, + { + name: 'Toyota', + value: 'toyota', + }, + ], + selectModel: [ + { + name: 'Q5', + value: 'q5', + brand: 'audi', + }, + { + name: 'A3', + value: 'a3', + brand: 'audi', + }, + ], + selectConfiguration: [ + { + name: 'Комплектация 1', + value: 'compl1', + }, + { + name: 'Комплектация 2', + value: 'compl2', + }, + ], + selectDealer: [ + { + name: 'RENAULT (Престиж)', + value: faker.random.uuid(), + }, + { + name: 'MITSUBISHI (Рольф)', + value: faker.random.uuid(), + }, + { + name: 'Volkswagen (ФаворитАвто)', + value: faker.random.uuid(), + }, + ], + selectDealerPerson: [ + { + name: 'ООО "Престиж-Авто"', + value: faker.random.uuid(), + }, + { + name: 'ООО "Рольф"', + value: faker.random.uuid(), + }, + { + name: 'ООО "Авто-Рус-Моторс', + value: faker.random.uuid(), + }, + ], + selectDealerRewardСondition: [ + { + name: 'АВ не более 3% ЮЛ Новый', + value: faker.random.uuid(), + }, + { + name: ' АВ не более 1,5% ЮЛ Новый', + value: faker.random.uuid(), + }, + { + name: 'АВ не более 1% ЮЛ Новый', + value: faker.random.uuid(), + }, + ], + selectDealerBroker: [ + { + name: 'ИП Иванов', + value: 'Ivanov', + }, + { + name: 'ИП Смирнов', + value: 'Smirnov', + }, + ], + selectDealerBrokerRewardСondition: [ + { + name: 'АВ не более 3% Брокер Новый', + value: faker.random.uuid(), + }, + { + name: ' АВ не более 1,5% Брокер Новый', + value: faker.random.uuid(), + }, + { + name: 'АВ не более 1% Брокер Новый', + value: faker.random.uuid(), + }, + ], + selectIndAgentRewardCondition: [ + { + name: 'АВ не более 3% ФЛ Новый', + value: faker.random.uuid(), + }, + { + name: ' АВ не более 1,5% ФЛ Новый', + value: faker.random.uuid(), + }, + { + name: 'АВ не более 1% ФЛ Новый', + value: faker.random.uuid(), + }, + ], + selectCalcBrokerRewardCondition: [ + { + name: 'АВ не более 3% Брокер Новый', + value: faker.random.uuid(), + }, + { + name: ' АВ не более 1,5% Брокер Новый', + value: faker.random.uuid(), + }, + { + name: 'АВ не более 1% Брокер Новый', + value: faker.random.uuid(), + }, + ], + selectFinDepartmentRewardCondtion: [ + { + name: 'АВ не более 3% ФиноФинотдел Новый', + value: faker.random.uuid(), + }, + { + name: ' АВ не более 1,5% Финотдел Новый', + value: faker.random.uuid(), + }, + { + name: 'АВ не более 1% Финотдел Новый', + value: faker.random.uuid(), + }, + ], + selectGPSBrand: [ + { name: 'Цезарь Сателлит', value: 'cezar' }, + { name: 'Аркан', value: 'arkan' }, + { name: 'КобраКоннекс', value: 'kobra' }, + ], + selectGPSModel: [ + { + name: 'OmegaX', + value: 'omegax', + }, + { + name: 'Platinum', + value: 'platinum', + }, + ], + selectRegionRegistration: [ + { + name: 'Московская', + value: 'moscow', + }, + { + name: 'Калининградская', + value: 'kaliningrad', + }, + ], + selectTownRegistration: [ + { + name: 'Калининградская', + value: 'kaliningrad', + }, + { + name: 'Рязань', + value: 'ryazan', + }, + ], + selectLead: [ + { + name: '100_ООО "Архимаг', + value: faker.random.uuid(), + }, + { + name: '150_ООО "Некромант', + value: faker.random.uuid(), + }, + { + name: '200_ООО "Кардинал', + value: faker.random.uuid(), + }, + ], + selectOpportunity: [ + { + name: '112345_ООО "Архимаг', + value: faker.random.uuid(), + }, + { + name: '145678_ООО "Некромант', + value: faker.random.uuid(), + }, + { + name: '243910_ООО Кардинал', + value: faker.random.uuid(), + }, + ], + selectQuote: [ + { + name: '2345_ООО "Архимаг"', + value: faker.random.uuid(), + }, + { + name: '6789_ООО "Некромант"', + value: faker.random.uuid(), + }, + { + name: '8765_ООО "Кардинал', + value: faker.random.uuid(), + }, + ], + selectBroker: [ + { + name: 'ИП Иванов', + value: 'Ivanov', + }, + { + name: 'ИП Смирнов', + value: 'Smirnov', + }, + ], + selectAccount: [ + { + name: 'Архимаг', + value: faker.random.uuid(), + }, + { + name: 'Некромант', + value: faker.random.uuid(), + }, + { + name: 'Кардинал', + value: faker.random.uuid(), + }, + ], + selectContactClient: [ + { + name: 'Семенов Семен Семенович', + value: faker.random.uuid(), + }, + { + name: 'Иванова Александра Сергеевна', + value: faker.random.uuid(), + }, + { + name: 'Алексеев Алексей Алексеевич', + value: faker.random.uuid(), + }, + ], +}; + +export default calculationFakeData; diff --git a/src/core/types/elements.ts b/src/core/types/elements.ts index a3cf34b..b5fdc93 100644 --- a/src/core/types/elements.ts +++ b/src/core/types/elements.ts @@ -1,6 +1,6 @@ export type ElementsNames = - | 'SelectLead' - | 'SelectOpportunity' + | 'selectLead' + | 'selectOpportunity' | 'selectQuote' | 'cbxRecalcWthtRevision' | 'selectTemplate' @@ -75,7 +75,7 @@ export type ElementsNames = | 'selectDealerBrokerRewardСondition' | 'tbxDealerBrokerRewardSumm' | 'selectIndAgent' - | 'SelectIndAgentRewardCondition' + | 'selectIndAgentRewardCondition' | 'tbxIndAgentRewardSumm' | 'selectCalcDoubleAgent' | 'selectCalcDoubleAgentRewardCondition' @@ -118,7 +118,7 @@ export type ElementsNames = | 'selectTarif' | 'tbxCreditRate' | 'selectRate' - | 'SelectUserSession' + | 'selectUserSession' | 'radioRequirementTelematic' | 'cbxInsuranceDecentral' | 'tbxMaxPriceChange' diff --git a/src/core/types/stores.ts b/src/core/types/stores.ts index 4175246..e934efc 100644 --- a/src/core/types/stores.ts +++ b/src/core/types/stores.ts @@ -10,6 +10,7 @@ import { TStatuses, Status } from './statuses'; export interface ICalculationStore { options: TElements; + applyOptions: (options: TElements) => void; filters: TElements; values: TValues; diff --git a/src/server/controllers/CalculationController.ts b/src/server/controllers/CalculationController.ts new file mode 100644 index 0000000..449eb26 --- /dev/null +++ b/src/server/controllers/CalculationController.ts @@ -0,0 +1,13 @@ +import { Request, Response } from 'express'; +import calculationFakeData from '../../core/fakeData/calculation'; + +class CalculationController { + static getOptions = async (req: Request, res: Response): Promise => { + // request to Core + + const options = calculationFakeData; + res.send({ options }); + }; +} + +export default CalculationController; diff --git a/src/server/routes/calculation.ts b/src/server/routes/calculation.ts new file mode 100644 index 0000000..e58d563 --- /dev/null +++ b/src/server/routes/calculation.ts @@ -0,0 +1,8 @@ +import CalculationController from '../controllers/CalculationController'; +import { Router } from 'express'; + +const router = Router(); + +router.get('/getOptions', CalculationController.getOptions); + +export default router; diff --git a/src/server/routes/index.ts b/src/server/routes/index.ts index afefe14..91c43b7 100644 --- a/src/server/routes/index.ts +++ b/src/server/routes/index.ts @@ -1,10 +1,12 @@ -import { Router } from "express"; -import values from "./values"; -import users from "./users"; +import { Router } from 'express'; +import values from './values'; +import users from './users'; +import calculation from './calculation'; const routes = Router(); -routes.use("/api/values", values); -routes.use("/api/users", users); +routes.use('/api/values', values); +routes.use('/api/users', users); +routes.use('/api/calculation', calculation); export default routes;