{"version":3,"sources":["utils/analytics.js","components/Page.tsx","constants/constants.ts","actions/utilsActions.ts","reducers/accountReducer.ts","reducers/public/p_accountReducer.ts","actions/public/authActions.ts","reducers/utilsReducer.ts","publicServices/userFolderService.ts","reducers/public/folderReducer.ts","actions/public/folderActions.ts","reducers/public/searchReducer.ts","actions/public/searchActions.ts","reducers/public/searchTemplateReducer.ts","actions/public/searchTemplateActions.ts","reducers/index.ts","store/index.tsx","services/trackService.ts","actions/accountActions.ts","services/authService.ts","utils/i18nHelpers.ts","mixins/chartjs.js","serviceWorker.js","utils/settings.ts","context/SettingsContext.tsx","components/GoogleAnalytics.js","components/ScrollReset.js","hooks/useSettings.ts","theme/shadows.js","theme/index.ts","theme/typography.js","components/LoadingScreen.tsx","components/GuestRoute.tsx","components/AuthRoute.tsx","components/Logo.tsx","layouts/DashboardLayout/NavBar/NavItem.tsx","services/navBarService.ts","utils/navBarHelper.ts","layouts/DashboardLayout/NavBar/index.tsx","layouts/DashboardLayout/TopBar/Account.tsx","layouts/DashboardLayout/TopBar/Settings.tsx","layouts/DashboardLayout/TopBar/index.tsx","layouts/DashboardLayout/index.tsx","views/pages/Error404View.tsx","views/pages/NotImplemented.tsx","components/Auth.tsx","components/AccessRoute.tsx","Routes.manager.tsx","components/Loader.tsx","components/TenderUpdateModal.tsx","utils/ErrorPage.tsx","utils/ErrorBoundary.tsx","components/SupplierRequestedDocsModal.tsx","App.tsx","index.tsx","constants/enums.ts","utils/helper.ts","publicServices/authService.ts","utils/axios.ts"],"names":["track","window","gtag","arguments","pageview","props","process","REACT_APP_GA_MEASUREMENT_ID","event","type","Page","forwardRef","_ref","ref","title","children","rest","location","useLocation","sendPageViewEvent","useCallback","page_path","pathname","useEffect","React","createElement","Object","assign","Helmet","API","DEFAULT","DEV_MANAGER","TEST_MANAGER","DEV_SUPPLIER","TEST_SUPPLIER","PROD_MANAGER","PROD_SUPPLIER","OLD_DEV_MANAGER","OLD_DEV_SUPPLIER","REACT_APP_STAGING","PHONE_REGEX_UA","PHONE_REGEX_KZ","LATIN_CHARACTERS","TRIGGER_LOADER","TRIGGER_MENU_UPDATE","UPDATE_SAP_DATE","SET_TENDER_UPDATES","SET_REQUESTED_DOCS","triggerLoader","showLoader","dispatch","payload","updateSAPDate","newDate","lastSapUpdatedDate","setTenderUpdates","updates","tenderUpdates","setRequestedDocs","docs","requestedDocs","initialState","user","accountReducer","state","length","undefined","action","LOGIN_REQUEST","produce","draft","LOGIN_SUCCESS","VERIFIED_USER","isVerified","USER_PHOTO_UPLOADED","url","photoUrl","LOGIN_FAILURE","LOGOUT","SILENT_LOGIN","UPDATE_PROFILE","data","p_accountReducer","updateMenuCount","utilsReducer","constructor","getFolderList","Promise","resolve","reject","axios","get","then","response","catch","error","createFolder","folderData","post","id","addFolderToTender","folderId","tenderIds","swapFolders","userFolderId1","userFolderId2","updateFolder","put","removeFolder","delete","status","folders","folderReducer","folder","index","changedList","_","orderBy","currentEl","find","el","currentId","nextEl","nextId","currentElOrder","order","filter","includes","_id","search","searchValue","searchTemplates","searchTemplateReducer","searchTemplate","position","template","rootReducer","combineReducers","account","form","formReducer","intl","intlReducer","utils","publicAccount","folderList","searchReducer","store","preloadedState","middlewares","thunkMiddleware","middlewareEnhancer","composeWithDevTools","applyMiddleware","enhancers","composedEnhancers","compose","createStore","configureStore","locale","LANGS","RU","messages","getMessages","trackService","getLogs","options","logAction","message","login","email","password","rememberMe","async","authService","getCurrentUser","getIp","ip","logUserAction","UserActions","Login","setUserData","logout","updateProfile","updateCurrentUser","e","verify","code","userId","option","uploadPhoto","photo","removePhoto","_this","setAxiosInterceptors","onLogout","interceptors","use","this","loginInWithToken","setSession","request","emailAddress","access_token","token_type","refresh_token","Boolean","is_verified","localStorage","setItem","changePassword","currentPassword","newPassword","refreshToken","getRefreshToken","accessToken","getAccessToken","getItem","tokenType","defaults","headers","common","Authorization","uninterceptedAxiosInstance","JSON","stringify","removeItem","isValidToken","exp","jwtDecode","Date","now","isAuthenticated","sendVerification","phone","fetch","json","resetPassword","confirmResetPassword","handleAuthentication","availableMessages","EN","en_Us","ru","KZ","kz","changeLanguage","language","force","getState","getCurrentLanguage","isEmpty","updateLocals","messageExists","updateIntl","restoreLocale","settings","translate","defaultMessage","formatMessage","Chart","helpers","extend","elements","Rectangle","prototype","draw","ctx","_chart","vm","_view","left","right","top","bottom","signX","signY","borderSkipped","radius","borderWidth","cornerRadius","config","horizontal","base","x","y","height","width","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","hostname","match","storeSettings","defaultSettings","responsiveFontSizes","theme","THEMES","LIGHT","SettingsContext","createContext","SettingsProvider","currentSettings","setCurrentSettings","useState","Provider","value","saveSettings","updatedSettings","mergedSettings","merge","GA_MEASUREMENT_ID","GoogleAnalytics","src","ScrollReset","scrollTo","useSettings","useContext","strongShadows","baseConfig","direction","typography","h1","fontWeight","fontSize","letterSpacing","h2","h3","h4","h5","h6","overline","overrides","MuiLinearProgress","root","borderRadius","overflow","MuiListItemIcon","minWidth","MuiChip","themeConfigs","name","MuiInputBase","input","opacity","color","colors","blueGrey","palette","active","background","default","white","dark","paper","primary","main","indigo","secondary","text","shadows","ONE_DARK","hover","selected","disabled","disabledBackground","focus","UNICORN","createTheme","themeConfig","console","warn","Error","createMuiTheme","useStyles","makeStyles","alignItems","display","flexDirection","justifyContent","minHeight","padding","spacing","LoadingScreen","classes","NProgress","start","done","className","Box","LinearProgress","GuestRoute","component","Component","render","useSelector","Redirect","to","AuthRoute","Logo","alt","style","item","paddingTop","paddingBottom","itemLeaf","button","textTransform","buttonLeaf","fontWeightRegular","fontWeightMedium","icon","marginRight","info","injectIntl","href","depth","Icon","open","openProp","Info","setOpen","handleToggle","prevOpen","paddingLeft","getTranslations","ListItem","clsx","disableGutters","key","Button","onClick","size","ExpandLessIcon","ExpandMoreIcon","Collapse","in","activeClassName","RouterLink","exact","navBarService","getSapList","newData","forEach","lastUpdateTime","moment","startOf","toString","navBarHelper","getNavBarListByType","list","menuItem","push","displayName","navConfig","subHeaderKey","items","Trello","Eye","roles","AvailableRoles","TENDER_LIST","Plus","TENDER_CREATE","Users","USER_LIST","ROLE_LIST","Folder","BookOpen","Book","roleNames","PieChart","Calendar","Mail","SAPDATA_LIST","getFullYear","ShoppingCart","renderNavItems","List","disablePadding","reduce","acc","_ref2","hasUserAccess","userHasOneOfRole","matchPath","path","NavItem","reduceChildRoutes","mobileDrawer","desktopDrawer","avatar","cursor","headerTitle","_ref3","openMobile","onMobileClose","ready","setReady","userName","firstName","lastName","getSAPList","sapList","directories","content","PerfectScrollbar","suppressScrollX","Hidden","lgUp","p","Link","underline","Avatar","mt","textAlign","variant","Typography","role","Divider","map","subheader","ListSubheader","disableSticky","Fragment","Drawer","anchor","onClose","mdDown","popover","Account","history","useHistory","useRef","useDispatch","enqueueSnackbar","useSnackbar","isOpen","handleClose","ButtonBase","handleOpen","smDown","Menu","anchorOrigin","vertical","keepMounted","PaperProps","getContentAnchorEl","anchorEl","current","MenuItem","FormattedMessage","autoHideDuration","badge","marginTop","Settings","values","setValues","handleChange","field","Tooltip","Badge","IconButton","SvgIcon","SettingsIcon","Popover","TextField","fullWidth","label","onChange","target","select","SelectProps","native","keys","capitalCase","handleSave","zIndex","drawer","boxShadow","toolbar","menuButton","logoLink","textDecoration","lineHeight","logo","maxHeight","centerTitle","flexGrow","TopBar","onMobileNavOpen","today","getDate","getMonth","AppBar","Toolbar","MenuIcon","ml","wrapper","flex","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","NavBar","image","maxWidth","Error404View","useTheme","mobileDevice","useMediaQuery","down","Container","align","NotImplemented","Auth","isLoading","setLoading","initAuth","AccessRoute","Route","Routes","Suspense","fallback","Switch","from","lazy","USER_CREATE","USER_EDIT","ROLE_CREATE","ROLE_EDIT","absolute","Loader","tenderItem","marginBottom","TenderUpdateModal","isModalOpen","Dialog","aria-labelledby","DialogTitle","DialogContent","pendingPriceDeviation","tender","pendingPaymentInfo","readyToPublish","onVerification","onRevision","oapInspection","DialogActions","ErrorPage","margin","paragraph","ErrorBoundary","hasError","componentDidCatch","errorInfo","SupplierRequestedDocsModal","_requestedDocs$list","marginLeft","createBrowserHistory","jss","create","plugins","jssPreset","rtl","createStyles","boxSizing","html","fontFamily","body","App","IntlProvider","ThemeProvider","StylesProvider","MuiPickersUtilsProvider","MomentUtils","SnackbarProvider","maxSnack","Router","storedData","parse","err","restoreSettings","ReactDOM","document","getElementById","navigator","serviceWorker","registration","unregister","SupplierAllowStatus","DocumentsType","TenderFilterObjectType","TenderStatus","SupplierApproveStatus","ContractTemplateType","getRandomInt","max","ceil","random","allowOnlyNumbers","test","isFullGroupSelected","group","selectedItems","count","groupItem","sapApplicationNumber","similarSAPWorkItem","prepareRequestItems","preparedData","similarItem","getImageFormData","file","formData","FormData","getFile","append","acceptRoles","rolesData","getUserRoles","some","getTenderUpdates","tenders","updatedTenders","OnRevision","TENDER_EDIT","ReadyToPublish","OnVerification","TENDER_VERIFICATION","PendingPaymentInfo","TENDER_PENDING_PAYMENT_INFO","PendingPriceDeviation","TENDER_PENDING_PRICE_DEVIATION","OAPInspection","TENDER_OAP_INSPECTION","getUserRole","roleList","userRole","xhr","XMLHttpRequest","responseType","onload","send","downloadFile","URL","createObjectURL","Blob","link","setAttribute","appendChild","click","base64ToFile","fileName","arr","mime","bstr","atob","split","n","u8arr","Uint8Array","charCodeAt","downloadSelfUploadedFile","File","base64ToString","str","decodeURIComponent","c","slice","join","getSupplierStatus","supplier","reliabilityViolationCount","itemsPricing","oapAdmitted","rating","toBase64","reader","FileReader","readAsDataURL","result","b64","replace","onerror","downloadCsv","hiddenElement","encodeURI","download","normalizeData","returnData","number","Number","isNaN","translit","objectKey","transl","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я","toLowerCase","charAt","currencyCheck","currency","getPriceValueByRoleAccess","actionType","screenName","res","log","getXmlToSign","xml","checkXmlAfterSign","registrationData","instance"],"mappings":"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","file":"static/js/main.0b6d4e21.chunk.js","sourcesContent":["function track(...args) {\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n\n if (!window.gtag) {\n return;\n }\n\n window.gtag(...args);\n}\n\nfunction pageview(props) {\n track('config', process.env.REACT_APP_GA_MEASUREMENT_ID, props);\n}\n\nfunction event(type, props) {\n track('event', type, props);\n}\n\nexport default {\n pageview,\n event\n};\n","import React, {\n forwardRef,\n useEffect,\n useCallback,\n} from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from 'react-router';\nimport track from '../utils/analytics';\n\nexport interface PageProps {\n title?: string;\n header?: React.ReactNode;\n children?: React.ReactNode;\n hasBackground?: boolean;\n hasOverlap?: boolean;\n hasOverlapMajor?: boolean;\n hasShortHeader?: boolean;\n className?: string;\n styles?: {\n header?: { [key: string]: string };\n layout?: { [key: string]: string };\n };\n}\n\nconst Page = forwardRef(({\n title,\n children,\n ...rest\n}: PageProps, ref: React.Ref) => {\n const location = useLocation();\n\n const sendPageViewEvent = useCallback(() => {\n track.pageview({\n page_path: location.pathname\n });\n }, [location]);\n\n useEffect(() => {\n sendPageViewEvent();\n }, [sendPageViewEvent]);\n\n return (\n \n \n {title}\n \n {children}\n \n );\n});\n\nexport default Page;\n","export const HOST_API = {\n DEFAULT: '/api',\n DEV_MANAGER: 'https://uktmk-dev-procurement-manager.azurewebsites.net/api',\n TEST_MANAGER: 'https://uktmk-test-procurement-manager.azurewebsites.net/api',\n\n DEV_SUPPLIER: 'https://uktmk-dev-procurement-supplier.azurewebsites.net/api',\n TEST_SUPPLIER: 'https://uktmk-test-procurement-supplier.azurewebsites.net/api',\n\n PROD_MANAGER: 'https://manager.purchase.uktmp.kz/api',\n PROD_SUPPLIER: 'https://purchase.uktmp.kz/api',\n\n OLD_DEV_MANAGER: 'http://stage.procurement-manager.uktmk.tk/api',\n OLD_DEV_SUPPLIER: 'http://stage.procurement-supplier.uktmk.tk/api',\n};\n\n// export const API = '/api';\n// export const API = 'https://dev.procurement-manager.uktmk.tk/api';\n// export const API = 'https://dev.procurement-supplier.uktmk.tk/api';\n// export const API = 'http://manager.purchase.uktmp.kz/api';\n// export const API = 'http://supplier.purchase.uktmp.kz/api';\n// export const API = 'http://stage.procurement-manager.uktmk.tk/api'; //old\n// export const API = 'http://stage.procurement-supplier.uktmk.tk/api'; //old\n\nconst env = process.env.REACT_APP_STAGING || 'DEFAULT'; //possible values: sandpit, test, dev, preprod;\n\n// @ts-ignore\nexport const API = HOST_API[env];\n\nexport const PHONE_REGEX_UA = /^\\+?3?8?(0\\d{9})$/;\nexport const PHONE_REGEX_KZ = /^\\+?77(\\d{9})$/;\nexport const LATIN_CHARACTERS = /^([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00f6\\u00f8-\\u00ff\\s]*)$/;\n","import { Dispatch } from 'redux';\n\nexport const TRIGGER_LOADER = 'TRIGGER_LOADER';\nexport const TRIGGER_MENU_UPDATE = 'TRIGGER_MENU_UPDATE';\nexport const UPDATE_SAP_DATE = 'UPDATE_SAP_DATE';\nexport const SET_TENDER_UPDATES = 'SET_TENDER_UPDATES';\nexport const SET_REQUESTED_DOCS = 'SET_REQUESTED_DOCS';\n\nexport function triggerLoader(showLoader: boolean) {\n return (dispatch: Dispatch) =>\n dispatch({\n type: TRIGGER_LOADER,\n payload: {\n showLoader,\n },\n });\n}\n\nexport function triggerUpdateMenu() {\n return (dispatch: Dispatch) =>\n dispatch({\n type: TRIGGER_MENU_UPDATE,\n });\n}\n\nexport function updateSAPDate(newDate: any) {\n return (dispatch: Dispatch) =>\n dispatch({\n type: UPDATE_SAP_DATE,\n payload: {\n lastSapUpdatedDate: newDate,\n },\n });\n}\n\nexport function setTenderUpdates(updates: any) {\n return (dispatch: Dispatch) =>\n dispatch({\n type: SET_TENDER_UPDATES,\n payload: {\n tenderUpdates: updates,\n },\n });\n}\n\nexport function setRequestedDocs(docs: any) {\n return (dispatch: Dispatch) =>\n dispatch({\n type: SET_REQUESTED_DOCS,\n payload: {\n requestedDocs: docs,\n },\n });\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILURE,\n LOGOUT,\n SILENT_LOGIN,\n UPDATE_PROFILE,\n VERIFIED_USER,\n USER_PHOTO_UPLOADED,\n} from '../actions/accountActions';\nimport { DynamicObject } from '../types/DynamicObject';\nimport { UpdateUserProps } from '../types/User';\n\ninterface Action {\n type: string;\n payload: DynamicObject;\n}\n\ninterface State {\n user: {} | null;\n}\n\nconst initialState: State = {\n user: null\n};\n\nconst accountReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case LOGIN_REQUEST: {\n return produce(state, (draft) => {\n // Ensure we clear current session\n draft.user = null;\n });\n }\n\n case LOGIN_SUCCESS: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case VERIFIED_USER: {\n const { isVerified } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = {\n ...draft.user,\n isVerified\n };\n });\n }\n\n case USER_PHOTO_UPLOADED: {\n const { url } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = {\n ...draft.user,\n photoUrl: url,\n };\n });\n }\n\n case LOGIN_FAILURE: {\n return produce(state, () => {\n // Maybe store error\n });\n }\n\n case LOGOUT: {\n return produce(state, (draft) => {\n draft.user = null;\n });\n }\n\n case SILENT_LOGIN: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case UPDATE_PROFILE: {\n const user = action.payload.data as UpdateUserProps;\n\n return produce(state, (draft) => {\n draft.user = {\n ...draft.user,\n ...user,\n };\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default accountReducer;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\n\nimport { DynamicObject } from '../../types/DynamicObject';\nimport User from '../../types/public/User';\nimport {\n P_LOGIN_FAILURE,\n P_LOGIN_REQUEST, P_LOGIN_SUCCESS,\n P_LOGOUT,\n P_SILENT_LOGIN, P_USER_PHOTO_UPLOADED, P_VERIFIED_USER\n} from '../../actions/public/authActions';\nimport { USER_PHOTO_UPLOADED } from '../../actions/accountActions';\n\ninterface Action {\n type: string;\n data: DynamicObject;\n}\n\ninterface State {\n user: {} | null;\n}\n\nconst initialState: State = {\n user: null\n};\n\nconst p_accountReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case P_LOGIN_REQUEST: {\n return produce(state, (draft) => {\n draft.user = null;\n });\n }\n\n case P_LOGIN_SUCCESS: {\n const { user } = action.data;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case P_VERIFIED_USER: {\n const { isVerified } = action.data;\n\n return produce(state, (draft) => {\n draft.user = {\n ...draft.user,\n isVerified\n };\n });\n }\n\n case P_LOGIN_FAILURE: {\n return produce(state, () => {\n // Maybe store error\n });\n }\n\n case P_LOGOUT: {\n return produce(state, (draft) => {\n draft.user = null;\n });\n }\n\n case P_SILENT_LOGIN: {\n const { user } = action.data;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case P_USER_PHOTO_UPLOADED: {\n const { url } = action.data;\n\n return produce(state, (draft) => {\n draft.user = {\n ...draft.user,\n photoUrl: url,\n };\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default p_accountReducer;\n","import { Dispatch } from 'redux';\nimport authService from '../../publicServices/authService';\nimport User from '../../types/public/User';\nimport { USER_PHOTO_UPLOADED } from '../accountActions';\n\nexport const P_LOGIN_REQUEST = 'P_LOGIN_REQUEST';\nexport const P_LOGIN_SUCCESS = 'P_LOGIN_SUCCESS';\nexport const P_LOGIN_FAILURE = 'P_LOGIN_FAILURE';\nexport const P_SILENT_LOGIN = 'P_SILENT_LOGIN';\nexport const P_LOGOUT = 'P_LOGOUT';\nexport const P_VERIFIED_USER = 'P_VERIFIED_USER';\nexport const P_USER_PHOTO_UPLOADED = 'P_USER_PHOTO_UPLOADED';\n\nexport function login(email: string, password: string, rememberMe: boolean) {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: P_LOGIN_REQUEST });\n const isVerified: Boolean = await authService.login(email, password, rememberMe);\n const user: User = await authService.getCurrentUser();\n\n dispatch({\n type: P_LOGIN_SUCCESS,\n data: {\n user: {\n ...user,\n isVerified\n }\n }\n });\n } catch (error) {\n dispatch({ type: P_LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function setUserData(user: User) {\n return (dispatch: Dispatch) => dispatch({\n type: P_SILENT_LOGIN,\n data: {\n user: {\n ...user\n }\n }\n });\n}\n\nexport function logout() {\n return async (dispatch: Dispatch) => {\n authService.logout();\n dispatch({\n type: P_LOGOUT\n });\n };\n}\n\nexport function uploadPhoto(photo: FormData) {\n return async (dispatch: Dispatch) => {\n try {\n const url: string = await authService.uploadPhoto(photo);\n await dispatch({\n type: P_USER_PHOTO_UPLOADED,\n data: {\n url\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function removePhoto() {\n return async (dispatch: Dispatch) => {\n try {\n await authService.removePhoto();\n await dispatch({\n type: P_USER_PHOTO_UPLOADED,\n data: {\n url: '',\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function verify(code: string, userId: number, email: string, option: string) {\n return async (dispatch: Dispatch) => {\n try {\n const isVerified: boolean = await authService.verify(code, userId, email, option);\n await dispatch({\n type: P_VERIFIED_USER,\n data: {\n isVerified\n }\n });\n } catch (error) {\n //dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n","import produce from 'immer';\nimport {\n TRIGGER_LOADER,\n UPDATE_SAP_DATE,\n SET_TENDER_UPDATES,\n SET_REQUESTED_DOCS,\n TRIGGER_MENU_UPDATE,\n} from '../actions/utilsActions';\n\ninterface Action {\n type: string;\n payload: State;\n}\n\ninterface State {\n showLoader: boolean;\n updateMenuCount: number;\n lastSapUpdatedDate: any;\n tenderUpdates: any;\n requestedDocs: any;\n}\n\nconst initialState: State = {\n showLoader: false,\n updateMenuCount: 0,\n lastSapUpdatedDate: {},\n tenderUpdates: {},\n requestedDocs: {},\n};\n\nconst utilsReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case TRIGGER_LOADER: {\n const { showLoader } = action.payload;\n\n return produce(state, draft => {\n draft.showLoader = showLoader;\n });\n }\n\n case TRIGGER_MENU_UPDATE: {\n return produce(state, draft => {\n draft.updateMenuCount = draft.updateMenuCount + 1;\n });\n }\n\n case UPDATE_SAP_DATE: {\n const { lastSapUpdatedDate } = action.payload;\n\n return produce(state, draft => {\n draft.lastSapUpdatedDate = lastSapUpdatedDate;\n });\n }\n\n case SET_TENDER_UPDATES: {\n const { tenderUpdates } = action.payload;\n\n return produce(state, draft => {\n draft.tenderUpdates = tenderUpdates;\n });\n }\n\n case SET_REQUESTED_DOCS: {\n const { requestedDocs } = action.payload;\n\n return produce(state, draft => {\n draft.requestedDocs = { ...draft.requestedDocs, ...requestedDocs };\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default utilsReducer;\n","import axios from '../utils/axios';\nimport { API } from '../constants/constants';\nimport Tender from '../types/Tender';\nimport { NewTenderFAQ } from '../types/TenderFAQ';\nimport { NewTenderQuestion } from '../types/public/Tender';\nimport { FolderItem } from '../types/public/FolderList';\n\nclass UserFolderService {\n\n getFolderList = () => new Promise((resolve, reject) => {\n axios.get(`${ API }/UserFolder/List`)\n .then((response) => {\n if (response.data) {\n resolve(response.data);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n createFolder = (folderData: FolderItem) => new Promise((resolve, reject) => {\n axios.post(`${ API }/UserFolder`, folderData)\n .then((response) => {\n if (response.data) {\n resolve(response.data.id);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n addFolderToTender = (folderId: number, tenderIds: number[]) => new Promise((resolve, reject) => {\n axios.post(`${ API }/UserFolder/AddTenders`, {\n folderId,\n tenderIds,\n }).then((response) => {\n if (response.data) {\n resolve(response.data.id);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n swapFolders = (userFolderId1: number, userFolderId2: number) => new Promise((resolve, reject) => {\n axios.post(`${ API }/UserFolder/Swap`, {\n userFolderId1,\n userFolderId2,\n }).then((response) => {\n if (response.data) {\n resolve(response.data.id);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n updateFolder = (folderData: FolderItem) => new Promise((resolve, reject) => {\n axios.put(`${ API }/UserFolder/${folderData.id}`, folderData)\n .then((response) => {\n if (response.data) {\n resolve(true);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n removeFolder = (id: string) => new Promise((resolve, reject) => {\n axios.delete(`${ API }/UserFolder/${id}`)\n .then((response) => {\n if (response.status === 200) {\n resolve(true);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n}\n\nconst userFolderService = new UserFolderService();\n\nexport default userFolderService;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n CREATE_FOLDER, getFolderList,\n INITIALIZE_FOLDERS,\n REMOVE_FOLDERS,\n SET_FOLDERS,\n SWAP_FOLDERS,\n UPDATE_FOLDER\n} from '../../actions/public/folderActions';\nimport { FolderItem } from '../../types/public/FolderList';\nimport _ from 'lodash';\nimport userFolderService from '../../publicServices/userFolderService';\n\ninterface Action {\n type: string;\n data: any;\n}\n\ninterface State {\n folders: FolderItem[];\n folder?: FolderItem;\n index?: number;\n}\n\nconst initialState: State = {\n folders: []\n};\n\nconst folderReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case INITIALIZE_FOLDERS: {\n return produce(state, (draft) => {\n draft.folders = [];\n });\n }\n\n case SET_FOLDERS: {\n const { folders } = action.data;\n\n return produce(state, (draft) => {\n draft.folders = folders;\n });\n }\n\n case UPDATE_FOLDER: {\n const { folder, index } = action.data;\n\n return produce(state, (draft) => {\n if (folder && index !== undefined) {\n const changedList = _.orderBy(draft.folders, ['order'], \"asc\");\n changedList[index] = folder;\n draft.folders = changedList;\n }\n });\n }\n\n case CREATE_FOLDER: {\n const { folder } = action.data;\n\n return produce(state, (draft) => {\n if (folder) {\n draft.folders = [...draft.folders, folder];\n }\n });\n }\n\n case SWAP_FOLDERS: {\n return produce(state, (draft) => {\n const changedList = _.orderBy(draft.folders, ['order'], \"asc\");\n const currentEl = changedList.find((el)=> action.data.currentId === el.id);\n const nextEl = changedList.find((el)=> action.data.nextId === el.id);\n if (currentEl && nextEl) {\n const currentElOrder = currentEl.order;\n\n currentEl.order = nextEl.order;\n nextEl.order = currentElOrder;\n }\n\n draft.folders = changedList;\n });\n }\n\n case REMOVE_FOLDERS: {\n return produce(state, (draft ) => {\n const { folders } = action.data;\n draft.folders = draft.folders.filter((folder: any) => {\n if (folders.includes(folder._id)) {\n return false;\n }\n return true;\n });\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default folderReducer;\n","import { Dispatch } from 'redux';\nimport { FolderItem } from '../../types/public/FolderList';\nimport userFolderService from '../../publicServices/userFolderService';\n\n\nexport const INITIALIZE_FOLDERS = 'INITIALIZE_FOLDERS';\nexport const SET_FOLDERS = 'SET_FOLDERS';\nexport const UPDATE_FOLDER = 'UPDATE_FOLDER';\nexport const CREATE_FOLDER = 'CREATE_FOLDER';\nexport const SWAP_FOLDERS = 'SWAP_FOLDERS';\nexport const REMOVE_FOLDERS = 'REMOVE_FOLDERS';\n\nexport function getFolderList() {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: INITIALIZE_FOLDERS });\n const folderList: FolderItem[] = await userFolderService.getFolderList();\n\n dispatch({\n type: SET_FOLDERS,\n data: {\n folders: folderList,\n }\n });\n } catch (error) {\n dispatch({ type: INITIALIZE_FOLDERS });\n throw error;\n }\n };\n}\n\nexport function updateFolder(folder: FolderItem, index: number) {\n return async (dispatch: Dispatch) => {\n try {\n await userFolderService.updateFolder(folder);\n await dispatch({\n type: UPDATE_FOLDER,\n data: {\n folder,\n index\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function swapFolders(currentId: number, nextId: number) {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({\n type: SWAP_FOLDERS,\n data: {\n currentId,\n nextId\n }\n });\n await userFolderService.swapFolders(currentId, nextId);\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function createNewFolder(folder: FolderItem) {\n return async (dispatch: Dispatch) => {\n try {\n const id = await userFolderService.createFolder(folder);\n folder.id = id || undefined;\n await dispatch({\n type: CREATE_FOLDER,\n data: {\n folder\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function removeFolders(folders: string[]) {\n return async (dispatch: Dispatch) => {\n try {\n await userFolderService.removeFolder(folders[0]);\n await dispatch({\n type: REMOVE_FOLDERS,\n data: {\n folders\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n CLEAR_SEARCH,\n SET_SEARCH\n} from '../../actions/public/searchActions';\n\ninterface Action {\n type: string;\n data: any;\n}\n\ninterface State {\n search: string;\n}\n\nconst initialState: State = {\n search: '',\n};\n\nconst folderReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case CLEAR_SEARCH: {\n return produce(state, (draft) => {\n draft.search = '';\n });\n }\n\n case SET_SEARCH: {\n const { searchValue } = action.data;\n\n return produce(state, (draft) => {\n draft.search = searchValue;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default folderReducer;\n","import { Dispatch } from 'redux';\n\nexport const CLEAR_SEARCH = 'CLEAR_SEARCH';\nexport const SET_SEARCH = 'SET_SEARCH';\n\nexport function setSearch(searchValue: string) {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: CLEAR_SEARCH });\n\n await dispatch({\n type: SET_SEARCH,\n data: {\n searchValue\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function clearSearch() {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: CLEAR_SEARCH });\n } catch (error) {\n throw error;\n }\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n CREATE_SEARCH_TEMPLATE,\n REMOVE_SEARCH_TEMPLATES,\n INITIALIZE_SEARCH_TEMPLATES,\n SET_SEARCH_TEMPLATES,\n UPDATE_SEARCH_TEMPLATE,\n SWAP_SEARCH_TEMPLATES\n} from '../../actions/public/searchTemplateActions';\nimport _ from 'lodash';\nimport { SearchTemplateItem } from '../../types/public/SearchTemplate';\n\ninterface Action {\n type: string;\n data: any;\n}\n\ninterface State {\n searchTemplates: SearchTemplateItem[];\n searchTemplate?: SearchTemplateItem;\n index?: number;\n}\n\nconst initialState: State = {\n searchTemplates: []\n};\n\nconst searchTemplateReducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case INITIALIZE_SEARCH_TEMPLATES: {\n return produce(state, (draft) => {\n draft.searchTemplates = [];\n });\n }\n\n case SET_SEARCH_TEMPLATES: {\n const { searchTemplates } = action.data;\n\n return produce(state, (draft) => {\n draft.searchTemplates = searchTemplates;\n });\n }\n\n case UPDATE_SEARCH_TEMPLATE: {\n const { searchTemplate, index } = action.data;\n\n return produce(state, (draft) => {\n if (searchTemplate && index !== undefined) {\n const changedList = _.orderBy(draft.searchTemplates, ['order'], \"asc\");\n changedList[index] = searchTemplate;\n draft.searchTemplates = changedList;\n }\n });\n }\n\n case CREATE_SEARCH_TEMPLATE: {\n const { searchTemplate } = action.data;\n\n return produce(state, (draft) => {\n if (searchTemplate) {\n draft.searchTemplates = [...draft.searchTemplates, searchTemplate];\n }\n });\n }\n\n case SWAP_SEARCH_TEMPLATES: {\n return produce(state, (draft) => {\n const changedList = _.orderBy(draft.searchTemplates, ['order'], \"asc\");\n const currentEl = changedList[action.data.index];\n const nextEl = changedList[action.data.index + action.data.position];\n currentEl.order = nextEl.order;\n nextEl.order = action.data.index;\n\n draft.searchTemplates = changedList;\n });\n }\n\n case REMOVE_SEARCH_TEMPLATES: {\n return produce(state, (draft ) => {\n const { searchTemplates } = action.data;\n draft.searchTemplates = draft.searchTemplates.filter((template: SearchTemplateItem) => {\n if (searchTemplates.includes(template._id)) {\n return false;\n }\n return true;\n });\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default searchTemplateReducer;\n","import { Dispatch } from 'redux';\nimport { SearchTemplateItem } from '../../types/public/SearchTemplate';\n\nexport const INITIALIZE_SEARCH_TEMPLATES = 'INITIALIZE_SEARCH_TEMPLATES';\nexport const SET_SEARCH_TEMPLATES = 'SET_SEARCH_TEMPLATES';\nexport const UPDATE_SEARCH_TEMPLATE = 'UPDATE_SEARCH_TEMPLATE';\nexport const CREATE_SEARCH_TEMPLATE = 'CREATE_SEARCH_TEMPLATE';\nexport const SWAP_SEARCH_TEMPLATES = 'SWAP_SEARCH_TEMPLATES';\nexport const REMOVE_SEARCH_TEMPLATES = 'REMOVE_SEARCH_TEMPLATES';\n\nexport function getSearchTemplateList() {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: INITIALIZE_SEARCH_TEMPLATES });\n //const user: User = await authService.getCurrentUser();\n\n dispatch({\n type: SET_SEARCH_TEMPLATES,\n data: {\n searchTemplates: []\n }\n });\n } catch (error) {\n dispatch({ type: INITIALIZE_SEARCH_TEMPLATES });\n throw error;\n }\n };\n}\n\nexport function updateSearchTemplate(searchTemplate: SearchTemplateItem, index: number) {\n return async (dispatch: Dispatch) => {\n try {\n await dispatch({\n type: UPDATE_SEARCH_TEMPLATE,\n data: {\n searchTemplate,\n index\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function swapSearchTemplates(index: number, position: number) {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({\n type: SWAP_SEARCH_TEMPLATES,\n data: {\n index,\n position\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function createNewSearchTemplate(searchTemplate: SearchTemplateItem) {\n return async (dispatch: Dispatch) => {\n try {\n await dispatch({\n type: CREATE_SEARCH_TEMPLATE,\n data: {\n searchTemplate\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function removeSearchTemplates(searchTemplates: (string | undefined)[]) {\n return async (dispatch: Dispatch) => {\n try {\n await dispatch({\n type: REMOVE_SEARCH_TEMPLATES,\n data: {\n searchTemplates\n }\n });\n } catch (error) {\n throw error;\n }\n };\n}\n","import { combineReducers } from 'redux';\nimport { reducer as formReducer } from 'redux-form';\nimport accountReducer from './accountReducer';\nimport p_accountReducer from './public/p_accountReducer';\nimport utilsReducer from './utilsReducer';\nimport { intlReducer } from 'react-intl-redux'\nimport folderReducer from './public/folderReducer';\nimport searchReducer from './public/searchReducer';\nimport searchTemplateReducer from './public/searchTemplateReducer';\n\nconst rootReducer = combineReducers({\n account: accountReducer,\n form: formReducer,\n intl: intlReducer,\n utils: utilsReducer,\n publicAccount: p_accountReducer,\n folderList: folderReducer,\n search: searchReducer,\n searchTemplate: searchTemplateReducer,\n});\n\nexport default rootReducer;\n","/* eslint-disable import/prefer-default-export */\nimport { applyMiddleware, createStore, compose, StoreEnhancer } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { composeWithDevTools } from 'redux-devtools-extension';\n//import { createLogger } from 'redux-logger';\nimport rootReducer from '../reducers';\n//import { ENABLE_REDUX_LOGGER } from '../config';\nimport { LANGS } from '../constants/enums';\nimport { getMessages } from '../utils/i18nHelpers';\n//const loggerMiddleware = createLogger();\n\nconst initialState = {\n intl: {\n locale: LANGS.RU,\n messages: getMessages(LANGS.RU),\n },\n};\n\nexport function configureStore(preloadedState = {}) {\n const middlewares = [thunkMiddleware];\n\n /*if (ENABLE_REDUX_LOGGER) {\n middlewares.push(loggerMiddleware);\n }*/\n\n const middlewareEnhancer = composeWithDevTools(\n applyMiddleware(...middlewares)\n );\n\n const enhancers = [middlewareEnhancer];\n const composedEnhancers = compose(...enhancers) as StoreEnhancer;\n\n const store = createStore(rootReducer, preloadedState, composedEnhancers);\n\n return store;\n}\n\nconst store = configureStore(initialState);\n\nexport {\n store,\n};\n","import axios from '../utils/axios';\nimport { API } from '../constants/constants';\n\nclass TrackService {\n getLogs = (options: any) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/User/Track/List`, options)\n .then(response => {\n if (response.data) {\n resolve(response.data);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n logAction = (data: any) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/User/Track`, data)\n .then(response => {\n resolve(true);\n })\n .catch(error => {\n reject(error.data.message);\n });\n });\n}\n\nconst trackService = new TrackService();\n\nexport default trackService;\n","import { Dispatch } from 'redux';\nimport authService from '../services/authService';\nimport User from '../types/User';\nimport { logUserAction } from '../utils/helper';\nimport { UserActions } from '../constants/enums';\n\nexport const LOGIN_REQUEST = 'LOGIN_REQUEST';\nexport const LOGIN_SUCCESS = 'LOGIN_SUCCESS';\nexport const LOGIN_FAILURE = 'LOGIN_FAILURE';\nexport const SILENT_LOGIN = 'SILENT_LOGIN';\nexport const LOGOUT = 'LOGOUT';\nexport const REGISTER = 'REGISTER';\nexport const UPDATE_PROFILE = 'UPDATE_PROFILE';\nexport const VERIFIED_USER = 'VERIFIED_USER';\nexport const USER_PHOTO_UPLOADED = 'USER_PHOTO_UPLOADED';\n\nexport function login(email: string, password: string, rememberMe: boolean) {\n return async (dispatch: Dispatch) => {\n try {\n dispatch({ type: LOGIN_REQUEST });\n const isVerified: Boolean = await authService.login(email, password, rememberMe);\n const user: User = await authService.getCurrentUser();\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: {\n user: {\n ...user,\n isVerified,\n },\n },\n });\n authService.getIp().then(ip => {\n logUserAction(UserActions.Login, { ip });\n });\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function setUserData(user: User) {\n return (dispatch: Dispatch) =>\n dispatch({\n type: SILENT_LOGIN,\n payload: {\n user: {\n ...user,\n },\n },\n });\n}\n\nexport function logout() {\n return async (dispatch: Dispatch) => {\n authService.logout();\n dispatch({\n type: LOGOUT,\n });\n };\n}\n\nexport function updateProfile(data: any) {\n return async (dispatch: Dispatch) => {\n try {\n await authService.updateCurrentUser(data);\n await dispatch({\n type: UPDATE_PROFILE,\n payload: {\n data,\n },\n });\n } catch (e) {\n throw e;\n }\n };\n}\n\nexport function verify(code: string, userId: number, email: string, option: string) {\n return async (dispatch: Dispatch) => {\n try {\n const isVerified: boolean = await authService.verify(code, userId, email, option);\n await dispatch({\n type: VERIFIED_USER,\n payload: {\n isVerified,\n },\n });\n } catch (error) {\n //dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function uploadPhoto(photo: FormData) {\n return async (dispatch: Dispatch) => {\n try {\n const url: string = await authService.uploadPhoto(photo);\n await dispatch({\n type: USER_PHOTO_UPLOADED,\n payload: {\n url,\n },\n });\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function removePhoto() {\n return async (dispatch: Dispatch) => {\n try {\n await authService.removePhoto();\n await dispatch({\n type: USER_PHOTO_UPLOADED,\n payload: {\n url: '',\n },\n });\n } catch (error) {\n throw error;\n }\n };\n}\n","import jwtDecode from 'jwt-decode';\nimport axios, { uninterceptedAxiosInstance } from '../utils/axios';\nimport { API } from '../constants/constants';\nimport { triggerLoader } from '../actions/utilsActions';\nimport { store } from '../store';\nimport User, { UpdateUserProps } from '../types/User';\n\n// let count = Number(localStorage.getItem('count') || 0);\nclass AuthService {\n setAxiosInterceptors = ({ onLogout }: { onLogout: Function }) => {\n axios.interceptors.response.use(\n response => {\n // count--;\n // localStorage.setItem('count', count.toString());\n\n // if (!count) {\n store.dispatch(triggerLoader(false) as any);\n // }\n return response;\n },\n async error => {\n store.dispatch(triggerLoader(false) as any);\n // count--;\n // localStorage.setItem('count', count.toString());\n if (error.response && error.response.status === 401) {\n try {\n await this.loginInWithToken();\n } catch (e) {\n this.setSession(null);\n\n if (onLogout) {\n onLogout();\n }\n }\n }\n\n return Promise.reject(error.response);\n }\n );\n axios.interceptors.request.use(\n response => {\n store.dispatch(triggerLoader(true) as any);\n // count++;\n // localStorage.setItem('count', count.toString());\n\n return response;\n },\n error => {\n store.dispatch(triggerLoader(false) as any);\n // count--;\n // localStorage.setItem('count', count.toString());\n\n return Promise.reject(error);\n }\n );\n };\n\n handleAuthentication() {\n const accessToken = this.getAccessToken();\n\n if (!accessToken) {\n return;\n }\n\n if (!this.isValidToken(accessToken)) {\n this.setSession(null);\n }\n }\n\n login = (emailAddress: string, password: string, rememberMe: boolean = false) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/Token`, { email: emailAddress, password })\n .then(response => {\n if (response.data) {\n this.setSession(\n response.data.access_token,\n response.data.token_type,\n rememberMe,\n emailAddress,\n response.data.refresh_token\n );\n resolve(Boolean(response.data.is_verified));\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n getCurrentUser = () =>\n new Promise((resolve, reject) => {\n axios\n .get(`${API}/Account`)\n .then(response => {\n if (response.data) {\n const data = response.data as User;\n resolve(data);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n updateCurrentUser = (data: UpdateUserProps) =>\n new Promise((resolve, reject) => {\n axios\n .put(`${API}/Account`, data)\n .then(response => {\n if (response.data) {\n localStorage.setItem('email', data.email);\n resolve(true);\n } else {\n reject(false);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n changePassword = (currentPassword: string, newPassword: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/ChangePassword`, {\n currentPassword,\n newPassword,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n loginInWithToken = () =>\n new Promise((resolve, reject) => {\n const refreshToken: string | null = this.getRefreshToken();\n const accessToken: string | null = this.getAccessToken();\n const email = localStorage.getItem('email');\n if (refreshToken && accessToken && email) {\n axios\n .post(`${API}/Account/Token`, { email, refreshToken })\n .then(response => {\n if (response.data) {\n const rememberMe = Boolean(localStorage.getItem('rememberMe')) || false;\n this.setSession(\n response.data.access_token,\n response.data.token_type,\n rememberMe,\n email,\n response.data.refresh_token\n );\n resolve(Boolean(response.data.is_verified));\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n } else {\n reject();\n }\n });\n\n logout = () => {\n this.setSession(null);\n };\n\n setSession = (\n accessToken: string | null,\n tokenType?: string,\n rememberMe?: boolean,\n email?: string,\n refreshToken?: string\n ) => {\n if (accessToken && refreshToken && email) {\n localStorage.setItem('accessToken', `${tokenType} ${accessToken}`);\n localStorage.setItem('refreshToken', refreshToken);\n localStorage.setItem('email', email);\n axios.defaults.headers.common.Authorization = `${tokenType} ${accessToken}`;\n uninterceptedAxiosInstance.defaults.headers.common.Authorization = `${tokenType} ${accessToken}`;\n if (rememberMe) {\n localStorage.setItem('rememberMe', JSON.stringify(rememberMe));\n } else {\n localStorage.removeItem('rememberMe');\n }\n } else {\n localStorage.removeItem('accessToken');\n localStorage.removeItem('refreshToken');\n delete axios.defaults.headers.common.Authorization;\n delete uninterceptedAxiosInstance.defaults.headers.common.Authorization;\n }\n };\n\n getAccessToken = () => localStorage.getItem('accessToken');\n getRefreshToken = () => localStorage.getItem('refreshToken');\n\n isValidToken = (accessToken: string) => {\n if (!accessToken) {\n return false;\n }\n\n const { exp } = jwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n return exp > currentTime;\n };\n\n isAuthenticated = () => !!this.getAccessToken();\n\n sendVerification = (userId: number, email: string, phone: string, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/SendVerify${option}`, {\n userId,\n email,\n phone,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n verify = (code: string, userId: number, email: string, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/Verify${option}`, {\n code,\n email,\n userId,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n uploadPhoto = (photo: FormData) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/UploadPhoto`, photo)\n .then(response => {\n if (response.data) {\n resolve(response.data.photoUrl);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n removePhoto = () =>\n new Promise((resolve, reject) => {\n axios\n .delete(`${API}/Account/UploadPhoto`)\n .then(response => {\n if (response.data) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n getIp = () =>\n new Promise((resolve, reject) => {\n fetch('https://api.ipify.org?format=json')\n .then(response => response.json())\n .then(data => {\n if (data.ip) {\n resolve(data.ip);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n resetPassword = (email: string | null = null, phone: string | null = null, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/RecoveryPassword`, {\n email: option === 'Email' ? email : null,\n phone: option === 'Phone' ? phone : null,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(response.data);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n confirmResetPassword = (password: string, userId: string, code: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/RecoveryPassword/Confirm`, {\n password,\n userId,\n code,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n}\n\nconst authService = new AuthService();\n\nexport default authService;\n","import { store } from '../store';\nimport { updateIntl } from 'react-intl-redux';\nimport en_Us from '../langs/en-US.json';\nimport ru from '../langs/ru.json';\nimport kz from '../langs/kz.json';\nimport { LANGS } from '../constants/enums';\nimport _ from 'lodash';\nimport { Settings } from '../types/Settings';\n\nexport const availableMessages = {\n [LANGS.EN]: en_Us,\n [LANGS.RU]: ru,\n [LANGS.KZ]: kz,\n};\n\nexport function changeLanguage(language: LANGS, force = false): void {\n const state = store.getState();\n if (getCurrentLanguage() !== language\n || _.isEmpty(state.intl.messages)\n || force\n ) {\n updateLocals(language);\n }\n}\n\n/**\n * Get the intl locale (or the language being loaded)\n */\nfunction getCurrentLanguage(): string {\n const state = store.getState();\n return state.intl.locale;\n}\n\n/**\n * Returns true if message with id exists in translations\n */\nexport function messageExists(\n props: any,\n id: string,\n): boolean {\n return !!props.intl.messages[id];\n}\n\nfunction updateLocals(locale: LANGS) {\n store.dispatch(updateIntl({\n locale,\n messages: getMessages(locale),\n }))\n}\n\nexport function getMessages(locale: LANGS) {\n return availableMessages[locale];\n}\n\n\nexport function restoreLocale(settings: Settings = {}): string {\n const locale = settings.language || getCurrentLanguage();\n updateLocals(locale as LANGS);\n return locale;\n}\n\nexport function translate(props: any, id: string, defaultMessage = '') {\n const { intl } = props;\n return intl.formatMessage({ id, defaultMessage });\n}\n","/* eslint-disable */\nimport { Chart } from 'react-chartjs-2';\n\n// ChartJS extension rounded bar chart\n// https://codepen.io/jedtrow/full/ygRYgo\nfunction draw() {\n const { ctx } = this._chart;\n const vm = this._view;\n let { borderWidth } = vm;\n\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let radius;\n\n // If radius is less than 0 or is large enough to cause drawing errors a max\n // radius is imposed. If cornerRadius is not defined set it to 0.\n let { cornerRadius } = this._chart.config.options;\n if (cornerRadius < 0) {\n cornerRadius = 0;\n }\n\n if (typeof cornerRadius === 'undefined') {\n cornerRadius = 0;\n }\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\n\n // Find first (starting) corner with fallback to 'bottom'\n const borders = ['bottom', 'left', 'top', 'right'];\n let startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n let corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (let i = 1; i < 4; i += 1) {\n corner = cornerAt(i);\n let nextCornerId = i + 1;\n if (nextCornerId === 4) {\n nextCornerId = 0;\n }\n\n const width = corners[2][0] - corners[1][0];\n const height = corners[0][1] - corners[1][1];\n const x = corners[1][0];\n const y = corners[1][1];\n\n radius = cornerRadius;\n // Fix radius being too large\n if (radius > Math.abs(height) / 2) {\n radius = Math.floor(Math.abs(height) / 2);\n }\n if (radius > Math.abs(width) / 2) {\n radius = Math.floor(Math.abs(width) / 2);\n }\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const xTl = x;\n const xTr = x + width;\n const yTl = y + height;\n const yTr = y + height;\n\n const xBl = x;\n const xBr = x + width;\n const yBl = y;\n const yBr = y;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else if (width < 0) {\n // Negative values in a horizontal bar chart\n const xTl = x + width;\n const xTr = x;\n const yTl = y;\n const yTr = y;\n\n const xBl = x + width;\n const xBr = x;\n const yBl = y + height;\n const yBr = y + height;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else {\n // Positive Value\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(\n x + width,\n y + height,\n x + width - radius,\n y + height\n );\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n}\n\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\n draw\n});\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in projection, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'projection' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","export function restoreSettings() {\n let settings = null;\n\n try {\n const storedData = localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n }\n } catch (err) {\n // If stored data is not a strigified JSON this might fail,\n // that's why we catch the error\n }\n\n return settings;\n}\n\nexport function storeSettings(settings: any) {\n localStorage.setItem('settings', JSON.stringify(settings));\n}\n","import React, {\n createContext,\n useState,\n} from 'react';\nimport _ from 'lodash';\nimport { LANGS, THEMES } from '../constants/enums';\nimport { storeSettings } from '../utils/settings';\nimport { Settings } from '../types/Settings';\n\nconst defaultSettings: Settings = {\n responsiveFontSizes: true,\n theme: THEMES.LIGHT,\n settings: {},\n language: LANGS.RU,\n};\n\nconst SettingsContext = createContext(defaultSettings);\n\nexport function SettingsProvider(\n {\n settings,\n children,\n }: { settings: Settings, children: React.ReactNode }) {\n const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings);\n\n const handleSaveSettings = (updatedSettings = {}) => {\n const mergedSettings = _.merge({}, currentSettings, updatedSettings);\n\n setCurrentSettings(mergedSettings);\n storeSettings(mergedSettings);\n };\n\n return (\n \n {children}\n \n );\n}\n\n//export const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nconst GA_MEASUREMENT_ID = process.env.REACT_APP_GA_MEASUREMENT_ID;\n\nfunction GoogleAnalytics() {\n return (\n \n \n \n \n );\n}\n\nexport default GoogleAnalytics;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router';\n\nfunction ScrollReset() {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n}\n\nexport default ScrollReset;\n","import { useContext } from 'react';\nimport SettingsContext from '../context/SettingsContext';\n\nexport default function useSettings() {\n const context = useContext(SettingsContext);\n\n return context;\n}\n","export const softShadows = [\n 'none',\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];\n\nexport const strongShadows = [\n 'none',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\n];\n","/* eslint-disable no-console */\n/* eslint-disable import/prefer-default-export */\nimport _ from 'lodash';\nimport { colors, createMuiTheme, responsiveFontSizes } from '@material-ui/core';\nimport typography from './typography';\nimport { softShadows, strongShadows } from './shadows';\nimport { THEMES } from '../constants/enums';\nimport { ThemConfig } from '../types/Them';\nimport { Settings } from '../types/Settings';\n\nconst baseConfig = {\n direction: 'ltr',\n typography,\n overrides: {\n MuiLinearProgress: {\n root: {\n borderRadius: 3,\n overflow: 'hidden'\n }\n },\n MuiListItemIcon: {\n root: {\n minWidth: 32\n }\n },\n MuiChip: {\n root: {\n backgroundColor: 'rgba(0,0,0,0.075)'\n }\n }\n }\n};\n\nconst themeConfigs: ThemConfig[] = [\n {\n name: THEMES.LIGHT,\n overrides: {\n MuiInputBase: {\n input: {\n '&::placeholder': {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n }\n },\n palette: {\n type: 'light',\n action: {\n active: colors.blueGrey[600]\n },\n background: {\n default: colors.common.white,\n dark: '#f4f6f8',\n paper: colors.common.white\n },\n primary: {\n main: colors.indigo[600]\n },\n secondary: {\n main: '#5850EC'\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600]\n }\n },\n shadows: softShadows\n },\n {\n name: THEMES.ONE_DARK,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#282C34',\n dark: '#1c2025',\n paper: '#282C34'\n },\n primary: {\n main: '#8a85ff'\n },\n secondary: {\n main: '#8a85ff'\n },\n text: {\n primary: '#e6e5e8',\n secondary: '#adb0bb'\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.UNICORN,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#2a2d3d',\n dark: '#222431',\n paper: '#2a2d3d'\n },\n primary: {\n main: '#a67dff'\n },\n secondary: {\n main: '#a67dff'\n },\n text: {\n primary: '#f6f5f8',\n secondary: '#9699a4'\n }\n },\n shadows: strongShadows\n }\n];\n\nexport function createTheme(settings: Settings = {}) {\n let themeConfig = themeConfigs.find((theme) => theme.name === settings.theme);\n\n if (!themeConfig) {\n console.warn(new Error(`The theme ${settings.theme} is not valid`));\n [themeConfig] = themeConfigs;\n }\n\n let theme = createMuiTheme(\n _.merge(\n {},\n baseConfig,\n themeConfig,\n { direction: settings.direction }\n )\n );\n\n if (settings.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n}\n","export default {\n h1: {\n fontWeight: 500,\n fontSize: 35,\n letterSpacing: '-0.24px'\n },\n h2: {\n fontWeight: 500,\n fontSize: 29,\n letterSpacing: '-0.24px'\n },\n h3: {\n fontWeight: 500,\n fontSize: 24,\n letterSpacing: '-0.06px'\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: '-0.06px'\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: '-0.05px'\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: '-0.05px'\n },\n overline: {\n fontWeight: 500\n }\n};\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { Box, LinearProgress, makeStyles } from '@material-ui/core';\nimport { ThemConfig } from '../types/Them';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n alignItems: 'center',\n backgroundColor: '#00000069',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n }\n}));\n\nfunction LoadingScreen() {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n \n \n
\n );\n}\n\nexport default LoadingScreen;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport User from '../types/User';\n\ninterface GuestRouteProps {\n component: any,\n render?: any,\n exact?: any,\n path?: any,\n}\n\ninterface State {\n account: {\n user: User,\n },\n}\n\nfunction GuestRoute({ component: Component, render, ...rest }:GuestRouteProps) {\n const account = useSelector((state:State) => state.account);\n\n if (account.user) {\n return ;\n }\n\n return render ? render({ ...rest }) : ;\n}\nexport default GuestRoute;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport User from \"../types/User\";\n\n/*interface AuthRouteProps {\n component?: any,\n render?: any,\n exact?: any,\n path?: any,\n}*/\n\ninterface State {\n account: {\n user: User,\n },\n}\n\nfunction AuthRoute({ component: Component, render, ...rest }: any) {\n const account = useSelector((state: State) => state.account);\n\n if (!account.user) {\n return ;\n }\n if (account.user && !account.user.isVerified) {\n return ;\n }\n\n return render ? render({ ...rest }) : ;\n}\n\nexport default AuthRoute;\n","import React from 'react';\n\ninterface LogoProps {\n className?: string;\n}\n\nfunction Logo(props: LogoProps) {\n return (\n \n );\n}\n\nexport default Logo;\n","import React, { useState } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport {\n Button,\n Collapse,\n ListItem,\n makeStyles\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport { FormattedMessage, injectIntl, WrappedComponentProps } from 'react-intl';\nimport { messageExists, translate } from '../../../utils/i18nHelpers';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n },\n info: {},\n}));\n\ninterface NavItemProps {\n children?: React.ReactNode;\n className?: string;\n depth: number;\n key: string;\n href?: string;\n icon?: any;\n open?: boolean;\n title?: string;\n info?: any;\n}\n\nfunction NavItem({\n title,\n href,\n depth = 0,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n ...rest\n}: NavItemProps & WrappedComponentProps) {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const getTranslations = (title?: string) => {\n const id = `app:NavBar;Item;${ title };title`;\n const isExist = messageExists(rest, id);\n if (isExist) {\n return translate(rest, id, title);\n } else {\n return title;\n }\n };\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n \n { getTranslations(title) }\n \n {/*size=\"small\"\n color=\"inherit\"*/}\n {open ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n );\n }\n\n return (\n \n \n {Icon && (\n \n )}\n \n { getTranslations(title) }\n \n {Info && }\n \n \n );\n}\n\nexport default injectIntl(NavItem);\n","import axios from '../utils/axios';\nimport { API } from '../constants/constants';\nimport NavBarItem, {NavConfigItems} from '../types/NavBarItem';\nimport {store} from \"../store\";\nimport {triggerLoader, updateSAPDate} from \"../actions/utilsActions\";\nimport moment from \"moment\";\n\nclass NavBarService {\n\n getSapList = () => new Promise((resolve, reject) => {\n axios.get(`${ API }/Dictionary`)\n .then((response) => {\n if (response.data) {\n const newData: any = {};\n response.data.forEach((item: any) => {\n newData[item.name] = item.lastUpdateTime ? item.lastUpdateTime : moment().startOf('day').toString();\n });\n store.dispatch(updateSAPDate(newData) as any);\n resolve(response.data);\n } else {\n reject(response.data.error);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n}\n\nconst navBarService = new NavBarService();\n\nexport default navBarService;\n","import NavBarItem, { NavConfigItems } from '../types/NavBarItem';\nimport { BookOpen } from 'react-feather';\nimport navBarService from '../services/navBarService';\n\nclass NavBarHelper {\n getNavBarListByType = (type: string) => new Promise(async (resolve, reject) => {\n const list: NavConfigItems[] = [];\n\n switch (type) {\n case 'SAP':\n const sapListNew = await navBarService.getSapList();\n sapListNew.forEach((menuItem: NavBarItem) => {\n list.push({\n title: menuItem.displayName,\n href: `/app/directories/${ menuItem.name }`,\n });\n });\n resolve(list);\n break;\n default:\n resolve(list);\n }\n });\n}\n\nconst navBarHelper = new NavBarHelper();\n\nexport default navBarHelper;\n\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { matchPath, useLocation } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport {\n Avatar,\n Box,\n Divider,\n Drawer,\n Hidden,\n Link,\n List,\n ListSubheader,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport {\n Book,\n BookOpen,\n Calendar,\n Eye,\n Folder,\n Mail,\n PieChart,\n Plus,\n ShoppingCart,\n Trello,\n Users,\n} from 'react-feather';\nimport Logo from '../../../components/Logo';\nimport NavItem from './NavItem';\nimport AccountObj from '../../../types/Account';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\nimport { messageExists, translate } from '../../../utils/i18nHelpers';\nimport { NavConfig, NavConfigItems } from '../../../types/NavBarItem';\nimport navBarHelper from '../../../utils/navBarHelper';\nimport { AvailableRoles } from '../../../constants/enums';\nimport { hasUserAccess, userHasOneOfRole } from '../../../utils/helper';\n\nconst ACCESS_ROLES = ['Admin', 'Administrator', 'Compliance management', 'Head of Information Security Department'];\n\nconst navConfig: NavConfig[] = [\n {\n subHeaderKey: 'TenderPlatform',\n items: [\n {\n title: 'TenderStatus',\n href: '/app/tender/status',\n icon: Trello,\n },\n {\n title: 'TenderList',\n href: '/app/tender/list',\n icon: Eye,\n roles: [AvailableRoles.TENDER_LIST],\n },\n {\n title: 'TenderCreate',\n href: '/app/tender/create',\n icon: Plus,\n roles: [AvailableRoles.TENDER_CREATE],\n },\n ],\n },\n {\n subHeaderKey: 'Management',\n items: [\n {\n title: 'Users',\n icon: Users,\n href: '/app/management/users',\n roles: [AvailableRoles.USER_LIST, AvailableRoles.ROLE_LIST],\n items: [\n {\n title: 'ListUsers',\n href: '/app/management/users/list',\n roles: [AvailableRoles.USER_LIST],\n },\n {\n title: 'ListRoles',\n href: '/app/management/roles/list',\n roles: [AvailableRoles.ROLE_LIST],\n },\n {\n title: 'Access',\n href: '/app/management/access',\n roles: [AvailableRoles.ROLE_LIST],\n },\n ],\n },\n {\n title: 'Suppliers',\n icon: Folder,\n href: '/app/management/suppliers',\n items: [\n {\n title: 'SuppliersList',\n href: '/app/management/suppliers/list',\n },\n {\n title: 'SuppliersChecks',\n href: '/app/management/suppliers/checks',\n },\n ],\n },\n {\n title: 'Tenders',\n icon: Folder,\n href: '/app/management/tenders',\n items: [\n {\n title: 'TenderTypes',\n href: '/app/management/tenders/types/list',\n },\n {\n title: 'DisplayedOrderFields',\n href: '/app/management/orderFields',\n },\n {\n title: 'ContractTemplates',\n href: '/app/management/tenders/contract/templates',\n },\n ],\n },\n {\n title: 'Портал поставщика',\n icon: BookOpen,\n href: '/app/management/supplierPortal',\n items: [\n {\n title: 'FAQ',\n href: '/app/management/supplierPortal/faq',\n },\n ],\n },\n {\n title: 'Журнал логов',\n icon: Book,\n href: '/app/management/logs',\n roleNames: ACCESS_ROLES,\n },\n ],\n },\n {\n subHeaderKey: 'Reports',\n items: [\n {\n title: 'Dashboard',\n icon: PieChart,\n href: '/app/reports/dashboard',\n },\n {\n title: 'Calendar',\n href: '/app/calendar',\n icon: Calendar,\n },\n ],\n },\n {\n subHeaderKey: 'Organizer',\n items: [\n {\n title: 'Mail',\n icon: Mail,\n href: '/app/organizer/mail',\n },\n {\n title: 'Calendar',\n icon: Calendar,\n href: '/app/organizer/calendar',\n },\n ],\n },\n {\n subHeaderKey: 'SAP',\n roles: [AvailableRoles.SAPDATA_LIST],\n items: [\n {\n title: `Заявки ${new Date().getFullYear()}`,\n href: '/app/applications',\n icon: ShoppingCart,\n },\n {\n title: 'Directories',\n href: '/app/directories',\n icon: BookOpen,\n items: [],\n },\n {\n title: 'Unused',\n href: '/app/directories',\n icon: Book,\n items: [\n {\n title: 'DepartmentDirectory',\n href: '/app/unused/directories/departments/list',\n },\n {\n title: 'CurrencyCodeDirectory',\n href: '/app/unused/directories/currencies/list',\n },\n {\n title: 'ExchangeRatesDirectory',\n href: '/app/unused/directories/exchangeRates/list',\n },\n {\n title: 'EquipmentTypesDirectory',\n href: '/app/unused/directories/equipmentTypes/list',\n },\n {\n title: 'EquipmentsDirectory',\n href: '/app/unused/directories/equipments/list',\n },\n {\n title: 'UnitsDirectory',\n href: '/app/unused/directories/units/list',\n },\n {\n title: 'ProductTypesDirectory',\n href: '/app/unused/directories/productTypes/list',\n },\n {\n title: 'ProductsDirectory',\n href: '/app/unused/directories/products/list',\n },\n ],\n },\n ],\n },\n];\n\n//TODO:remove any\nfunction renderNavItems({ items, ...rest }: any) {\n return (\n \n {items && items.reduce((acc: any[], item: NavConfigItems) => reduceChildRoutes({ acc, item, ...rest }), [])}\n \n );\n}\n\n//TODO:remove any\nfunction reduceChildRoutes({ acc, pathname, item, depth = 0 }: any) {\n const key = item.title + depth;\n\n if (!hasUserAccess(item.roles)) {\n return acc;\n }\n\n if (item.roleNames && !userHasOneOfRole(item.roleNames)) {\n return acc;\n }\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false,\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n pathname,\n items: item.items,\n })}\n \n );\n } else {\n acc.push();\n }\n\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 256,\n },\n desktopDrawer: {\n width: 270,\n top: 64,\n height: 'calc(100% - 64px)',\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64,\n },\n headerTitle: {},\n}));\n\ninterface NavBarProps {\n onMobileClose: () => void;\n openMobile: boolean;\n}\n\nfunction NavBar({ openMobile, onMobileClose, ...props }: NavBarProps & WrappedComponentProps) {\n const classes = useStyles();\n const location = useLocation();\n const { user } = useSelector((state: AccountObj) => state.account);\n const photoUrl = `${user.photoUrl}?${Date.now()}`;\n const [ready, setReady] = useState(false);\n const userName = user.firstName ? `${user.firstName} ${user.lastName}` : user.email;\n\n const getSAPList = useCallback(async () => {\n const sapList = navConfig.find((item: NavConfig) => {\n return item.subHeaderKey === 'SAP';\n });\n\n if (sapList) {\n const directories = sapList.items.find((item: NavConfigItems) => {\n return item.title === 'Directories';\n });\n\n const list = await navBarHelper.getNavBarListByType('SAP');\n if (directories) {\n directories.items = list;\n }\n setReady(true);\n }\n }, [setReady]);\n\n useEffect(() => {\n getSAPList();\n }, [getSAPList]);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const getTranslations = (config: NavConfig) => {\n const id = `app:NavBar;Item;header;${config.subHeaderKey};title`;\n const isExist = messageExists(props, id);\n if (isExist) {\n return translate(props, id, config.subHeaderKey);\n } else {\n return config.subHeaderKey;\n }\n };\n\n if (!ready) {\n return null;\n }\n const content = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {userName}\n \n \n {typeof user.role !== 'string'\n ? user.role && user.role.displayName && user.role.displayName.ru\n : user.role}\n \n \n \n \n \n {navConfig.map(config => {\n if (!hasUserAccess(config.roles)) {\n return null;\n }\n return (\n \n {getTranslations(config)}\n \n }\n >\n {renderNavItems({\n items: config.items,\n pathname: location.pathname,\n })}\n \n );\n })}\n \n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n}\n\nexport default injectIntl(NavBar);\n","import React, {\n useRef,\n useState\n} from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n Menu,\n MenuItem,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { logout } from '../../../actions/accountActions';\nimport AccountObj from '../../../types/Account';\nimport { FormattedMessage } from 'react-intl';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nexport default function Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector((state: AccountObj) => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n const userName = account.user.firstName\n ? `${ account.user.firstName } ${ account.user.lastName }`\n : account.user.email;\n const photoUrl = `${account.user.photoUrl}?${Date.now()}`;\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error',\n autoHideDuration: 2000,\n });\n }\n };\n\n return (\n <>\n
\n \n \n \n \n {userName}\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\n","import React, { useState, useRef } from 'react';\nimport { capitalCase } from 'change-case';\nimport {\n Badge,\n Box,\n Button,\n IconButton,\n Popover,\n SvgIcon,\n TextField,\n Tooltip,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { Settings as SettingsIcon } from 'react-feather';\nimport useSettings from '../../../hooks/useSettings';\nimport { LANGS, THEMES } from '../../../constants/enums';\nimport { changeLanguage } from '../../../utils/i18nHelpers';\nimport { FormattedMessage } from 'react-intl';\n\nconst useStyles = makeStyles((theme) => ({\n badge: {\n height: 10,\n width: 10,\n borderRadius: 5,\n marginTop: 10,\n marginRight: 5\n },\n popover: {\n width: 320,\n padding: theme.spacing(2)\n }\n}));\n\nfunction Settings() {\n const classes = useStyles();\n const ref = useRef(null);\n const { settings, saveSettings } = useSettings();\n const [isOpen, setOpen] = useState(false);\n const [values, setValues] = useState({\n direction: settings.direction,\n responsiveFontSizes: settings.responsiveFontSizes,\n theme: settings.theme,\n language: settings.language,\n });\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n//TODO: remove any\n const handleChange = (field: string, value: any) => {\n setValues({\n ...values,\n [field]: value\n });\n };\n\n const handleSave = () => {\n saveSettings && saveSettings(values);\n changeLanguage(values.language);\n setOpen(false);\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {/*\n handleChange('direction', event.target.checked ? 'rtl' : 'ltr')}\n />\n )}\n label=\"RTL\"\n />\n */}\n {/*\n handleChange('responsiveFontSizes', event.target.checked)}\n />\n )}\n label=\"Responsive font sizes\"\n />\n */}\n \n }\n name=\"theme\"\n onChange={(event) => handleChange('theme', event.target.value)}\n select\n SelectProps={{ native: true }}\n value={values.theme}\n variant=\"outlined\"\n >\n {Object.keys(THEMES).map((theme) => (\n \n {capitalCase(theme)}\n \n ))}\n \n \n \n }\n name=\"language\"\n onChange={(event) => handleChange('language', event.target.value)}\n select\n SelectProps={{ native: true }}\n value={values.language}\n variant=\"outlined\"\n >\n {Object.values(LANGS).map((theme) => (\n \n {capitalCase(theme)}\n \n ))}\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Settings;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon, Typography\n} from '@material-ui/core';\nimport { Menu as MenuIcon } from 'react-feather';\nimport { THEMES } from '../../../constants/enums';\nimport Account from './Account';\n// import Contacts from './Contacts';\n// import Notifications from './Notifications';\n// import Search from './Search';\nimport Settings from './Settings';\nimport { ThemConfig } from '../../../types/Them';\nimport { FormattedMessage } from 'react-intl';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n menuButton:{},\n logoLink: {\n display: 'flex',\n alignItems: 'center',\n color: '#fff',\n textDecoration: 'none'\n },\n text: {\n lineHeight: 1.3,\n },\n logo: {\n maxHeight: '45px',\n },\n centerTitle: {\n flexGrow: 1,\n textAlign: 'center',\n textTransform: 'uppercase',\n }\n}));\n\ninterface TopBarProps {\n className?: string;\n onMobileNavOpen: ()=>void;\n}\n\nexport default function TopBar({\n className,\n onMobileNavOpen,\n ...rest\n}: TopBarProps) {\n const classes = useStyles();\n const today = new Date();\n const date = `${today.getDate()}/${today.getMonth()+1}/${today.getFullYear()}`;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
\n
\n {/**/}\n {/**/}\n {/**/}\n \n \n \n \n
\n \n );\n}\n","import React, { useState } from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\nimport { ThemConfig } from '../../types/Them';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction DashboardLayout({ children }: { children: React.ReactNode }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nexport default DashboardLayout;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Box,\n Button,\n Container,\n Typography,\n useTheme,\n useMediaQuery,\n makeStyles\n} from '@material-ui/core';\nimport Page from '../../components/Page';\nimport { ThemConfig } from '../../types/Them';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(3),\n paddingTop: 80,\n paddingBottom: 80\n },\n image: {\n maxWidth: '100%',\n width: 560,\n maxHeight: 300,\n height: 'auto'\n }\n}));\n\nfunction Error404View() {\n const classes = useStyles();\n const theme = useTheme();\n const mobileDevice = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n \n \n \n 404: The page you are looking for isn’t here\n \n \n You either tried some shady route or you\n came here by mistake. Whichever it is, try using the navigation.\n \n \n \n \n \n \n Back to home\n \n \n \n \n );\n}\n\nexport default Error404View;\n","import React from 'react';\nimport {\n Typography,\n makeStyles, Container\n} from '@material-ui/core';\nimport { FormattedMessage } from 'react-intl';\nimport { ThemConfig } from '../../types/Them';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n minHeight: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: theme.spacing(3),\n paddingTop: 80,\n paddingBottom: 80\n },\n text: {\n fontWeight: 'bold'\n }\n}));\n\nfunction NotImplemented() {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n );\n}\n\nexport default NotImplemented;\n","import React, {\n useEffect,\n useState\n} from 'react';\nimport { useDispatch } from 'react-redux';\nimport SplashScreen from './SplashScreen';\nimport authService from '../services/authService';\nimport { logout, setUserData } from '../actions/accountActions';\nimport User from '../types/User';\n\ninterface AuthProps {\n children: React.ReactNode;\n}\n\nexport default function Auth(\n {\n children\n }: AuthProps) {\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(true);\n\n useEffect(() => {\n const initAuth = async () => {\n authService.setAxiosInterceptors({\n onLogout: () => dispatch(logout())\n });\n\n //authService.handleAuthentication();\n\n if (authService.isAuthenticated()) {\n try {\n const isVerified: Boolean = await authService.loginInWithToken();\n const user: User = await authService.getCurrentUser();\n\n await dispatch(setUserData({\n ...user,\n isVerified: Boolean(isVerified)\n }));\n } catch (e) {\n await dispatch(logout());\n }\n }\n\n setLoading(false);\n };\n\n initAuth();\n }, [dispatch]);\n\n if (isLoading) {\n return null;\n }\n\n return (<>{children});\n}\n","import React, {\n} from 'react';\nimport { hasUserAccess } from '../utils/helper';\nimport { Route } from 'react-router';\nimport NotImplemented from '../views/pages/NotImplemented';\n\nexport interface AccessRouteProps {\n path: string | string[];\n component: any;\n exact?: boolean;\n roles: string[];\n}\n\nfunction AccessRoute({\n path,\n component,\n exact,\n roles,\n }: AccessRouteProps) {\n exact = false;\n\n return (\n \n );\n}\n\nexport default AccessRoute;\n","import React, { lazy, Suspense } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport LoadingScreen from './components/LoadingScreen';\nimport GuestRoute from './components/GuestRoute';\nimport AuthRoute from './components/AuthRoute';\nimport DashboardLayout from './layouts/DashboardLayout';\nimport Error404View from './views/pages/Error404View';\nimport NotImplemented from './views/pages/NotImplemented';\nimport Auth from './components/Auth';\nimport AccessRoute from './components/AccessRoute';\nimport { AvailableRoles } from './constants/enums';\n\nfunction Routes() {\n return (\n \n }>\n \n \n import('./views/auth/LoginView'))} />\n import('./views/auth/VerificationView'))} />\n (\n \n {/*}>*/}\n \n \n import('./views/reports/DashboardView'))}\n />\n import('./views/management/UserListView'))}\n />\n import('./views/management/UserCreateEditView'))}\n />\n import('./views/management/UserCreateEditView'))}\n />\n import('./views/pages/AccountView'))} />\n import('./views/management/RoleListView'))}\n />\n import('./views/management/RoleCreateEditView'))}\n />\n import('./views/management/RoleCreateEditView'))}\n />\n import('./views/management/AccessView'))}\n />\n import('./views/directories/GenericDirectoryListView'))}\n />\n import('./views/directories/DepartmentListView'))}\n />\n import('./views/directories/DepartmentCreateEditView'))}\n />\n import('./views/directories/DepartmentCreateEditView'))}\n />\n import('./views/directories/DepartmentCreateEditView'))}\n />\n import('./views/directories/CurrencyListView'))}\n />\n import('./views/directories/CurrencyCreateEditView'))}\n />\n import('./views/directories/ExchangeRatesListView'))}\n />\n import('./views/directories/ExchangeRatesCreateEditView'))}\n />\n import('./views/directories/EquipmentTypesListView'))}\n />\n import('./views/directories/EquipmentTypesCreateEditView'))}\n />\n import('./views/directories/EquipmentListView'))}\n />\n import('./views/directories/EquipmentCreateEditView'))}\n />\n import('./views/directories/UnitsListView'))}\n />\n import('./views/directories/UnitsCreateEditView'))}\n />\n import('./views/directories/ProductTypesListView'))}\n />\n import('./views/directories/ProductTypesCreateEditView'))}\n />\n import('./views/directories/ProductsListView'))}\n />\n import('./views/directories/ProductsCreateEditView'))}\n />\n import('./views/management/SupplierListView'))}\n />\n import('./views/management/SupplierChecksView'))}\n />\n import('./views/management/SupplierDetailsView'))}\n />\n import('./views/procurement/MaterialListView'))}\n />\n import('./views/procurement/MaterialView'))}\n />\n import('./views/procurement/ServicesListView'))}\n />\n import('./views/procurement/ServicesView'))}\n />\n import('./views/applications/ApplicationListView'))}\n />\n import('./views/tenders/TenderListView'))}\n />\n import('./views/tenders/TenderStatusView'))}\n />\n import('./views/management/TenderTypes/TenderTypesListView'))}\n />\n import('./views/management/TenderTypes/ContractTemplatesView'))}\n />\n import('./views/management/TenderTypes/TenderTypeCreateView'))}\n />\n import('./views/management/LogsListView'))}\n />\n import('./views/tenders/TenderCreateView'))}\n />\n import('./views/tenders/TenderEditView'))} />\n {/* import('./views/management/TenderQTemplateListView')) }\n />\n import('./views/management/TenderQTemplateCreateEditView')) }\n />*/}\n {/* import('./views/management/TenderFAQsListView')) }\n />\n import('./views/management/TenderFAQsCreateEditView')) }\n />*/}\n import('./views/management/SupplierFAQListView'))}\n />\n import('./views/management/PriceDeviation'))}\n />\n import('./views/mail/MailView'))} />\n import('./views/calendar/CalendarView'))}\n />\n import('./views/calendar/CalendarView'))} />\n {/* import('./views/management/TenderDocuments/AttachedDocumentsListView')) }\n />\n import('./views/management/TenderDocuments/AttachedDocumentsCreateEditView')) }\n />\n import('./views/management/TenderDocuments/RequestedDocumentsListView')) }\n />\n import('./views/management/TenderDocuments/RequestedDocumentsCreateEditView')) }\n />*/}\n import('./views/management/DisplayedOrderFieldsView'))}\n />\n \n \n {/**/}\n \n )}\n />\n \n \n \n \n );\n}\n\nexport default Routes;\n","import React from 'react';\nimport { Box, LinearProgress, makeStyles } from '@material-ui/core';\nimport { ThemConfig } from '../types/Them';\nimport { useSelector } from 'react-redux';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n },\n absolute: {\n top:0,\n position: 'fixed',\n left: 0,\n right: 0,\n backgroundColor: '#00000069',\n zIndex: 9999\n }\n}));\n\nexport interface UtilsProps {\n utils: {\n showLoader: boolean;\n };\n};\n\nfunction Loader() {\n const classes = useStyles();\n const { showLoader } = useSelector((state: UtilsProps) => state.utils);\n if (!showLoader) {\n return null;\n }\n return (\n
\n \n \n \n
\n );\n}\n\nexport default Loader;\n","import React from 'react';\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport { ThemConfig } from '../types/Them';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { setTenderUpdates } from '../actions/utilsActions';\nimport AccountObj from '../types/Account';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3),\n },\n absolute: {\n top: 0,\n position: 'fixed',\n left: 0,\n right: 0,\n backgroundColor: '#00000069',\n zIndex: 9999,\n },\n tenderItem: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 2,\n marginTop: 2,\n },\n wrapper: {\n marginBottom: 20,\n },\n}));\n\nexport interface UtilsProps {\n utils: {\n showLoader: boolean;\n tenderUpdates: any;\n };\n}\n\nfunction TenderUpdateModal() {\n const classes = useStyles();\n const { tenderUpdates } = useSelector((state: UtilsProps) => state.utils);\n const { user } = useSelector((state: AccountObj) => state.account);\n const dispatch = useDispatch();\n\n if (!tenderUpdates.isModalOpen || !user?.isVerified) {\n return null;\n }\n\n const handleClose = () => {\n dispatch(setTenderUpdates({ ...tenderUpdates, isModalOpen: false }));\n };\n\n return (\n
\n \n Обновления по тендерам\n \n {Boolean(tenderUpdates.pendingPriceDeviation && tenderUpdates.pendingPriceDeviation.length) && (\n \n \n Ожидают информации по отклонению цен\n \n {tenderUpdates.pendingPriceDeviation.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n {Boolean(tenderUpdates.pendingPaymentInfo && tenderUpdates.pendingPaymentInfo.length) && (\n \n \n Ожидают информации по оплате\n \n {tenderUpdates.pendingPaymentInfo.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n {Boolean(tenderUpdates.readyToPublish && tenderUpdates.readyToPublish.length) && (\n \n \n Готовы к публикации\n \n {tenderUpdates.readyToPublish.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n {Boolean(tenderUpdates.onVerification && tenderUpdates.onVerification.length) && (\n \n \n Ожидают верификации\n \n {tenderUpdates.onVerification.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n {Boolean(tenderUpdates.onRevision && tenderUpdates.onRevision.length) && (\n \n \n На доработку\n \n {tenderUpdates.onRevision.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n\n {Boolean(tenderUpdates.oapInspection && tenderUpdates.oapInspection.length) && (\n \n \n Ожидают инспекции ОАП\n \n {tenderUpdates.oapInspection.map((tender: any, index: number) => {\n return (\n \n \n {`${tender.id} ${tender.name}`}\n \n Перейти\n \n \n \n \n );\n })}\n \n )}\n \n \n \n \n \n
\n );\n}\n\nexport default TenderUpdateModal;\n","import Page from '../components/Page';\nimport React from 'react';\nimport {Box, Container, Typography} from \"@material-ui/core\";\nimport {makeStyles} from \"@material-ui/styles\";\nimport {ThemConfig} from \"../types/Them\";\nimport Logo from \"../components/Logo\";\n\n// ----------------------------------------------------------------------\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n minHeight: '100%',\n }\n}));\n\n\n// ----------------------------------------------------------------------\n\nexport default function ErrorPage() {\n const classes = useStyles();\n\n return (\n \n \n \n \n\n \n Произошла техническая ошибка\n \n Попробуйте позже или свяжитесь с информационным отделом\n\n \n \n \n );\n}\n","import React, { Component, ErrorInfo, ReactNode } from \"react\";\nimport ErrorPage from \"./ErrorPage\";\n\ninterface Props {\n children: ReactNode;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nclass ErrorBoundary extends Component {\n // eslint-disable-next-line react/state-in-constructor\n public state: State = {\n hasError: false\n };\n\n public static getDerivedStateFromError(_: Error): State {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(\"Uncaught error:\", error, errorInfo);\n }\n\n public render() {\n if (this.state.hasError) {\n return ;\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, makeStyles } from '@material-ui/core';\nimport { ThemConfig } from '../types/Them';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setRequestedDocs } from '../actions/utilsActions';\nimport { ReqDocItem } from '../types/public/Documents';\nimport { useHistory } from 'react-router';\n\nconst useStyles = makeStyles((theme: ThemConfig) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3),\n },\n absolute: {\n top: 0,\n position: 'fixed',\n left: 0,\n right: 0,\n backgroundColor: '#00000069',\n zIndex: 9999,\n },\n tenderItem: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 2,\n marginTop: 2,\n },\n wrapper: {\n marginBottom: 20,\n },\n}));\n\nexport interface UtilsProps {\n utils: {\n showLoader: boolean;\n tenderUpdates: any;\n requestedDocs: any;\n };\n}\n\nfunction SupplierRequestedDocsModal() {\n const classes = useStyles();\n const history = useHistory();\n\n const { requestedDocs } = useSelector((state: UtilsProps) => state.utils);\n const dispatch = useDispatch();\n\n if (!requestedDocs.isModalOpen) {\n return null;\n }\n\n const handleClose = () => {\n dispatch(setRequestedDocs({ list: requestedDocs.list, isModalOpen: false }));\n };\n const handleOpen = () => {\n dispatch(setRequestedDocs({ list: requestedDocs.list, isModalOpen: false }));\n history.push('/docs');\n };\n\n if (!requestedDocs?.list?.length) return null;\n\n return (\n
\n \n Важные сообщения\n \n У вас есть важное сообщение от организатора тендера:\n
    \n {requestedDocs.list.map((item: ReqDocItem) => (\n
  • \n {item.message}\n
  • \n ))}\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nexport default SupplierRequestedDocsModal;\n","import React from 'react';\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { create } from 'jss';\nimport rtl from 'jss-rtl';\nimport MomentUtils from '@date-io/moment';\nimport { SnackbarProvider } from 'notistack';\nimport { createStyles, jssPreset, makeStyles, StylesProvider, ThemeProvider } from '@material-ui/core';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\n// import CookiesNotification from './components/CookiesNotification';\n// import SettingsNotification from './components/SettingsNotification';\nimport GoogleAnalytics from './components/GoogleAnalytics';\nimport ScrollReset from './components/ScrollReset';\nimport useSettings from './hooks/useSettings';\nimport { createTheme } from './theme';\nimport Routes from './Routes';\nimport { IntlProvider } from 'react-intl-redux';\nimport { restoreLocale } from './utils/i18nHelpers';\nimport Loader from './components/Loader';\nimport TenderUpdateModal from './components/TenderUpdateModal';\nimport ErrorBoundary from './utils/ErrorBoundary';\nimport SupplierRequestedDocsModal from './components/SupplierRequestedDocsModal';\n\nconst history = createBrowserHistory();\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\n\nconst useStyles = makeStyles(() =>\n createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n height: '100%',\n width: '100%',\n },\n body: {\n height: '100%',\n width: '100%',\n },\n '#root': {\n height: '100%',\n width: '100%',\n },\n },\n })\n);\n\nfunction App() {\n useStyles();\n // localStorage.setItem('count', '0');\n const { settings } = useSettings();\n\n return (\n \n \n \n \n \n \n \n \n \n {/**/}\n {/**/}\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'react-quill/dist/quill.snow.css';\nimport 'nprogress/nprogress.css';\nimport './assets/css/prism.css';\nimport './mixins/chartjs';\nimport './mixins/prismjs';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider} from 'react-redux'\nimport * as serviceWorker from './serviceWorker';\nimport { SettingsProvider } from './context/SettingsContext';\nimport { store } from './store';\nimport { restoreSettings } from './utils/settings';\nimport App from './App';\n\nconst settings = restoreSettings();\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\nserviceWorker.unregister();\n","export enum THEMES {\n LIGHT = 'LIGHT',\n ONE_DARK = 'ONE_DARK',\n UNICORN = 'UNICORN',\n}\n\nexport enum DIRECTION {\n ltr = 'ltr',\n rtl = 'rtl',\n}\n\nexport enum LANGS {\n EN = 'en',\n RU = 'ru',\n KZ = 'kz',\n}\n\nexport enum SupplierAllowStatus {\n ALLOWED = 'ALLOWED',\n PRICE_NOT_ALLOWED = 'PRICE_NOT_ALLOWED',\n VIOLATIONS_NOT_ALLOWED = 'VIOLATIONS_NOT_ALLOWED',\n PRICE_AND_VIOLATIONS_NOT_ALLOWED = 'PRICE_AND_VIOLATIONS_NOT_ALLOWED',\n NOT_ALLOWED = 'NOT_ALLOWED',\n OUT_OF_STOCK = 'OUT_OF_STOCK',\n}\n\nexport enum DocumentsType {\n OWN = 'Own',\n REQUESTED = 'Requested',\n}\n\nexport enum TenderFilterObjectType {\n Number = 'n',\n Date = 'd',\n}\n\nexport enum TenderStatus {\n Created = 'Created',\n Editing = 'Editing',\n Blocked = 'Blocked',\n Deleted = 'Deleted',\n OnApproval = 'OnApproval',\n Published = 'Published',\n Completed = 'Completed',\n Archived = 'Archived',\n SubmissionCompleted = 'SubmissionCompleted',\n PendingPaymentInfo = 'PendingPaymentInfo',\n OnVerification = 'OnVerification',\n ReadyToPublish = 'ReadyToPublish',\n OnRevision = 'OnRevision',\n PendingPriceDeviation = 'PendingPriceDeviation',\n OAPInspection = 'OAPInspection',\n}\n\nexport enum AvailableRoles {\n USER_CREATE = 'User.Create',\n USER_LIST = 'User.List',\n USER_EDIT = 'User.Edit',\n USER_DELETE = 'User.Delete',\n ROLE_CREATE = 'Role.Create',\n ROLE_LIST = 'Role.List',\n ROLE_EDIT = 'Role.Edit',\n ROLE_DELETE = 'Role.Delete',\n REPORT_CREATE = 'Report.Create',\n REPORT_LIST = 'Report.List',\n SAPDATA_VIEW = 'SAPData.View',\n SAPDATA_LIST = 'SAPData.List',\n TENDER_CREATE = 'Tender.Create',\n TENDER_LIST = 'Tender.List',\n TENDER_EDIT = 'Tender.Edit',\n TENDER_DELETE = 'Tender.Delete',\n TENDER_OPEN = 'Tender.Open',\n TENDER_CLOSE = 'Tender.Close',\n TENDER_SIGN = 'Tender.Sign',\n TENDER_VERIFICATION = 'Tender.Verification',\n TENDER_PENDING_PAYMENT_INFO = 'Tender.PendingPaymentInfo',\n TENDER_PENDING_PRICE_DEVIATION = 'Tender.PendingPriceDeviation',\n TENDER_OAP_INSPECTION = 'Tender.OAPInspection',\n TENDER_PRICE = 'Tender.Price',\n QUESTIONNAIRE_CREATE = 'Questionnaire.Create',\n QUESTIONNAIRE_EDIT = 'Questionnaire.Edit',\n QUESTIONNAIRE_DELETE = 'Questionnaire.Delete',\n}\n\nexport enum SupplierApproveStatus {\n NotApproved = 'NotApproved',\n PartialApproved = 'PartialApproved',\n ApprovedByYou = 'ApprovedByYou',\n FullApproved = 'FullApproved',\n}\n\nexport enum ContractTemplateType {\n Basic = 'Basic',\n WithTolerance = 'WithTolerance',\n WithPrepayment = 'WithPrepayment',\n WithToleranceAndPrepayment = 'WithToleranceAndPrepayment',\n}\n\nexport enum UserActions {\n Login = 'Login',\n TenderCreate = 'TenderCreate',\n SetTenderPrice = 'SetTenderPrice',\n TenderFinancialDepartment = 'TenderFinancialDepartment',\n SearchSupplier = 'SearchSupplier',\n TenderOAP = 'TenderOAP',\n ManualViolationReport = 'ManualViolationReport',\n TenderVerification = 'TenderVerification',\n TenderPublication = 'TenderPublication',\n TenderEdit = 'TenderEdit',\n ChangeTenderDates = 'ChangeTenderDates',\n TenderDelete = 'TenderDelete',\n TenderForApproval = 'TenderForApproval',\n SetTenderWinner = 'SetTenderWinner',\n TenderTypeCreate = 'TenderTypeCreate',\n TenderTypeDelete = 'TenderTypeDelete',\n TenderTypeEdit = 'TenderTypeEdit',\n RoleAdd = 'RoleAdd',\n RoleEdit = 'RoleEdit',\n RoleDelete = 'RoleDelete',\n UserAdd = 'UserAdd',\n UserEdit = 'UserEdit',\n UserDelete = 'UserDelete',\n ManualApplicationsSAPSync = 'ManualApplicationsSAPSync',\n}\n","import jwtDecode from 'jwt-decode';\nimport _, { isEqual } from 'lodash';\nimport Tender from '../types/Tender';\nimport { AvailableRoles, TenderStatus, UserActions } from '../constants/enums';\nimport Material from '../types/Material';\nimport trackService from '../services/trackService';\n\nexport function generatePassword() {\n const length = 8;\n const charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n let retVal = '';\n for (let i = 0, n = charset.length; i < length; ++i) {\n retVal += charset.charAt(Math.floor(Math.random() * n));\n }\n return retVal;\n}\n\nexport function getRandomInt(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function allowOnlyNumbers(value: string): boolean {\n const re = /^\\d*\\.?\\d*$/;\n return value === '' || re.test(value);\n}\n\nexport function isFullGroupSelected(group: Material[], selectedItems: Material[]) {\n let count = 0;\n if (group) {\n group.map(groupItem => {\n const match = selectedItems.find(item => {\n if (item.sapApplicationNumber) {\n return item.sapApplicationNumber === groupItem.sapApplicationNumber;\n } else {\n return item.similarSAPWorkItem.find(item => item.sapApplicationNumber === groupItem.sapApplicationNumber);\n }\n });\n if (Boolean(match)) {\n count++;\n }\n });\n return group.length === count;\n } else {\n return false;\n }\n}\n\nexport function prepareRequestItems(items: Material[]) {\n const preparedData: Material[] = [];\n items.map(item => {\n if (item.sapApplicationNumber) {\n preparedData.push(item);\n } else if (item.similarSAPWorkItem.length) {\n item.similarSAPWorkItem.map(similarItem => {\n preparedData.push(similarItem);\n });\n }\n });\n return preparedData;\n}\n\nexport async function getImageFormData(file: Blob | string): Promise {\n return new Promise(async (resolve, reject) => {\n const formData = new FormData();\n if (typeof file === 'string') {\n await getFile(file).then((data: Blob) => {\n formData.append('photo', data);\n resolve(formData);\n });\n } else {\n formData.append('photo', file);\n resolve(formData);\n }\n });\n}\n\nexport function getUserRoles() {\n const accessToken = localStorage.getItem('accessToken');\n if (accessToken) {\n return jwtDecode(accessToken);\n }\n return {};\n}\n\nexport function hasUserAccess(acceptRoles: string[]) {\n let rolesData: any = getUserRoles();\n if (!acceptRoles) {\n return true;\n }\n return _.some(acceptRoles, (item: string) => {\n return Boolean(rolesData[item]);\n });\n}\n\nexport function getTenderUpdates(tenders: Tender[]) {\n const updatedTenders: any = {\n // isModalOpen: false,\n onRevision: [],\n readyToPublish: [],\n onVerification: [],\n pendingPaymentInfo: [],\n pendingPriceDeviation: [],\n oapInspection: [],\n };\n tenders.map((tender: Tender) => {\n switch (tender.status) {\n case TenderStatus.OnRevision:\n if (hasUserAccess([AvailableRoles.TENDER_EDIT])) {\n updatedTenders.onRevision.push(tender);\n }\n break;\n case TenderStatus.ReadyToPublish:\n if (hasUserAccess([AvailableRoles.TENDER_CREATE])) {\n updatedTenders.readyToPublish.push(tender);\n }\n break;\n case TenderStatus.OnVerification:\n if (hasUserAccess([AvailableRoles.TENDER_VERIFICATION])) {\n updatedTenders.onVerification.push(tender);\n }\n break;\n case TenderStatus.PendingPaymentInfo:\n if (hasUserAccess([AvailableRoles.TENDER_PENDING_PAYMENT_INFO])) {\n updatedTenders.pendingPaymentInfo.push(tender);\n }\n break;\n case TenderStatus.PendingPriceDeviation:\n if (hasUserAccess([AvailableRoles.TENDER_PENDING_PRICE_DEVIATION])) {\n updatedTenders.pendingPriceDeviation.push(tender);\n }\n break;\n case TenderStatus.OAPInspection:\n if (hasUserAccess([AvailableRoles.TENDER_OAP_INSPECTION])) {\n updatedTenders.oapInspection.push(tender);\n }\n break;\n default:\n return;\n }\n });\n return updatedTenders;\n}\n\nexport function getUserRole() {\n const accessToken = localStorage.getItem('accessToken');\n if (accessToken) {\n let token: any = jwtDecode(accessToken);\n return token.role;\n }\n return {};\n}\n\nexport function userHasOneOfRole(roleList: string[] = []) {\n const userRole = getUserRole();\n return roleList?.some((role: string) => userRole === role);\n}\n\nexport async function getFile(url: string): Promise {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function() {\n resolve(xhr.response);\n };\n xhr.send();\n });\n}\n\nexport function downloadFile(data: string, name: string, type: string) {\n const url = window.URL.createObjectURL(new Blob([data], { type }));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', name);\n document.body.appendChild(link);\n link.click();\n}\n\nexport function base64ToFile(data: any, fileName: string, type?: string) {\n let arr = [];\n let mime = '';\n let bstr = '';\n if (type) {\n mime = type;\n bstr = atob(data);\n } else {\n arr = data.split(',');\n mime = arr && arr[0].match(/:(.*?);/)[1];\n bstr = atob(arr[1]);\n }\n\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n const file = new File([u8arr], fileName, { type: mime });\n downloadSelfUploadedFile(file, fileName);\n}\n\nexport function base64ToString(str: string) {\n return decodeURIComponent(\n atob(str)\n .split('')\n .map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join('')\n );\n}\n\nexport function downloadSelfUploadedFile(data: any, name: string) {\n const url = window.URL.createObjectURL(data);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', name);\n document.body.appendChild(link);\n link.click();\n}\n\nexport const getSupplierStatus = (supplier: any) => {\n let status = '';\n if (\n supplier.reliabilityViolationCount === 0 &&\n supplier.itemsPricing === 'CorrespondMarket' &&\n supplier.oapAdmitted\n ) {\n if (supplier.rating === 1) {\n status = 'Рекомендуемый победитель';\n } else {\n status = `${supplier.rating}-е место`;\n }\n } else {\n switch (supplier.itemsPricing) {\n case 'OutOfRangeMarket':\n status = supplier.oapAdmitted\n ? `${supplier.rating}-е место (Допущен ОАП)\\nНеконкурентная цена`\n : `Не допущен ОАП\\nНеконкурентная цена`;\n break;\n case 'MissingProductInMarket':\n status = supplier.oapAdmitted\n ? `${supplier.rating}-е место (Допущен ОАП)\\nНе полный ассортимент`\n : `Не допущен ОАП\\nНе полный ассортимент`;\n break;\n case 'CorrespondMarket':\n status = supplier.oapAdmitted ? `${supplier.rating}-е место (Допущен ОАП)` : `Не допущен ОАП`;\n break;\n }\n }\n return status;\n};\n\nexport function toBase64(file: any): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (typeof reader.result === 'string') {\n const b64 = reader.result && reader.result.replace(/^data:.+;base64,/, '');\n resolve(b64);\n }\n };\n reader.onerror = error => reject(error);\n });\n}\n\nexport function downloadCsv(data: string, name: string) {\n const hiddenElement = document.createElement('a');\n hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(data);\n hiddenElement.target = '_blank';\n hiddenElement.download = `${name}.csv`;\n hiddenElement.click();\n}\n\nexport function normalizeData(data: any): any {\n let returnData: any = {};\n Object.keys(data).map(item => {\n const number = Number(data[item]);\n if (!isNaN(number)) {\n return (returnData[item] = number);\n }\n return (returnData[item] = data[item]);\n });\n return returnData;\n}\n\nexport function translit(str: string): string {\n const space = '_';\n let objectKey = '';\n const transl: any = {\n а: 'a',\n б: 'b',\n в: 'v',\n г: 'g',\n д: 'd',\n е: 'e',\n ё: 'e',\n ж: 'zh',\n з: 'z',\n и: 'i',\n й: 'j',\n к: 'k',\n л: 'l',\n м: 'm',\n н: 'n',\n о: 'o',\n п: 'p',\n р: 'r',\n с: 's',\n т: 't',\n у: 'u',\n ф: 'f',\n х: 'h',\n ц: 'c',\n ч: 'ch',\n ш: 'sh',\n щ: 'sh',\n ъ: space,\n ы: 'y',\n ь: space,\n э: 'e',\n ю: 'yu',\n я: 'ya',\n };\n if (str != '') {\n str = str.toLowerCase();\n }\n\n for (let i = 0; i < str.length; i++) {\n if (/[а-яё]/.test(str.charAt(i))) {\n objectKey += transl[str.charAt(i)];\n } else if (/[a-z0-9]/.test(str.charAt(i))) {\n objectKey += str.charAt(i);\n } else {\n if (objectKey.slice(-1) !== space) {\n objectKey += space;\n }\n }\n }\n return objectKey;\n}\n\nexport function toTranslitCamelcase(str: string): string {\n const converter = translit(str);\n return converter\n .replace(/_/g, ' ')\n .replace(/\\w+/g, function(w) {\n return w[0].toUpperCase() + w.slice(1).toLowerCase();\n })\n .replace(/ /g, '');\n}\n\nexport function currencyCheck(currency: string) {\n switch (currency) {\n case 'USD':\n return '$';\n case 'KZT':\n return '₸';\n case 'RUB':\n return '₽';\n case 'EUR':\n return '€';\n default:\n return '';\n }\n}\n\nexport function daysTyping(value: any) {\n const string = value.toString();\n const lastChar = string.charAt(string.length - 1);\n\n if (lastChar == '1' && !(value == 11)) {\n return 'день';\n } else if (lastChar == '2' && !(value == 12)) {\n return 'дня';\n } else if (lastChar == '3' && !(value == 13)) {\n return 'дня';\n } else if (lastChar == '4' && !(value == 14)) {\n return 'дня';\n } else {\n return 'дней';\n }\n}\n\nexport function hoursTyping(value: any) {\n const string = value.toString();\n const lastChar = string.charAt(string.length - 1);\n\n if (lastChar == '1' && !(value == 11)) {\n return 'час';\n } else if (lastChar == '2' && !(value == 12)) {\n return 'часа';\n } else if (lastChar == '3' && !(value == 13)) {\n return 'часа';\n } else if (lastChar == '4' && !(value == 14)) {\n return 'часа';\n } else {\n return 'часов';\n }\n}\n\nexport function minutesTyping(value: any) {\n const string = value.toString();\n const lastChar = string.charAt(string.length - 1);\n\n if (lastChar == '1' && !(value == 11)) {\n return 'минута';\n } else if (lastChar == '2' && !(value == 12)) {\n return 'минуты';\n } else if (lastChar == '3' && !(value == 13)) {\n return 'минуты';\n } else if (lastChar == '4' && !(value == 14)) {\n return 'минуты';\n } else {\n return 'минут';\n }\n}\n\nexport function getTitle(path: any) {\n switch (path) {\n case '/procurement':\n return 'Портал электронных закупок АО «УКТМК»';\n case '/activeTenders':\n return 'Тендеры в работе';\n case '/favorite':\n return 'Избранные тендеры';\n default:\n return '';\n }\n}\n\nexport const saveApplyTenderTmpData = (tenderId: number, data: any) => {\n let tenders: any = {};\n const userEmail = localStorage.getItem('email');\n const savedTenders = localStorage.getItem('tenders');\n if (savedTenders) {\n tenders = JSON.parse(savedTenders);\n }\n if (userEmail) {\n tenders[userEmail] = {\n ...tenders[userEmail],\n [tenderId]: data,\n };\n localStorage.setItem('tenders', JSON.stringify(tenders));\n console.log('tenderData:', tenders[userEmail][tenderId].questionnaireData);\n }\n};\n\nexport const clearApplyTenderTmpData = (tenderId: number) => saveApplyTenderTmpData(tenderId, {});\nexport const getApplyTenderTmpData = (tenderId: number) => {\n let tenders: any = {};\n const userEmail = localStorage.getItem('email');\n const savedTenders = localStorage.getItem('tenders');\n if (savedTenders) {\n tenders = JSON.parse(savedTenders);\n }\n if (userEmail) {\n return tenders[userEmail]?.[tenderId] || {};\n }\n return {};\n};\n\nexport const getValueByRoleAccess = (roles: string[], value: any) => {\n if (hasUserAccess(roles)) {\n return value;\n }\n return '***';\n};\n\nexport const getPriceValueByRoleAccess = (roles: string[], value: any) => {\n // if (hasUserAccess(roles)) {\n // return value;\n // }\n // return '***';\n return value;\n};\n\nexport const isDuplicateObj = (array: any[], objToCompare: any) => array.some(item => isEqual(item, objToCompare));\n\nexport const logUserAction = (actionType: UserActions, data?: any) =>\n trackService\n .logAction({\n payload: {\n screenName: actionType,\n ...data,\n },\n })\n .then(res => console.log(res));\n","import jwtDecode from 'jwt-decode';\nimport axios from '../utils/axios';\nimport { API } from '../constants/constants';\nimport { triggerLoader } from '../actions/utilsActions';\nimport { store } from '../store';\nimport User from '../types/public/User';\nimport Registration from '../types/public/Registration';\n\n// let count = Number(localStorage.getItem('count') || 0);\nclass AuthService {\n setAxiosInterceptors = ({ onLogout }: { onLogout: Function }) => {\n axios.interceptors.response.use(\n response => {\n // count--;\n // localStorage.setItem('count', count.toString());\n // if (!count) {\n store.dispatch(triggerLoader(false) as any);\n // }\n return response;\n },\n async error => {\n store.dispatch(triggerLoader(false) as any);\n // count--;\n // localStorage.setItem('count', count.toString());\n if (error.response && error.response.status === 401) {\n try {\n await this.loginInWithToken();\n } catch (e) {\n this.setSession(null);\n\n if (onLogout) {\n onLogout();\n }\n }\n }\n\n return Promise.reject(error.response);\n }\n );\n axios.interceptors.request.use(\n response => {\n store.dispatch(triggerLoader(true) as any);\n // count++;\n // localStorage.setItem('count', count.toString());\n return response;\n },\n error => {\n store.dispatch(triggerLoader(false) as any);\n // count--;\n // localStorage.setItem('count', count.toString());\n return Promise.reject(error);\n }\n );\n };\n\n handleAuthentication() {\n const accessToken = this.getAccessToken();\n\n if (!accessToken) {\n return;\n }\n\n if (!this.isValidToken(accessToken)) {\n this.setSession(null);\n }\n }\n\n login = (emailAddress: string, password: string, rememberMe: boolean = false) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/Token`, { email: emailAddress, password })\n .then(response => {\n if (response.data) {\n this.setSession(\n response.data.access_token,\n response.data.token_type,\n rememberMe,\n emailAddress,\n response.data.refresh_token\n );\n resolve(Boolean(response.data.is_verified));\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n getCurrentUser = () =>\n new Promise((resolve, reject) => {\n axios\n .get(`${API}/Account`)\n .then(response => {\n if (response.data) {\n const data = response.data as User;\n resolve(data);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n loginInWithToken = () =>\n new Promise((resolve, reject) => {\n const refreshToken: string | null = this.getRefreshToken();\n const accessToken: string | null = this.getAccessToken();\n const email = localStorage.getItem('email');\n if (refreshToken && accessToken && email) {\n axios\n .post(`${API}/Account/Token`, { email, refreshToken })\n .then(response => {\n if (response.data) {\n const rememberMe = Boolean(localStorage.getItem('rememberMe')) || false;\n this.setSession(\n response.data.access_token,\n response.data.token_type,\n rememberMe,\n email,\n response.data.refresh_token\n );\n resolve(Boolean(response.data.is_verified));\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n } else {\n reject();\n }\n });\n\n getAccessToken = () => localStorage.getItem('accessToken');\n getRefreshToken = () => localStorage.getItem('refreshToken');\n\n isValidToken = (accessToken: string) => {\n if (!accessToken) {\n return false;\n }\n\n const { exp } = jwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n return exp > currentTime;\n };\n\n isAuthenticated = () => !!this.getAccessToken();\n\n logout = () => {\n this.setSession(null);\n };\n\n getXmlToSign = () =>\n new Promise((resolve, reject) => {\n axios\n .get(`${API}/DigitalSignature/Xml`)\n .then(response => {\n if (response.data) {\n resolve(response.data.xml);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n checkXmlAfterSign = (xml: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/DigitalSignature/Check`, { xml })\n .then(response => {\n if (response.data) {\n resolve(response.data);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n setSession = (\n accessToken: string | null,\n tokenType?: string,\n rememberMe?: boolean,\n email?: string,\n refreshToken?: string\n ) => {\n if (accessToken && refreshToken && email) {\n localStorage.setItem('accessToken', `${tokenType} ${accessToken}`);\n localStorage.setItem('refreshToken', refreshToken);\n localStorage.setItem('email', email);\n axios.defaults.headers.common.Authorization = `${tokenType} ${accessToken}`;\n if (rememberMe) {\n localStorage.setItem('rememberMe', JSON.stringify(rememberMe));\n } else {\n localStorage.removeItem('rememberMe');\n }\n } else {\n localStorage.removeItem('accessToken');\n localStorage.removeItem('refreshToken');\n localStorage.removeItem('tenders');\n delete axios.defaults.headers.common.Authorization;\n }\n };\n\n sendVerification = (userId: number, email: string, phone: string, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/SendVerify${option}`, {\n userId,\n email,\n phone,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n resetPassword = (email: string | null = null, phone: string | null = null, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/RecoveryPassword`, {\n email: option === 'Email' ? email : null,\n phone: option === 'Phone' ? phone : null,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(response.data);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n confirmResetPassword = (password: string, userId: string, code: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/RecoveryPassword/Confirm`, {\n password,\n userId,\n code,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n verify = (code: string, userId: number, email: string, option: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/Verify${option}`, {\n code,\n email,\n userId,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n registration = (registrationData: Registration) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/Register`, registrationData)\n .then(response => {\n if (response.data) {\n resolve(Boolean(true));\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n uploadPhoto = (photo: FormData) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/UploadPhoto`, photo)\n .then(response => {\n if (response.data) {\n resolve(response.data.photoUrl);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n removePhoto = () =>\n new Promise((resolve, reject) => {\n axios\n .delete(`${API}/Account/UploadPhoto`)\n .then(response => {\n if (response.data) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n\n changePassword = (currentPassword: string, newPassword: string) =>\n new Promise((resolve, reject) => {\n axios\n .post(`${API}/Account/ChangePassword`, {\n currentPassword,\n newPassword,\n })\n .then(response => {\n if (response.status === 200) {\n resolve(true);\n } else {\n reject(response.data.error);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n}\n\nconst authService = new AuthService();\n\nexport default authService;\n","import axios from 'axios';\n\nconst instance = axios.create();\n\nexport const uninterceptedAxiosInstance = axios.create();\n\nexport default instance;\n"],"sourceRoot":""}