{"version":3,"sources":["img/logo_gest_cabecera.png","components/context/SessionContext.js","img/ajustes.png","hooks/useWindowSizze.js","components/notifications/NotificationIndicator.js","img/campanita.png","hooks/useTimeout.js","components/Layout.js","img/select_open_white_right.png","img/users.png","img/auditoria.png","img/log_out.png","img/select_open_white_left.png","components/login/Login.js","img/logo_dfserver_big_blanco.png","components/routes/PrivateRoute.js","components/routes/PublicRoute.js","img/check_rounded_big.png","components/login/PasswordRecovery.js","components/routes/ConditionalPrivateRoute.js","img/delete.png","img/edit.png","img/go_back.png","components/common/BackButton.js","components/common/InfoPopover.js","img/info.png","img/spinner.gif","components/users/Users.js","components/states/States.js","img/ver.png","components/procedures/Procedures.js","components/procedures/ProcedureStateChooser.js","img/warning.png","components/procedures/ProcedureDataChooser.js","components/procedures/ProcedureDocChooser.js","components/procedures/Procedure.js","components/dealers/Dealer.js","img/close_red.png","img/check_green.png","components/dealers/Dealers.js","hooks/useUserConfig.js","components/registries/Registries.js","img/download.png","NO_DOC.pdf","components/registries/DocumentViewer.js","components/registries/RemoteDocuments.js","components/registries/LocalDocuments.js","img/upload.png","components/registries/RegistryEvents.js","components/registries/Registry.js","components/history/HistorySearch.js","components/history/HistoryGrid.js","components/history/History.js","components/registries/AssignedRegistries.js","App.js","reportWebVitals.js","index.js"],"names":["SessionContext","createContext","getWidth","window","innerWidth","document","documentElement","clientWidth","body","getHeight","innerHeight","clientHeight","useWindowSize","size","setSize","useState","width","height","useEffect","timeoutId","resizeListener","clearTimeout","setTimeout","addEventListener","removeEventListener","renderListItem","itemData","_jsxs","className","style","children","_jsx","fontSize","date","description","NotificationIndicator","_ref","notifications","setNotifications","openState","setOpenState","location","useLocation","history","useHistory","console","log","windowSize","_Fragment","onClick","toggleOpenState","cursor","position","borderRadius","id","src","length","display","Popover","onShowing","getElementsByClassName","classList","add","onHiding","remove","elementAttr","class","onContentReady","args","html","component","content","padding","target","visible","List","itemRender","noDataText","displayExpr","dataSource","onItemClick","e","notUrl","concat","concesionarioId","procedureId","registryId","filter","each","push","notBasedSize","bottomSize","allowItemDeleting","useTimeout","callback","delay","savedCallback","useRef","current","tick","ret","Promise","then","Layout","drawerState","setDrawerState","open","enabled","notificationsState","setNotificationsState","session","sessionContext","setSession","setSessionContext","useContext","closeDrawer","fillComesFrom","currentUrl","pathname","backlog","undefined","state","comesFrom","handleErrors","response","ok","Error","statusText","async","fetch","process","json","result","catch","isActive","user","name","flex","userType","marginTop","Link","replace","to","ajustes","method","headers","alignItems","justifyContent","backgroundColor","textAlign","gestoria","codigo","logo","openDrawer","Container","validate","values","errors","password","email","test","Login","loginState","setLoginState","loading","message","DXTextInput","fieldName","fieldType","fieldPlaceholder","rest","Field","type","placeholde","_ref2","field","form","TextBox","placeholder","mode","valueChangeEvent","onKeyUp","event","setFieldValue","option","onChange","onFocusOut","setFieldTouched","value","loginFormOptions","initialValues","onSubmit","JSON","stringify","data","shownInitialAlert","Formik","_ref3","isSubmitting","props","hasInputError","touched","hasFetchError","hasError","Form","htmlFor","disabled","inputAttr","autocomplete","Button","color","text","useSubmitBehavior","element","PrivateRoute","isAuthenticated","Route","Redirect","PublicRoute","validateConfirm","match","passwordConfirm","PasswordRecovery","queryParams","queryString","parse","search","queryEmail","queryRecovery","recovery","dialogState","setDialogState","title","header","my","at","of","popupVisible","showDialog","recoveryStep","setRecoveryStep","recoveryState","setRecoveryState","recoveryConfirmState","setRecoveryConfirmState","recoveryFormOptions","recoveryConfirmFormOptions","stylingMode","_ref4","marginBottom","Popup","animation","hide","onShown","repaint","hideDialog","dragEnabled","closeOnOutsideClick","showCloseButton","showTitle","container","minWidth","Position","ToolbarItem","widget","toolbar","options","check_rounded_big","ConditionalPrivateRoute","condition","BackButton","handleClick","imgGoBack","InfoPopover","elementId","randomElementId","Math","random","toString","substring","elId","onMouseEnter","onMouseLeave","marginLeft","Users","editFormRef","createFormRef","lopdFormRef","createUserState","setCreateUserState","error","editUserState","setEditUserState","lopdState","setLopdState","useLopd","passwordDuration","passwordRotation","userCountState","setUserCountState","createDialogState","setCreateDialogState","hideCreateDialog","lopdDialogState","setLopdDialogState","hideLopdDialog","editDialogState","setEditDialogState","hideEditDialog","genericDialogState","setGenericDialogState","okText","koText","okCallback","koCallback","hideGenericDialog","mailDialogState","setMailDialogState","hideMailDialog","DXComboInput","SelectBox","onValueChanged","DXCheckInput","_ref5","_ref6","CheckBox","validateCreate","createFormOptions","showMailDialog","lopdFormOptions","isNaN","parseFloat","isFinite","Number","editFormOptions","jsonDataSource","CustomStore","key","loadMode","load","DataGrid","keyExpr","showColumnLines","showRowLines","showBorders","onCellPrepared","DGLoadPanel","shadingColor","showIndicator","showPane","indicatorSrc","imgSpinner","Scrolling","useNative","SearchPanel","Toolbar","Item","locateInMenu","setErrors","Editing","allowUpdating","allowDeleting","allowAdding","Column","dataField","caption","dataType","calculateCellValue","rowData","DGButton","icon","imgEdit","hint","showEditDialog","row","mail","render","imgDelete","showGenericDialog","userId","deleteUser","innerRef","_ref7","handleReset","valueExpr","flexDirection","flexGrow","_ref8","readOnly","fontFamily","_ref9","States","createStateState","setCreateStateState","foreColor","bgColor","editStateState","setEditStateState","stateCountState","setStateCountState","DXColorBoxInput","ColorBox","dropDownButtonComponent","dropDownButtonRender","dropDownButtonTemplate","openOnFieldClick","applyValueMode","applyButtonText","cancelButtonText","renderColorCell","borderColor","borderStyle","borderWidth","rowType","column","cellElement","querySelectorAll","forEach","visibility","headerCellRender","role","cellRender","stateId","deleteState","defaultValue","Procedures","newSubmenuOpenState","setNewSubmenuOpenState","createProcedureState","setCreateProcedureState","editProcedureState","setEditProcedureState","procedureCountState","setProcedureCountState","defaultProceduresState","setDefaultProceduresState","createDefaultProcedureState","setCreateDefaultProcedureState","defaultProcedureDialogState","setDefaultProcedureDialogState","hideDefaultProcedureDialog","importSucessDialogState","setImportSucessDialogState","hideImportSucessDialog","importDialogValueState","setImportDialogValueState","importDialogObjectState","setImportDialogObjectState","importDialogState","setImportDialogState","hideImportDialog","loadDefaultProcedures","importProcedure","importString","all","importButtonClick","useCallback","navigator","clipboard","readText","b64Parsed","jsonParsed","atob","Id","Data","Docs","Name","err","showImportDialog","newButtonClick","stateCellRenderer","stateName","stateBGColor","flexWrap","marginRight","boxShadow","alignSelf","verButtonRenderer","imgView","verButtonClick","Sorting","defaultSortOrder","defaultSortIndex","contenido","margin","ProcedureStateChooser","itemsState","setItemsState","onCheckChanged","check","tasks","task","find","taskIndex","indexOf","initial","map","slice","selectionMode","items","item","repaintChangesOnly","inital","shown","ItemDragging","allowReordering","group","onDragStart","fromIndex","onAdd","toIndex","onRemove","onReorder","tmpTasks","ProcedureDataChooser","withMandatory","withSync","isRemote","headerText","registryCount","createDataState","setCreateDataState","mandatory","sync","isPlate","isChassis","editDataState","setEditDataState","createDataDialogState","setCreateDataDialogState","editDataDialogState","setEditDataDialogState","validateCreateData","remote","getNextId","onDataChanged","nextId","min","apply","o","newData","float","textDecoration","opacity","border","editingObject","dataset","warning_big","deleteData","ProcedureDocChooser","createDocState","setCreateDocState","editDocState","setEditDocState","createDocDialogState","setCreateDocDialogState","editDocDialogState","setEditDocDialogState","validateCreateDoc","onDocChanged","newDoc","deleteDoc","Procedure","useParams","loadingState","setLoadingState","editionState","setEditionState","nameInputState","setNameInputState","allowMultipleRegistriesChkState","setAllowMultipleRegistriesChkState","errorState","setErrorState","procedureState","setProcedureState","dateModif","Date","getDate","getMonth","getFullYear","join","stateState","setStateState","dataState","setDataState","remoteDataState","setRemoteDataState","docsState","setDocsState","remoteDocsState","setRemoteDocsState","registryCountState","setRegistryCountState","exportState","setExportState","loadProcedure","allowMultipleRegistries","loadStates","loadRegistryCount","loadDatas","loadDocs","loadAll","exportProcedure","saveEdit","trim","toLowerCase","initState","res","states","docs","exitAfterSuccess","exportDialogState","setExportDialogState","hideExportDialog","whiteSpace","getElementById","innerHTML","writeText","overflowY","wordWrap","LoadPanel","Dealer","dealer","loadingCounters","setDealerState","number","counters","estado","clienteDF","descripcion","alert","Gallery","initialItemWidth","showNavButtons","loop","Dealers","loadingDealersState","setLoadingDealersState","loadingCountsState","setLoadingCountsState","dealersState","setDealersState","nextToExpireState","setNextToExpireState","dialogShown","expiredList","loaded","dialogExpirationState","setDialogExpirationState","hideDialogExpiration","dialogChangeStateState","setDialogChangeStateState","cbOk","cbKo","hideDialogChangeState","loadCloseToExpire","newSession","showDialogExpiration","firstLoadStates","sort","a","b","loadStatesWithCounters","showDialogChangeState","setDealerStateRequest","useUserConfig","configState","setConfigState","setConfig","configName","configValue","finalResult","config","er","getConfig","configDefaultValue","setReturnHook","get","set","loadConfig","returnHook","Registries","userConfig","changeStateFormRef","gridRef","changeStateState","setChangeStateState","ids","statesState","setStatesState","results","byProcedureStatesState","setByProcedureStatesState","usersState","setUsersState","dealerState","changeStateButtonState","setChangeStateButtonState","exportSigaButtonState","setExportSigaButtonState","tagBoxValueState","setTagBoxValueState","procedureTagBoxValueState","setProcedureTagBoxValueState","gridPaginationState","setGridPaginationState","selectedGridState","setSelectedGridState","changeStateDialogState","setChangeStateDialogState","currentState","hideChangeStateDialog","changeStateFormOptions","createDate","split","changeDate","closeDate","reverse","loadDealer","loadByProcedureStates","loadProcedures","loadUsers","resizeGridPagination","expGridShowRowCount","floor","pageSize","infoText","ee","userFilter","instance","assigned","filterTexts","useMemo","cancel","emptyValue","filterRowOperationDescriptions","between","contains","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notContains","notEqual","startsWith","bottom","left","ref","filterValue","onSelectionChanged","getSelectedRowsData","selectedData","procedure","allStatesValid","allRegistriesAvailable","onExporting","workbook","Workbook","worksheet","addWorksheet","beginUpdate","columnOption","exportDataGrid","customizeCell","excelCell","font","alignment","horizontal","xlsx","writeBuffer","buffer","saveAs","Blob","endUpdate","onRowClick","onInitialized","FilterRow","applyFilterText","betweenEndText","betweenStartText","resetOperationText","showAllText","operationDescriptions","HeaderFilter","texts","Export","allowExportSelectedData","exportAll","exportSelectedRows","cssClass","showChangeStateDialog","TagBox","searchEnabled","showSelectionControls","showDropDownButton","selectAllText","Selection","deferred","showCheckBoxesMode","rowRenderingMode","Paging","defaultPageSize","Pager","showPageSizeSelector","showInfo","showNavigationButtons","borderBottomLeftRadius","borderTopLeftRadius","lookup","String","padStart","format","allowFiltering","allowHeaderFiltering","aboutToGetDeleted","customizeText","cellInfo","downloaded","statesDataSource","order","DocumentViewer","elmId","selectedDocB64","viewerWidth","pdfjs","GlobalWorkerOptions","workerSrc","version","selectedDocumentNumPages","setSelectedDocumentNumPages","selectedDocumentPageNumber","setSelectedDocumentPageNumber","calculatedWidth","setCalculatedWidth","calculatedHeight","setCalculatedHeight","selectedDocumentChangePage","offset","selectedDocumentPrevPageNumber","theMatches","theNumber","theWidth","getBoundingClientRect","fontStyle","Document","noData","file","encodeURI","onLoadSuccess","numPages","Page","pageNumber","RemoteDocuments","idRegistry","reload","remoteProcedureDocuments","freeDocuments","env","NODE_ENV","addFormRef","selectedDocState","setSelectedDocState","free","selectedDocB64State","setSelectedDocB64State","remoteProcedureDocumentsState","setRemoteProcedureDocumentsState","freeDocumentsState","setFreeDocumentsState","addExtraState","setAddExtraState","addExtraDialogState","setAddExtraDialogState","hideAddExtraDialog","editExtraState","setEditExtraState","idDoc","editExtraDialogState","setEditExtraDialogState","hideEditExtraDialog","confirmDeleteDialogState","setConfirmDeleteDialogState","hideConfirmDeleteDialog","loadRemoteProcedureDocuments","loadExtraDocuments","addExtraFormOptions","editExtraFormOptions","b64","d","hasDocument","classNames","paddingLeft","imgDownload","item2","createElement","href","download","click","showAddExtraDialog","showEditExtraDialog","oldName","LocalDocuments","localProcedureDocuments","uploadFormRef","localProcedureDocumentsState","setLocalProcedureDocumentsState","uploadExtraState","setUploadExtraState","uploadExtraDialogState","setuploadExtraDialogState","hideUploadExtraDialog","showConfirmDeleteDialog","loadLocalProcedureDocuments","formData","FormData","append","uploadExtraFormOptions","isSelected","showUploadExtraDialog","currentTarget","files","RegistryEvents","registryEventsState","setRegistryEventsState","filterState","setFilterState","registryDataSource","columnAutoWidth","sortOrder","datePart","timePart","formated","allowSorting","Registry","idDealer","idProcedure","registryState","setRegistryState","stateComboState","setStateComboState","userComboState","setUserComboState","exportedSigaChkState","setExportedSigaChkState","extraDocsState","setExtraDocsState","extraRemoteDocsState","setExtraRemoteDocsState","incidenceState","setIncidenceState","notifyToStringState","setNotifyToStringState","dataFormState","setDataFormState","remoteDataFormState","setRemoteDataFormState","loadRegistry","listItem","querySelector","registry","exported","downloadRegistry","downloadB64","fullId","fileB64","fileName","extension","linkSource","downloadLink","fname","isAnyDocMissing","isAnyDataMissing","valorEnCampo","validateRegistry","dataJson","encodeURIComponent","stateDataSource","prepareData","remoteDataResult","dataResult","remoteDocsResult","docsResult","remoteExtraDocsResult","extraDocsResult","property","datas","item1","extraDocs","remoteDataForm","dataForm","incidence","stringNotifyTo","notifyTo","Type","Target","cmbFixState","setCmbFixState","onClosed","onOpened","close","maxWidth","procedureName","e2","flexBasis","paddingRight","readonly","borderLeft","TextArea","maxLength","substr","HistorySearch","searchState","setSearchState","userDataSource","DateBox","setDate","pickerType","startDate","prevState","displayFormat","disabledDates","endDate","showClearButton","tramite","HistoryGrid","historyDataSource","gestoriaId","exportButtonState","setExportButtonState","selectedRowsOnly","eId","History","marginBlockStart","marginBlockEnd","AssignedRegistries","allAssignedRegistriesAvailable","calculateFilterExpression","selectedFilterOperation","App","loadingSession","setLoadingSession","doWork","interval","setInterval","clearInterval","sessionActive","isAdmin","hasPerms","Provider","Switch","exact","path","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","getElementsByTagName","getAttribute","rootElement","ReactDOM","BrowserRouter","basename"],"mappings":"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","file":"static/js/main.dd4dd246.chunk.js","sourcesContent":["export default \"data:image/png;base64,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\"","import { createContext } from 'react'\r\n\r\nexport const SessionContext = createContext(null);","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAAGzs1ytAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFqADAAQAAAABAAAAFgAAAAAcITNaAAACPUlEQVQ4EdVVv2sUQRT+ds5ccphLkVyTkCalcl6RoCAqXGOROrFI4DxBsLDSxtLCPyBJZSEIasA06cXuQCUQwSKEWNpIqksKL3DmJLvO92be7qyXCyII+mB33r5f+7153+wCgUSiX707jk7vwMiDVYDofRBEtdZcUIvB+Pm3qDYSGlwBaoyI401UymW0nh7RBI3q08Xw+7fq7XdS6lJjhUkOKJLr2F0ngFuYbVzwRl80Mo/Qw56D57GKy2X4qD9dsq6JjEBOk0qhhNaL7+cynw8MMczdm8Rxdx/tk66Ni7LK7DXBQ7vDX1EsXcGP47rd39dSzBfIgmmt3xnBt5MZth0Gif5XbxmM+v1RHHSeCG6+0phFxMkD7L66oQhcMLG6jtUerJZ8PsHNlE1RuBPsnFe5OCE2E63Jam8uWLvnlqlsPT8UlfT0kmcL9/YMcRPka8kkDqHWBIaGW+h1t22zhLaq+UFlf4qYwBEnmJagifJjDc62Ti3K1SIuYqzwhQRS17+x9kNWXBwq4drDmJJQfWzn0/pnIemAlvoLk07tozcDD5gWT1e74ZXR+ezz4xzBRHwkORqeWjLLmGUMl6bkok5bKvbgSk5qECWPWCenMSyy83JDH3NrrbmUHmZ1+EPNx37EGsSVxBskZ/lsTr4wh8IjqkI281/wq9BGnwpzmBtI8JGzVhK3HT9L/WQ+/yvVRmoSpdPLP/NbMVa4GRrze6weZUaUfERkPsiPR31ciTCJryGJLp/GiDD0/9F/ArylwQPw4LVtAAAAAElFTkSuQmCC\"","import { useState, useEffect } from 'react';\r\n\r\nconst getWidth = () => window.innerWidth\r\n || document.documentElement.clientWidth\r\n || document.body.clientWidth;\r\nconst getHeight = () => window.innerHeight\r\n || document.documentElement.clientHeight\r\n || document.body.clientHeight;\r\n\r\nexport default function useWindowSize() {\r\n // save current window width in the state object\r\n let [size, setSize] = useState({\r\n width: getWidth(),\r\n height: getHeight()\r\n });\r\n\r\n // in this case useEffect will execute only once because\r\n // it does not have any dependencies.\r\n useEffect(() => {\r\n // timeoutId for debounce mechanism\r\n let timeoutId = null;\r\n const resizeListener = () => {\r\n // prevent execution of previous setTimeout\r\n clearTimeout(timeoutId);\r\n // change width from the state object after 150 milliseconds\r\n timeoutId = setTimeout(() => setSize({\r\n width: getWidth(),\r\n height: getHeight()\r\n }), 150);\r\n };\r\n // set resize listener\r\n window.addEventListener('resize', resizeListener);\r\n\r\n // clean up function\r\n return () => {\r\n // remove resize listener\r\n window.removeEventListener('resize', resizeListener);\r\n }\r\n }, [])\r\n\r\n return size;\r\n}","import { Popover, List } from 'devextreme-react'\r\nimport React, { useEffect, useState } from 'react'\r\nimport imgNotificationIndicator from '../../img/campanita.png';\r\nimport \"./NotificationIndicator.css\";\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport { useHistory, useLocation } from 'react-router';\r\n\r\n\r\nconst renderListItem = (itemData) => {\r\n return (\r\n
\r\n {itemData.date}\r\n
\r\n {itemData.description}\r\n
\r\n )\r\n}\r\nconst demoData = [\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" },\r\n { description: \"El concesionario 'TEST' ha adjuntado el documento 'TEST' al trámite 'TEST'.\", date: \"15-04-1992 03:54\" }\r\n];\r\nexport const NotificationIndicator = ({ notifications, setNotifications }) => {\r\n const [openState, setOpenState] = useState(false)\r\n const toggleOpenState = () => {\r\n setOpenState(!openState);\r\n }\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n //public int Id { get; set; }\r\n //public int GestoriaId { get; set; }\r\n //public int UserId { get; set; }\r\n //public int ProcedureId { get; set; }\r\n //public int RegistryId { get; set; }\r\n //public string Description { get; set; } = String.Empty;\r\n //public string Date { get; set; } = String.Empty;\r\n //public int Seen { get; set; }\r\n //public int ConcesionarioId { get; set; }\r\n\r\n useEffect(() => { console.log(location) }, []);\r\n const windowSize = useWindowSize();\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n \r\n
0 ? { display: \"initial\" } : { display: \"none\" }) } className=\"notification-indicator-component-new\" >
\r\n
\r\n \r\n { document.getElementsByClassName(\"notification-indicator-component-active-indicator\")[0].classList.add(\"active\"); }}\r\n onHiding={() => {\r\n setOpenState(false);\r\n document.getElementsByClassName(\"notification-indicator-component-active-indicator\")[0].classList.remove(\"active\");\r\n }}\r\n elementAttr={{ class: \"notification-indicator-component-popover\" }}\r\n onContentReady={\r\n (args) => { \r\n var html = args.component.content();\r\n html.style.padding = 0;\r\n html.style.borderRadius = \"8px\";\r\n //$(html).css(\"padding\", \"0\"); \r\n } \r\n }\r\n target=\"#link1\"\r\n position=\"bottom\"\r\n width={300}\r\n visible={openState}\r\n >\r\n

Notificaciones

\r\n
\r\n {\r\n let notUrl = `/registry/${e.itemData.concesionarioId}/${e.itemData.procedureId}/${e.itemData.registryId}`;\r\n setNotifications(notifications.filter((each) => {\r\n return (e.itemData.registryId != each.registryId || e.itemData.concesionarioId != each.concesionarioId || e.itemData.procedureId != each.procedureId);\r\n }));\r\n setOpenState(false);\r\n history.push(notUrl);\r\n }}\r\n height={() => {\r\n const headerSize = 45;\r\n const bottomSize = 150;\r\n const toobarSize = 50;\r\n const listItemSize = 105;\r\n let size = windowSize.height - 150;\r\n let notBasedSize = (notifications.length * listItemSize);\r\n if ((bottomSize + toobarSize + headerSize) + notBasedSize >= windowSize.height) {\r\n return size;\r\n } else {\r\n return notBasedSize;\r\n }\r\n }}\r\n allowItemDeleting={false}>\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAByUlEQVRIDZVVu0oEQRDcPQVR8PUBYuRfCJoomPgBIoIcFwliJJiJialfYGRgcKlfYGQieImJmWB4goqwiVq1Nz3X7vTMzjX0dk91dfXu7OxdUSgrmf/CGDu8/DMUujWAZFNopSSoDGsBUhRYlLQmyDVsQQrn9dK6QGomwAFecAZNiiLlARY4O3wS19JBd6jNLhROEeccUcK1JD6COAuv4LR1X7CSEce83gd80G5NqgOthhSfNT5TYe5ToDYGnsapytSovoLjKRq6cHO/gy4Qt9wEbu1UQNCAIzbDleb4HKy7JlPWnqQTKUbihnCjp0wILvZkLe9hGcBQQCP+4AjXGyATjgyShoTn3zTVOSVl85jyxQ+Cr7uNTKFPXqbhu/BDLlrs26xjYl+21iTkglqIeW5fkgehHvwdHrM3FA6SIlYRTTsxxQS+Z2nVB0kXILCINV+7Pwu6nsj547mEo/ChOZYIj7GF6z4r582O/kWsqmB4gpfENrSVnkXHjOjeblPIqPsvn0OaW3FsTp4MPAnouKs1+EPG3eVSHkFc9YOwGOR2TsAbcEBwTP1UlUD0DMvmv0SFI3mpaGaaO4Di+/AVp/KKeIMBlVtHwx9KOusVJrKcJAAAAABJRU5ErkJggg==\"","import React, { useEffect, useRef } from \"react\";\r\n\r\nfunction useTimeout(\r\n callback,\r\n delay\r\n) {\r\n const savedCallback = useRef(callback);\r\n\r\n // Remember the latest callback.\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n // Set up the timeout loop.\r\n useEffect(() => {\r\n let id: null;\r\n function tick() {\r\n const ret = savedCallback.current();\r\n\r\n if (ret instanceof Promise) {\r\n ret.then(() => {\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n }\r\n });\r\n } else {\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n }\r\n }\r\n }\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n return () => id && clearTimeout(id);\r\n }\r\n }, [delay]);\r\n}\r\n\r\nexport default useTimeout;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport logo from '../img/logo_gest_cabecera.png';\r\nimport \"./Layout.css\";\r\nimport { SessionContext } from './context/SessionContext';\r\nimport { Link, useHistory } from 'react-router-dom';\r\n\r\nimport ajustes from '../img/ajustes.png';\r\nimport users from '../img/users.png';\r\nimport logout from '../img/log_out.png';\r\nimport auditoria from '../img/auditoria.png';\r\nimport select_open_white_left from '../img/select_open_white_left.png';\r\nimport select_open_white_right from '../img/select_open_white_right.png';\r\nimport { NotificationIndicator } from './notifications/NotificationIndicator';\r\nimport useTimeout from '../hooks/useTimeout';\r\n\r\n\r\nexport const Layout = ({ children }) => {\r\n let history = useHistory();\r\n const [drawerState, setDrawerState] = useState({\r\n open: false,\r\n enabled: true\r\n });\r\n const [notificationsState, setNotificationsState] = useState([]);\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n\r\n const onLogout= async () => {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/session`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n setSessionContext(null);\r\n }\r\n const closeDrawer = () => { setDrawerState({ open: false, enabled: drawerState.enabled }) };\r\n const openDrawer = () => { setDrawerState({ open: true, enabled: drawerState.enabled }) };\r\n\r\n const fillComesFrom = () => {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n if (backlog.length==0 || backlog[backlog.length - 1] != currentUrl) backlog.push(currentUrl);\r\n return backlog;\r\n }\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n useEffect(async () => {\r\n await fetch(`${process.env.PUBLIC_URL}/api/notifications/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setNotificationsState(result.response);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }, []);\r\n useTimeout(async () => {\r\n await fetch(`${process.env.PUBLIC_URL}/api/notifications/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setNotificationsState(result.response);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }, 30000);\r\n\r\n\r\n return (\r\n <>\r\n {(sessionContext != null && sessionContext.isActive) ?\r\n
\r\n
{ setDrawerState({ open: false, enabled: drawerState.enabled }) }}>
\r\n
\r\n
\r\n
{`Hola, ${sessionContext.user.name}`}
\r\n
\r\n
\r\n
\r\n {sessionContext.user.userType >= 1 ?

Configuración

: null}\r\n {sessionContext.user.userType === 2 ?
Config. de estados
: null}\r\n {sessionContext.user.userType === 2 ?
Config. tipos de trámites
: null}\r\n {sessionContext.user.userType === 2 ?
Config. de usuarios
: null}\r\n {sessionContext.user.userType >= 1 ?
Auditoría
: null}\r\n
\r\n
Cerrar sesión
\r\n
\r\n
\r\n Código de gestoría:\r\n
\r\n {sessionContext.gestoria.codigo?sessionContext.gestoria.codigo:\"XXXX-XXXX-XXXX\"}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n { history.replace(\"/\", { comesFrom: [] }); }} />\r\n
\r\n \r\n
{`Hola, ${sessionContext.user.name}`}
\r\n
\r\n\r\n
\r\n \r\n {children}\r\n \r\n
\r\n
\r\n :\r\n

ERROR!

\r\n }\r\n \r\n )\r\n}\r\n\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABEZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAA6gAwAEAAAAAQAAAA4AAAAAvfA5+gAAAEVJREFUOE9jGIng////vEB8HIjdoELEA6CmECD+CMQFUCHiAVCTARA/AuK5QMwGFYYDJihNHQC0gXSnAhWTHzjDCjAwAAD41DcmOLGxEgAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAAGzs1ytAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFqADAAQAAAABAAAAFgAAAAAcITNaAAACPUlEQVQ4Ed1Vz2sUMRT+3q5bpCBooVbwIEKPO66g9iiCJ+1RvQhji0pBqAf/Av0L9NRDoULX3kShl9JLQeypoBS6s1ZRexN/FIsgLbVsd+KXTOJkZ8YtiAcxMJuXL9/7kry8vAW8VjZ2NVQYqPUnuB5kWxnByB0crg1ifaVRgorvQ9ROlgVUr23A+u8zs2dGj2C7/QnIa+a990Y6tPVAZB4q0S4l7hIjRsvYQbgmODl6ELvtbwZozsjeaxQyzt1LzmMnU5nqzQFg57PBBcM859wvAbuc3Rjh5tQX/m7yU2g8modg1pBFItPzx1MuuAfH0v2fH8ZX+fu2C5WOjL4i/QXhRbdQGg2dLF/XWoYgrauOwBiMOzslQ/U5EFH9AW0bxvqwwz2yhAYUTEBnIKSXY0Ht+lCeLOpSAspZm6qJULy7hCuPzQNxr2SKRLdPXnumbbxtYr2x6hLlRmb6372x3Ea7AmmGdqV5k9XwNKM/wZJxion/ASW5y/SvewxjFgv/zjkYGWMdmsyKcPyUT+Oyj3uJYWHtDLzgOxzijvT1HkOsppmKT7jTRZaVpIL4KsBC5xBwV+3h1lmpigdqcwHR9Bv2PRi83Y/e7xfQ3v8SryZXMzwzLA6Fnso6B7cOAVsRi+DRnJCgTew8opnnbq5TuJtzUrI7+U7F9VI+wVOZ2pUJxeZrxjX/RBJHKyrPmAnL3PlHKOljdhzndI1+B1Apb7s1UmGlhH9D77mxH7ygFX7vCp17KmNYfkje/9Z+AhyluXOSEwuvAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAAGzs1ytAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFqADAAQAAAABAAAAFgAAAAAcITNaAAABxklEQVQ4Eb1UPUsDQRB9K2qIKW21VBsPBLHUQmxMBEEhXVIaUAgIkp+QLiholTLptRBjoa1g7WljG7EQQVEEkcR1di/3tXubDSncIpmbefNmdj4WUA+ng/kCH1ENkW8ySxipYjAmMU5xHZy3pMzwBLc57aFIubW2hFJ+FeCYihAOKHr8FD3A3zeZVPrpCAOjE6TV6f4G4ERkYLULIrBTaKvAIJYom0zEz5AumduryXKqTvDB0oN+7h7bcWfyCJkj7pvlIzgzevW84gigyNFUXypYhGtYUUTwL6lwhPSmNBjLwm1cCr/wgpRvdmUhxsXdBs1Jb5Bill6d/dL5/9GUQuaYJ5A/OFE0wKiq2d4/pgpynB6WVZMOblRLeH3/1IBCoTFn0uPIpCftYOYUdZBYp2FO2JR+3mJxwesehO34Tern0p/YKV5QA7OJBIy1KEAu0UZKndg0TiYGoe89P1GI1hF/VeS4RZEGWTYmYb2ME2fgGVhtJb6+fcBPpysJP76+MbtRQeP8xhpAL4Xisrw4h9xuDc8vb5hIp+CeVZEas7rpU6/wSpKrekVVW7+tpbAyGAD6ncQrRctA3daf2iQSuZq0NP91/gCGfK9CAUhI1QAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAAHeEJUAAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFaADAAQAAAABAAAAFQAAAAAIGxIOAAACP0lEQVQ4EcVVMWgUQRR9c1lXiyvE4tRCxaDdzJloZWHESlKKaLdzRZLKiLaCQho7O7VLmqSKkFgFU4tgo6iXBUUxioJiELE4CDkj4/+zmdnZ270EBHHgbv5/7/2//+//3AGVRyYmsoRKziKKGj0ioh1Swy6iWbbzkfq7F4W2B3cyBqxA6gtoNF+jMdTG2qs3eVBQVg6WLKdyd0nQF5D6axVX86DSk5DJx8w3B+zNPuOlI/Vbj4WZZfLO4XlmmOO4NBVbIp09aO/MP+bE5VvpRSpngx6/WCb/GpH6NvjTc7LZOFC2bgBmitwzaAx3aU5PHJU3ZSdglhxBAUtUb7BazCh9C6hdQzrb9kK2a+I6VOumxyjyi3d6aww5WtZVGCO82BmMqeQ9u1mNojaBZmvF8f5WOoWIJtjPs3BWiA4uDg5Z4cLqS2qojpW5waKQPV5hgXtWaDBJzT209n//yvvZrhSVbMJggFr4Tf1lvxTb6POJh6Jm646dtkrce8hWiBPzYZy3gXUVp1jp6bF96HQ/0QQ2IeJhtKc/2JhgnZDOZTHN8aMw3Rc0nQj1+DCezvxw+YuVdn7RVESMeM8Rn5CV3HZ4s80PZB3rbZxVVHxJvU47/ayC6Q+p5DmtzHooKFYqME8rfQon9LlQ1NdmncFJ6mQ+1BTfKTNSL9N7Ok/WDA7tvYJHdzfCAGuPXt2Nzz/vkz1GCZdpI0ZDTTkps3J8P0T3AVU9siXuUPAaVcV/NnWLCfEYJr6MdPrblubfXn8AL7Co2x5+ZtYAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABEZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAA6gAwAEAAAAAQAAAA4AAAAAvfA5+gAAAEZJREFUOE9jGOng////bkB8HIh5oUKEAVBxARB/BOIQqBB+AFTIBsRzgfgREBtAhTEAE5SmHgDaRppTkQFQE+mBM2wAAwMAIWg3JuTUxFcAAAAASUVORK5CYII=\"","import React, { useContext, useState } from 'react';\r\nimport { Field, Formik, Form } from 'formik';\r\nimport { Button } from 'devextreme-react/button';\r\nimport { TextBox } from 'devextreme-react/text-box';\r\nimport \"./Login.css\";\r\nimport logo from '../../img/logo_dfserver_big_blanco.png'; // with import\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\n\r\n// A custom validation function. This must return an object\r\n// which keys are symmetrical to our values/initialValues\r\nconst validate = values => {\r\n const errors = {};\r\n\r\n if (!values.password) {\r\n errors.password = 'Requerido';\r\n } else if (values.password.length > 20) {\r\n errors.password = 'Must be 20 characters or less';\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = 'Requerido';\r\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)) {\r\n errors.email = 'Invalid email address';\r\n }\r\n\r\n return errors;\r\n};\r\n\r\n\r\nexport const Login = () => {\r\n //const loginForm = useFormik({\r\n // initialValues: {\r\n // email: '',\r\n // password: ''\r\n // },\r\n // validate,\r\n // onSubmit: values => {\r\n // alert(JSON.stringify(values, null, 2));\r\n // },\r\n //});\r\n const [loginState, setLoginState] = useState({ loading: false, email: null, password: null, result: null, message: \"\" });\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n const DXTextInput = ({fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onChange={event => {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => {\r\n form.setFieldTouched(field.name)\r\n }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const loginFormOptions = {\r\n initialValues: {\r\n email: '',\r\n password: ''\r\n },\r\n validate: validate ,\r\n onSubmit: async values => {\r\n setLoginState({\r\n loading: true, email: values.email, password: values.password, result: null, message: \"\"\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/session`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setLoginState({\r\n loading: false, email: values.email, password: values.password, result: data.response, message: data.message\r\n });\r\n if (data.response != null) {\r\n data.response.shownInitialAlert = false;\r\n setSessionContext(data.response);\r\n }\r\n }\r\n };\r\n return (\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {\r\n ({ isSubmitting, ...props }) => {\r\n const hasInputError = (props.touched.password && props.errors.password) || (props.touched.email && props.errors.email);\r\n const hasFetchError = (!loginState.loading && loginState.email == props.values.email && loginState.password == props.values.password && loginState.result == null);\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

Inicio de sesión

\r\n \r\n \r\n \r\n \r\n {hasError?\r\n
\r\n {props.touched.email && props.errors.email && props.errors.email == \"Requerido\" || props.touched.password && props.errors.password && props.errors.password == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n loginState.result == null && (loginState.message != \"\" && loginState.message != \"No session\") ? loginState.message :\"El correo o la contraseña no son válidos\"\r\n }\r\n {/*{hasFetchError ?*/}\r\n {/* \"El correo o la contraseña no son válidos\"*/}\r\n {/* :*/}\r\n {/* \"\"*/}\r\n {/*}*/}\r\n
:\r\n null\r\n }\r\n\r\n
\r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,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\"","import React from 'react'\r\nimport { Redirect, Route } from 'react-router'\r\n\r\nexport const PrivateRoute = ({\r\n children,\r\n isAuthenticated,\r\n ...rest\r\n }) => {\r\n return (\r\n \r\n {isAuthenticated ? (\r\n children\r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n//export const PrivateRoute = ({\r\n// isAuthenticated,\r\n// component: Component,\r\n// ...rest\r\n//}) => {\r\n// return (\r\n// {\r\n// return (isAuthenticated)\r\n// ? ()\r\n// : ()\r\n// }}\r\n// />\r\n// )\r\n//}","import React from 'react'\r\nimport { Redirect, Route } from 'react-router'\r\n\r\nexport const PublicRoute = ({\r\n children,\r\n isAuthenticated,\r\n ...rest\r\n }) => {\r\n return (\r\n \r\n {!isAuthenticated ? (\r\n children\r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n//export const PublicRoute = ({\r\n// isAuthenticated,\r\n// component: Component,\r\n// ...rest\r\n//}) => {\r\n// return (\r\n// {\r\n// return (!isAuthenticated)\r\n// ? ()\r\n// : ()\r\n// }}\r\n// />\r\n// )\r\n//}","export default \"data:image/png;base64,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\"","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Field, Formik, Form } from 'formik';\r\nimport { Button } from 'devextreme-react/button';\r\nimport { TextBox } from 'devextreme-react/text-box';\r\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { useHistory, useLocation } from 'react-router';\r\nimport queryString from 'query-string'\r\n\r\n\r\nimport logo from '../../img/logo_gest_cabecera.png'; \r\nimport check_rounded_big from '../../img/check_rounded_big.png'; \r\nimport \"./PasswordRecovery.css\";\r\n\r\n\r\n\r\n// A custom validation function. This must return an object\r\n// which keys are symmetrical to our values/initialValues\r\nconst validate = values => {\r\n const errors = {};\r\n if (!values.email) {\r\n errors.email = 'Requerido';\r\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)) {\r\n errors.email = 'El correo introducido no es válido';\r\n }\r\n\r\n return errors;\r\n};\r\nconst validateConfirm = values => {\r\n const errors = {};\r\n var securityValidator = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{8,15}$/;\r\n if (!values.password) {\r\n errors.password = 'Requerido';\r\n } else if (!values.password.match(securityValidator)) {\r\n errors.password = 'Debe tener una longitud de entre 8 y 15 carácteres y contener al menos una letra minúscula, una letra mayúscula, un número y un carácter especial.';\r\n }\r\n if (!values.passwordConfirm) {\r\n errors.passwordConfirm = 'Requerido';\r\n } else if (values.passwordConfirm != values.password) {\r\n errors.passwordConfirm = 'Las contraseñas no coinciden. Vuelve a introducirlas de nuevo.';\r\n }\r\n\r\n return errors;\r\n};\r\nconst DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onChange={event => { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n);\r\n\r\nexport const PasswordRecovery = () => {\r\n let history = useHistory();\r\n const location = useLocation();\r\n const queryParams = queryString.parse(location.search);\r\n console.log(queryParams);\r\n const queryEmail = queryParams.email || \"\";\r\n const queryRecovery = queryParams.recovery || \"\";\r\n\r\n\r\n //const filter = queryParams.q || \"\";\r\n\r\n const [dialogState, setDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showDialog = (title, header, body) => {\r\n setDialogState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n\r\n const hideDialog = () => {\r\n setDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n const [recoveryStep, setRecoveryStep] = useState(\"start\");\r\n const [recoveryState, setRecoveryState] = useState({ loading: false, email: null, result: null });\r\n const [recoveryConfirmState, setRecoveryConfirmState] = useState({ loading: false, password: null, passwordConfirm: null, result: null });\r\n\r\n\r\n\r\n\r\n useEffect(async () => {\r\n if (queryEmail != \"\" && queryRecovery != \"\") {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/recovery/check?email=${queryEmail}&recovery=${queryRecovery}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n if (data.response) {\r\n setRecoveryStep(\"confirm\");\r\n } else {\r\n setRecoveryStep(\"start\");\r\n }\r\n }\r\n })\r\n\r\n const recoveryFormOptions = {\r\n initialValues: {\r\n email: ''\r\n },\r\n validate: validate,\r\n onSubmit: async values => {\r\n setRecoveryState({\r\n loading: true, email: values.email, result: null\r\n });\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/recovery/start?email=${values.email}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n showDialog(\"Correo electrónico de cambio de contraseña enviado\",\r\n \"Correo electrónico de cambio de contraseña enviado.\",\r\n \"En breve, recibirás el correo. Si no es así, revisa el correo electrónico introducido o revisa la bandeja de SPAM por si hubiese llegado allí.\");\r\n setRecoveryState({\r\n loading: false, email: values.email, result: data.response\r\n });\r\n }\r\n };\r\n const recoveryConfirmFormOptions = {\r\n initialValues: {\r\n password: '',\r\n passwordConfirm: ''\r\n },\r\n validate: validateConfirm,\r\n onSubmit: async values => {\r\n setRecoveryConfirmState({\r\n loading: true, password: values.password, passwordConfirm: values.passwordConfirm, result: false\r\n });\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/recovery/confirm?email=${queryEmail}&recovery=${queryRecovery}&password=${values.password}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n if (data.response) {\r\n showDialog(\"Contraseña cambiada\",\r\n \"Se ha cambiado tu contraseña con éxito.\",\r\n \"Utiliza tu nueva contraseña para iniciar sesión a continuación.\");\r\n } else {\r\n\r\n }\r\n \r\n setRecoveryConfirmState({\r\n loading: false, password: values.password, passwordConfirm: values.passwordConfirm, result: data.response\r\n });\r\n }\r\n };\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {(dialogState.popupVisible ?\r\n null\r\n :\r\n (recoveryStep == \"start\" ?\r\n \r\n {\r\n ({ isSubmitting, ...props }) => {\r\n const hasInputError = (props.touched.email && props.errors.email);\r\n const hasFetchError = (!recoveryState.loading && recoveryState.email == props.values.email && recoveryState.result == null);\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

¿Has olvidado la contraseña?

\r\n

Introduce tu correo electrónico y te enviaremos un correo para restablecer la contraseña.

\r\n \r\n \r\n {hasError ?\r\n
\r\n {props.touched.email && props.errors.email && props.errors.email == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n \"El correo no es válido\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n\r\n

En breve, recibirás el correo. Si no es así, revisa el correo electrónico introducido o revisa la bandeja de SPAM por si hubiese llegado allí.

\r\n \r\n }\r\n }\r\n
\r\n :\r\n \r\n {\r\n ({ isSubmitting, ...props }) => {\r\n const hasInputError = (props.touched.password && props.errors.password || props.touched.passwordConfirm && props.errors.passwordConfirm);\r\n const hasFetchError = (!recoveryConfirmState.loading && recoveryConfirmState.password == props.values.password && recoveryConfirmState.result == false);\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

Cambiar contraseña

\r\n \r\n \r\n \r\n \r\n {hasError ?\r\n
\r\n {props.touched.password && props.errors.password && props.errors.password == \"Requerido\" || props.touched.passwordConfirm && props.errors.passwordConfirm && props.errors.passwordConfirm == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n props.errors.password || props.errors.passwordConfirm\r\n //(props.touched.password && props.errors.password && props.errors.password == \"Demasiado corta\") ?\r\n // \"La contraseña es demasiado corta\"\r\n // :\r\n // \"Las contraseñas no coinciden. Vuelve a introducirlas.\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n\r\n \r\n }\r\n }\r\n
\r\n )\r\n )}\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={dialogState.popupVisible}\r\n onHiding={hideDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={dialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"500px\"\r\n >\r\n \r\n {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl)\r\n history.replace(\"./\", { comesFrom: backlog });\r\n },\r\n }}\r\n />\r\n {/**/}\r\n
\r\n

\r\n {dialogState.header}\r\n

\r\n

\r\n {dialogState.body}\r\n

\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Redirect, Route } from 'react-router'\r\n\r\nexport const ConditionalPrivateRoute = ({\r\n children,\r\n isAuthenticated,\r\n condition,\r\n ...rest\r\n}) => {\r\n return (\r\n \r\n {isAuthenticated && condition ? (\r\n children\r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACR0lEQVRIDe1VvW/TUBD/nZ1maNkqAaoEZaTETspQJpBAjAzMDHaK2GAEIVb+AMZKRQwk7UAHFphAgGBBQqoEaRKJDgwIGBAIpoaQD7/He7aT9xE3bRHdeFJ8X7+7e7k7nwHtUMwXw6uS5mKB8aWY6g+CHz4C4Sk4io4OSwJ4Adfhkk9QRI8NA9HdJIvUNlcTb8n74bIkmYfgBR1hyVvWriXvi6iuqIf3wyY43wRRAY2VOd2UOJTCU4hwTwA2daPBcz4DF9eVThZZnkE5bZoWKSmtctuRy3IYFM+mcTDTIblGPr2WTXfMngkYLasXfgB4LUXPieko6J6Ek1dm0et+1JXb8hP5Y0kGv3xNNOqm6MObbDA/B9BtNKpL6kpe8AAu3cDk9E9EPybRnmKYph5avw7gN1sTHT8rg6lJlhKn42i1G3CcGUxsddDKbaHHj0rT4JhlHWjH0P13MP8DcQanw9FjDORy9MWPR0y/oemwsfIyNX7XQF/E6zwU9bKObIkhSjLpPlAOhtUSSkEgXrCLllbsHfch6pW1Eb2mUAkWFg+jG5U0m2IZ3RFT8wTEng2VES6IRp8Rw3FrqNOZvLuB9crXJEGpXEDEmrr9n/Cu443GkatDju3fHD98Ze9fs8t20GL5PBh7DmfqEOrL3zC/OI9+9E4s6BN4u/oeC5ePoN3/hJxzGrXqa9tdynue7Kwg43T/E4yrTmwb3+R69YVAqXelVpG7Wcnr9z8bchzSfGQnIJpFsXzJhO5CYvygSL/953QXIfYM+QNyHKG9fUf0vAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACHElEQVRIDc1UPWgUQRh9326uiRAjiT/RLj+QwM6xeCCohaClWAQEsdi9i0UwaWJrI9gFCShY2Em4dAr+dDbCdaeFEO5MBG2uEMFYiDZJ5O4mM7s4Nzs7e3dRIV71vve9ee+b2bkBrL/8zWMx74UtqwBgwfOMjk6z4J1extgLeJ9kWmZhzoQjadaawcLPutJRBeenFFbAOrvqZgCZy8IXGV2DlmK/NGWwlpJzghR7QcPskkmgMD+G3e0vIHqCevma2e/sWnbypSuR2HEWbWJz8UHULHwabV7LTu5Ba0SQ3BWx+R86PaAXCcyK98Gb06ivDet89gLeviWEP3WxxPaRft+hUfd47wWF+UFwnBazv0Fldaf3gl/bW5GoXj5rimWdHMkv+cL9EAj3bOI0F184y1+1I00mSJ5wudP+B8j9K49CcQKj+SpO+EOYma2iUWmbfn8ewG6Mo9n+JAyPioO9hJ3vw/hae2UGpM/IVNhqtnAE1PLwvuzi6oSLXM5HbW3JJk2/ADaVzsk3p9XeAOe5mKZHImhRl+h4fztgwQU0Wx+VOdHtbuYyqP+AfDEUZ11R0znudfFsLas6A/R3RCy4I8zvKg+ic8K8quouoHcACx+LI5mLPWgXA8401lcbXTwTre4BLHgtJr8YrSD6hsHDk3j7MPVGJRyNIvsbeOGmMgd9wMj4yf2ay6zsFxX0DODnxTV4iVr5gTHY/1PuARaBiNYRxai1AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAFoTx1HAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADqADAAQAAAABAAAADgAAAAC98Dn6AAAA8ElEQVQoFWNgwAN0Y+8hZHVj7yI4hFl6ieYgRUxglYx//xPQoRvrhayCEczRjXvP8P+/ALIEAwPjW1S+TmwGqgBRPM9cdobQVcyYao1iNRl0Y1+gSzAyNDQwMay5+xddgiFEGWqKYaIWg07ccwwFcAGQncZpInA+zRiQ0EM2HmTtzx/rgUImDExsqgyX5jxBloaxERp1ElwZGP+tBgb/BwZmxjCGv2wPYYpQaHamzwxnZ31jgQsy/2dk+AfkMTLyM/xlVGBg+gNJAnAFUMYvpldA1j2EjTAFhomiDL//bGBgZDBkYGa2Yriw4AJMamBpAMAJNU/JtH0BAAAAAElFTkSuQmCC\"","import React from 'react'\r\nimport imgGoBack from '../../img/go_back.png';\r\n\r\nexport const BackButton = ({ text, history, to }) => {\r\n const handleClick = () => {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n //if (to == \"\" && backlog.length > 0) {\r\n // backlog.pop();\r\n // history.replace(backlog[backlog.length - 1], { comesFrom: backlog });\r\n if (to == \"\") {\r\n backlog.push(currentUrl)\r\n history.replace(\"./dealers\", { comesFrom: backlog });\r\n } else {\r\n backlog.push(currentUrl)\r\n history.replace(to, { comesFrom: backlog });\r\n }\r\n }\r\n return (\r\n
\r\n
\r\n { text }\r\n
\r\n
\r\n )\r\n}\r\n","import { Popover } from 'devextreme-react'\r\nimport React, { useState } from 'react'\r\nimport imgInfo from '../../img/info.png';\r\n\r\nexport const InfoPopover = ({ content, elementId }) => {\r\n const [openState, setOpenState] = useState(false)\r\n const toggleOpenState = () => {\r\n setOpenState(!openState);\r\n }\r\n\r\n let randomElementId = Math.random().toString(36).substring(7);\r\n let elId = elementId || randomElementId;\r\n return (\r\n <>\r\n \r\n \r\n {content}\r\n \r\n \r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAFM0aXcAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAD6ADAAQAAAABAAAADwAAAAAHNtsJAAAB0UlEQVQoFaVSPUscURQ9b2Y3EjClJliI0XZmCIqiWGgVQQMhYDTNzkr8QGzEVIFU/gFBBGFBJOw2KpKQNMHCIq0g6M42hoSgoOBuabXqvue9d32zmUCqPHgf59xzz9x33wA8vMyF4gWumgCCqTfCNhbLeOFPBPOt9YA9+GHZFYYNnnSf4/KoRCYk88JTCdh0vN5pKEF59ag1ZMSkNWbMZyuUCpnsmUvzhiCckZ0X+rgrX3/cX8ZR7goDSw9xmDsQAbso/UPFaq5I11YEO+47FD9uxTEYw834SrMqO2MZwcxT+JnPDSWdGBOfgq4eoFRoQZCdhjb9cPEFx/lX5FBx4KQmJcuYC5Tys9BYFEx8KraL8t/I7heifJflHOjbbQug0qPxmXiybeqLCypunkiQC2Jexj+u8kcj6EqmuguDdihnneZ3un8FSrXA6CGaC1A4g2oaR3Hjd8PVzxzSw3yqE/fr4NtHVM4ohheaEzyXxHppJHfWzy7/JYjiV/eyYyTeT8ZJT3ncqhFAfUgEo4Iv+NlUL2q1NaQfPE/EoXYJv+fkPcCM0x4lBD1hO671KqJCZ4IXIPo9hx7lJaBfxO22yhunje7VYWG8y39Cesr7r27fAZC8t6R3kR1+AAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/spinner.5bb05d7b.gif\";","import { Button, CheckBox, DataGrid, Popup, SelectBox, TextBox } from 'devextreme-react'\r\nimport React, { useContext, useRef, useState } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Column, Button as DGButton, Editing, SearchPanel, Toolbar, Item, Scrolling, LoadPanel as DGLoadPanel } from 'devextreme-react/data-grid';\r\nimport \"./Users.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport check_rounded_big from '../../img/check_rounded_big.png';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popover';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { BackButton } from '../common/BackButton';\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport { InfoPopover } from '../common/InfoPopover';\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nexport const Users = () => {\r\n\r\n let history = useHistory();\r\n\r\n const editFormRef = useRef();\r\n const createFormRef = useRef();\r\n const lopdFormRef = useRef();\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n\r\n const [createUserState, setCreateUserState] = useState({ loading: false, email: null, name: null, type: null, error: false, result: null });\r\n const [editUserState, setEditUserState] = useState({ id: -1, loading: false, email: null, name: null, type: null, error: false, result: null });\r\n const [lopdState, setLopdState] = useState({ loading: false, useLopd: false, passwordDuration: 365, passwordRotation: 10, error: false, result: null });\r\n const [userCountState, setUserCountState] = useState(0);\r\n\r\n const [createDialogState, setCreateDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showCreateDialog = (title, header, body) => {\r\n setCreateDialogState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (createFormRef != undefined && createFormRef != null && createFormRef.current != undefined && createFormRef.current != null) {\r\n createFormRef.current.setErrors({});\r\n }\r\n }\r\n const hideCreateDialog = () => {\r\n setCreateDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const [lopdDialogState, setLopdDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showLopdDialog = (title, header, body) => {\r\n setLopdDialogState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (lopdFormRef != undefined && lopdFormRef != null && lopdFormRef.current != undefined && lopdFormRef.current != null) {\r\n lopdFormRef.current.setErrors({});\r\n }\r\n }\r\n const hideLopdDialog = () => {\r\n setLopdDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const [editDialogState, setEditDialogState] = useState({\r\n id: -1,\r\n name: \"\",\r\n email: \"\",\r\n type: 0,\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showEditDialog = (title, id, name, email, type) => {\r\n setEditDialogState({\r\n id: id,\r\n name: name,\r\n email: email,\r\n type: type,\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (editFormRef != undefined && editFormRef != null && editFormRef.current != undefined && editFormRef.current != null) {\r\n editFormRef.current.setFieldValue(\"name\", name, false);\r\n editFormRef.current.setFieldValue(\"email\", email, false);\r\n editFormRef.current.setFieldValue(\"type\", Number(type), false);\r\n editFormRef.current.setErrors({});\r\n }\r\n }\r\n const hideEditDialog = () => {\r\n setEditDialogState({\r\n id: -1,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const [mailDialogState, setMailDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showMailDialog = (title, target) => {\r\n setMailDialogState({\r\n title: title,\r\n target: target,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideMailDialog = () => {\r\n setMailDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n valueChangeEvent=\"keyup\"\r\n onKeyUp={event => {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n const DXComboInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n const DXCheckInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n // A custom validation function. This must return an object\r\n // which keys are symmetrical to our values/initialValues\r\n const validateCreate = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 30) {\r\n errors.name = 'Must be 30 characters or less';\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = 'Requerido';\r\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)) {\r\n errors.email = 'Correo inválido';\r\n }\r\n\r\n return errors;\r\n };\r\n const validateLopd = values => {\r\n const errors = {};\r\n\r\n if (values.useLopd) {\r\n if (!values.passwordDuration) {\r\n errors.passwordDuration = 'Requerido';\r\n } else if (!(!isNaN(parseFloat(values.passwordDuration)) && isFinite(values.passwordDuration))) {\r\n errors.passwordDuration = 'Debe ser un número';\r\n } else if (Number(values.passwordDuration) > 3650) {\r\n errors.passwordDuration = 'Debe ser 3650 o menos';\r\n } else if (Number(values.passwordDuration) < 7) {\r\n errors.passwordDuration = 'Debe ser 7 o más';\r\n }\r\n if (!values.passwordRotation) {\r\n errors.passwordRotation = 'Requerido';\r\n } else if (!(!isNaN(parseFloat(values.passwordRotation)) && isFinite(values.passwordRotation))) {\r\n errors.passwordRotation = 'Debe ser un número';\r\n } else if (Number(values.passwordRotation) > 50) {\r\n errors.passwordRotation = 'Debe ser 50 o menos';\r\n } else if (Number(values.passwordRotation) < 0) {\r\n errors.passwordRotation = 'Debe ser 0 o más';\r\n }\r\n }\r\n\r\n return errors;\r\n };\r\n const createFormOptions = {\r\n initialValues: {\r\n email: '',\r\n name: '',\r\n type: 0\r\n },\r\n validate: validateCreate,\r\n onSubmit: async values => {\r\n setCreateUserState({\r\n loading: true, email: values.email, name: values.name, type: values.type, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/users`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setCreateUserState({\r\n loading: false, email: values.email, name: values.name, type: values.type, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideCreateDialog();\r\n showMailDialog(\"Correo al nuevo usuario\", values.email)\r\n }\r\n }\r\n };\r\n const lopdFormOptions = {\r\n initialValues: {\r\n useLopd: true,\r\n passwordDuration: \"365\",\r\n passwordRotation: \"10\"\r\n },\r\n validate: validateLopd,\r\n onSubmit: async values => {\r\n setLopdState({\r\n loading: true, useLopd: values.useLopd, passwordDuration: values.passwordDuration, passwordRotation: values.passwordRotation, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/LOPD`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setLopdState({\r\n loading: false, useLopd: values.useLopd, passwordDuration: values.passwordDuration, passwordRotation: values.passwordRotation, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideLopdDialog();\r\n }\r\n }\r\n };\r\n const editFormOptions = {\r\n initialValues: {\r\n email: editDialogState.email,\r\n name: editDialogState.name,\r\n type: editDialogState.type\r\n },\r\n validate: validateCreate,\r\n onSubmit: async values => {\r\n setEditUserState({\r\n id: editDialogState.id, loading: true, email: values.email, name: values.name, type: values.type, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/users`, {\r\n method: 'PUT',\r\n body: JSON.stringify({ ...values, id: editDialogState.id }),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setEditUserState({\r\n id: editDialogState.id, loading: false, email: values.email, name: values.name, type: values.type, result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideEditDialog();\r\n }\r\n }\r\n };\r\n const deleteUser = async (userId) => {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/users?userId=${userId}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n }\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const jsonDataSource = new CustomStore({\r\n key: 'id',\r\n loadMode: 'raw', \r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setUserCountState(result.response.length);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n\r\n const onActionCellPrepared = (e) => {\r\n //if (e.rowType === \"data\" && e.column.caption === \"Acciones\") {\r\n // if (e.data.userType == 2) {\r\n // e.cellElement.querySelectorAll(\"img\").forEach((each) => {\r\n // each.style.visibility = \"hidden\";\r\n // });\r\n // } else {\r\n // e.cellElement.querySelectorAll(\"img\").forEach((each) => {\r\n // each.style.visibility = \"visible\";\r\n // });\r\n // }\r\n //}\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Usuarios 

\r\n

({userCountState} usuarios)

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n showLopdDialog(\"Configuración de RGPD\", \"otro hola\", \"mashola\");\r\n }\r\n }\r\n />\r\n \r\n \r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n showCreateDialog(\"Nuevo usuario\", \"otro hola\", \"mashola\");\r\n }\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return rowData.userType == 2 ? \"Admin\" : (rowData.userType == 1 ? \"Usuario con permisos\" : \"Usuario sin permisos\");\r\n }}\r\n />\r\n \r\n {/**/}\r\n {/**/}\r\n {\r\n showEditDialog(\"Editar usuario\", e.row.data.id, e.row.data.name, e.row.data.mail, e.row.data.userType);\r\n }}\r\n render= {(data) => {\r\n return
\r\n }\r\n }\r\n />\r\n {\r\n {\r\n return sessionContext.user.id != e.row.data.id\r\n }\r\n }}\r\n text=\"Eliminar\"\r\n stylingMode=\"outlined\"\r\n type=\"success\"\r\n icon={imgDelete}\r\n hint=\"Eliminar usuario\"\r\n onClick={(e) => {\r\n showGenericDialog(\"Eliminar usuario\", [`¿Estás seguro de que deseas eliminar el usuario `, <>{e.row.data.name}?
, \"Este usuario dejará de tener acceso a DF-Gest de inmediato y todos los trámites asignados a él pasarán a 'No Asignado'.\"], \"Si, eliminar\", \"No, cancelar\", () => { deleteUser(e.row.data.id); hideGenericDialog() }, () => { hideGenericDialog() })\r\n }}\r\n render={(data) => {\r\n return
\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={createDialogState.popupVisible}\r\n onHiding={hideCreateDialog}\r\n \r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={createDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.password && props.errors.password) || (props.touched.email && props.errors.email);\r\n const hasFetchError = (!createUserState.loading && createUserState.email == props.values.email && createUserState.name == props.values.name && createUserState.type == props.values.type && (createUserState.result == null || createUserState.error) );\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hasError ?\r\n
\r\n {props.touched.email && props.errors.email && props.errors.email == \"Requerido\" || props.touched.name && props.errors.name && props.errors.name == \"Requerido\" || props.touched.type && props.errors.type && props.errors.type == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n createUserState.error ? createUserState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n

Antes de guardar, revisa que el correo electrónico es el correcto.

\r\n

Tras guardarse, este campo no podrás editarlo y tendrás que eliminar el usuario y volver a crearlo.

\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={editDialogState.popupVisible}\r\n onHiding={hideEditDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={editDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"650px\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, setFieldValue, ...props }) => {\r\n const hasInputError = (props.touched.password && props.errors.password) || (props.touched.email && props.errors.email);\r\n const hasFetchError = (!editUserState.loading && editUserState.email == props.values.email && editUserState.name == props.values.name && editUserState.type == props.values.type && (createUserState.result == null || createUserState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {hasError ?\r\n
\r\n {props.touched.email && props.errors.email && props.errors.email == \"Requerido\" || props.touched.name && props.errors.name && props.errors.name == \"Requerido\" || props.touched.type && props.errors.type && props.errors.type == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n editUserState.error ? editUserState.result :\"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={mailDialogState.popupVisible}\r\n onHiding={hideMailDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={mailDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"600px\"\r\n >\r\n \r\n {\r\n hideMailDialog();\r\n },\r\n }}\r\n />\r\n
\r\n

\r\n Hemos enviado un correo electrónico al usuario que acabas de crear.\r\n

\r\n

\r\n {mailDialogState.target}\r\n

\r\n

\r\n En él recibirá las instrucciones para acceder a la plataforma.\r\n

\r\n

Si te has equivocado de correo electrónico, elimina el usuario y crea uno nuevo.

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={lopdDialogState.popupVisible}\r\n onHiding={hideLopdDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={lopdDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.passwordDuration && props.errors.passwordDuration) || (props.touched.passwordRotation && props.errors.passwordRotation);\r\n const hasFetchError = (!lopdState.loading && lopdState.useLopd == props.values.useLopd && lopdState.passwordDuration == props.values.passwordDuration && lopdState.passwordRotation == props.values.passwordRotation && (lopdState.result == null || lopdState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n {hasError ?\r\n
\r\n {props.touched.passwordDuration && props.errors.passwordDuration && props.errors.passwordDuration == \"Requerido\" || props.touched.passwordRotation && props.errors.passwordRotation && props.errors.passwordRotation == \"Requerido\" ?\r\n \"Los campos son obligatorios si se activa RGPD\"\r\n :\r\n lopdState.error ? lopdState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n","import { Button, ColorBox, DataGrid, Popup, SelectBox, TextBox } from 'devextreme-react'\r\nimport React, { useRef, useState } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Column, Button as DGButton, Editing, SearchPanel, Toolbar, Item, Scrolling, LoadPanel as DGLoadPanel } from 'devextreme-react/data-grid';\r\nimport \"./States.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport check_rounded_big from '../../img/check_rounded_big.png';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popover';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { BackButton } from '../common/BackButton';\r\nimport { InfoPopover } from '../common/InfoPopover';\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nexport const States = () => {\r\n\r\n let history = useHistory();\r\n\r\n const editFormRef = useRef()\r\n\r\n const [createStateState, setCreateStateState] = useState({ loading: false, foreColor: null, name: null, bgColor: null, error: false, result: null });\r\n const [editStateState, setEditStateState] = useState({ id: -1, loading: false, foreColor: null, name: null, bgColor: null, error: false, result: null });\r\n const [stateCountState, setStateCountState] = useState(0);\r\n\r\n const [createDialogState, setCreateDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showCreateDialog = (title, header, body) => {\r\n setCreateDialogState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideCreateDialog = () => {\r\n setCreateDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const [editDialogState, setEditDialogState] = useState({\r\n id: -1,\r\n name: \"\",\r\n bgColor: \"\",\r\n foreColor: \"\",\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showEditDialog = (title, id, name, bgColor, foreColor) => {\r\n setEditDialogState({\r\n id: id,\r\n name: name,\r\n bgColor: bgColor,\r\n foreColor: foreColor,\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (editFormRef != undefined && editFormRef != null && editFormRef.current != undefined && editFormRef.current != null) {\r\n editFormRef.current.setFieldValue(\"name\", name, false);\r\n editFormRef.current.setFieldValue(\"foreColor\", foreColor, false);\r\n editFormRef.current.setFieldValue(\"bgColor\", bgColor, false);\r\n }\r\n \r\n }\r\n const hideEditDialog = () => {\r\n setEditDialogState({\r\n id: -1,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const [mailDialogState, setMailDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showMailDialog = (title, target) => {\r\n setMailDialogState({\r\n title: title,\r\n target: target,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideMailDialog = () => {\r\n setMailDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onChange={event => { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXComboInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXColorBoxInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n // A custom validation function. This must return an object\r\n // which keys are symmetrical to our values/initialValues\r\n const validateCreate = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 30) {\r\n errors.name = 'Must be 30 characters or less';\r\n }\r\n return errors;\r\n };\r\n const createFormOptions = {\r\n initialValues: {\r\n name: '',\r\n foreColor: '#000000',\r\n bgColor: '#FFFFFF'\r\n },\r\n validate: validateCreate,\r\n onSubmit: async values => {\r\n setCreateStateState({\r\n loading: true, foreColor: values.foreColor, name: values.name, bgColor: values.bgColor, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/states`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setCreateStateState({\r\n loading: false, foreColor: values.foreColor, name: values.name, bgColor: values.bgColor, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideCreateDialog();\r\n }\r\n }\r\n };\r\n const editFormOptions = {\r\n initialValues: {\r\n email: editDialogState.email,\r\n foreColor: editDialogState.foreColor,\r\n bgColor: editDialogState.bgColor\r\n },\r\n validate: validateCreate,\r\n onSubmit: async values => {\r\n setEditStateState({\r\n id: editDialogState.id, loading: true, email: values.email, name: values.name, type: values.type, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/states`, {\r\n method: 'PUT',\r\n body: JSON.stringify({ ...values, id: editDialogState.id }),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setEditStateState({\r\n id: editDialogState.id, loading: false, email: values.email, name: values.name, type: values.type, result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideEditDialog();\r\n }\r\n }\r\n };\r\n\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const jsonDataSource = new CustomStore({\r\n key: 'id',\r\n loadMode: 'raw', \r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/states`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setStateCountState(result.response.length);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n const renderColorCell = (data) => {\r\n return
;\r\n }\r\n const onActionCellPrepared = (e) => {\r\n if (e.rowType === \"data\" && e.column.caption === \"Acciones\") {\r\n if (e.data.id <= 99) {\r\n e.cellElement.querySelectorAll(\"img\").forEach((each) => {\r\n each.style.visibility = \"hidden\";\r\n });\r\n } else {\r\n e.cellElement.querySelectorAll(\"img\").forEach((each) => {\r\n each.style.visibility = \"visible\";\r\n });\r\n }\r\n }\r\n }\r\n const deleteState = async (stateId) => {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/states?stateId=${stateId}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n }\r\n\r\n const systemColumnHeaderCellRender = (data) => {\r\n return
{data.column.caption}
\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Estados 

\r\n

({stateCountState} estados)

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n showCreateDialog(\"Nuevo estado\", \"otro hola\", \"mashola\");\r\n }\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return rowData.id <= 99 ? true : false;\r\n }}\r\n />\r\n \r\n \r\n \r\n {/**/}\r\n {/**/}\r\n {\r\n return e.row.data.id >= 100; //rowData.id >= 100\r\n }}\r\n text=\"Editar\"\r\n stylingMode=\"outlined\"\r\n type=\"success\"\r\n icon={imgEdit}\r\n hint=\"Editar estado\"\r\n onClick={(e) => {\r\n showEditDialog(\"Editar estado\", e.row.data.id, e.row.data.name, e.row.data.bgColor, e.row.data.foreColor);\r\n }}\r\n render={(data) => {\r\n return
\r\n }\r\n }\r\n />\r\n {\r\n return e.row.data.id >= 100;\r\n }}\r\n text=\"Eliminar\"\r\n stylingMode=\"outlined\"\r\n type=\"success\"\r\n icon={imgDelete}\r\n hint=\"Eliminar estado\"\r\n onClick={(e) => {\r\n showGenericDialog(\"Eliminar estado\", [`¿Estás seguro de que deseas eliminar el estado `, <>{e.row.data.name}?
, \"Esta acción es irreversible y los trámites que estén en este estado pasarán a 'Sin Estado.'\"], \"Si, eliminar\", \"No, cancelar\", () => { deleteState(e.row.data.id); hideGenericDialog() }, () => { hideGenericDialog() })\r\n }}\r\n render={(data) => {\r\n return
\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={createDialogState.popupVisible}\r\n onHiding={hideCreateDialog}\r\n \r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={createDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name);\r\n const hasFetchError = (!createStateState.loading && createStateState.email == props.values.email && createStateState.name == props.values.name && createStateState.type == props.values.type && (createStateState.result == null || createStateState.error) );\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n createStateState.error ? createStateState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={editDialogState.popupVisible}\r\n onHiding={hideEditDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={editDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, setFieldValue, ...props }) => {\r\n const hasInputError = (props.touched.password && props.errors.password) || (props.touched.email && props.errors.email);\r\n const hasFetchError = (!editStateState.loading && editStateState.email == props.values.email && editStateState.name == props.values.name && editStateState.type == props.values.type && (createStateState.result == null || createStateState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {hasError ?\r\n
\r\n {props.touched.email && props.errors.email && props.errors.email == \"Requerido\" || props.touched.name && props.errors.name && props.errors.name == \"Requerido\" || props.touched.type && props.errors.type && props.errors.type == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n editStateState.error ? editStateState.result :\"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={mailDialogState.popupVisible}\r\n onHiding={hideMailDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={mailDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n hideMailDialog();\r\n },\r\n }}\r\n />\r\n
\r\n

\r\n Hemos enviado un correo electrónico al estado que acabas de crear.\r\n

\r\n

\r\n {mailDialogState.target}\r\n

\r\n

\r\n En él recibirá las instrucciones para acceder a la plataforma.\r\n

\r\n

Si te has equivocado de correo electrónico, elimina el estado y crea uno nuevo.

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACt0lEQVRIDe1VTWgTQRT+ZhOTJuLFVvwDI6JYYSf9g4KKIvXgvaVYxN3GHkrPJQheSg4FwZMehCJYQi00SqvoRRGhlVYRjH9R0frTKoiVxoM92EjT7Ppm0p1k2UoreJIOLPPN97733syb4S3wp8GkgZvdYGzGJfKhNnYEVdFBbKnNuSyrWDSaldANexXKv5X4pAM3z2JzzTwi9Qwb+QnMZtKAfvK+NIrETnLdGC1m0Nt7VSrdGFL4n4BiFctDcaOHlnVU1TFY2A+GH3g50OVIlsrefgqB4B08uTSDRELD8MeCI8CrK0XNwY4NmFuMKR7cfKgWujkuT8rNy4rjxl2BvVsSrG5GyXIYTEsjk3wkqP9puA9db+zDAoboDsZhI0cHb4JPi+N5csx7aN2cQEPnOmngxiBV6qIScfOpwhLoxgNF6EZW3kHx1d1SPDfvCaxJIuRrUQagSmHG9igcqGgTuOiwUDiAaOyQNAZD25SocheXmMeqsfCrPCjRDZ1h+TzqOkoOrYkAcTfJttUJ4q6SYIVo8tMxMCsMOzyKTN+sI16bV1cBb1GX8xOFfjNVDU2LwLYidNlZ2NpnoGJqpaIvnyAaXw8rewbMbqJ8w/D7U3jW/9WTW97wdAtsu42+eQRD3bLtlAndCWqMZlgsTjs8jRcDE0rHjVbYLAXatuIYmyNdI+neKU48UNu6QLob1Mv6BF9KIDp1yH8cj5PflIMA0Y69sPJvXVxp8Z0CbSotl5D41fzENbweOFq2I18SucJI+auX8kz/JLWD254ggtBw3sOL7pvDVWjsurCVTuAoxT9y0eolyzgCFT1U07w0iXY+Mk39HzvJOUM9573jImfd6KKNdFIjPkeNmMpZHN4EjkXMoqHlQfVHMwWepv18ofkD/WC2k3UH4d00p6nJpZZvciLI2lihAr8BDdvBpXeXHSMAAAAASUVORK5CYII=\"","import { Button, DataGrid, DropDownButton, List, Popup, SelectBox, TextBox } from 'devextreme-react'\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Column, Button as DGButton, Editing, SearchPanel, Toolbar, Item, Scrolling, LoadPanel as DGLoadPanel, Sorting } from 'devextreme-react/data-grid';\r\nimport \"./Procedures.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgView from '../../img/ver.png';\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport check_rounded_big from '../../img/check_rounded_big.png';\r\nimport { Link, useHistory, useLocation } from 'react-router-dom';\r\nimport Popover, { Position, ToolbarItem } from 'devextreme-react/popover';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { BackButton } from '../common/BackButton';\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nexport const Procedures = () => {\r\n const [newSubmenuOpenState, setNewSubmenuOpenState] = useState(false)\r\n const toggleNewSubmenuOpenState = () => {\r\n setNewSubmenuOpenState(!newSubmenuOpenState);\r\n }\r\n const location = useLocation();\r\n const history = useHistory();\r\n const editFormRef = useRef();\r\n\r\n\r\n const [createProcedureState, setCreateProcedureState] = useState({ loading: false, email: null, name: null, type: null, error: false, result: null });\r\n const [editProcedureState, setEditProcedureState] = useState({ id: -1, loading: false, email: null, name: null, type: null, error: false, result: null });\r\n const [procedureCountState, setProcedureCountState] = useState(0);\r\n const [defaultProceduresState, setDefaultProceduresState] = useState([]);\r\n const [createDefaultProcedureState, setCreateDefaultProcedureState] = useState({ loading: false, error: false, result: null });\r\n\r\n\r\n const [mailDialogState, setMailDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showMailDialog = (title, target) => {\r\n setMailDialogState({\r\n title: title,\r\n target: target,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideMailDialog = () => {\r\n setMailDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [defaultProcedureDialogState, setDefaultProcedureDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showDefaultProcedureDialog = (title) => {\r\n setDefaultProcedureDialogState({\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideDefaultProcedureDialog = () => {\r\n setDefaultProcedureDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const [importSucessDialogState, setImportSucessDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showImportSucessDialog = (title) => {\r\n setImportSucessDialogState({\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideImportSucessDialog = () => {\r\n setImportSucessDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [importDialogValueState, setImportDialogValueState] = useState(\"\");\r\n const [importDialogObjectState, setImportDialogObjectState] = useState(null);\r\n const [importDialogState, setImportDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showImportDialog = async (title) => {\r\n setImportDialogValueState(\"\");\r\n setImportDialogObjectState(null);\r\n if (navigator.clipboard.readText) {\r\n const text = await navigator.clipboard.readText();\r\n let b64Parsed = \"\";\r\n let jsonParsed = \"\";\r\n try {\r\n b64Parsed = atob(text)\r\n jsonParsed = JSON.parse(b64Parsed);\r\n setImportDialogValueState(text);\r\n console.log(jsonParsed);\r\n if (jsonParsed.Id == undefined || jsonParsed.Data == undefined || jsonParsed.Docs == undefined || jsonParsed.Name == undefined || jsonParsed.States == undefined) {\r\n //El código es inválido\r\n } else {\r\n setImportDialogObjectState(jsonParsed);\r\n }\r\n } catch (err) {\r\n\r\n }\r\n }\r\n setImportDialogState({\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideImportDialog = () => {\r\n setImportDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXComboInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n // A custom validation function. This must return an object\r\n // which keys are symmetrical to our values/initialValues\r\n const validateCreate = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 30) {\r\n errors.name = 'Must be 30 characters or less';\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = 'Requerido';\r\n } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)) {\r\n errors.email = 'Invalid email address';\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const jsonDataSource = new CustomStore({\r\n key: 'id',\r\n loadMode: 'raw',\r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setProcedureCountState(result.response.length);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n\r\n const loadDefaultProcedures = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/GetDefaultProcedures`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setDefaultProceduresState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n\r\n const importProcedure = async (importString) => {\r\n setCreateDefaultProcedureState({\r\n loading: true, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/procedures/ImportProcedure`, {\r\n method: 'POST',\r\n body: JSON.stringify(importString),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setCreateDefaultProcedureState({\r\n loading: false, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n hideDefaultProcedureDialog();\r\n hideImportDialog();\r\n if (!createDefaultProcedureState.error) {\r\n showImportSucessDialog(\"Tipo de trámite creado\");\r\n }\r\n }\r\n\r\n\r\n const loadAll = async () => {\r\n //setLoadingState(true);\r\n Promise.all([loadDefaultProcedures()]).then(() => {\r\n //setLoadingState(false);\r\n });\r\n }\r\n useEffect(loadAll, []);\r\n\r\n\r\n const importButtonClick = useCallback((event) => {\r\n showImportDialog(\"Importar tipo de trámite\");\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n }, [])\r\n const newButtonClick = useCallback((event) => {\r\n toggleNewSubmenuOpenState();\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n }, [])\r\n const newButtonAttrs = { class: \"procedures-component-newbutton\", id: \"procedures-component-newbutton\" };\r\n const stateCellRenderer = useCallback((data) => {\r\n let stateName = \"Cargando...\";\r\n let stateBGColor = \"#FFFFFF\";\r\n if (data.data.state == -1) {\r\n stateName = \"Oculto\";\r\n stateBGColor = \"#FF5252\";\r\n } else if (data.data.state == 0) {\r\n stateName = \"Desactivado\";\r\n stateBGColor = \"#BDBDBD\";\r\n } else if (data.data.state == 1) {\r\n stateName = \"Activo\";\r\n stateBGColor = \"#8BC34A\";\r\n }\r\n return
{stateName}
\r\n }, []);\r\n const verButtonRenderer = useCallback((data) => {\r\n return
\r\n }, []);\r\n const verButtonClick = useCallback((e) => {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/procedure/${e.row.data.id}`, { comesFrom: backlog });\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Tipos de trámites 

\r\n

({procedureCountState} trámites)

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n setNewSubmenuOpenState(false);\r\n }}\r\n width={200}\r\n visible={newSubmenuOpenState}\r\n onContentReady={\r\n (args) => {\r\n var html = args.component.content();\r\n html.style.padding = 0;\r\n html.style.borderRadius = \"8px\";\r\n }\r\n }\r\n >\r\n {\r\n if (e.itemData.id == 0) {\r\n history.push(\"./procedure/-1\");\r\n setNewSubmenuOpenState(false);\r\n } else {\r\n showDefaultProcedureDialog(\"Tipos de trámite predeterminados\");\r\n setNewSubmenuOpenState(false);\r\n }\r\n }}\r\n allowItemDeleting={false}>\r\n \r\n \r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={mailDialogState.popupVisible}\r\n onHiding={hideMailDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={mailDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n hideMailDialog();\r\n },\r\n }}\r\n />\r\n
\r\n

\r\n Hemos enviado un correo electrónico al trámite que acabas de crear.\r\n

\r\n

\r\n {mailDialogState.target}\r\n

\r\n

\r\n En él recibirá las instrucciones para acceder a la plataforma.\r\n

\r\n

Si te has equivocado de correo electrónico, elimina el trámite y crea uno nuevo.

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={defaultProcedureDialogState.popupVisible}\r\n onHiding={hideDefaultProcedureDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={defaultProcedureDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n hideDefaultProcedureDialog();\r\n },\r\n }}\r\n />\r\n

\r\n Elige un tipo de trámite predeterminado y se creará automáticamente.\r\n

\r\n {\r\n if (e.itemData.contenido != null && e.itemData.contenido != \"\") {\r\n await importProcedure(e.itemData.contenido);\r\n }\r\n }}\r\n allowItemDeleting={false}>\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={importSucessDialogState.popupVisible}\r\n onHiding={hideImportSucessDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={importSucessDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n hideImportSucessDialog();\r\n },\r\n }}\r\n />\r\n
\r\n

\r\n Se ha creado el tipo de trámite satisfactoriamente.\r\n

\r\n

Puedes modificar el trámite desde el listado que se muestra en esta misma ventana.

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={importDialogState.popupVisible}\r\n onHiding={hideImportDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={importDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n await importProcedure(importDialogValueState);\r\n hideImportDialog();\r\n },\r\n }}\r\n />\r\n {\r\n hideImportDialog();\r\n },\r\n }}\r\n />\r\n {(navigator.clipboard != undefined && navigator.clipboard.readText != undefined && importDialogValueState!=\"\" && importDialogObjectState!=null ?\r\n <>\r\n

\r\n Pulsa el botón importar para confirmar la importación del código de importación que se muestra a continuación:\r\n

\r\n
\r\n
\r\n
Nombre:
{importDialogObjectState.Name}
\r\n
\r\n
\r\n
Datos:
{importDialogObjectState.Data.length}
\r\n
\r\n
\r\n
Documentos:
{importDialogObjectState.Docs.length}
\r\n
\r\n
\r\n \r\n \r\n :\r\n <>\r\n

\r\n No se ha encontrado ningún código de importación de tipo de trámite en el portapapeles.\r\n

\r\n

Si has copiado un código de importación es posible que debas permitir al navegador el acceso al portapapeles.

\r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n","import { CheckBox, List } from 'devextreme-react';\r\nimport { ItemDragging } from 'devextreme-react/list';\r\nimport React from 'react'\r\nimport { disable } from 'workbox-navigation-preload';\r\nimport \"./ProcedureStateChooser.css\";\r\n\r\nexport const ProcedureStateChooser = ({ itemsState, setItemsState, disabled }) => {\r\n\r\n const onDragStart=(e) => {\r\n e.itemData = itemsState[e.fromIndex];\r\n }\r\n\r\n const onAdd = (e) => {\r\n const tasks = itemsState;\r\n setItemsState(\r\n [...tasks.slice(0, e.toIndex), e.itemData, ...tasks.slice(e.toIndex)],\r\n );\r\n }\r\n\r\n const onRemove = (e) => {\r\n const tasks = itemsState;\r\n setItemsState(\r\n [...tasks.slice(0, e.fromIndex), ...tasks.slice(e.fromIndex + 1)],\r\n );\r\n }\r\n\r\n const onReorder = (e) => {\r\n const tasks = itemsState;\r\n const tmpTasks = [...tasks.slice(0, e.fromIndex), ...tasks.slice(e.fromIndex + 1)];\r\n setItemsState(\r\n [...tmpTasks.slice(0, e.toIndex), e.itemData, ...tmpTasks.slice(e.toIndex)],\r\n );\r\n }\r\n const onCheckChanged = (itemData, check, value) => {\r\n const tasks = itemsState;\r\n const task = tasks.find((e) => e.state.id == itemData.state.id);\r\n const taskIndex = tasks.indexOf(task);\r\n if (check == \"shown\") {\r\n if (!task.initial) {\r\n task[check] = value;\r\n }\r\n }else if (check == \"initial\") {\r\n if (value) {\r\n tasks.map((e) => {\r\n e[\"initial\"] = false;\r\n });\r\n task[check] = value;\r\n }\r\n } else {\r\n task[check] = value;\r\n }\r\n setItemsState(\r\n [...tasks.slice(0, taskIndex), task, ...tasks.slice(taskIndex+1)],\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

Estados que se mostrarán en el trámite

\r\n

Selecciona los estados a mostrar en este tipo de trámite y ordénalos arrastrándolos a la posición deseada. Selecciona el estado inicial (solo puedes seleccionar uno). El estado “Finalizado” será obligatorio y el estado final de todos los tipos de trámite.

\r\n
\r\n
Nombre del estado
\r\n
Estados a mostrar
\r\n
Estado inicial
\r\n
Estado final
\r\n
\r\n (\r\n
\r\n {item.state.name}\r\n
{(item.state.id != 6 && item.state.id != 1) && !item.inital ? { onCheckChanged(item, \"shown\", e.value) }} /> : null}
\r\n
{(item.state.id != 6 && item.state.id != 1) && item.shown ? { onCheckChanged(item, \"initial\", e.value) }} /> : null }
\r\n
{item.state.id == 6 ? : null}
\r\n
\r\n )}\r\n >\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAAGWB6gOAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAADpElEQVRYCcWYz2sTQRTH30yibVJBuq1aC570ouBFxNqKJ/HHpYiCN0EPHppexD/BfyKKt17FUxW0xUtBLXjwoFhBQcSDFW2SgyZRSXacN+0bZ3ZmNrsJ1AGdmTff932fzGZ2NwVIa83qqLDWW3ejaSEbLXBcFbF48WfllhYyHJFCR70D9COl9oLSHiVmqpo0p1SOlWji7dGL/EigcGiSXByZb6h1VRxFJBi6+JBydEyJSICrhclTwMoTjlAHMg1a96IZ05WSNBMGREc8xz4p1CLcLBT4mhbRBpYrdaUz3ZQozQUzlIhckqXIjfdywURG6qQLzRljP6xrRwtm36qOduVXlDPGp8qV2ktzzRynGiVJGGcz5bn6qmlA46BR0kQnBMz0NSEh9qbJ0OVlwH987zElwV33baxjZJpgJt99EAr7jkP87ZUywv98ZpZR0gSTOh8eYOe0pJneI5+JyuY7gQ1HIFpfHTMM0AVQRkETVA6PQWHiBHQ/PcaZt6GZ+mgMWPju8auWbiI/Pee85q3QT1DvkS+5VY1OChCrUtQpzzd2+DQUs64aBalHExzLI1L0fXdIh33QCO9PpjB0/EkTNKJ7GAmxT6PyGoUS0qi8RmkJoSKOkSnEg0qHlj5iqIhjZApFc10dWDy0ZjOLUdwySgrQCJto2ufMLOY18glQGG+8Jr3uk0U1UXJBZyijN+ZUjZNFtVFywcyMN1wjXDeLFykgjcxcPW4vHAHR/q7n5mCruDqviihEw/dPQ+naGpTn/EZoSlTqMIZo4vVV+L10Hbqfn5og1pioivJlLHzrkyndj4tWYmjCC6IwxRh0Q4JecblBz1CTemPrZYLr7Wp0Q16m20rL4aZ8EvsfO1nMpGYgoOadaBmEOGvVYmxppFK/YMVyTPoG8sJQ4QGg+gJKhRkQKjdQJpgBoHIB5YLpEyozUF8wfUBlAgrBsPGjULqyQmVV375/GkTtrRVTk4xfdP30cB02IyEYXBX1d1aaiLsSZs2K6YkQ56XXEz0PDFKBmtVoybnPmEZxB+LGex3Z3Bn/00yJMkAFgRQMiHO6WmAQ1//tiO/NwEnrAeUFygqDxWLjEmUCwqQUKAcoD4zyNr7AoTcV1DktAGUB5YXBRyE/cEa+6WxA/PML4AtLruaB0kD5YWRp+Yee4qFLwErjwHdNQvHwVfkzJPXXjsubgFL3IflXgUV5NmZd9TZGGDwaqTRmt3aIjW1jaW8p+fP3vzN4wf4C0RPSNCqV42wAAAAASUVORK5CYII=\"","import { Button, CheckBox, List, Popup, TextBox } from 'devextreme-react';\r\nimport { ItemDragging } from 'devextreme-react/list';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport React, { useRef, useState } from 'react'\r\nimport \"./ProcedureDataChooser.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport { InfoPopover } from '../common/InfoPopover';\r\nimport warning_big from '../../img/warning.png';\r\n\r\nexport const ProcedureDataChooser = ({ itemsState, setItemsState, withMandatory, withSync, isRemote, disabled, headerText, registryCount }) => {\r\n\r\n\r\n const editFormRef = useRef();\r\n const createFormRef = useRef();\r\n\r\n const [createDataState, setCreateDataState] = useState({ loading: false, mandatory: null, name: null, sync: null, isPlate: null, isChassis: null, error: false, result: null });\r\n const [editDataState, setEditDataState] = useState({ id: -1, loading: false, mandatory: null, name: null, sync: null, isPlate: null, isChassis: null, error: false, result: null });\r\n const [createDataDialogState, setCreateDataDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showCreateDialog = () => {\r\n setCreateDataDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (createFormRef != undefined && createFormRef != null && createFormRef.current != undefined && createFormRef.current != null) {\r\n createFormRef.current.setFieldValue(\"name\", \"\", false);\r\n createFormRef.current.setFieldValue(\"mandatory\", false, false);\r\n createFormRef.current.setFieldValue(\"sync\", false, false);\r\n createFormRef.current.setFieldValue(\"isPlate\", false, false);\r\n createFormRef.current.setFieldValue(\"isChassis\", false, false);\r\n }\r\n }\r\n const hideCreateDialog = () => {\r\n setCreateDataDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [editDataDialogState, setEditDataDialogState] = useState({\r\n id: 0,\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showEditDialog = (id) => {\r\n setEditDataDialogState({\r\n id: id,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (editFormRef != undefined && editFormRef != null && editFormRef.current != undefined && editFormRef.current != null) {\r\n let editingObject = itemsState.find((e) => e.id == id);\r\n if (editingObject != undefined && editingObject != null) {\r\n editFormRef.current.setFieldValue(\"name\", editingObject.name, false);\r\n editFormRef.current.setFieldValue(\"sync\", editingObject.sync, false);\r\n editFormRef.current.setFieldValue(\"mandatory\", editingObject.mandatory, false);\r\n editFormRef.current.setFieldValue(\"isPlate\", editingObject.isPlate, false);\r\n editFormRef.current.setFieldValue(\"isChassis\", editingObject.isChassis, false);\r\n } else {\r\n hideEditDialog();\r\n }\r\n }\r\n }\r\n const hideEditDialog = () => {\r\n setEditDataDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const validateCreateData = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 150) {\r\n errors.name = 'Must be 150 characters or less';\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXCheckInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const createFormOptions = {\r\n initialValues: {\r\n sync: false,\r\n name: '',\r\n mandatory: false\r\n },\r\n validate: validateCreateData,\r\n onSubmit: async values => {\r\n values.remote = isRemote;\r\n values.id = getNextId();\r\n setItemsState([...itemsState, values]);\r\n hideCreateDialog();\r\n }\r\n };\r\n const editFormOptions = {\r\n initialValues: {\r\n sync: false,\r\n name: '',\r\n mandatory: false\r\n },\r\n validate: validateCreateData,\r\n onSubmit: async values => {\r\n values.remote = isRemote;\r\n //setItemsState([...itemsState, values]);\r\n onDataChanged(editDataDialogState.id, values);\r\n hideEditDialog();\r\n }\r\n };\r\n\r\n const getNextId = () => {\r\n let nextId = Math.min.apply(Math, itemsState.map(function (o) { return o.id; }));\r\n if (nextId>0) {\r\n nextId = -1;\r\n } else {\r\n nextId = nextId - 1;\r\n }\r\n if (isRemote && nextId>-100) {\r\n nextId = nextId * 100;\r\n }\r\n return nextId;\r\n }\r\n\r\n const onAdd = () => {\r\n showCreateDialog();\r\n //setItemsState([...itemsState, { name: \"nuevo\", id: 0 }]);\r\n }\r\n const onDataChanged = (id, newData) => {\r\n const tasks = itemsState;\r\n const task = tasks.find((e) => e.id == id);\r\n const taskIndex = tasks.indexOf(task);\r\n \r\n task.name = newData.name;\r\n task.sync = newData.sync;\r\n task.mandatory = newData.mandatory;\r\n task.isPlate = newData.isPlate;\r\n task.isChassis = newData.isChassis;\r\n setItemsState(\r\n [...tasks.slice(0, taskIndex), task, ...tasks.slice(taskIndex + 1)],\r\n );\r\n }\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n const deleteData = (id) => {\r\n const tasks = itemsState;\r\n const task = tasks.find((e) => e.id == id);\r\n const taskIndex = tasks.indexOf(task);\r\n\r\n setItemsState(\r\n [...tasks.slice(0, taskIndex), ...tasks.slice(taskIndex + 1)],\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

{headerText}

\r\n
Añadir nuevo dato
\r\n\r\n
\r\n
Nombre
\r\n {(withMandatory ?\r\n
Obligatorio
\r\n :\r\n
)\r\n }\r\n {(withSync ?\r\n
Sincronizable
\r\n :\r\n
)\r\n }\r\n
\r\n
\r\n {itemsState.length > 0 ?\r\n itemsState.map((e) => {\r\n return
\r\n
\r\n {e.name}\r\n {withMandatory ?\r\n
{(e.mandatory ? \"Sí\" : \"No\")}
\r\n :\r\n
\r\n }\r\n {withSync ?\r\n
{(e.sync ? \"Sí\" : \"No\")}
\r\n :\r\n
\r\n }\r\n
\r\n
\r\n
\r\n showEditDialog(e.element.dataset.id)}\r\n />\r\n {\r\n showGenericDialog(\"Eliminar dato\", [`¿Estás seguro de que deseas eliminar el dato `, <>{e.name}?
, \"Los datos asignados a trámites de este tipo dejarán de estar disponibles permanentemente.\"], \"Si, eliminar\", \"No, cancelar\", () => {\r\n hideGenericDialog();\r\n showGenericDialog(\"Eliminar dato\",\r\n [
,\r\n

\r\n Eliminar la entrada de dato '{e.name}' afectará a {registryCount} trámites.\r\n

,\r\n

¿Sigues estando seguro de eliminar la entrada de dato {e.name}?

\r\n ], \"Eliminar permanentemente\", \"Cancelar\", () => {\r\n deleteData(e.id);\r\n hideGenericDialog();\r\n }, () => { hideGenericDialog() })\r\n }, () => { hideGenericDialog() })\r\n }}\r\n />\r\n
\r\n
\r\n })\r\n :\r\n
Sin datos
\r\n }\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={createDataDialogState.popupVisible}\r\n onHiding={hideCreateDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Nuevo dato\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name) || (props.touched.sync && props.errors.sync) || (props.touched.mandatory && props.errors.mandatory);\r\n //const hasFetchError = (!createDataState.loading && createDataState.email == props.values.email && createDataState.name == props.values.name && createDataState.type == props.values.type && (createDataState.result == null || createDataState.error));\r\n const hasError = (hasInputError);\r\n return
\r\n \r\n \r\n {withMandatory ?\r\n
\r\n \r\n \r\n
\r\n :\r\n null\r\n }\r\n {withSync ?\r\n
\r\n \r\n \r\n
\r\n :\r\n null\r\n }\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n createDataState.error ? createDataState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={editDataDialogState.popupVisible}\r\n onHiding={hideEditDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Editar dato\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name) || (props.touched.sync && props.errors.sync) || (props.touched.mandatory && props.errors.mandatory);\r\n //const hasFetchError = (!editDataState.loading && editDataState.email == props.values.email && editDataState.name == props.values.name && editDataState.type == props.values.type && (editDataState.result == null || editDataState.error));\r\n const hasError = (hasInputError);\r\n return
\r\n \r\n \r\n {withMandatory ?\r\n
\r\n \r\n \r\n
\r\n :\r\n null\r\n }\r\n {withSync ?\r\n
\r\n \r\n \r\n
\r\n :\r\n null\r\n }\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n editDataState.error ? editDataState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n
\r\n )\r\n}\r\n","import { Button, CheckBox, List, Popup, TextBox } from 'devextreme-react';\r\nimport { ItemDragging } from 'devextreme-react/list';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport React, { useRef, useState } from 'react'\r\nimport \"./ProcedureDocChooser.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport warning_big from '../../img/warning.png';\r\n\r\nexport const ProcedureDocChooser = ({ itemsState, setItemsState, isRemote, disabled, headerText, registryCount }) => {\r\n\r\n\r\n const editFormRef = useRef();\r\n const createFormRef = useRef();\r\n\r\n const [createDocState, setCreateDocState] = useState({ loading: false, mandatory: null, name: null, error: false, result: null });\r\n const [editDocState, setEditDocState] = useState({ id: -1, loading: false, mandatory: null, name: null, error: false, result: null });\r\n const [createDocDialogState, setCreateDocDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showCreateDialog = () => {\r\n setCreateDocDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (createFormRef != undefined && createFormRef != null && createFormRef.current != undefined && createFormRef.current != null) {\r\n createFormRef.current.setFieldValue(\"name\", \"\", false);\r\n createFormRef.current.setFieldValue(\"mandatory\", false, false);\r\n }\r\n }\r\n const hideCreateDialog = () => {\r\n setCreateDocDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [editDocDialogState, setEditDocDialogState] = useState({\r\n id: 0,\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showEditDialog = (id) => {\r\n setEditDocDialogState({\r\n id: id,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (editFormRef != undefined && editFormRef != null && editFormRef.current != undefined && editFormRef.current != null) {\r\n let editingObject = itemsState.find((e) => e.id == id);\r\n if (editingObject != undefined && editingObject != null) {\r\n editFormRef.current.setFieldValue(\"name\", editingObject.name, false);\r\n editFormRef.current.setFieldValue(\"mandatory\", editingObject.mandatory, false);\r\n } else {\r\n hideEditDialog();\r\n }\r\n }\r\n }\r\n const hideEditDialog = () => {\r\n setEditDocDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const validateCreateDoc = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 150) {\r\n errors.name = 'Must be 150 characters or less';\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXCheckInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const createFormOptions = {\r\n initialValues: {\r\n name: '',\r\n mandatory: false\r\n },\r\n validate: validateCreateDoc,\r\n onSubmit: async values => {\r\n values.remote = isRemote;\r\n values.id = getNextId();\r\n setItemsState([...itemsState, values]);\r\n hideCreateDialog();\r\n }\r\n };\r\n const editFormOptions = {\r\n initialValues: {\r\n name: '',\r\n mandatory: false\r\n },\r\n validate: validateCreateDoc,\r\n onSubmit: async values => {\r\n values.remote = isRemote;\r\n //setItemsState([...itemsState, values]);\r\n onDocChanged(editDocDialogState.id, values);\r\n hideEditDialog();\r\n }\r\n };\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const getNextId = () => {\r\n let nextId = Math.min.apply(Math, itemsState.map(function (o) { return o.id; }));\r\n if (nextId > 0) {\r\n nextId = -1;\r\n } else {\r\n nextId = nextId - 1;\r\n }\r\n if (isRemote && nextId>-100) {\r\n nextId = nextId * 100;\r\n }\r\n return nextId;\r\n }\r\n\r\n const onAdd = () => {\r\n showCreateDialog();\r\n //setItemsState([...itemsState, { name: \"nuevo\", id: 0 }]);\r\n }\r\n const onDocChanged = (id, newDoc) => {\r\n const tasks = itemsState;\r\n const task = tasks.find((e) => e.id == id);\r\n const taskIndex = tasks.indexOf(task);\r\n \r\n task.name = newDoc.name;\r\n task.mandatory = newDoc.mandatory;\r\n setItemsState(\r\n [...tasks.slice(0, taskIndex), task, ...tasks.slice(taskIndex + 1)],\r\n );\r\n }\r\n const deleteDoc = (id) => {\r\n const tasks = itemsState;\r\n const task = tasks.find((e) => e.id == id);\r\n const taskIndex = tasks.indexOf(task);\r\n\r\n setItemsState(\r\n [...tasks.slice(0, taskIndex), ...tasks.slice(taskIndex + 1)],\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

{headerText}

\r\n {/*type: \"default\"*/}\r\n
Añadir nuevo documento
\r\n {/**/}\r\n\r\n
\r\n
Nombre
\r\n
\r\n
Obligatorio
\r\n
\r\n
\r\n {itemsState.length > 0 ?\r\n itemsState.map((e) => {\r\n return
\r\n
\r\n {e.name}\r\n
\r\n
{(e.mandatory ? \"Sí\" : \"No\")}
\r\n
\r\n
\r\n
\r\n showEditDialog(e.element.dataset.id)}\r\n />\r\n {\r\n showGenericDialog(\"Eliminar dato\", [`¿Estás seguro de que deseas eliminar el dato `, <>{e.name}?
, \"Los datos asignados a trámites de este tipo dejarán de estar disponibles permanentemente.\"], \"Si, eliminar\", \"No, cancelar\", () => {\r\n hideGenericDialog();\r\n showGenericDialog(\"Eliminar documento\",\r\n [
,\r\n

\r\n Eliminar la entrada de documento '{e.name}' afectará a {registryCount} trámites.\r\n

,\r\n

¿Sigues estando seguro de eliminar la entrada de documento {e.name}?

\r\n ], \"Eliminar permanentemente\", \"Cancelar\", () => {\r\n deleteDoc(e.id);\r\n hideGenericDialog();\r\n }, () => { hideGenericDialog() })\r\n }, () => { hideGenericDialog() })\r\n }}\r\n />\r\n
\r\n
\r\n })\r\n :\r\n
Sin datos
\r\n }\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={createDocDialogState.popupVisible}\r\n onHiding={hideCreateDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Nuevo documento\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name) || (props.touched.sync && props.errors.sync) || (props.touched.mandatory && props.errors.mandatory);\r\n //const hasFetchError = (!createDocState.loading && createDocState.email == props.values.email && createDocState.name == props.values.name && createDocState.type == props.values.type && (createDocState.result == null || createDocState.error));\r\n const hasError = (hasInputError);\r\n return
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n createDocState.error ? createDocState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={editDocDialogState.popupVisible}\r\n onHiding={hideEditDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Editar dato\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth=\"400\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name) || (props.touched.sync && props.errors.sync) || (props.touched.mandatory && props.errors.mandatory);\r\n //const hasFetchError = (!editDocState.loading && editDocState.email == props.values.email && editDocState.name == props.values.name && editDocState.type == props.values.type && (editDocState.result == null || editDocState.error));\r\n const hasError = (hasInputError);\r\n return
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n editDocState.error ? editDocState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { useHistory, useParams } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport \"./Procedure.css\";\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport { ProcedureStateChooser } from './ProcedureStateChooser';\r\nimport { Button, Popup, CheckBox, TextBox, LoadPanel } from 'devextreme-react';\r\nimport { ProcedureDataChooser } from './ProcedureDataChooser';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { ProcedureDocChooser } from './ProcedureDocChooser';\r\nimport { BackButton } from '../common/BackButton';\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nexport const Procedure = () => {\r\n let { id } = useParams();\r\n\r\n let history = useHistory();\r\n\r\n const [loadingState, setLoadingState] = useState(true);\r\n const [editionState, setEditionState] = useState((id==-1));\r\n\r\n const [nameInputState, setNameInputState] = useState(\"\");\r\n const [allowMultipleRegistriesChkState, setAllowMultipleRegistriesChkState] = useState(true);\r\n const [errorState, setErrorState] = useState(\"\");\r\n\r\n\r\n const [procedureState, setProcedureState] = useState({\r\n name: \"\", dateModif: [\r\n ('0' + new Date().getDate()).slice(-2),\r\n ('0' + (new Date().getMonth() + 1)).slice(-2),\r\n new Date().getFullYear()\r\n ].join('/')});\r\n const [stateState, setStateState] = useState([]);\r\n const [dataState, setDataState] = useState([]);\r\n const [remoteDataState, setRemoteDataState] = useState([]);\r\n const [docsState, setDocsState] = useState([]);\r\n const [remoteDocsState, setRemoteDocsState] = useState([]);\r\n const [registryCountState, setRegistryCountState] = useState(0);\r\n const [exportState, setExportState] = useState(\"\");\r\n\r\n\r\n const loadProcedure = async () => {\r\n\r\n if (id != -1) {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetProcedure?idProcedure=${id}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setProcedureState(result.response);\r\n setNameInputState(result.response.name);\r\n setAllowMultipleRegistriesChkState(result.response.allowMultipleRegistries);\r\n } else {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(\"/procedures\", { comesFrom: backlog });\r\n }\r\n })\r\n .catch(() => { throw 'Network error' });\r\n } else {\r\n setProcedureState({\r\n name: \"\", dateModif: [\r\n ('0' + new Date().getDate()).slice(-2),\r\n ('0' + (new Date().getMonth() + 1)).slice(-2),\r\n new Date().getFullYear()\r\n ].join('/')\r\n });\r\n }\r\n };\r\n\r\n const loadStates = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetStates?idProcedure=${id}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setStateState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n\r\n const loadRegistryCount = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetProcedureRegistryCount?idProcedure=${id}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(`Registry count ${result.response}`)\r\n setRegistryCountState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n\r\n const loadDatas = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetData?idProcedure=${id}&remote=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setDataState(result.response)\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetData?idProcedure=${id}&remote=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setRemoteDataState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n })\r\n .catch(() => { throw 'Network error' });\r\n \r\n };\r\n const loadDocs = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetDocs?idProcedure=${id}&remote=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setDocsState(result.response)\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetDocs?idProcedure=${id}&remote=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setRemoteDocsState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n const loadDocs_DEPR = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/GetDocs?idProcedure=${id}&remote=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setDocsState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/GetDocs?idProcedure=${id}&remote=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setRemoteDocsState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n\r\n const loadAll = async () => {\r\n setLoadingState(true);\r\n Promise.all([loadProcedure(), loadStates(), loadDatas(), loadDocs(), loadRegistryCount(), exportProcedure()]).then(() => {\r\n setLoadingState(false);\r\n });\r\n }\r\n\r\n const exportProcedure = async () => {\r\n setExportState(\"\");\r\n if (id > 0) {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/ExportProcedure?idProcedure=${id}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setExportState(result.response);\r\n } else {\r\n\r\n }\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n }\r\n\r\n const validate = async () => {\r\n setErrorState(\"\");\r\n setLoadingState(true);\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/Get`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n //Se checkea el nombre\r\n if (nameInputState.trim() == \"\") {\r\n setLoadingState(false);\r\n setErrorState(\"No se ha proporcionado un nombre para el trámite.\");\r\n return \"No se ha proporcionado un nombre para el trámite.\"\r\n }\r\n if (result.response.find((each) => {\r\n return each.id != id && each.name.toLowerCase() == nameInputState.toLowerCase();\r\n }) != null) {\r\n setLoadingState(false);\r\n setErrorState(\"Ya existe un tipo de trámite con el mismo nombre.\");\r\n return \"Ya existe un tipo de trámite con el mismo nombre.\"\r\n }\r\n //Se checkean los estados\r\n let initState = null;\r\n initState = stateState.find((each) => {\r\n return each.initial && each.shown;\r\n });\r\n if (initState == null) {\r\n setLoadingState(false);\r\n setErrorState(\"No se ha establecido un estado inicial.\");\r\n return \"No se ha establecido un estado inicial.\"\r\n }\r\n //Todo ok\r\n setLoadingState(false);\r\n setErrorState(\"\");\r\n return \"\";\r\n })\r\n .catch(() => { setLoadingState(false); throw 'Network error' });\r\n }\r\n\r\n const saveEdit = async (exitAfterSuccess) => {\r\n validate().then((res) => {\r\n if (res != \"\") {\r\n console.log(res);\r\n } else {\r\n if (id > 0) {\r\n setLoadingState(true);\r\n let values = {\r\n id: id,\r\n name: nameInputState,\r\n allowMultipleRegistries: allowMultipleRegistriesChkState,\r\n states: stateState,\r\n data: [...dataState, ...remoteDataState],\r\n docs: [...docsState, ...remoteDocsState]\r\n };\r\n console.log(`${process.env.PUBLIC_URL}/api/procedures/Put`);\r\n console.log(values);\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/Put`, {\r\n method: 'PUT',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then((response) => {\r\n response.json().then((data) => {\r\n setLoadingState(false);\r\n if (data.response == null) {\r\n setErrorState(data.message);\r\n } else {\r\n if (exitAfterSuccess) {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(\"/procedures\", { comesFrom: backlog });\r\n } else {\r\n //setEditionState(false);\r\n loadAll();\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n setLoadingState(true);\r\n //setCreateUserState({\r\n // loading: true, email: values.email, name: values.name, type: values.type, error: false, result: null\r\n //});\r\n let values = {\r\n id: -1,\r\n name: nameInputState,\r\n states: stateState,\r\n data: [...dataState, ...remoteDataState],\r\n docs: [...docsState, ...remoteDocsState]\r\n };\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/Post`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then((response) => {\r\n response.json().then((data) => {\r\n setLoadingState(false);\r\n if (data.response == null) {\r\n setErrorState(data.message);\r\n } else {\r\n if (exitAfterSuccess) {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(\"/procedures\", { comesFrom: backlog });\r\n } else {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/procedure/${data.response.id}`, { comesFrom: backlog });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n //setCreateUserState({\r\n // loading: false, email: values.email, name: values.name, type: values.type, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n //});\r\n }\r\n })\r\n }\r\n\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n\r\n const [exportDialogState, setExportDialogState] = useState({\r\n title: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showExportDialog = (title) => {\r\n setExportDialogState({\r\n title: title,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideExportDialog = () => {\r\n setExportDialogState({\r\n title: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n //useEffect(loadProcedure, [id]);\r\n //useEffect(loadStates, [id]);\r\n //useEffect(loadDatas, [id]);\r\n useEffect(loadAll, [id]);\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n

Configuración del tipo de trámite

\r\n
\r\n {editionState\r\n ?\r\n
\r\n
{errorState}
\r\n
\r\n \r\n
\r\n :\r\n
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
Nombre: *
{ setNameInputState(event.component.option(\"value\")) }} value={nameInputState} />
Fecha de última modificación: {procedureState.dateModif}
\r\n
\r\n
\r\n
\r\n Permitir múltiples registros para el mismo expediente: \r\n { setAllowMultipleRegistriesChkState(e.value) }} />\r\n
\r\n
\r\n
\r\n

Estados

\r\n \r\n
\r\n
\r\n

Datos

\r\n \r\n
\r\n \r\n
\r\n
\r\n

Documentos

\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={exportDialogState.popupVisible}\r\n onHiding={hideExportDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={true}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={exportDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"70%\"\r\n >\r\n \r\n {\r\n let text = document.getElementById('exportCodeTag').innerHTML;\r\n try {\r\n await navigator.clipboard.writeText(text);\r\n console.log('Content copied to clipboard');\r\n } catch (err) {\r\n console.error('Failed to copy: ', err);\r\n }\r\n },\r\n }}\r\n />\r\n {\r\n hideExportDialog();\r\n },\r\n }}\r\n />\r\n

\r\n A continuación se muestra el código de importación del tipo de trámite. Puedes copiarlo y almacenarlo para su posterior importación.\r\n

\r\n
{ exportState }
\r\n \r\n \r\n
\r\n )\r\n}\r\n","import {Button, Gallery, LoadPanel} from 'devextreme-react'\r\nimport React, { useState } from 'react'\r\nimport \"./Dealer.css\";\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport imgSpinner from '../../img/spinner.gif';\r\nimport checkGreen from '../../img/check_green.png';\r\nimport closeRed from '../../img/close_red.png';\r\n\r\nexport const Dealer = ({ dealer, loadingCounters, setDealerState }) => {\r\n\r\n let history = useHistory();\r\n\r\n const dataSource = [\r\n { number: dealer.counters[\"2\"] || 0, name: \"Pendiente\" },\r\n { number: dealer.counters[\"3\"] || 0, name: \"En trámite\" },\r\n { number: dealer.counters[\"4\"] || 0, name: \"Incidencia\" },\r\n { number: dealer.counters[\"5\"] || 0, name: \"En revisión\" },\r\n { number: dealer.counters[\"-1\"] || 0, name: \"Otros\" },\r\n ];\r\n const renderGalleryItem = (itemData) => {\r\n return (\r\n
\r\n

{itemData.number}

\r\n

{itemData.name}

\r\n
\r\n );\r\n }\r\n\r\n\r\n\r\n \r\n\r\n return (\r\n
\r\n
\r\n \r\n {\r\n dealer.estado == 0 ?\r\n <>\r\n
\r\n

{dealer.name}

\r\n
\r\n {dealer.clienteDF}\r\n
\r\n
\r\n {dealer.descripcion != null && dealer.descripcion != \"\"? dealer.descripcion:\"Este concesionario está pendiente de aprobación. No se ha proporcionado información adicional para su aprobación.\"}\r\n
\r\n
\r\n
\r\n \r\n :\r\n <>\r\n
\r\n

{dealer.name}

\r\n
\r\n {dealer.clienteDF}\r\n
\r\n
\r\n {\r\n loadingCounters ?\r\n \r\n :\r\n \r\n }\r\n
\r\n
\r\n
Acceder
\r\n
\r\n \r\n }\r\n \r\n
\r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABOklEQVQ4EYWTPVLDQAyFpU0uAElJi4cO3yE9mZyFc3AWhh7uENrUlDjM0DLZzX4bnmcd7KBif7RPT0+Sbd93m4XJutuHpPPZrqd9s/4MvLl7x55SWthXs7nngnXN+tXlSBbfrncvy3C1e37n4hZWoBwiXoQsITEdtsFnLWhQGEB2Z8GIACgFsOAvsjiUPFkeuZDXpyjSzFpFAMbEWLSfXMMVAJ0KWUQrQYIo+hDtpogUQOXVVfVVCITAuuS+CqmnzLofBaCcRKJDbJxHOykAmpxh1jmJwgDlD2DrNCpPdkVudNT5T9Dhihy6Xj4G9zzlbLVzimgK07dpigi/Mo6RDwgAY3U27mOB+LE/BHUwgYCod4qkJzgPrBt66a3M8VKNKJCNEc1nwT5+ovFLPf43wt/38j9Gi0/zHHsEGmgWW5l4AvMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAYAAAFsAR/KAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEAAAAADgaeE1AAAB8ElEQVQ4EZVUMUgcQRR9M3feKTaXQuQQOxsRUoQLeEYQQey0PBEsUnimSrAKpElMkyaQoOWOCmksLEQUrEQtdtYLkYgSksIiRLGxUcEIp7s7+TvrrHuXrJiBZf5//82bN39nFzBDiheAM/vM5NGcglIcg20ui6AgqIhu+JmjEJPWT9iWqiEkJ5pp6LbYC5gcvRNMazD1KQBqdwuQ+JDigGx18DhWE4fylUA1VJKiSisyyDTk4aIF/vU+HuSy6Cpd1SzUiRTLsMXp34W7EFt8DMrJxp3FJvhnl+B8Mtm4OrsgkVP0jE//ezPbehfvNYe0PEgxE7F3dhoofoUU6zcYbcef0vGfE/GLBqtff5PVfRTLW4YUGt8WnfDUdwJdetL6tRgGzaHxYvkHGvPNmpBm7bG6DpNbUM+sz535Pihvk6ySBltIblP9wnjuWB/gu1uhCNbxZHzs/xwdrGVxcrxLAp1aN4URFCcWg/imSVYJiueTXxIxt+cfwXM/U5Sm5xCNuYcolM4p1oMu++xrwH9rAJJeQTY/isLQZYRJ8YZcTOmcs/foKb+MajfB7dHsuX4SXAJUTtcY+4UUhuFhjkQKhFXBeIH68a1eJMhvhUy1IlrpLqxC4bGBwNgGHXuA5vt+7tFSMkZ/Eimm4YjRGJoY/gEGJ6GfMEf22wAAAABJRU5ErkJggg==\"","import { Button, LoadPanel, Popup } from 'devextreme-react'\r\nimport React, { useContext, useEffect, useState } from 'react'\r\nimport \"./Dealers.css\";\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Dealer } from './Dealer';\r\nimport warning_big from '../../img/warning.png';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nexport const Dealers = () => {\r\n\r\n let history = useHistory();\r\n\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n const [loadingDealersState, setLoadingDealersState] = useState(true);\r\n const [loadingCountsState, setLoadingCountsState] = useState(true);\r\n const [dealersState, setDealersState] = useState([]);\r\n const [nextToExpireState, setNextToExpireState] = useState({ dialogShown: false, expiredList: [], loaded: false });\r\n\r\n\r\n const [dialogState, setDialogState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showDialog = (title, header, body) => {\r\n setDialogState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideDialog = () => {\r\n setDialogState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const [dialogExpirationState, setDialogExpirationState] = useState({\r\n title: \"\",\r\n header: \"\",\r\n body: \"\",\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showDialogExpiration = (title, header, body) => {\r\n setDialogExpirationState({\r\n title: title,\r\n header: header,\r\n body: body,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideDialogExpiration = () => {\r\n setDialogExpirationState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const [dialogChangeStateState, setDialogChangeStateState] = useState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n cbOk: () => { },\r\n cbKo: () => { },\r\n state: 0,\r\n dealer: null\r\n });\r\n const showDialogChangeState = (dealer, state, cbOk, cbKo) => {\r\n setDialogChangeStateState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n cbOk: cbOk,\r\n cbKo: cbKo,\r\n state: state,\r\n dealer: dealer\r\n });\r\n }\r\n const hideDialogChangeState = () => {\r\n setDialogChangeStateState({\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const loadCloseToExpire = async () => {\r\n if (sessionContext != undefined && sessionContext != null && !sessionContext.shownInitialAlert) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetCloseToExpire`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response);\r\n setNextToExpireState({ dialogShown: true, expiredList: result.response, loaded: true });\r\n if (result.response != undefined && result.response != null && result.response.length != undefined && result.response.length > 0) {\r\n let newSession = sessionContext;\r\n newSession.shownInitialAlert = true;\r\n setSessionContext(newSession)\r\n showDialogExpiration(\"Aviso importante\",\r\n `${result.response.length} trámites finalizados serán borrados pronto.`,\r\n \"Revisa la fecha de cierre y, si no lo hiciste antes, descárgalos. Los trámites se borrarán a los 2 meses de haber sido finalizados.\");\r\n }\r\n //setDealersState(result.response);\r\n })\r\n .catch(() => {\r\n setNextToExpireState({ dialogShown: false, expiredList: [], loaded: true });\r\n throw 'Network error'\r\n });\r\n }\r\n };\r\n const firstLoadStates = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/dealers/Get?withCounters=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n result.response.sort(function (a, b) { return b.estado - a.estado });\r\n setDealersState(result.response)\r\n setLoadingDealersState(false);\r\n loadStatesWithCounters();\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n const loadStatesWithCounters = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/dealers/Get?withCounters=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setLoadingCountsState(false);\r\n result.response.sort(function (a, b) { return b.estado - a.estado });\r\n setDealersState(result.response)\r\n })\r\n .catch(() => { throw 'Network error' });\r\n };\r\n const setDealerState = (dealer, state) => {\r\n showDialogChangeState(dealer, state, () => {\r\n setDealerStateRequest(dealer, state);\r\n hideDialogChangeState();\r\n }, () => {\r\n hideDialogChangeState();\r\n });\r\n }\r\n const setDealerStateRequest = (dealer, state) => {\r\n setLoadingDealersState(true);\r\n fetch(`${process.env.PUBLIC_URL}/api/dealers/PutState?id=${dealer.id}&state=${state}`,\r\n {\r\n method: 'PUT',\r\n body: '',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n firstLoadStates();\r\n }\r\n })\r\n .catch(() => {\r\n throw 'Network error'\r\n setLoadingDealersState(false);\r\n });\r\n }\r\n\r\n\r\n useEffect(() => { firstLoadStates() }, []);\r\n useEffect(() => { loadCloseToExpire() }, [sessionContext]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Concesionarios

\r\n
\r\n {/*
\r\n
\r\n {\r\n dealersState.map((e) => {\r\n if (e.estado==1 || (sessionContext.user.userType === 2 && e.estado==0)) {\r\n return \r\n }\r\n return null;\r\n })\r\n }\r\n
\r\n
\r\n
\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={dialogExpirationState.popupVisible}\r\n onHiding={hideDialogExpiration}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={dialogExpirationState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n minWidth={ 500 }\r\n >\r\n \r\n {\r\n hideDialogExpiration();\r\n },\r\n }}\r\n />\r\n
\r\n

Aviso importante

\r\n

\r\n {dialogExpirationState.header}\r\n

\r\n

Revisa la fecha de cierre y, si no lo hiciste antes, descárgalos.

\r\n

\r\n Los trámites se borrarán a los 2 meses de haber sido finalizados.\r\n

\r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={dialogChangeStateState.popupVisible}\r\n onHiding={hideDialogChangeState}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`${dialogChangeStateState.state == 1 ? \"Aprobar\" : \"Rechazar\"} concesionario ${dialogChangeStateState.dealer!=null?dialogChangeStateState.dealer.name:\"NO NAME\"}`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {/*{dialogChangeStateState.koText != null ?*/}\r\n \r\n {/* :*/}\r\n {/* null*/}\r\n {/*}*/}\r\n {/*{dialogChangeStateState.okText != null ?*/}\r\n \r\n {/* :*/}\r\n {/* null*/}\r\n {/*}*/}\r\n

\r\n {`¿Estás seguro de que deseas ${dialogChangeStateState.state == 1 ? \"aprobar\" : \"rechazar\"} el concesionario ${dialogChangeStateState.dealer?dialogChangeStateState.dealer.name:\"NO NAME\"}?`}\r\n

\r\n \r\n \r\n
\r\n )\r\n}\r\n","import { useState, useEffect, useCallback, useContext } from 'react';\r\nimport { SessionContext } from '../components/context/SessionContext';\r\n\r\n\r\nexport default function useUserConfig() {\r\n // save current window width in the state object\r\n\r\n\r\n //ATENCION USAR CONFIG QUE SE ENCUENTRA EN LA SESIÓN!!!!!!!!!!\r\n //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n const [configState, setConfigState] = useState({});\r\n\r\n const loadConfig = async () => {\r\n setSessionContext({ // object that we want to update\r\n ...sessionContext, // keep all other key-value pairs\r\n config: [] // update the value of specific key\r\n });\r\n setReturnHook({\r\n get: getConfig,\r\n set: setConfig\r\n });\r\n fetch(`${process.env.PUBLIC_URL}/api/config/Get`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n let finalResult = {};\r\n result.response.map((e) => {\r\n finalResult[e.name] = e.value;\r\n });\r\n setSessionContext({ // object that we want to update\r\n ...sessionContext, // keep all other key-value pairs\r\n config: finalResult // update the value of specific key\r\n });\r\n setReturnHook({\r\n get: getConfig,\r\n set: setConfig\r\n });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n const setConfig = async (configName, configValue) => {\r\n let finalResult = sessionContext.config;\r\n finalResult[configName] = configValue;\r\n setSessionContext({ // object that we want to update\r\n ...sessionContext, // keep all other key-value pairs\r\n config: finalResult // update the value of specific key\r\n });\r\n fetch(`${process.env.PUBLIC_URL}/api/config/Put?name=${configName}&value=${configValue}`,\r\n {\r\n method: 'PUT',\r\n body: '',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n let finalResult = {};\r\n result.response.map((e) => {\r\n finalResult[e.name] = e.value;\r\n });\r\n setSessionContext({ // object that we want to update\r\n ...sessionContext, // keep all other key-value pairs\r\n config: finalResult // update the value of specific key\r\n });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n const getConfig = (configName, configDefaultValue) => {\r\n if (sessionContext.config[configName] == undefined || sessionContext.config[configName] == null) {\r\n setConfig(configName, configDefaultValue);\r\n return configDefaultValue;\r\n } else {\r\n return sessionContext.config[configName];\r\n }\r\n }\r\n useEffect(() => {\r\n loadConfig();\r\n }, []);\r\n let [returnHook, setReturnHook] = useState({\r\n get: getConfig,\r\n set: setConfig\r\n });\r\n\r\n return returnHook;\r\n}","import { Button, ColorBox, DataGrid, LoadPanel, Popup, SelectBox, TagBox, TextBox } from 'devextreme-react'\r\nimport React, { useCallback, useContext, useEffect, useRef, useState, useMemo } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport useUserConfig from '../../hooks/useUserConfig'\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Column, Button as DGButton, Editing, SearchPanel, Toolbar, Item, Scrolling, Selection, Paging, Pager, Export, LoadPanel as DGLoadPanel, FilterRow, HeaderFilter, Search } from 'devextreme-react/data-grid';\r\nimport \"./Registries.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport check_rounded_big from '../../img/check_rounded_big.png';\r\nimport imgSpinner from '../../img/spinner.gif';\r\nimport { Link, useHistory, useParams } from 'react-router-dom';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popover';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport { Workbook } from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport { exportDataGrid } from 'devextreme/excel_exporter';\r\nimport { BackButton } from '../common/BackButton';\r\n\r\nexport const Registries = () => {\r\n\r\n let { id } = useParams();\r\n const history = useHistory();\r\n\r\n const windowSize = useWindowSize();\r\n const userConfig = useUserConfig();\r\n\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n\r\n const changeStateFormRef = useRef()\r\n const gridRef = useRef()\r\n\r\n const [changeStateState, setChangeStateState] = useState({ loading: false, ids: null, state: null, error: false, result: null });\r\n const [registryCountState, setRegistryCountState] = useState(0);\r\n const [statesState, setStatesState] = useState({ loading: true, results: [] });\r\n const [byProcedureStatesState, setByProcedureStatesState] = useState({ loading: true, results: [] });\r\n const [procedureState, setProcedureState] = useState({ loading: true, results: [] });\r\n const [usersState, setUsersState] = useState({ loading: true, results: [] });\r\n const [dealerState, setDealerState] = useState({ loading: true, result: null });\r\n \r\n\r\n const [changeStateButtonState, setChangeStateButtonState] = useState(false);\r\n const [exportSigaButtonState, setExportSigaButtonState] = useState(false);\r\n //If the user can assign registries to users the filter should include unassigned, only theirs otherwhise\r\n const [tagBoxValueState, setTagBoxValueState] = useState([]); //useState(sessionContext.user.userType >= 1 ? [0, sessionContext.user.id] : [sessionContext.user.id]);\r\n const [procedureTagBoxValueState, setProcedureTagBoxValueState] = useState([]);\r\n\r\n\r\n const [gridPaginationState, setGridPaginationState] = useState({});\r\n\r\n const [selectedGridState, setSelectedGridState] = useState([]);\r\n\r\n const onRowSelectionChanged = (e) => {\r\n e.component.getSelectedRowsData().then((selectedData) => {\r\n if (selectedData.length == 0) {\r\n setChangeStateButtonState(false);\r\n setExportSigaButtonState(false);\r\n } else {\r\n if (selectedData.length == 1) {\r\n setExportSigaButtonState(true);\r\n } else {\r\n setExportSigaButtonState(false);\r\n }\r\n let procedure = 0;\r\n let allStatesValid = true;\r\n let allRegistriesAvailable = true;\r\n selectedData.map((data) => {\r\n if (sessionContext.user.userType == 0) {\r\n //If the user can't assign registries only those the user has assigned can be changed\r\n if (data.assigned != sessionContext.user.id) {\r\n allRegistriesAvailable = false;\r\n }\r\n }\r\n if (data.stateId == 6) {\r\n allStatesValid = false;\r\n }\r\n if (procedure != 0) {\r\n if (procedure != data.procedureId) {\r\n procedure = -1;\r\n return;\r\n }\r\n } else {\r\n procedure = data.procedureId;\r\n }\r\n })\r\n setChangeStateButtonState(procedure > 0 && allStatesValid && allRegistriesAvailable);\r\n }\r\n setSelectedGridState(selectedData);\r\n });\r\n \r\n }\r\n\r\n const [changeStateDialogState, setChangeStateDialogState] = useState({\r\n ids: [],\r\n procedureId: 0,\r\n currentState: 0,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showChangeStateDialog = (ids, procedureId, currentState) => {\r\n setChangeStateDialogState({\r\n ids: ids,\r\n procedureId: procedureId,\r\n currentState: currentState,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (changeStateFormRef != undefined && changeStateFormRef != null && changeStateFormRef.current != undefined && changeStateFormRef.current != null) {\r\n changeStateFormRef.current.setFieldValue(\"ids\", ids, false);\r\n if (currentState > 0) {\r\n changeStateFormRef.current.setFieldValue(\"state\", currentState, false);\r\n }\r\n }\r\n }\r\n const hideChangeStateDialog = () => {\r\n setChangeStateDialogState({\r\n ids: [],\r\n procedureId: 0,\r\n currentState: 0,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n // A custom validation function. This must return an object\r\n // which keys are symmetrical to our values/initialValues\r\n const validateChangeState = values => {\r\n const errors = {};\r\n if (!values.state) {\r\n errors.state = 'Requerido';\r\n } else if (values.state <=0 ) {\r\n errors.state = 'Requerido';\r\n }\r\n\r\n return errors;\r\n };\r\n const changeStateFormOptions = {\r\n initialValues: {\r\n ids: [],\r\n state: 0\r\n },\r\n validate: validateChangeState,\r\n onSubmit: async values => {\r\n setChangeStateState({\r\n loading: true, ids: values.ids, state: values.state, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/PutState?ids=${JSON.stringify(values.ids)}&state=${values.state}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setChangeStateState({\r\n loading: false, ids: values.ids, state: values.state, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideChangeStateDialog();\r\n }\r\n }\r\n };\r\n\r\n\r\n const resizeGridPagination = () => {\r\n try {\r\n var expGridShowRowCount = Math.floor(((windowSize.height - (156 + 50) - (54 * 2) - 60) / 55));\r\n setGridPaginationState({\r\n pageSize: expGridShowRowCount,\r\n infoText: \"Mostrando {2} trámites\"\r\n });\r\n } catch (ee) {\r\n\r\n }\r\n }\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n\r\n const jsonDataSource = new CustomStore({\r\n key: [\"id\", \"procedureId\"],\r\n loadMode: 'raw', \r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/registries/Get?dealer=${id}`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setRegistryCountState(result.response.length);\r\n // De cada uno de los registros, quitamos las horas de las fechas\r\n result.response.map((e) => {\r\n e.createDate = e.createDate.split(\" \")[0];\r\n e.changeDate = e.changeDate.split(\" \")[0];\r\n e.closeDate = e.closeDate.split(\" \")[0];\r\n // Resort the parts of the date (that comes in dd/MM/yyyy) to yyyy/MM/dd\r\n e.createDate = e.createDate.split(\"/\").reverse().join(\"/\");\r\n e.changeDate = e.changeDate.split(\"/\").reverse().join(\"/\");\r\n e.closeDate = e.closeDate.split(\"/\").reverse().join(\"/\");\r\n });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n const loadDealer = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/dealers/GetId?id=${id}`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setDealerState({ loading: false, result: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadStates = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/states`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setStatesState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadByProcedureStates = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/GetAllProcedureStates`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setByProcedureStatesState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadProcedures = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setProcedureState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadUsers = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setUsersState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadAll = async () => {\r\n Promise.all([loadStates(), loadProcedures(), loadUsers(), loadByProcedureStates(), loadDealer()]).then(() => {\r\n //setLoadingState(false);\r\n });\r\n }\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXComboInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n const exportRegistrySIGA = async () => {\r\n var idRegistry = selectedGridState.map((e) => e.id)[0];\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/ExportRegistrySIGA?id=${idRegistry}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n downloadB64(result.response, idRegistry, \".xml\");\r\n return true;\r\n } else {\r\n\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n const downloadB64 = (fileB64, fileName, extension) => {\r\n const linkSource = `data:application/zip;base64,${fileB64}`;\r\n const downloadLink = document.createElement(\"a\");\r\n const fname = fileName + extension;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fname;\r\n downloadLink.click();\r\n }\r\n\r\n const onExporting = (e) => {\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet('Trámites');\r\n e.component.beginUpdate();\r\n e.component.columnOption('state', 'visible', false);\r\n e.component.columnOption('exportState', 'visible', true);\r\n e.component.columnOption('exported', 'visible', false);\r\n e.component.columnOption('exportExported', 'visible', true);\r\n e.component.columnOption('downloaded', 'visible', false);\r\n e.component.columnOption('exportDownloaded', 'visible', true);\r\n exportDataGrid({\r\n //component: dGrid.getInstance(document.querySelector(\".dx-datagrid\")),\r\n component: e.component,\r\n worksheet: worksheet,\r\n customizeCell: function (options) {\r\n const excelCell = options;\r\n excelCell.font = { name: 'Arial', size: 12 };\r\n excelCell.alignment = { horizontal: 'left' };\r\n }\r\n }).then(function () {\r\n workbook.xlsx.writeBuffer()\r\n .then(function (buffer) {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Trámites.xlsx');\r\n });\r\n e.component.columnOption('state', 'visible', true);\r\n e.component.columnOption('exportState', 'visible', false);\r\n e.component.columnOption('exported', 'visible', true);\r\n e.component.columnOption('exportExported', 'visible', false);\r\n e.component.columnOption('downloaded', 'visible', true);\r\n e.component.columnOption('exportDownloaded', 'visible', false);\r\n e.component.endUpdate();\r\n });\r\n e.cancel = true;\r\n }\r\n\r\n const onRowClick = (e) => {\r\n if (e.rowType === \"data\") {\r\n //e.component.editRow(e.rowIndex);\r\n console.log(e);\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/registry/${id}/${e.key.procedureId}/${e.key.id}`, { comesFrom: backlog });\r\n }\r\n }\r\n //const getFilterValue = useCallback(() => {\r\n // let elFiltro = [];\r\n // if (tagBoxValueState.length > 0) {\r\n // elFiltro.push(['assigned', 'anyof', tagBoxValueState]);\r\n // }\r\n // if (procedureTagBoxValueState.length > 0) {\r\n // if (elFiltro.length > 0) {\r\n // elFiltro.push(\"or\")\r\n // }\r\n // elFiltro.push(['procedureId', 'anyof', procedureTagBoxValueState]);\r\n // }\r\n // return elFiltro;\r\n //}, [procedureTagBoxValueState, tagBoxValueState]);\r\n \r\n useEffect(loadAll, []);\r\n useEffect(resizeGridPagination, [windowSize]);\r\n useEffect(async () => {\r\n const userFilter=userConfig.get(\"_USER_FILTER\", JSON.stringify(sessionContext.user.userType >= 1 ? [0, sessionContext.user.id] : [sessionContext.user.id]))\r\n if (tagBoxValueState != JSON.parse(userFilter)) {\r\n setTagBoxValueState(JSON.parse(userFilter));\r\n }\r\n //const procedureFilter = userConfig.get(\"_PROC_FILTER\", JSON.stringify([]))\r\n //if (procedureTagBoxValueState != JSON.parse(procedureFilter)) {\r\n // setProcedureTagBoxValueState(JSON.parse(procedureFilter));\r\n //}\r\n },[])\r\n useEffect(() => {\r\n if (gridRef != undefined && gridRef != null && gridRef.current != undefined && gridRef.current != null) {\r\n\r\n gridRef.current.instance.filter((itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n });\r\n }\r\n }, [procedureTagBoxValueState, tagBoxValueState])\r\n\r\n const filterCallback = (itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n //let matchesUser = false;\r\n //let matchesProcedure = false;\r\n //if (tagBoxValueState.length == 0) matchesUser = true;\r\n //if (procedureTagBoxValueState.length == 0) matchesProcedure = true;\r\n //if (tagBoxValueState.length > 0) {\r\n // matchesUser = tagBoxValueState.indexOf(itemData.assigned) > -1;\r\n //}\r\n //if (procedureTagBoxValueState.length > 0) {\r\n // matchesProcedure = procedureTagBoxValueState.indexOf(itemData.procedureId) > -1;\r\n //}\r\n\r\n //return matchesUser && matchesProcedure;\r\n }\r\n\r\n const filterTexts = useMemo(() => {\r\n return { ok: \"OK\", cancel: \"Cancelar\", emptyValue: \"(Vacío)\" };\r\n }, []);\r\n\r\n const filterRowOperationDescriptions = useMemo(() => {\r\n return {\r\n between: \"Entre\",\r\n contains: \"Contiene\",\r\n endsWith: \"Termina con\",\r\n equal: \"Igual\",\r\n greaterThan: \"Mayor que\",\r\n greaterThanOrEqual: \"Mayor o igual que\",\r\n lessThan: \"Menor que\",\r\n lessThanOrEqual: \"Menor o igual que\",\r\n notContains: \"No contiene\",\r\n notEqual: \"No es igual\",\r\n startsWith: \"Empieza con\"\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n\r\n
{selectedGridState.length > 0 ? `${selectedGridState.length} trámites seleccionados`:\"\" }
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!dealerState.loading ? dealerState.result.name : \"\"}\r\n {!dealerState.loading ? dealerState.result.clienteDF : \"\"}\r\n
\r\n
\r\n
\r\n

Trámites 

\r\n

({registryCountState} trámites)

\r\n
\r\n \r\n
\r\n {\r\n statesState.loading || procedureState.loading || usersState.loading ?\r\n \r\n :\r\n {\r\n if (e.component != undefined && e.component != null) {\r\n\r\n e.component.filter((itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n });\r\n }\r\n }\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n event.element.classList.remove(\"dx-registry-active\");\r\n event.element.classList.remove(\"dx-registry-focused\");\r\n showChangeStateDialog(selectedGridState.map((e) => e.id), selectedGridState[0].procedureId, 0);\r\n }\r\n }\r\n />\r\n \r\n \r\n {/**/}\r\n {/* {*/}\r\n {/* event.element.classList.remove(\"dx-registry-active\");*/}\r\n {/* event.element.classList.remove(\"dx-registry-focused\");*/}\r\n {/* exportRegistrySIGA();*/}\r\n {/* }*/}\r\n {/* }*/}\r\n {/* />*/}\r\n {/**/}\r\n \r\n {\r\n if (e.component.option(\"value\") != procedureTagBoxValueState) {\r\n if (e.component.option(\"value\").length > 0) {\r\n //userConfig.set(\"_PROC_FILTER\", JSON.stringify(e.component.option(\"value\")));\r\n setProcedureTagBoxValueState(e.component.option(\"value\"));\r\n } else {\r\n //userConfig.set(\"_PROC_FILTER\", JSON.stringify([]));\r\n setProcedureTagBoxValueState([]);\r\n }\r\n }\r\n }}\r\n />\r\n \r\n \r\n {\r\n if (e.component.option(\"value\") != tagBoxValueState) {\r\n if (e.component.option(\"value\").length > 0) {\r\n userConfig.set(\"_USER_FILTER\", JSON.stringify(e.component.option(\"value\")));\r\n setTagBoxValueState(e.component.option(\"value\"));\r\n } else {\r\n userConfig.set(\"_USER_FILTER\", JSON.stringify([]));\r\n setTagBoxValueState([]);\r\n }\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n {\r\n let stateName = \"Cargando...\";\r\n let stateBGColor = \"#FFFFFF\";\r\n const state = statesState.results.find((e) => {\r\n return e.id == data.data.stateId;\r\n });\r\n if (state != undefined && state != null) {\r\n stateName = state.name;\r\n stateBGColor = state.bgColor;\r\n }\r\n //{ { backgroundColor: data.value, width: 50, height: 20, borderColor: \"#000000\", borderStyle: \"solid\", borderWidth: 0.2, borderRadius: 5 }}\r\n return
{stateName}
\r\n }\r\n }\r\n lookup={{\r\n dataSource: statesState.results,\r\n displayExpr: \"name\", // The property to display in the filter\r\n valueExpr: \"id\", // The property to use as the underlying value\r\n }}\r\n />\r\n {/*This is the column that gets exported*/}\r\n {\r\n const state = statesState.results.find((e) => {\r\n return e.id == rowData.stateId;\r\n });\r\n if (state != undefined && state != null) {\r\n return state.name;\r\n } else {\r\n return rowData.stateId;\r\n }\r\n }}\r\n />\r\n \r\n \r\n {\r\n return `${String(rowData.gestoria).padStart(3, \"0\")}${String(rowData.procedureId).padStart(4, \"0\")}${String(rowData.id).padStart(6, \"0\")}`;\r\n }\r\n }\r\n />\r\n {\r\n const procedure = procedureState.results.find((e) => {\r\n return e.id == rowData.procedureId;\r\n });\r\n if (procedure != undefined && procedure != null) {\r\n return procedure.name;\r\n } else {\r\n return rowData.procedureId;\r\n }\r\n }}\r\n />\r\n \r\n \r\n {\r\n let stateBGColor = \"var(--azul-df)\";\r\n if (data.data.aboutToGetDeleted) {\r\n stateBGColor = \"var(--rojo-ko)\";\r\n }\r\n //{ { backgroundColor: data.value, width: 50, height: 20, borderColor: \"#000000\", borderStyle: \"solid\", borderWidth: 0.2, borderRadius: 5 }}\r\n return
{data.data.closeDate.split(\"/\").reverse().join(\"/\")}
\r\n }\r\n }\r\n />\r\n {/**/}\r\n {/* rowData.exported ? \"Si\" : \"No\"}*/}\r\n {/*/>*/}\r\n {\r\n if (cellInfo.value <= 0) {\r\n return \"-\";\r\n }\r\n const user = usersState.results.find((e) => {\r\n return e.id == cellInfo.value;\r\n });\r\n if (user != undefined && user != null) {\r\n return user.name;\r\n } else {\r\n return `- Usuario eliminado (${String(cellInfo.value)}) -`;\r\n }\r\n }}\r\n />\r\n {/**/}\r\n rowData.downloaded ? \"Si\" : \"No\"}\r\n />\r\n \r\n }\r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={changeStateDialogState.popupVisible}\r\n onHiding={hideChangeStateDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Cambiar estado de los trámites seleccionados\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.state && props.errors.state);\r\n const hasFetchError = (!changeStateState.loading && changeStateState.state == props.values.state && (changeStateState.result == null || changeStateState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n\r\n const statesDataSource = (byProcedureStatesState.results[changeStateDialogState.procedureId] || []).filter((e) => e.shown && e.state!=null && e.state.id!=1).sort((a, b) => parseFloat(a.order) - parseFloat(b.order));\r\n\r\n return
\r\n

Al pulsar el botón guardar, los trámites seleccionados cambiaran al estado que selecciones.

\r\n

Los estados de 'Incidencia' y 'Finalizado' no pueden ser establecidos desde aquí porque requieren comprobaciones adicionales.

\r\n \r\n {/*States 4 (\"incidencia\") and 6 (\"finalizado\") aren't available because to set them there are some checks required that can't be done from here.*/}\r\n e.state.id != 4 && e.state.id!=6)}\r\n valueExpr=\"state.id\"\r\n displayExpr=\"state.name\" />\r\n\r\n {hasError ?\r\n
\r\n {props.touched.state && props.errors.state && props.errors.state == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n changeStateState.error ? changeStateState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACC0lEQVRIDb1UzS8DQRSf6c4GCYmDoBJdH0eJC9EiEgeRODo4k6hKuLi79OIorlLl6sSxf0GjJXHiQpC0QhAhlEqj2/GmDDO7M1qfm+y+937v9z7m7cwgpH2sQHBe60SWPzjLvJ4ihaJFF5UzPligAbjBAMs/uc4k8vmD2aLy5Y+YnwW/dqJIU3QAO858IHddHF/PJOWgdtnf75Sn5pJ17uye+6RVdIVCJndw2do3a3GdSSwaTIfR3gF8hCjyUkSf0jur7RLnKwthXIIoHS87CLhStf8zxL/orCqN1elU2b8b0DI4V+usIlVgvYfD4SLWMThTXchmbj8NIIbRuRY7tRkpk81lTGI2uALEvXySiOx5PGiCkQg2Bo63lq94wDtP9ZdVm5DzpDXwbLuRyDPXnZJgig54tNMp2own2n+mu86PrlJb/3R3/jm/iTAeTW9H3beIJlA5IxXXztt+wJuho4DKr8PKLqBLUAr/8wJE14GvJ7gP47huMmpGEomlJyfPGgh5Ua6QhFuwIrUdbXT6ua1dQZVZOUwxaj+z77OwLZd4AGAGXKQxmrPPQb+oq/e0cZ9KltxFvsDUEC7QGNzIH1c6xjfExL0n8ZVDVVIJgxvigb0SqDDYWYaxPQJ3TOGWIDEngX2tHZMYlUpGF8Bmb+lHyElgRhlKaX05x7905jcGpVUY48uy+T8hvgAQC5ihjA953gAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/NO_DOC.37f601e4.pdf\";","import { Button, Popup, TextBox } from 'devextreme-react';\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport noDoc from '../../NO_DOC.pdf';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgUpload from '../../img/upload.png';\r\nimport imgDownload from '../../img/download.png';\r\nimport \"./DocumentViewer.css\";\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { Document, Page, pdfjs } from 'react-pdf';\r\nimport useWindowSize from '../../hooks/useWindowSizze';\r\n\r\nexport const DocumentViewer = ({ elmId, selectedDocB64, viewerWidth }) => {\r\n\r\n \r\n\r\n useEffect(() => {\r\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n });\r\n\r\n const [selectedDocumentNumPages, setSelectedDocumentNumPages] = useState(null);\r\n const [selectedDocumentPageNumber, setSelectedDocumentPageNumber] = useState(1);\r\n const [calculatedWidth, setCalculatedWidth] = useState(0);\r\n const [calculatedHeight, setCalculatedHeight] = useState(0);\r\n const windowSize = useWindowSize();\r\n\r\n function onSelectedDocumentLoadSuccess({ numPages }) {\r\n setSelectedDocumentNumPages(numPages);\r\n setSelectedDocumentPageNumber(1);\r\n }\r\n\r\n function selectedDocumentChangePage(offset) {\r\n setSelectedDocumentPageNumber(selectedDocumentPrevPageNumber => selectedDocumentPrevPageNumber + offset);\r\n }\r\n\r\n function selectedDocumentPreviousPage() {\r\n selectedDocumentChangePage(-1);\r\n }\r\n\r\n function selectedDocumentNextPage() {\r\n selectedDocumentChangePage(1);\r\n }\r\n\r\n useEffect(() => {\r\n const theMatches = viewerWidth.match(/(\\d+)([\\D\\w]*)/);\r\n const theNumber = theMatches[1];\r\n const theUnit = theMatches[2];\r\n let theWidth = theNumber;\r\n if (theUnit == \"%\") {\r\n if ((document.getElementById(`${elmId}`) == undefined) || (document.getElementById(`${elmId}`) == null)) {\r\n setCalculatedWidth(0);\r\n setCalculatedHeight(0);\r\n return 0;\r\n }\r\n theWidth = (document.getElementById(`${elmId}`).getBoundingClientRect().width * (theNumber / 100))\r\n setCalculatedHeight(document.getElementById(`${elmId}`).getBoundingClientRect().height * (1))\r\n } else {\r\n\r\n }\r\n console.log(\"setCalculatedWidth \" + theWidth);\r\n setCalculatedWidth(theWidth);\r\n }, [viewerWidth, windowSize]); \r\n\r\n return (\r\n\r\n
\r\n {selectedDocB64 == null || selectedDocB64 == \"\"\r\n ?\r\n
Sin documento seleccionado
\r\n :\r\n (\r\n selectedDocB64.startsWith(\"data:application/pdf;base64,\") ?\r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n Página {selectedDocumentPageNumber || (selectedDocumentNumPages ? 1 : '--')} de {selectedDocumentNumPages || '--'}\r\n

\r\n
\r\n \r\n = selectedDocumentNumPages}\r\n onClick={selectedDocumentNextPage}\r\n text=\"Siguiente\"\r\n />\r\n
\r\n
\r\n
\r\n //\r\n :\r\n
El documento seleccionado no puede visualizarse. Descarga el documento para verlo.
\r\n )\r\n }\r\n
\r\n )\r\n}\r\n","import { Button, Popup, TextBox } from 'devextreme-react';\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport noDoc from '../../NO_DOC.pdf';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgUpload from '../../img/upload.png';\r\nimport imgDownload from '../../img/download.png';\r\nimport \"./RemoteDocuments.css\";\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { Document, Page, pdfjs } from 'react-pdf';\r\nimport { DocumentViewer } from './DocumentViewer';\r\n\r\nexport const RemoteDocuments = ({ idRegistry, reload, enabled, remoteProcedureDocuments, freeDocuments }) => {\r\n\r\n //ESTO ESTÄ AQUI PARA SOLUCIONAR UN PROBLEMA QUE DA LIVE RELOAD CUANDO SE TIENE UN IFRAME EN LA PÁGINA!!!\r\n //QUITAR ANTES DEL DEPLOY!!!!\r\n useEffect(() => {\r\n window.process = {\r\n env: {\r\n NODE_ENV: 'development'\r\n }\r\n }\r\n }, []);\r\n //HASTA AQUI\r\n\r\n\r\n const addFormRef = useRef()\r\n const editFormRef = useRef()\r\n\r\n const [selectedDocState, setSelectedDocState] = useState({ free: false, id: 0 });\r\n const [selectedDocB64State, setSelectedDocB64State] = useState(\"\");\r\n\r\n const [remoteProcedureDocumentsState, setRemoteProcedureDocumentsState] = useState({ loading: true, result: [] });\r\n const [freeDocumentsState, setFreeDocumentsState] = useState({ loading: true, result: [] });\r\n\r\n const [addExtraState, setAddExtraState] = useState({ loading: false, name: null, error: false, result: null });\r\n\r\n const [selectedDocumentNumPages, setSelectedDocumentNumPages] = useState(null);\r\n const [selectedDocumentPageNumber, setSelectedDocumentPageNumber] = useState(1);\r\n\r\n function onSelectedDocumentLoadSuccess({ numPages }) {\r\n setSelectedDocumentNumPages(numPages);\r\n setSelectedDocumentPageNumber(1);\r\n }\r\n\r\n function selectedDocumentChangePage(offset) {\r\n setSelectedDocumentPageNumber(selectedDocumentPrevPageNumber => selectedDocumentPrevPageNumber + offset);\r\n }\r\n\r\n function selectedDocumentPreviousPage() {\r\n selectedDocumentChangePage(-1);\r\n }\r\n\r\n function selectedDocumentNextPage() {\r\n selectedDocumentChangePage(1);\r\n }\r\n\r\n\r\n const [addExtraDialogState, setAddExtraDialogState] = useState({\r\n popupVisible: false,\r\n });\r\n const showAddExtraDialog = () => {\r\n if (!enabled) return;\r\n setAddExtraDialogState({\r\n popupVisible: true,\r\n });\r\n if (addFormRef != undefined && addFormRef != null && addFormRef.current != undefined && addFormRef.current != null) {\r\n addFormRef.current.setFieldValue(\"name\", \"\", false);\r\n }\r\n }\r\n const hideAddExtraDialog = () => {\r\n setAddExtraDialogState({\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [editExtraState, setEditExtraState] = useState({ loading: false, idDoc: 0, name: null, error: false, result: null });\r\n\r\n\r\n const [editExtraDialogState, setEditExtraDialogState] = useState({\r\n popupVisible: false,\r\n });\r\n const showEditExtraDialog = (idDoc, oldName) => {\r\n if (!enabled) return;\r\n setEditExtraDialogState({\r\n idDoc: idDoc,\r\n popupVisible: true,\r\n });\r\n if (editFormRef != undefined && editFormRef != null && editFormRef.current != undefined && editFormRef.current != null) {\r\n editFormRef.current.setFieldValue(\"name\", oldName, false);\r\n }\r\n }\r\n const hideEditExtraDialog = () => {\r\n setEditExtraDialogState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const [confirmDeleteDialogState, setConfirmDeleteDialogState] = useState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n const showConfirmDeleteDialog = (idDoc) => {\r\n setConfirmDeleteDialogState({\r\n idDoc: idDoc,\r\n popupVisible: true,\r\n });\r\n }\r\n const hideConfirmDeleteDialog = () => {\r\n setConfirmDeleteDialogState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const loadRemoteProcedureDocuments = async () => {\r\n setRemoteProcedureDocumentsState({ loading: true, result: [] });\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocs?id=${idRegistry}&remote=1&extra=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setRemoteProcedureDocumentsState({ loading: false, result: result.response });\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n const loadExtraDocuments = async () => {\r\n setFreeDocumentsState({ loading: true, result: [] });\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocs?id=${idRegistry}&remote=1&extra=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setFreeDocumentsState({ loading: false, result: result.response });\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n const validateAddExtra = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 150) {\r\n errors.name = 'Must be 150 characters or less';\r\n }\r\n return errors;\r\n };\r\n const validateEditExtra = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 150) {\r\n errors.name = 'Must be 150 characters or less';\r\n }\r\n return errors;\r\n };\r\n\r\n const addExtraFormOptions = {\r\n initialValues: {\r\n name: '',\r\n remote: 1\r\n },\r\n validate: validateAddExtra,\r\n onSubmit: async values => {\r\n setAddExtraState({\r\n loading: true, name: values.name, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n //PostRegistryExtraDoc(int idRegistry, string name, int isRemote)\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/PostRegistryExtraDoc?idRegistry=${idRegistry}&name=${values.name}&isRemote=1`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setAddExtraState({\r\n loading: false, name: values.name, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideAddExtraDialog();\r\n reload();\r\n loadAll();\r\n }\r\n }\r\n };\r\n const editExtraFormOptions = {\r\n initialValues: {\r\n name: '',\r\n id: 0\r\n },\r\n validate: validateEditExtra,\r\n onSubmit: async values => {\r\n setEditExtraState({\r\n loading: true, idDoc: editExtraDialogState.idDoc, name: values.name, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n //PostRegistryExtraDoc(int idRegistry, string name, int isRemote)\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/PutRenameRegistryExtraDoc?idRegistry=${idRegistry}&newName=${values.name}&idDoc=${editExtraDialogState.idDoc}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setEditExtraState({\r\n loading: false, idDoc: editExtraDialogState.idDoc, name: values.name, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideEditExtraDialog();\r\n reload();\r\n loadAll();\r\n }\r\n }\r\n };\r\n\r\n\r\n useEffect(() => {\r\n let b64 = \"\";\r\n if (selectedDocState.id > 0) {\r\n if (selectedDocState.free) {\r\n if (!freeDocumentsState.loading) b64 = freeDocumentsState.result.find(e => e[\"item2\"].id == selectedDocState.id)[\"item3\"];\r\n } else {\r\n if (!remoteProcedureDocumentsState.loading) b64 = remoteProcedureDocumentsState.result.find(e => e[\"item2\"].id == selectedDocState.id)[\"item3\"];\r\n }\r\n setSelectedDocB64State(b64);\r\n }\r\n }, [selectedDocState]);\r\n const loadAll = async () => {\r\n Promise.all([loadRemoteProcedureDocuments(), loadExtraDocuments()]).then(() => {\r\n\r\n });\r\n }\r\n useEffect(loadAll, []);\r\n\r\n useEffect(() => {\r\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n
\r\n

Documentos recibidos del concesionario

\r\n
\r\n
Nombre
\r\n
\r\n
\r\n {\r\n (\r\n (remoteProcedureDocumentsState.result || []).length > 0\r\n ?\r\n (remoteProcedureDocumentsState.result || []).map((d) => {\r\n const hasDocument = (d[\"item3\"] != null && d[\"item3\"] != \"\");\r\n const isSelected = (selectedDocState.free==false && selectedDocState.id > 0 && selectedDocState.id == d[\"item2\"].id)\r\n let classNames = \"doc-list-item\";\r\n if (hasDocument) {\r\n classNames += \" doc-list-item-filled\"\r\n }\r\n if (isSelected) {\r\n classNames += \" doc-list-item-selected\"\r\n }\r\n\r\n return (\r\n
\r\n
{\r\n setSelectedDocState({ free: false, id: d[\"item2\"].id });\r\n //d[\"item2\"]\r\n }} >\r\n
{d[\"item2\"].name}
\r\n
\r\n
\r\n {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocExtension?idRegistro=${idRegistry}&idProcedure=${d.item2.procedureId}&idDocumento=${d.item2.id}&remote=1&extra=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n var a = document.createElement(\"a\");\r\n a.href = `${d[\"item3\"]}`;\r\n a.download = `${d[\"item2\"].name}.${result.response}`;\r\n a.click();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n }\r\n />\r\n {/**/}\r\n
\r\n
\r\n )\r\n })\r\n :\r\n
Sin documentos
\r\n )\r\n }\r\n
\r\n

Documentos adicionales

\r\n
\r\n Solicitar documento\r\n
\r\n
\r\n
Nombre
\r\n
\r\n
\r\n {\r\n (\r\n (freeDocumentsState.result || []).length > 0\r\n ?\r\n (\r\n (freeDocumentsState.result || []).map((d) => {\r\n const hasDocument = (d[\"item2\"] != null && d[\"item3\"] != \"\");\r\n const isSelected = (selectedDocState.free == true && selectedDocState.id > 0 && selectedDocState.id == d[\"item2\"].id)\r\n let classNames = \"doc-list-item\";\r\n if (hasDocument) {\r\n classNames += \" doc-list-item-filled\"\r\n }\r\n if (isSelected) {\r\n classNames += \" doc-list-item-selected\"\r\n }\r\n\r\n return (\r\n
\r\n
{\r\n setSelectedDocState({ free: true, id: d[\"item2\"].id });\r\n //d[\"item2\"]\r\n }} >\r\n
{d[\"item2\"].name}{d[\"item2\"].mandatory ? \" *\" : \"\"}
\r\n
\r\n
\r\n {hasDocument ?\r\n {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocExtension?idRegistro=${idRegistry}&idProcedure=${d.item2.procedureId}&idDocumento=${d.item2.id}&remote=1&extra=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n var a = document.createElement(\"a\");\r\n a.href = `${d[\"item3\"]}`;\r\n a.download = `${d[\"item2\"].name}.${result.response}`;\r\n a.click();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n }\r\n />\r\n :\r\n <>\r\n { showEditExtraDialog(d[\"item2\"].id, d[\"item2\"].name) }}\r\n />\r\n { showConfirmDeleteDialog(d[\"item2\"].id) }}\r\n />\r\n \r\n }\r\n \r\n {/**/}\r\n
\r\n
\r\n )\r\n }\r\n )\r\n )\r\n :\r\n
Sin documentos
\r\n )\r\n }\r\n
\r\n
\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={addExtraDialogState.popupVisible}\r\n onHiding={hideAddExtraDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Solicitud de documento`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name);\r\n const hasFetchError = false; //(!addExtraState.loading && addExtraState.email == props.values.email && addExtraState.name == props.values.name && addExtraState.type == props.values.type && (addExtraState.result == null || addExtraState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

Introduce el nombre del documento que quieres solicitar al concesionario.

\r\n \r\n \r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n addExtraState.error ? addExtraState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={editExtraDialogState.popupVisible}\r\n onHiding={hideEditExtraDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Editar solicitud de documento`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name);\r\n const hasFetchError = false; //(!editExtraState.loading && editExtraState.email == props.values.email && editExtraState.name == props.values.name && editExtraState.type == props.values.type && (editExtraState.result == null || editExtraState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

Introduce el nuevo nombre del documento. Este nombre será visto tanto por ti como por el concesionario.

\r\n \r\n \r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n addExtraState.error ? addExtraState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={confirmDeleteDialogState.popupVisible}\r\n onHiding={hideConfirmDeleteDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Eliminando documento adicional`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n hideConfirmDeleteDialog();\r\n },\r\n }}\r\n />\r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/DeleteRegistryExtraDoc?idRegistry=${idRegistry}&idDoc=${confirmDeleteDialogState.idDoc}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n if (data.response != null) {\r\n reload();\r\n loadAll();\r\n }\r\n hideConfirmDeleteDialog();\r\n }\r\n }}\r\n />\r\n {/*
*/}\r\n

\r\n ¿Estás seguro de que deseas eliminar permanentemente este documento adicional?\r\n

\r\n \r\n
\r\n )\r\n}\r\n","import { Button, Popup, TextBox } from 'devextreme-react';\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport noDoc from '../../NO_DOC.pdf';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgUpload from '../../img/upload.png';\r\nimport imgDownload from '../../img/download.png';\r\nimport \"./LocalDocuments.css\";\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { Document, Page, pdfjs } from 'react-pdf';\r\nimport { DocumentViewer } from './DocumentViewer';\r\n\r\nexport const LocalDocuments = ({ idRegistry, reload, enabled, localProcedureDocuments, freeDocuments }) => {\r\n\r\n //ESTO ESTÄ AQUI PARA SOLUCIONAR UN PROBLEMA QUE DA LIVE RELOAD CUANDO SE TIENE UN IFRAME EN LA PÁGINA!!!\r\n //QUITAR ANTES DEL DEPLOY!!!!\r\n useEffect(() => {\r\n window.process = {\r\n env: {\r\n NODE_ENV: 'development'\r\n }\r\n }\r\n }, []);\r\n //HASTA AQUI\r\n\r\n\r\n const addFormRef = useRef();\r\n const uploadFormRef = useRef();\r\n\r\n const [selectedDocState, setSelectedDocState] = useState({ free: false, id: 0 });\r\n const [selectedDocB64State, setSelectedDocB64State] = useState(\"\");\r\n\r\n const [localProcedureDocumentsState, setLocalProcedureDocumentsState] = useState({ loading: true, result: [] });\r\n const [freeDocumentsState, setFreeDocumentsState] = useState({ loading: true, result: [] });\r\n\r\n const [addExtraState, setAddExtraState] = useState({ loading: false, name: null, error: false, result: null });\r\n\r\n\r\n\r\n const [addExtraDialogState, setAddExtraDialogState] = useState({\r\n popupVisible: false,\r\n });\r\n const showAddExtraDialog = () => {\r\n if (!enabled) return;\r\n setAddExtraDialogState({\r\n popupVisible: true,\r\n });\r\n if (addFormRef != undefined && addFormRef != null && addFormRef.current != undefined && addFormRef.current != null) {\r\n addFormRef.current.setFieldValue(\"name\", \"\", false);\r\n addFormRef.current.setFieldValue(\"file\", null, false);\r\n }\r\n }\r\n const hideAddExtraDialog = () => {\r\n setAddExtraDialogState({\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n const [uploadExtraState, setUploadExtraState] = useState({ loading: false, idDoc: 0, name: null, error: false, result: null });\r\n\r\n\r\n const [uploadExtraDialogState, setuploadExtraDialogState] = useState({\r\n popupVisible: false,\r\n });\r\n const showUploadExtraDialog = (idDoc, alreadyHasDoc) => {\r\n setuploadExtraDialogState({\r\n idDoc: idDoc,\r\n popupVisible: true,\r\n });\r\n if (uploadFormRef != undefined && uploadFormRef != null && uploadFormRef.current != undefined && uploadFormRef.current != null) {\r\n uploadFormRef.current.setFieldValue(\"file\", null, false);\r\n }\r\n }\r\n const hideUploadExtraDialog = () => {\r\n setuploadExtraDialogState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const [confirmDeleteDialogState, setConfirmDeleteDialogState] = useState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n const showConfirmDeleteDialog = (idDoc) => {\r\n setConfirmDeleteDialogState({\r\n idDoc: idDoc,\r\n popupVisible: true,\r\n });\r\n }\r\n const hideConfirmDeleteDialog = () => {\r\n setConfirmDeleteDialogState({\r\n idDoc: 0,\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const loadLocalProcedureDocuments = async () => {\r\n setLocalProcedureDocumentsState({ loading: true, result: [] });\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocs?id=${idRegistry}&remote=0&extra=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setLocalProcedureDocumentsState({ loading: false, result: result.response });\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n const loadExtraDocuments = async () => {\r\n setFreeDocumentsState({ loading: true, result: [] });\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocs?id=${idRegistry}&remote=0&extra=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setFreeDocumentsState({ loading: false, result: result.response });\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n const validateAddExtra = values => {\r\n const errors = {};\r\n\r\n if (!values.name) {\r\n errors.name = 'Requerido';\r\n } else if (values.name.length > 150) {\r\n errors.name = 'Must be 150 characters or less';\r\n }\r\n if (!values.file) {\r\n errors.name = 'Requerido';\r\n } \r\n return errors;\r\n };\r\n const validateuploadExtra = values => {\r\n const errors = {};\r\n\r\n\r\n if (!values.file) {\r\n errors.name = 'Requerido';\r\n }\r\n return errors;\r\n };\r\n\r\n const addExtraFormOptions = {\r\n initialValues: {\r\n name: '',\r\n file: null,\r\n remote: 0\r\n },\r\n validate: validateAddExtra,\r\n onSubmit: async values => {\r\n setAddExtraState({\r\n loading: true, name: values.name, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n //PostRegistryExtraDoc(int idRegistry, string name, int isRemote)\r\n\r\n\r\n let formData = new FormData();\r\n formData.append('file', values.file);\r\n\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/PostRegistryExtraDoc?idRegistry=${idRegistry}&name=${values.name}&isRemote=0`, {\r\n method: 'POST',\r\n body: formData,\r\n //headers: {\r\n // 'Content-Type': 'multipart/form-data'\r\n //}\r\n });\r\n const data = await response.json();\r\n setAddExtraState({\r\n loading: false, name: values.name, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideAddExtraDialog();\r\n reload();\r\n loadAll();\r\n }\r\n }\r\n };\r\n const uploadExtraFormOptions = {\r\n initialValues: {\r\n file: null,\r\n id: 0\r\n },\r\n validate: validateuploadExtra,\r\n onSubmit: async values => {\r\n\r\n setSelectedDocState({ free: false, id: 0 });\r\n setUploadExtraState({\r\n loading: true, idDoc: uploadExtraDialogState.idDoc, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n //PostRegistryExtraDoc(int idRegistry, string name, int isRemote)\r\n\r\n let formData = new FormData();\r\n formData.append('file', values.file);\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/PostRegistryDoc?idRegistry=${idRegistry}&idDoc=${uploadExtraDialogState.idDoc}&isRemote=0`, {\r\n method: 'POST',\r\n body: formData,\r\n });\r\n const data = await response.json();\r\n setUploadExtraState({\r\n loading: false, idDoc: uploadExtraDialogState.idDoc, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideUploadExtraDialog();\r\n reload();\r\n loadAll();\r\n }\r\n }\r\n };\r\n\r\n\r\n useEffect(() => {\r\n let b64 = \"\";\r\n if (selectedDocState.id > 0) {\r\n if (selectedDocState.free) {\r\n if (!freeDocumentsState.loading) b64 = freeDocumentsState.result.find(e => e[\"item2\"].id == selectedDocState.id)[\"item3\"];\r\n } else {\r\n if (!localProcedureDocumentsState.loading) b64 = localProcedureDocumentsState.result.find(e => e[\"item2\"].id == selectedDocState.id)[\"item3\"];\r\n }\r\n setSelectedDocB64State(b64);\r\n } else {\r\n setSelectedDocB64State(\"\");\r\n }\r\n }, [selectedDocState]);\r\n\r\n const loadAll = async () => {\r\n Promise.all([loadLocalProcedureDocuments(), loadExtraDocuments()]).then(() => {\r\n \r\n });\r\n }\r\n useEffect(loadAll, []);\r\n\r\n useEffect(() => {\r\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n
\r\n

Documentos a aportar por la gestoría

\r\n
\r\n
Nombre
\r\n
\r\n
\r\n {\r\n (\r\n (localProcedureDocumentsState.result || []).length > 0\r\n ?\r\n (localProcedureDocumentsState.result || []).map((d) => {\r\n const hasDocument = (d[\"item3\"] != null && d[\"item3\"] != \"\");\r\n const isSelected = (selectedDocState.free==false && selectedDocState.id > 0 && selectedDocState.id == d[\"item2\"].id)\r\n let classNames = \"doc-list-item\";\r\n if (hasDocument) {\r\n classNames += \" doc-list-item-filled\"\r\n }\r\n if (isSelected) {\r\n classNames += \" doc-list-item-selected\"\r\n }\r\n\r\n return (\r\n
\r\n
{\r\n setSelectedDocState({ free: false, id: d[\"item2\"].id });\r\n //d[\"item2\"]\r\n }} >\r\n
{d[\"item2\"].name}{d[\"item2\"].mandatory?\" *\":\"\"}
\r\n
\r\n
\r\n {\r\n showUploadExtraDialog(d[\"item2\"].id, hasDocument)\r\n }\r\n }\r\n />\r\n {!hasDocument ?\r\n null\r\n :\r\n <>\r\n {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocExtension?idRegistro=${idRegistry}&idProcedure=${d.item2.procedureId}&idDocumento=${d.item2.id}&remote=0&extra=0`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n var a = document.createElement(\"a\");\r\n a.href = `${d[\"item3\"]}`;\r\n a.download = `${d[\"item2\"].name}.${result.response}`;\r\n a.click();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n }\r\n />\r\n \r\n }\r\n \r\n {/**/}\r\n
\r\n
\r\n )\r\n })\r\n :\r\n
Sin documentos
\r\n )\r\n }\r\n
\r\n

Documentos adicionales

\r\n
\r\n Añadir nuevo documento\r\n
\r\n
\r\n
Nombre
\r\n
\r\n
\r\n {\r\n (\r\n (freeDocumentsState.result || []).length > 0\r\n ?\r\n (\r\n (freeDocumentsState.result || []).map((d) => {\r\n const hasDocument = (d[\"item3\"] != null && d[\"item3\"] != \"\");\r\n const isSelected = (selectedDocState.free == true && selectedDocState.id > 0 && selectedDocState.id == d[\"item2\"].id)\r\n let classNames = \"doc-list-item\";\r\n if (hasDocument) {\r\n classNames += \" doc-list-item-filled\"\r\n }\r\n if (isSelected) {\r\n classNames += \" doc-list-item-selected\"\r\n }\r\n\r\n return (\r\n
\r\n
{\r\n setSelectedDocState({ free: true, id: d[\"item2\"].id });\r\n //d[\"item2\"]\r\n }} >\r\n
{d[\"item2\"].name}
\r\n
\r\n
\r\n {hasDocument ?\r\n <>\r\n {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryDocExtension?idRegistro=${idRegistry}&idProcedure=${d.item2.procedureId}&idDocumento=${d.item2.id}&remote=0&extra=1`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n var a = document.createElement(\"a\");\r\n a.href = `${d[\"item3\"]}`;\r\n a.download = `${d[\"item2\"].name}.${result.response}`;\r\n a.click();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n }\r\n />\r\n { showConfirmDeleteDialog(d[\"item2\"].id) }}\r\n />\r\n \r\n :\r\n <>\r\n { showConfirmDeleteDialog(d[\"item2\"].id) }}\r\n />\r\n \r\n }\r\n \r\n {/**/}\r\n
\r\n
\r\n )\r\n }\r\n )\r\n )\r\n :\r\n
Sin documentos
\r\n )\r\n }\r\n
\r\n
\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={addExtraDialogState.popupVisible}\r\n onHiding={hideAddExtraDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Añadir nuevo documento`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, setFieldValue, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name);\r\n const hasFetchError = false; //(!addExtraState.loading && addExtraState.email == props.values.email && addExtraState.name == props.values.name && addExtraState.type == props.values.type && (addExtraState.result == null || addExtraState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n

Introduce el nombre del nuevo documento que quieres añadir al trámite

\r\n \r\n \r\n
\r\n Pulsa el botón para seleccionar el archivo o arrástralo al área de abajo\r\n {\r\n setFieldValue(\"file\", event.currentTarget.files[0]);\r\n }} />\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n addExtraState.error ? addExtraState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={uploadExtraDialogState.popupVisible}\r\n onHiding={hideUploadExtraDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Añadir documento`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, setFieldValue, ...props }) => {\r\n const hasInputError = (props.touched.name && props.errors.name);\r\n const hasFetchError = false; //(!uploadExtraState.loading && uploadExtraState.email == props.values.email && uploadExtraState.name == props.values.name && uploadExtraState.type == props.values.type && (uploadExtraState.result == null || uploadExtraState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n return
\r\n
\r\n Pulsa el botón para seleccionar el archivo o arrástralo al área de abajo\r\n {\r\n setFieldValue(\"file\", event.currentTarget.files[0]);\r\n }} />\r\n {hasError ?\r\n
\r\n {props.touched.name && props.errors.name && props.errors.name == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n addExtraState.error ? addExtraState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n e.component.repaint();\r\n }}\r\n visible={confirmDeleteDialogState.popupVisible}\r\n onHiding={hideConfirmDeleteDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={`Eliminando documento adicional`}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n hideConfirmDeleteDialog();\r\n },\r\n }}\r\n />\r\n {\r\n event.element.classList.remove(\"dx-state-active\");\r\n event.element.classList.remove(\"dx-state-focused\");\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/registries/DeleteRegistryExtraDoc?idRegistry=${idRegistry}&idDoc=${confirmDeleteDialogState.idDoc}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n if (data.response != null) {\r\n reload();\r\n loadAll();\r\n }\r\n hideConfirmDeleteDialog();\r\n }\r\n }}\r\n />\r\n {/*
*/}\r\n

\r\n ¿Estás seguro de que deseas eliminar permanentemente este documento adicional?\r\n

\r\n \r\n
\r\n )\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACS0lEQVRIDbVUz2sTQRSe2d1oDSxGsKKF7FZEeiloVZrUHAx48I9Q8JBFhSp68tJL7156UhviXyDevBtEJC2kKiJihDaJOVioaLVmIZE839s4OrPZMVtrF5J57/u+92Nm3yxj0sPJdjLeezRqzM16cxIZMt2MN0uQEcL/uE6m8EN4ioozflMQVK7929mW4U57X+SAoAaCdxlnc9jeE5kMbNGzIJSuBKjd9j91GhypSE2rmym8ZMBc4HwDSbuxVDos84rtZq+c6gd5s6L58fytlCxSNtGoFFdkkux6eUE5p20dOW3aYgCXY+8eteEO/r9vhlMeO3tt0j5yYn2/c6a62VqphXnlPUzkbtt+99NXITKMxNF65X5d+LQqx0rikaQ5SoTtpvf2et01suVHCTCtkfFaubhBgjcP5zsUJIu1tjNdAB2pVNCJZNzQzrKsQlvoDAA2cOdHT5p7QnociL4usqVqsdgNBwjf4sDexZkl0omgXV0HRklXzZm5ej41NlVOpae2NlsvBu6ZLk4ZvSjRRO76mN/1K8ilJf474/xcc6lUlbBIU1sgn5+3Vtutx4zBBc45FuCPAHp3MOAG2llgcBHxt5BI5JrP7n2OzI5g5Fsm8Wr7w0dcTidMdhw/ZDNYyCccO4fGcumSkbQP4Kj0WKfzKsA1f5YGZ83lBwd1HOG/vm2Tf9MQp93BsMC4/O4XwC/DFv2GdWSY5ms8fz9Yh4jlnBYGxdrF2vPFp5g3OSR3n5ZyWjh23wDgUJzrHys5iQD24Qivx9bvRPgTo1+r2XRoL+sAAAAASUVORK5CYII=\"","import { useEffect, useState } from \"react\"\r\nimport { Column, Editing, Export, Item, Pager, Paging, Scrolling, SearchPanel, Selection, Toolbar, LoadPanel as DGLoadPanel } from 'devextreme-react/data-grid';\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport \"./RegistryEvents.css\";\r\nimport imgSpinner from '../../img/spinner.gif';\r\nimport parse from 'date-fns/parse'\r\nimport { DataGrid, LoadPanel } from \"devextreme-react\";\r\n\r\nexport const RegistryEvents = ({ idRegistry }) => {\r\n const [loadingState, setLoadingState] = useState(false);\r\n const [registryEventsState, setRegistryEventsState] = useState({ loading: true, result: null });\r\n const [filterState, setFilterState] = useState(null);\r\n //const loadRegistryEvents = async () => {\r\n // if (Number(idRegistry) > 0) {\r\n // fetch(`/api/registries/GetRegistryEvents?id=${idRegistry}`)\r\n // .then(response => response.json())\r\n // .then(result => {\r\n // // You can process the response here\r\n // console.log(result.response)\r\n // if (result.response != null) {\r\n // setRegistryEventsState({ loading: false, result: result.response });\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // })\r\n // .catch((er) => {\r\n // throw 'Network error'\r\n // return false;\r\n // });\r\n // } else {\r\n // return false;\r\n // }\r\n //};\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const registryDataSource = new CustomStore({\r\n key: 'id',\r\n loadMode: 'raw',\r\n filter: filterState,\r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistryEvents?id=${idRegistry}`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n var res = result.response;\r\n //setRegistryEventsState({ loading: false, result: result.response });\r\n return res;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n let datePart = rowData.date.split(\" \")[0];\r\n let timePart = rowData.date.split(\" \")[1];\r\n let formated = datePart.split(\"/\")[0].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[1].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[2].padStart(4, \"0\") + \" \" + timePart.split(\":\")[0].padStart(2, \"0\") + \":\" + timePart.split(\":\")[1].padStart(2, \"0\") + \":\" + timePart.split(\":\")[2].padStart(2, \"0\");\r\n return parse(formated, \"dd/MM/yyyy HH:mm:ss\", new Date());\r\n }}\r\n />\r\n {\r\n let datePart = rowData.date.split(\" \")[0];\r\n let timePart = rowData.date.split(\" \")[1];\r\n return datePart.split(\"/\")[0].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[1].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[2].padStart(4, \"0\") + \" \" + timePart.split(\":\")[0].padStart(2, \"0\") + \":\" + timePart.split(\":\")[1].padStart(2, \"0\") + \":\" + timePart.split(\":\")[2].padStart(2, \"0\");\r\n }}\r\n />\r\n \r\n \r\n
\r\n );\r\n}","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'\r\nimport { useHistory, useParams } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport \"./Registry.css\";\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport { Button, CheckBox, LoadPanel, Popup } from 'devextreme-react';\r\nimport SelectBox from \"devextreme-react/select-box\";\r\nimport TextBox from 'devextreme-react/text-box';\r\nimport TextArea, { TextAreaTypes } from 'devextreme-react/text-area';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popup';\r\nimport { RemoteDocuments } from './RemoteDocuments';\r\nimport { LocalDocuments } from './LocalDocuments';\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport imgSpinner from '../../img/spinner.gif';\r\nimport { RegistryEvents } from './RegistryEvents';\r\n\r\n\r\n//const renderStateField = (data) => {\r\n// return (\r\n//
\r\n// {\r\n// if (data != undefined && data != null) {\r\n// let listItem = e.component.element().querySelector(\".dx-texteditor-input\");\r\n// listItem.style.color = data.state.foreColor;\r\n// listItem.style.fontFamily = \"roboto-bold\";\r\n// }\r\n// }}\r\n// />\r\n//
\r\n// );\r\n//}\r\n\r\nexport const Registry = () => {\r\n const { idRegistry, idDealer, idProcedure } = useParams();\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n\r\n let history = useHistory();\r\n\r\n const [loadingState, setLoadingState] = useState(true);\r\n const [editionState, setEditionState] = useState(false);\r\n\r\n const [nameInputState, setNameInputState] = useState(\"\");\r\n const [errorState, setErrorState] = useState(\"\");\r\n\r\n const [registryState, setRegistryState] = useState({ loading: true, result: null });\r\n const [usersState, setUsersState] = useState({ loading: true, result: null });\r\n const [stateState, setStateState] = useState({ loading: true, result: null });\r\n\r\n const [dealerState, setDealerState] = useState({ loading: true, result: null });\r\n\r\n const [stateComboState, setStateComboState] = useState(null);\r\n const [userComboState, setUserComboState] = useState(null);\r\n\r\n\r\n const [exportedSigaChkState, setExportedSigaChkState] = useState(false);\r\n\r\n const [dataState, setDataState] = useState([]);\r\n const [remoteDataState, setRemoteDataState] = useState([]);\r\n const [docsState, setDocsState] = useState([]);\r\n const [remoteDocsState, setRemoteDocsState] = useState([]);\r\n const [extraDocsState, setExtraDocsState] = useState([]);\r\n const [extraRemoteDocsState, setExtraRemoteDocsState] = useState([]);\r\n const [incidenceState, setIncidenceState] = useState(\"\");\r\n const [notifyToStringState, setNotifyToStringState] = useState(\"\");\r\n\r\n\r\n const [dataFormState, setDataFormState] = useState([]);\r\n const [remoteDataFormState, setRemoteDataFormState] = useState([]);\r\n\r\n\r\n const renderStateField = useCallback((data) => {\r\n return (\r\n
\r\n {\r\n if (data != undefined && data != null) {\r\n let listItem = e.component.element().querySelector(\".dx-texteditor-input\");\r\n listItem.style.color = data.state.foreColor;\r\n listItem.style.fontFamily = \"roboto-bold\";\r\n }\r\n }}\r\n />\r\n
\r\n );\r\n }, []);\r\n\r\n\r\n\r\n const loadRegistry = async () => {\r\n\r\n if (Number(idRegistry) > 0) {\r\n return fetch(`${process.env.PUBLIC_URL}/api/registries/GetRegistry?id=${idRegistry}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n setRegistryState({ loading: false, result: result.response });\r\n setStateComboState(result.response.registry.stateId);\r\n setUserComboState(result.response.registry.assigned);\r\n setExportedSigaChkState(result.response.registry.exported);\r\n //setNameInputState(result.response.name);\r\n\r\n return true;\r\n } else {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/registries/${idDealer}`, { comesFrom: backlog });\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n } else {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/registries/${idDealer}`, { comesFrom: backlog });\r\n return false;\r\n }\r\n };\r\n\r\n const downloadRegistry = async () => {\r\n\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/DownloadRegistry?id=${idRegistry}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n downloadB64(result.response, registryState.result.registry.fullId, \".zip\");\r\n return true;\r\n } else {\r\n\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n const exportRegistrySIGA = async () => {\r\n\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/ExportRegistrySIGA?id=${idRegistry}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n downloadB64(result.response, registryState.result.registry.fullId, \".xml\");\r\n return true;\r\n } else {\r\n\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n\r\n\r\n const downloadB64 = (fileB64, fileName, extension) => {\r\n const linkSource = `data:application/zip;base64,${fileB64}`;\r\n const downloadLink = document.createElement(\"a\");\r\n const fname = fileName + extension;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fname;\r\n downloadLink.click();\r\n }\r\n\r\n const loadDealer = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/dealers/GetId?id=${idDealer}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setDealerState({ loading: false, result: result.response });\r\n return result.response;\r\n })\r\n .catch((err) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n const loadStates = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetStates?idProcedure=${idProcedure}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setStateState({ loading: false, result: result.response })\r\n return true;\r\n })\r\n .catch((err) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n };\r\n const loadStates_depr = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/procedures/GetAllProcedureStates`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setStateState({ loading: false, result: result.response })\r\n return true;\r\n })\r\n .catch((err) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n };\r\n\r\n\r\n\r\n const loadUsers = async () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setUsersState({ loading: false, result: result.response });\r\n\r\n return result.response;\r\n })\r\n .catch((err) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n\r\n const validateRegistry = async () => {\r\n let error = \"\";\r\n if (userComboState == null || userComboState <= 0) {\r\n error = \"No se ha asignado el trámite a un usuario.\";\r\n }\r\n if (stateComboState == null || stateComboState <= 1) {\r\n error = \"No se ha asignado un estado al trámite.\";\r\n }\r\n //if the state that is set is 4 (incidencia) incidenceState can't be empty.\r\n if (stateComboState == 4 && incidenceState.trim() == \"\") {\r\n error = \"Debe establecerse un texto de incidencia si el estado es 'Incidencia'.\";\r\n } else if (stateComboState == 6) {\r\n //if the state that is set is 6 (finalizado) we should check all mandatory local data and docs is available.\r\n let isAnyDocMissing = false;\r\n docsState.forEach((d) => {\r\n if (d[0].mandatory && (d[1] == null || d[1] == \"\")) {\r\n isAnyDocMissing = true;\r\n }\r\n });\r\n let isAnyDataMissing = false;\r\n dataState.forEach((d) => {\r\n if (d[0].mandatory) {\r\n const valorEnCampo = dataFormState.find(e => e[0] == String(d[0].id))[1];\r\n if (valorEnCampo == undefined || valorEnCampo.trim() == \"\") {\r\n isAnyDataMissing = true;\r\n }\r\n }\r\n });\r\n\r\n if (isAnyDocMissing || isAnyDataMissing) {\r\n error = \"No ha sido posible finalizar el trámite porque deben rellenarse todos los datos y documentos obligatorios a aportar por la gestoría (marcados con '*') para poder establecer el estado a 'Finalizado'. Revísalo de nuevo.\";\r\n }\r\n }\r\n return error;\r\n }\r\n const reload = () => {\r\n loadAll();\r\n }\r\n\r\n //const loadDatas = async () => {\r\n // fetch(`./api/registrys/GetData?idRegistry=${id}&remote=0`)\r\n // .then(response => response.json())\r\n // .then(result => {\r\n // // You can process the response here\r\n // console.log(result.response)\r\n // setDataState(result.response)\r\n // })\r\n // .catch(() => { throw 'Network error' });\r\n // fetch(`./api/registrys/GetData?idRegistry=${id}&remote=1`)\r\n // .then(response => response.json())\r\n // .then(result => {\r\n // // You can process the response here\r\n // console.log(result.response)\r\n // setRemoteDataState(result.response)\r\n // })\r\n // .catch(() => { throw 'Network error' });\r\n //};\r\n //const loadDocs = async () => {\r\n // fetch(`./api/registrys/GetDocs?idRegistry=${id}&remote=0`)\r\n // .then(response => response.json())\r\n // .then(result => {\r\n // // You can process the response here\r\n // console.log(result.response)\r\n // setDocsState(result.response)\r\n // })\r\n // .catch(() => { throw 'Network error' });\r\n // fetch(`./api/registrys/GetDocs?idRegistry=${id}&remote=1`)\r\n // .then(response => response.json())\r\n // .then(result => {\r\n // // You can process the response here\r\n // console.log(result.response)\r\n // setRemoteDocsState(result.response)\r\n // })\r\n // .catch(() => { throw 'Network error' });\r\n //};\r\n\r\n const loadAll = async () => {\r\n setLoadingState(true);\r\n Promise.all([loadRegistry(), loadUsers(), loadStates(), loadDealer()]).then(() => {\r\n setLoadingState(false);\r\n });\r\n }\r\n\r\n\r\n const saveEdit = async (exitAfterSuccess) => {\r\n validateRegistry().then((res) => {\r\n if (res != \"\") {\r\n console.log(res);\r\n\r\n showGenericDialog(stateComboState == 6 ? \"No ha sido posible finalizar el trámite\" : \"No guardado\", [\"No ha sido posible guardar el trámite porque se ha detectado el siguiente problema: \", <>
{res}], \"Ok\", null, () => { hideGenericDialog() }, () => { })\r\n } else {\r\n setLoadingState(true);\r\n let dataJson = JSON.stringify([...dataFormState, ...remoteDataFormState]);\r\n fetch(`${process.env.PUBLIC_URL}/api/registries/PutRegistry?idProcedure=${idProcedure}&idRegistry=${idRegistry}&state=${stateComboState}&user=${userComboState}&data=${encodeURIComponent(dataJson)}&incidence=${encodeURIComponent(incidenceState)}&exported=${exportedSigaChkState ? \"1\" : \"0\"}`,\r\n {\r\n method: 'PUT',\r\n body: '',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n setLoadingState(false);\r\n if (result.response != null) {\r\n reload();\r\n if (exitAfterSuccess) {\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/registries/${idDealer}`, { comesFrom: backlog });\r\n } else {\r\n if (stateComboState == 6) {\r\n //If the state of the registry after saving is 'finalizado' we should not be able to continue editing it.\r\n setEditionState(false);\r\n }\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n throw 'Network error'\r\n setLoadingState(false);\r\n });\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n const [genericDialogState, setGenericDialogState] = useState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showGenericDialog = (title, body, okText, koText, okCallback, koCallback) => {\r\n setGenericDialogState({\r\n title: title,\r\n body: body,\r\n okText: okText,\r\n koText: koText,\r\n okCallback: okCallback,\r\n koCallback: koCallback,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n }\r\n const hideGenericDialog = () => {\r\n setGenericDialogState({\r\n title: \"\",\r\n body: \"\",\r\n okText: \"\",\r\n koText: \"\",\r\n okCallback: () => {\r\n\r\n },\r\n koCallback: () => {\r\n\r\n },\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n const renderStateItem = (data) => {\r\n return (\r\n
\r\n
{(data != undefined && data != null) ? data.state.name : \"\"}
\r\n
\r\n );\r\n }\r\n\r\n const stateDataSource = useMemo(() => {\r\n const retVal = stateState.loading || stateState.result == undefined || stateState.result == null || registryState.result == undefined || registryState.result == null ? [] : stateState.result.filter((e) => e.shown && e.state != null && e.state.id != null && e.state.id != 1).sort((a, b) => parseFloat(a.order) - parseFloat(b.order));\r\n\r\n return retVal;\r\n\r\n }, [stateState, registryState]);\r\n\r\n //const stateDataSource_DEPR = useMemo(() => {\r\n // const retVal = stateState.loading || stateState.result == undefined || stateState.result == null || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null || stateState.result[String(registryState.result.registry.procedureId)] == undefined || stateState.result[String(registryState.result.registry.procedureId)] == null ? [] : stateState.result[String(registryState.result.registry.procedureId)].filter((e) => e.shown && e.state != null && e.state.id != null && e.state.id != 1).sort((a, b) => parseFloat(a.order) - parseFloat(b.order));\r\n\r\n // return retVal;\r\n\r\n //}, [stateState, registryState]);\r\n\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n useEffect(async () => {\r\n await fetch(`${process.env.PUBLIC_URL}/api/notifications/MarkAsSeen?idRegistry=${idRegistry}`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n //setNotificationsState(result.response);\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }, []);\r\n\r\n\r\n const prepareData = () => {\r\n if (!registryState.loading) {\r\n var remoteDataResult = [];\r\n var dataResult = [];\r\n var remoteDocsResult = [];\r\n var docsResult = [];\r\n var remoteExtraDocsResult = [];\r\n var extraDocsResult = [];\r\n for (const property in registryState.result.datas) {\r\n if (registryState.result.datas[property].item1.remote) {\r\n remoteDataResult.push([registryState.result.datas[property].item1, registryState.result.datas[property].item2]);\r\n } else {\r\n dataResult.push([registryState.result.datas[property].item1, registryState.result.datas[property].item2]);\r\n }\r\n }\r\n for (const property in registryState.result.docs) {\r\n if (registryState.result.docs[property].item1.remote) {\r\n remoteDocsResult.push([registryState.result.docs[property].item1, registryState.result.docs[property].item2]);\r\n } else {\r\n docsResult.push([registryState.result.docs[property].item1, registryState.result.docs[property].item2]);\r\n }\r\n }\r\n for (const property in registryState.result.extraDocs) {\r\n if (registryState.result.extraDocs[property].item1.remote) {\r\n remoteExtraDocsResult.push([registryState.result.extraDocs[property].item1, registryState.result.extraDocs[property].item2]);\r\n } else {\r\n extraDocsResult.push([registryState.result.extraDocs[property].item1, registryState.result.extraDocs[property].item2]);\r\n }\r\n }\r\n setRemoteDataState(remoteDataResult);\r\n setDataState(dataResult);\r\n setRemoteDocsState(remoteDocsResult);\r\n setDocsState(docsResult);\r\n setExtraRemoteDocsState(remoteExtraDocsResult);\r\n setExtraDocsState(extraDocsResult);\r\n var remoteDataForm = remoteDataResult.map((e) => {\r\n return [String(e[0].id), e[1]];\r\n });\r\n setRemoteDataFormState(remoteDataForm);\r\n var dataForm = dataResult.map((e) => {\r\n return [String(e[0].id), e[1]];\r\n });\r\n setIncidenceState(registryState.result.registry.incidence);\r\n let deserializedNotifyTo = JSON.parse(registryState.result.registry.notifyTo);\r\n let stringNotifyTo = deserializedNotifyTo.filter((each) => {\r\n return each.Type == \"email\";\r\n }).map((each) => {\r\n return each.Target;\r\n }).join(\"; \");\r\n setNotifyToStringState(stringNotifyTo)\r\n setDataFormState(dataForm);\r\n } else {\r\n setRemoteDataState([]);\r\n setDataState([]);\r\n setDocsState([]);\r\n setRemoteDocsState([]);\r\n setExtraDocsState([]);\r\n setExtraRemoteDocsState([]);\r\n setIncidenceState(\"\");\r\n setNotifyToStringState(\"\");\r\n\r\n setDataFormState([]);\r\n setRemoteDataFormState([]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n prepareData();\r\n }, [registryState]);\r\n\r\n useEffect(loadAll, [idRegistry, idDealer, idProcedure]);\r\n\r\n const [cmbFixState, setCmbFixState] = useState(false);\r\n\r\n return (\r\n
\r\n
\r\n\r\n
\r\n \r\n Ir atrás\r\n \r\n
\r\n
\r\n {!dealerState.loading ? dealerState.result.name : \"\"}\r\n {!dealerState.loading ? dealerState.result.clienteDF : \"\"}\r\n
\r\n
\r\n\r\n
\r\n

{registryState.loading ? \"Cargando...\" : `${String(registryState.result.registry.gestoria).padStart(3, \"0\")}${String(registryState.result.registry.procedureId).padStart(4, \"0\")}${String(registryState.result.registry.id).padStart(6, \"0\")}`}

\r\n Asignado: \r\n {\r\n setUserComboState(event.component.option(\"value\"))\r\n }}\r\n dataSource={usersState.loading ? [] : usersState.result}\r\n valueExpr=\"id\"\r\n displayExpr=\"name\"\r\n disabled={!editionState || Number(sessionContext.user.userType) <= 0}\r\n />\r\n Estado: \r\n {/*fieldRender={renderStateField}*/}\r\n {\r\n setStateComboState(event.component.option(\"value\"))\r\n }}\r\n value={stateComboState}\r\n dataSource={stateDataSource}\r\n valueExpr=\"state.id\"\r\n displayExpr=\"state.name\"\r\n //fieldRender={renderStateField}\r\n itemRender={renderStateItem}\r\n disabled={!editionState}\r\n onContentReady={(e) => {\r\n //e.component.open();\r\n //e.component.close();\r\n }}\r\n onClosed={(e) => {\r\n if (!cmbFixState) {\r\n setCmbFixState(true);\r\n e.component.open();\r\n }\r\n }}\r\n onOpened={(e) => {\r\n if (!cmbFixState) {\r\n e.component.close();\r\n }\r\n let listItems = e.component.content().querySelectorAll(\".dx-list-item-content\");\r\n listItems.forEach(function (listItem) {\r\n listItem.style.padding = '0px';\r\n });\r\n }}\r\n />\r\n
\r\n
\r\n Tipo: {registryState.loading || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null ? \"Cargando...\" : registryState.result.registry.procedureName}\r\n F. Alta: {registryState.loading || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null ? \"Cargando...\" : registryState.result.registry.createDate}\r\n F. Mod.: {registryState.loading || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null ? \"Cargando...\" : registryState.result.registry.changeDate}\r\n F. Cierre: {registryState.loading || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null || registryState.result.registry.closeDate == \"\" ? \"-\" : registryState.result.registry.closeDate}\r\n {/*Exportado a SIGA: */}\r\n {/*{registryState.loading || registryState.result == undefined || registryState.result == null || registryState.result.registry == undefined || registryState.result.registry == null ? : { setExportedSigaChkState(e.value) }} />}*/}\r\n
\r\n {editionState\r\n ?\r\n
\r\n
{errorState}
\r\n
\r\n\r\n
\r\n :\r\n (!registryState.loading && registryState.result != undefined && registryState.result.registry != undefined && (Number(sessionContext.user.id) == Number(registryState.result.registry.assigned) || Number(sessionContext.user.userType) > 0)\r\n ?\r\n
\r\n {/*
\r\n :\r\n
\r\n )\r\n }\r\n
\r\n
\r\n
\r\n

Datos

\r\n
\r\n
\r\n

Datos proporcionados por el concesionario

\r\n {\r\n registryState.loading\r\n ?\r\n \"Cargando...\"\r\n : (\r\n <>\r\n
\r\n \r\n \r\n
\r\n {(remoteDataState || []).map((d) => {\r\n return (\r\n
\r\n \r\n e[0] == String(d[0].id))[1]}\r\n valueChangeEvent=\"keyup\"\r\n onValueChanged={event => {\r\n setRemoteDataFormState(remoteDataFormState.map((e) => {\r\n if (e[0] != String(d[0].id)) {\r\n return e;\r\n } else {\r\n return [String(d[0].id), event.component.option(\"value\")];\r\n }\r\n })\r\n );\r\n }}\r\n />\r\n
\r\n )\r\n })}\r\n \r\n )\r\n }\r\n
\r\n
\r\n

Datos a cumplimentar por la gestoría

\r\n {\r\n registryState.loading\r\n ?\r\n \"Cargando...\"\r\n : (\r\n <>\r\n
\r\n \r\n {/* {*/}\r\n {/* setIncidenceState(event.component.option(\"value\"));*/}\r\n {/* }}*/}\r\n {/*/>*/}\r\n {\r\n //Limit to 150 characters\r\n let value = event.component.option(\"value\");\r\n if (value.length > 150) {\r\n value = value.substr(0, 150);\r\n }\r\n setIncidenceState(value);\r\n }}\r\n />\r\n
\r\n {(dataState || []).map((d) => {\r\n return (\r\n
\r\n \r\n e[0] == String(d[0].id))[1]}\r\n valueChangeEvent=\"keyup\"\r\n onValueChanged={event => {\r\n setDataFormState(dataFormState.map((e) => {\r\n if (e[0] != String(d[0].id)) {\r\n return e;\r\n } else {\r\n return [String(d[0].id), event.component.option(\"value\")];\r\n }\r\n })\r\n );\r\n }}\r\n />\r\n
\r\n )\r\n })}\r\n \r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n

Documentos a aportar por el concesionario

\r\n\r\n \r\n {/**/}\r\n\r\n {/**/}\r\n
\r\n
\r\n

Documentos a aportar por la gestoría

\r\n \r\n\r\n
\r\n
\r\n

Eventos ocurridos sobre el trámite

\r\n \r\n\r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={genericDialogState.popupVisible}\r\n onHiding={hideGenericDialog}\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title={genericDialogState.title}\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n {genericDialogState.koText != null ?\r\n \r\n :\r\n null\r\n }\r\n {genericDialogState.okText != null ?\r\n \r\n :\r\n null\r\n }\r\n

\r\n {genericDialogState.body}\r\n

\r\n \r\n \r\n
\r\n )\r\n}\r\n","import { DateBox, SelectBox, TextBox } from 'devextreme-react';\r\nimport React from 'react'\r\n\r\nimport \"./HistorySearch.css\";\r\n\r\nexport const HistorySearch = ({ searchState, setSearchState, userDataSource }) => {\r\n\r\n const disableStartDates = (args) => {\r\n return args.date > searchState.endDate\r\n }\r\n const disableEndDates = (args) => {\r\n return (args.date > new Date(new Date().setDate(new Date().getDate() +1)) || args.date < searchState.startDate);\r\n }\r\n return (\r\n
\r\n
\r\n {/*

Filtros

*/}\r\n

Filtros

\r\n
\r\n
\r\n \r\n {\r\n setSearchState((prevState => ({\r\n ...prevState,\r\n startDate: e.value\r\n })))\r\n }}\r\n displayFormat=\"dd/MM/yyyy\"\r\n disabledDates={disableStartDates} />\r\n \r\n {\r\n setSearchState((prevState => ({\r\n ...prevState,\r\n endDate: e.value\r\n })))\r\n }}\r\n disabledDates={disableEndDates} />\r\n \r\n {\r\n setSearchState((prevState => ({\r\n ...prevState,\r\n user: event.component.option(\"value\")\r\n })))\r\n }}\r\n value={searchState.user} />\r\n \r\n {\r\n setSearchState((prevState => ({\r\n ...prevState,\r\n event: event.component.option(\"value\")\r\n })))\r\n }}\r\n value={searchState.event} />\r\n \r\n {\r\n setSearchState((prevState => ({\r\n ...prevState,\r\n tramite: event.component.option(\"value\")\r\n })))\r\n }}\r\n value={searchState.tramite} />\r\n
\r\n
\r\n )\r\n}\r\n","import { Button, DataGrid } from 'devextreme-react'\r\nimport { Column, Editing, Export, Item, Pager, Paging, Scrolling, SearchPanel, Selection, Toolbar, LoadPanel as DGLoadPanel } from 'devextreme-react/data-grid';\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Workbook } from 'exceljs';\r\nimport { saveAs } from 'file-saver';\r\nimport React, { useEffect, useState } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze';\r\nimport { exportDataGrid } from 'devextreme/excel_exporter';\r\nimport parse from 'date-fns/parse'\r\nimport imgSpinner from '../../img/spinner.gif';\r\n\r\nimport \"./HistoryGrid.css\";\r\n\r\nexport const HistoryGrid = ({ searchState }) => {\r\n\r\n //{ \"id\", \"Id\" },\r\n //{ \"event\", \"Event\" },\r\n //{ \"date\", \"Date\" },\r\n //{ \"gestoria\", \"GestoriaId\" },\r\n //{ \"user\", \"UserId\" },\r\n //{ \"state\", \"StateId\" },\r\n //{ \"procedure\", \"ProcedureId\" },\r\n //{ \"registry\", \"RegistryId\" },\r\n //{ \"doc\", \"DocId\" },\r\n //{ \"extra_doc\", \"ExtraDoc\" },\r\n //{ \"description\", \"Description\" }\r\n\r\n const [usersState, setUsersState] = useState({ loading: true, results: [] });\r\n const [procedureState, setProcedureState] = useState({ loading: true, results: [] });\r\n\r\n\r\n const windowSize = useWindowSize();\r\n\r\n const [gridPaginationState, setGridPaginationState] = useState({});\r\n\r\n const [filterState, setFilterState] = useState(null);\r\n\r\n const loadProcedures = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setProcedureState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadUsers = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setUsersState({ loading: false, results: result.response });\r\n if (searchState.user != null && searchState.user > 0) {\r\n return result.response.filter((e) => e.userId == searchState.user);\r\n } else {\r\n return result.response;\r\n }\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadAll = async () => {\r\n Promise.all([loadProcedures(), loadUsers()]).then(() => {\r\n //setLoadingState(false);\r\n });\r\n }\r\n const resizeGridPagination = () => {\r\n try {\r\n var expGridShowRowCount = Math.floor(((windowSize.height - (156 + 50) - (54 * 2) - 30) / 55));\r\n setGridPaginationState({\r\n pageSize: expGridShowRowCount,\r\n infoText: \"Mostrando {2} entradas\"\r\n });\r\n } catch (ee) {\r\n\r\n }\r\n }\r\n const eventId2Human = (eId) => {\r\n //LogIn,\r\n // LogOut,\r\n // AssignRegistry,\r\n // ChangeRegistryState,\r\n // ViewRegistry,\r\n // ViewFile,\r\n // ExportSiga,\r\n // DownloadRegistry\r\n if (eId == 0) {\r\n return \"Inicia sesión\"\r\n } else if (eId == 1) {\r\n return \"Cierra sesión\"\r\n } else if (eId == 2) {\r\n return \"Asigna trámite\"\r\n } else if (eId == 3) {\r\n return \"Cambia estado de trámite\"\r\n }else if (eId == 4) {\r\n return \"Abre trámite\"\r\n } else if (eId == 5) {\r\n return \"Abre archivo\"\r\n } else if (eId == 6) {\r\n return \"Exporta a SIGA\"\r\n } else if (eId == 7) {\r\n return \"Descarga trámite\"\r\n }\r\n }\r\n\r\n\r\n useEffect(loadAll, []);\r\n useEffect(resizeGridPagination, [windowSize]);\r\n\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const historyDataSource = new CustomStore({\r\n key: 'uId',\r\n loadMode: 'raw',\r\n filter: filterState,\r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/history?fromDate=${String(searchState.startDate.getDate()).padStart(2, '0')}-${String(searchState.startDate.getMonth() + 1).padStart(2, '0')}-${searchState.startDate.getFullYear()}&toDate=${String(searchState.endDate.getDate()).padStart(2, '0')}-${String(searchState.endDate.getMonth() + 1).padStart(2, '0')}-${searchState.endDate.getFullYear()}`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n var res = result.response;\r\n if (searchState.user != null && searchState.user > 0) {\r\n res = res.filter((e) => e.userId == searchState.user);\r\n }\r\n if (searchState.event != null && searchState.event > -1) {\r\n res = res.filter((e) => e.event == searchState.event);\r\n }\r\n if (searchState.tramite != null && searchState.tramite != \"\") {\r\n res = res.filter((e) => {\r\n return e.procedureId > 0 && (`${String(e.gestoriaId).padStart(3, \"0\")}${String(e.procedureId).padStart(4, \"0\")}${String(e.registryId).padStart(6, \"0\")}`.endsWith(searchState.tramite) || `${String(e.gestoriaId).padStart(3, \"0\")}${String(e.procedureId).padStart(4, \"0\")}${String(e.registryId).padStart(6, \"0\")}`.startsWith(searchState.tramite))\r\n });\r\n }\r\n return res;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n\r\n const onExporting = (e) => {\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet('Trámites');\r\n exportDataGrid({\r\n //component: dGrid.getInstance(document.querySelector(\".dx-datagrid\")),\r\n component: e.component,\r\n worksheet: worksheet,\r\n selectedRowsOnly: true,\r\n customizeCell: function (options) {\r\n const excelCell = options;\r\n excelCell.font = { name: 'Arial', size: 12 };\r\n excelCell.alignment = { horizontal: 'left' };\r\n }\r\n }).then(function () {\r\n workbook.xlsx.writeBuffer()\r\n .then(function (buffer) {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Auditoria.xlsx');\r\n });\r\n });\r\n e.cancel = true;\r\n }\r\n\r\n\r\n const [exportButtonState, setExportButtonState] = useState(false);\r\n const onRowSelectionChanged = (e) => {\r\n e.component.getSelectedRowsData().then((selectedData) => {\r\n if (selectedData.length == 0) {\r\n setExportButtonState(false);\r\n } else {\r\n setExportButtonState(true);\r\n }\r\n });\r\n\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n \r\n {/**/}\r\n \r\n \r\n {\r\n return (usersState.results.find((e) => e.id == rowData.userId) || { name: \"Sin determinar\" }).name;\r\n }}\r\n />\r\n {\r\n let datePart = rowData.date.split(\" \")[0];\r\n let timePart = rowData.date.split(\" \")[1];\r\n let formated = datePart.split(\"/\")[0].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[1].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[2].padStart(4, \"0\") + \" \" + timePart.split(\":\")[0].padStart(2, \"0\") + \":\" + timePart.split(\":\")[1].padStart(2, \"0\") + \":\" + timePart.split(\":\")[2].padStart(2, \"0\");\r\n return parse(formated, \"dd/MM/yyyy HH:mm:ss\", new Date());\r\n }}\r\n />\r\n {\r\n let datePart = rowData.date.split(\" \")[0];\r\n let timePart = rowData.date.split(\" \")[1];\r\n return datePart.split(\"/\")[0].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[1].padStart(2, \"0\") + \"/\" + datePart.split(\"/\")[2].padStart(4, \"0\") + \" \" + timePart.split(\":\")[0].padStart(2, \"0\") + \":\" + timePart.split(\":\")[1].padStart(2, \"0\") + \":\" + timePart.split(\":\")[2].padStart(2, \"0\");\r\n }}\r\n />\r\n {\r\n return eventId2Human(rowData.event);\r\n }}\r\n />\r\n \r\n {\r\n return (procedureState.results.find((e) => e.id == rowData.procedureId) || { name: \"Sin determinar\" }).name;\r\n }}\r\n />\r\n {\r\n if (rowData.procedureId > 0) {\r\n return `${String(rowData.gestoriaId).padStart(3, \"0\")}${String(rowData.procedureId).padStart(4, \"0\")}${String(rowData.registryId).padStart(6, \"0\") }`\r\n } else {\r\n return \"Sin determinar\";\r\n }\r\n }}\r\n />\r\n \r\n
\r\n )\r\n}\r\n","import React, { useState } from 'react'\r\n\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport \"./History.css\";\r\nimport { HistorySearch } from './HistorySearch';\r\nimport { HistoryGrid } from './HistoryGrid';\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { BackButton } from '../common/BackButton';\r\nexport const History = () => {\r\n\r\n\r\n const [searchState, setSearchState] = useState({\r\n startDate: new Date(new Date().setDate(new Date().getDate() - 7)),\r\n endDate: new Date(new Date().setDate(new Date().getDate() + 1)),\r\n user: null,\r\n event: null,\r\n tramite: \"\",\r\n });\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n const userDataSource = new CustomStore({\r\n key: 'id',\r\n loadMode: 'raw',\r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n\r\n let history = useHistory();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {/*

Auditoría 

*/}\r\n
\r\n
\r\n
\r\n

Auditoría 

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { Button, ColorBox, DataGrid, LoadPanel, Popup, SelectBox, TagBox, TextBox } from 'devextreme-react'\r\nimport React, { useCallback, useContext, useEffect, useRef, useState, useMemo } from 'react'\r\nimport useWindowSize from '../../hooks/useWindowSizze'\r\nimport useUserConfig from '../../hooks/useUserConfig'\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport { Column, Button as DGButton, Editing, SearchPanel, Toolbar, Item, Scrolling, Selection, Paging, Pager, Export, LoadPanel as DGLoadPanel, FilterRow, HeaderFilter, Search } from 'devextreme-react/data-grid';\r\nimport \"./AssignedRegistries.css\";\r\nimport imgDelete from '../../img/delete.png';\r\nimport imgEdit from '../../img/edit.png';\r\nimport imgGoBack from '../../img/go_back.png';\r\nimport check_rounded_big from '../../img/check_rounded_big.png';\r\nimport imgSpinner from '../../img/spinner.gif';\r\nimport { Link, useHistory, useParams } from 'react-router-dom';\r\nimport { Position, ToolbarItem } from 'devextreme-react/popover';\r\nimport { Field, Form, Formik } from 'formik';\r\nimport { SessionContext } from '../context/SessionContext';\r\nimport { Workbook } from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport { exportDataGrid } from 'devextreme/excel_exporter';\r\nimport { BackButton } from '../common/BackButton';\r\n\r\nexport const AssignedRegistries = () => {\r\n\r\n let { id } = useParams();\r\n const history = useHistory();\r\n\r\n const windowSize = useWindowSize();\r\n const userConfig = useUserConfig();\r\n\r\n\r\n const { session: sessionContext, setSession: setSessionContext } = useContext(SessionContext);\r\n\r\n const changeStateFormRef = useRef()\r\n const gridRef = useRef()\r\n\r\n const [changeStateState, setChangeStateState] = useState({ loading: false, ids: null, state: null, error: false, result: null });\r\n const [registryCountState, setRegistryCountState] = useState(0);\r\n const [statesState, setStatesState] = useState({ loading: true, results: [] });\r\n const [byProcedureStatesState, setByProcedureStatesState] = useState({ loading: true, results: [] });\r\n const [procedureState, setProcedureState] = useState({ loading: true, results: [] });\r\n const [usersState, setUsersState] = useState({ loading: true, results: [] });\r\n \r\n\r\n const [changeStateButtonState, setChangeStateButtonState] = useState(false);\r\n const [exportSigaButtonState, setExportSigaButtonState] = useState(false);\r\n //If the user can assign assignedRegistries to users the filter should include unassigned, only theirs otherwhise\r\n const [tagBoxValueState, setTagBoxValueState] = useState([]); //useState(sessionContext.user.userType >= 1 ? [0, sessionContext.user.id] : [sessionContext.user.id]);\r\n const [procedureTagBoxValueState, setProcedureTagBoxValueState] = useState([]);\r\n\r\n\r\n const [gridPaginationState, setGridPaginationState] = useState({});\r\n\r\n const [selectedGridState, setSelectedGridState] = useState([]);\r\n\r\n const onRowSelectionChanged = (e) => {\r\n e.component.getSelectedRowsData().then((selectedData) => {\r\n if (selectedData.length == 0) {\r\n setChangeStateButtonState(false);\r\n setExportSigaButtonState(false);\r\n } else {\r\n if (selectedData.length == 1) {\r\n setExportSigaButtonState(true);\r\n } else {\r\n setExportSigaButtonState(false);\r\n }\r\n let procedure = 0;\r\n let allStatesValid = true;\r\n let allAssignedRegistriesAvailable = true;\r\n selectedData.map((data) => {\r\n if (sessionContext.user.userType == 0) {\r\n //If the user can't assign assignedRegistries only those the user has assigned can be changed\r\n if (data.assigned != sessionContext.user.id) {\r\n allAssignedRegistriesAvailable = false;\r\n }\r\n }\r\n if (data.stateId == 6) {\r\n allStatesValid = false;\r\n }\r\n if (procedure != 0) {\r\n if (procedure != data.procedureId) {\r\n procedure = -1;\r\n return;\r\n }\r\n } else {\r\n procedure = data.procedureId;\r\n }\r\n })\r\n setChangeStateButtonState(procedure > 0 && allStatesValid && allAssignedRegistriesAvailable);\r\n }\r\n setSelectedGridState(selectedData);\r\n });\r\n \r\n }\r\n\r\n const [changeStateDialogState, setChangeStateDialogState] = useState({\r\n ids: [],\r\n procedureId: 0,\r\n currentState: 0,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n const showChangeStateDialog = (ids, procedureId, currentState) => {\r\n setChangeStateDialogState({\r\n ids: ids,\r\n procedureId: procedureId,\r\n currentState: currentState,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: true,\r\n });\r\n if (changeStateFormRef != undefined && changeStateFormRef != null && changeStateFormRef.current != undefined && changeStateFormRef.current != null) {\r\n changeStateFormRef.current.setFieldValue(\"ids\", ids, false);\r\n if (currentState > 0) {\r\n changeStateFormRef.current.setFieldValue(\"state\", currentState, false);\r\n }\r\n }\r\n }\r\n const hideChangeStateDialog = () => {\r\n setChangeStateDialogState({\r\n ids: [],\r\n procedureId: 0,\r\n currentState: 0,\r\n position: { my: 'center', at: 'center', of: window },\r\n popupVisible: false,\r\n });\r\n }\r\n\r\n\r\n // A custom validation function. This must return an object\r\n // which keys are symmetrical to our values/initialValues\r\n const validateChangeState = values => {\r\n const errors = {};\r\n if (!values.state) {\r\n errors.state = 'Requerido';\r\n } else if (values.state <=0 ) {\r\n errors.state = 'Requerido';\r\n }\r\n\r\n return errors;\r\n };\r\n const changeStateFormOptions = {\r\n initialValues: {\r\n ids: [],\r\n state: 0\r\n },\r\n validate: validateChangeState,\r\n onSubmit: async values => {\r\n setChangeStateState({\r\n loading: true, ids: values.ids, state: values.state, error: false, result: null\r\n });\r\n //alert(JSON.stringify(values, null, 2));\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/assignedRegistries/PutState?ids=${JSON.stringify(values.ids)}&state=${values.state}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(values),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n setChangeStateState({\r\n loading: false, ids: values.ids, state: values.state, error: (data.response == null), result: (data.response != null ? data.response : data.message)\r\n });\r\n if (data.response != null) {\r\n hideChangeStateDialog();\r\n }\r\n }\r\n };\r\n\r\n\r\n const resizeGridPagination = () => {\r\n try {\r\n var expGridShowRowCount = Math.floor(((windowSize.height - (156 + 50) - (54 * 2) - 60) / 55));\r\n setGridPaginationState({\r\n pageSize: expGridShowRowCount,\r\n infoText: \"Mostrando {2} trámites\"\r\n });\r\n } catch (ee) {\r\n\r\n }\r\n }\r\n function handleErrors(response) {\r\n if (!response.ok) {\r\n throw Error(response.statusText);\r\n }\r\n return response;\r\n }\r\n\r\n const jsonDataSource = new CustomStore({\r\n key: [\"id\", \"procedureId\"],\r\n loadMode: 'raw', \r\n load: () => {\r\n return fetch(`${process.env.PUBLIC_URL}/api/registries/GetAssignedToUser`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setRegistryCountState(result.response.length);\r\n // De cada uno de los registros, quitamos las horas de las fechas\r\n result.response.map((e) => {\r\n e.createDate = e.createDate.split(\" \")[0];\r\n e.changeDate = e.changeDate.split(\" \")[0];\r\n e.closeDate = e.closeDate.split(\" \")[0];\r\n });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n });\r\n const loadStates = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/states`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setStatesState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadByProcedureStates = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/GetAllProcedureStates`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setByProcedureStatesState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadProcedures = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/procedures/Get`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setProcedureState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadUsers = async () => {\r\n fetch(`${process.env.PUBLIC_URL}/api/users`)\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n setUsersState({ loading: false, results: result.response });\r\n return result.response;\r\n })\r\n .catch(() => { throw 'Network error' });\r\n }\r\n const loadAll = async () => {\r\n Promise.all([loadStates(), loadProcedures(), loadUsers(), loadByProcedureStates()]).then(() => {\r\n //setLoadingState(false);\r\n });\r\n }\r\n\r\n\r\n const DXTextInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n { form.setFieldValue(field.name, event.component.option(\"value\"), true) }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n const DXComboInput = ({ fieldName, fieldType, fieldPlaceholder, ...rest }) => (\r\n \r\n {({ field, form }) => (\r\n {\r\n form.setFieldValue(field.name, event.component.option(\"value\"), true)\r\n }}\r\n onFocusOut={event => { form.setFieldTouched(field.name) }}\r\n value={field.value}\r\n />\r\n )}\r\n \r\n );\r\n\r\n const exportRegistrySIGA = async () => {\r\n var idRegistry = selectedGridState.map((e) => e.id)[0];\r\n if (Number(idRegistry) > 0) {\r\n fetch(`${process.env.PUBLIC_URL}/api/assignedRegistries/ExportRegistrySIGA?id=${idRegistry}`)\r\n .then(response => response.json())\r\n .then(result => {\r\n // You can process the response here\r\n console.log(result.response)\r\n if (result.response != null) {\r\n downloadB64(result.response, idRegistry, \".xml\");\r\n return true;\r\n } else {\r\n\r\n return false;\r\n }\r\n })\r\n .catch((er) => {\r\n throw 'Network error'\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n const downloadB64 = (fileB64, fileName, extension) => {\r\n const linkSource = `data:application/zip;base64,${fileB64}`;\r\n const downloadLink = document.createElement(\"a\");\r\n const fname = fileName + extension;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fname;\r\n downloadLink.click();\r\n }\r\n\r\n const onExporting = (e) => {\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet('Trámites');\r\n e.component.beginUpdate();\r\n e.component.columnOption('state', 'visible', false);\r\n e.component.columnOption('exportState', 'visible', true);\r\n e.component.columnOption('exported', 'visible', false);\r\n e.component.columnOption('exportExported', 'visible', true);\r\n e.component.columnOption('downloaded', 'visible', false);\r\n e.component.columnOption('exportDownloaded', 'visible', true);\r\n exportDataGrid({\r\n //component: dGrid.getInstance(document.querySelector(\".dx-datagrid\")),\r\n component: e.component,\r\n worksheet: worksheet,\r\n customizeCell: function (options) {\r\n const excelCell = options;\r\n excelCell.font = { name: 'Arial', size: 12 };\r\n excelCell.alignment = { horizontal: 'left' };\r\n }\r\n }).then(function () {\r\n workbook.xlsx.writeBuffer()\r\n .then(function (buffer) {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Trámites.xlsx');\r\n });\r\n e.component.columnOption('state', 'visible', true);\r\n e.component.columnOption('exportState', 'visible', false);\r\n e.component.columnOption('exported', 'visible', true);\r\n e.component.columnOption('exportExported', 'visible', false);\r\n e.component.columnOption('downloaded', 'visible', true);\r\n e.component.columnOption('exportDownloaded', 'visible', false);\r\n e.component.endUpdate();\r\n });\r\n e.cancel = true;\r\n }\r\n\r\n const onRowClick = (e) => {\r\n if (e.rowType === \"data\") {\r\n //e.component.editRow(e.rowIndex);\r\n console.log(e);\r\n let currentUrl = history.location.pathname;\r\n let backlog = [];\r\n if (history.location.state != undefined && history.location.state.comesFrom != undefined && history.location.state.comesFrom != \"\") {\r\n backlog = history.location.state.comesFrom;\r\n }\r\n backlog.push(currentUrl);\r\n history.replace(`/registry/${id}/${e.key.procedureId}/${e.key.id}`, { comesFrom: backlog });\r\n }\r\n }\r\n //const getFilterValue = useCallback(() => {\r\n // let elFiltro = [];\r\n // if (tagBoxValueState.length > 0) {\r\n // elFiltro.push(['assigned', 'anyof', tagBoxValueState]);\r\n // }\r\n // if (procedureTagBoxValueState.length > 0) {\r\n // if (elFiltro.length > 0) {\r\n // elFiltro.push(\"or\")\r\n // }\r\n // elFiltro.push(['procedureId', 'anyof', procedureTagBoxValueState]);\r\n // }\r\n // return elFiltro;\r\n //}, [procedureTagBoxValueState, tagBoxValueState]);\r\n \r\n useEffect(loadAll, []);\r\n useEffect(resizeGridPagination, [windowSize]);\r\n useEffect(async () => {\r\n const userFilter=userConfig.get(\"_USER_FILTER\", JSON.stringify(sessionContext.user.userType >= 1 ? [0, sessionContext.user.id] : [sessionContext.user.id]))\r\n if (tagBoxValueState != JSON.parse(userFilter)) {\r\n setTagBoxValueState(JSON.parse(userFilter));\r\n }\r\n //const procedureFilter = userConfig.get(\"_PROC_FILTER\", JSON.stringify([]))\r\n //if (procedureTagBoxValueState != JSON.parse(procedureFilter)) {\r\n // setProcedureTagBoxValueState(JSON.parse(procedureFilter));\r\n //}\r\n },[])\r\n useEffect(() => {\r\n if (gridRef != undefined && gridRef != null && gridRef.current != undefined && gridRef.current != null) {\r\n\r\n gridRef.current.instance.filter((itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n });\r\n }\r\n }, [procedureTagBoxValueState, tagBoxValueState])\r\n\r\n const filterCallback = (itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n //let matchesUser = false;\r\n //let matchesProcedure = false;\r\n //if (tagBoxValueState.length == 0) matchesUser = true;\r\n //if (procedureTagBoxValueState.length == 0) matchesProcedure = true;\r\n //if (tagBoxValueState.length > 0) {\r\n // matchesUser = tagBoxValueState.indexOf(itemData.assigned) > -1;\r\n //}\r\n //if (procedureTagBoxValueState.length > 0) {\r\n // matchesProcedure = procedureTagBoxValueState.indexOf(itemData.procedureId) > -1;\r\n //}\r\n\r\n //return matchesUser && matchesProcedure;\r\n }\r\n\r\n const filterTexts = useMemo(() => {\r\n return { ok: \"OK\", cancel: \"Cancelar\", emptyValue: \"(Vacío)\" };\r\n }, []);\r\n\r\n const filterRowOperationDescriptions = useMemo(() => {\r\n return {\r\n between: \"Entre\",\r\n contains: \"Contiene\",\r\n endsWith: \"Termina con\",\r\n equal: \"Igual\",\r\n greaterThan: \"Mayor que\",\r\n greaterThanOrEqual: \"Mayor o igual que\",\r\n lessThan: \"Menor que\",\r\n lessThanOrEqual: \"Menor o igual que\",\r\n notContains: \"No contiene\",\r\n notEqual: \"No es igual\",\r\n startsWith: \"Empieza con\"\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n\r\n
{selectedGridState.length > 0 ? `${selectedGridState.length} trámites seleccionados`:\"\" }
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mis trámites 

\r\n

({registryCountState} trámites)

\r\n
\r\n \r\n
\r\n {\r\n statesState.loading || procedureState.loading || usersState.loading ?\r\n \r\n :\r\n {\r\n if (e.component != undefined && e.component != null) {\r\n\r\n e.component.filter((itemData) => {\r\n return (tagBoxValueState.length == 0 ? true : tagBoxValueState.indexOf(itemData.assigned) > -1) && (procedureTagBoxValueState.length == 0 ? true : procedureTagBoxValueState.indexOf(itemData.procedureId) > -1);\r\n });\r\n }\r\n }\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n event.element.classList.remove(\"dx-registry-active\");\r\n event.element.classList.remove(\"dx-registry-focused\");\r\n showChangeStateDialog(selectedGridState.map((e) => e.id), selectedGridState[0].procedureId, 0);\r\n }\r\n }\r\n />\r\n \r\n \r\n {/**/}\r\n {/* {*/}\r\n {/* event.element.classList.remove(\"dx-registry-active\");*/}\r\n {/* event.element.classList.remove(\"dx-registry-focused\");*/}\r\n {/* exportRegistrySIGA();*/}\r\n {/* }*/}\r\n {/* }*/}\r\n {/* />*/}\r\n {/**/}\r\n \r\n {\r\n if (e.component.option(\"value\") != procedureTagBoxValueState) {\r\n if (e.component.option(\"value\").length > 0) {\r\n //userConfig.set(\"_PROC_FILTER\", JSON.stringify(e.component.option(\"value\")));\r\n setProcedureTagBoxValueState(e.component.option(\"value\"));\r\n } else {\r\n //userConfig.set(\"_PROC_FILTER\", JSON.stringify([]));\r\n setProcedureTagBoxValueState([]);\r\n }\r\n }\r\n }}\r\n />\r\n \r\n \r\n {\r\n if (e.component.option(\"value\") != tagBoxValueState) {\r\n if (e.component.option(\"value\").length > 0) {\r\n userConfig.set(\"_USER_FILTER\", JSON.stringify(e.component.option(\"value\")));\r\n setTagBoxValueState(e.component.option(\"value\"));\r\n } else {\r\n userConfig.set(\"_USER_FILTER\", JSON.stringify([]));\r\n setTagBoxValueState([]);\r\n }\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n {\r\n let stateName = \"Cargando...\";\r\n let stateBGColor = \"#FFFFFF\";\r\n const state = statesState.results.find((e) => {\r\n return e.id == data.data.stateId;\r\n });\r\n if (state != undefined && state != null) {\r\n stateName = state.name;\r\n stateBGColor = state.bgColor;\r\n }\r\n //{ { backgroundColor: data.value, width: 50, height: 20, borderColor: \"#000000\", borderStyle: \"solid\", borderWidth: 0.2, borderRadius: 5 }}\r\n return
{stateName}
\r\n }\r\n }\r\n lookup={{\r\n dataSource: statesState.results,\r\n displayExpr: \"name\", // The property to display in the filter\r\n valueExpr: \"id\", // The property to use as the underlying value\r\n }}\r\n />\r\n {/*This is the column that gets exported*/}\r\n {\r\n const state = statesState.results.find((e) => {\r\n return e.id == rowData.stateId;\r\n });\r\n if (state != undefined && state != null) {\r\n return state.name;\r\n } else {\r\n return rowData.stateId;\r\n }\r\n }}\r\n />\r\n \r\n \r\n {\r\n return `${String(rowData.gestoria).padStart(3, \"0\")}${String(rowData.procedureId).padStart(4, \"0\")}${String(rowData.id).padStart(6, \"0\")}`;\r\n }\r\n }\r\n />\r\n {\r\n const procedure = procedureState.results.find((e) => {\r\n return e.id == rowData.procedureId;\r\n });\r\n if (procedure != undefined && procedure != null) {\r\n return procedure.name;\r\n } else {\r\n return rowData.procedureId;\r\n }\r\n }}\r\n />\r\n {\r\n if (!filterValue) return null; // Ignore filtering if no value is provided.\r\n\r\n return [\"createDate\", selectedFilterOperation || \"=\", filterValue];\r\n }}\r\n />\r\n {\r\n if (!filterValue) return null; // Ignore filtering if no value is provided.\r\n\r\n return [\"changeDate\", selectedFilterOperation || \"=\", filterValue];\r\n }}\r\n />\r\n {\r\n if (!filterValue) return null; // Ignore filtering if no value is provided.\r\n\r\n return [\"closeDate\", selectedFilterOperation || \"=\", filterValue];\r\n }}\r\n cellRender={(data) => {\r\n let stateBGColor = \"var(--azul-df)\";\r\n if (data.data.aboutToGetDeleted) {\r\n stateBGColor = \"var(--rojo-ko)\";\r\n }\r\n //{ { backgroundColor: data.value, width: 50, height: 20, borderColor: \"#000000\", borderStyle: \"solid\", borderWidth: 0.2, borderRadius: 5 }}\r\n return
{data.data.closeDate}
\r\n }\r\n }\r\n />\r\n {/**/}\r\n {/* rowData.exported ? \"Si\" : \"No\"}*/}\r\n {/*/>*/}\r\n {\r\n if (cellInfo.value <= 0) {\r\n return \"-\";\r\n }\r\n const user = usersState.results.find((e) => {\r\n return e.id == cellInfo.value;\r\n });\r\n if (user != undefined && user != null) {\r\n return user.name;\r\n } else {\r\n return `- Usuario eliminado (${String(cellInfo.value)}) -`;\r\n }\r\n }}\r\n />\r\n {/**/}\r\n rowData.downloaded ? \"Si\" : \"No\"}\r\n />\r\n \r\n }\r\n
\r\n
\r\n\r\n {\r\n e.component.repaint();\r\n }}\r\n visible={changeStateDialogState.popupVisible}\r\n onHiding={hideChangeStateDialog}\r\n\r\n dragEnabled={false}\r\n closeOnOutsideClick={false}\r\n showCloseButton={false}\r\n showTitle={true}\r\n title=\"Cambiar estado de los trámites seleccionados\"\r\n container=\".dx-viewport\"\r\n height=\"auto\"\r\n width=\"auto\"\r\n >\r\n \r\n
\r\n \r\n {\r\n ({ isSubmitting, handleReset, setFieldTouched, ...props }) => {\r\n const hasInputError = (props.touched.state && props.errors.state);\r\n const hasFetchError = (!changeStateState.loading && changeStateState.state == props.values.state && (changeStateState.result == null || changeStateState.error));\r\n const hasError = (hasInputError || hasFetchError);\r\n\r\n const statesDataSource = (byProcedureStatesState.results[changeStateDialogState.procedureId] || []).filter((e) => e.shown && e.state!=null && e.state.id!=1).sort((a, b) => parseFloat(a.order) - parseFloat(b.order));\r\n\r\n return
\r\n

Al pulsar el botón guardar, los trámites seleccionados cambiaran al estado que selecciones.

\r\n

Los estados de 'Incidencia' y 'Finalizado' no pueden ser establecidos desde aquí porque requieren comprobaciones adicionales.

\r\n \r\n {/*States 4 (\"incidencia\") and 6 (\"finalizado\") aren't available because to set them there are some checks required that can't be done from here.*/}\r\n e.state.id != 4 && e.state.id!=6)}\r\n valueExpr=\"state.id\"\r\n displayExpr=\"state.name\" />\r\n\r\n {hasError ?\r\n
\r\n {props.touched.state && props.errors.state && props.errors.state == \"Requerido\" ?\r\n \"Todos los campos son obligatorios\"\r\n :\r\n changeStateState.error ? changeStateState.result : \"Se han proporcionado datos inválidos\"\r\n }\r\n
:\r\n null\r\n }\r\n
\r\n
\r\n
\r\n \r\n }\r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Switch } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Login } from './components/login/Login';\r\nimport { SessionContext } from './components/context/SessionContext';\r\nimport { PrivateRoute } from './components/routes/PrivateRoute';\r\nimport { PublicRoute } from './components/routes/PublicRoute';\r\nimport { PasswordRecovery } from './components/login/PasswordRecovery';\r\n\r\nimport './custom.css'\r\nimport { ConditionalPrivateRoute } from './components/routes/ConditionalPrivateRoute';\r\nimport { Users } from './components/users/Users';\r\nimport { States } from './components/states/States';\r\nimport { Procedures } from './components/procedures/Procedures';\r\nimport { Procedure } from './components/procedures/Procedure';\r\nimport { Dealers } from './components/dealers/Dealers';\r\nimport { Registries } from './components/registries/Registries';\r\nimport { Registry } from './components/registries/Registry';\r\nimport { History } from './components/history/History';\r\nimport { AssignedRegistries } from './components/registries/AssignedRegistries';\r\n\r\n\r\nconst App = () => {\r\n const [session, setSession] = useState({});\r\n const [loadingSession, setLoadingSession] = useState(true);\r\n\r\n //First session load\r\n useEffect(() => {\r\n const doWork = async () => {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/session`);\r\n const data = await response.json();\r\n if (data.response !== null) {\r\n if (session != undefined && session != null && session.shownInitialAlert != undefined) {\r\n data.response.shownInitialAlert = session.shownInitialAlert;\r\n }\r\n setSession(data.response);\r\n }\r\n setLoadingSession(false);\r\n }\r\n doWork();\r\n }, []);\r\n //Periodically check session\r\n useEffect(() => {\r\n const interval = setInterval(async () => {\r\n //if (session !== undefined && session !== null && session.isActive !== undefined) {\r\n const response = await fetch(`${process.env.PUBLIC_URL}/api/session`);\r\n const data = await response.json();\r\n if (data.response==null || (data.response !== undefined && data.response !== null && data.response.isActive !== undefined && data.response.isActive !== null && !data.response.isActive)) {\r\n setSession({ gestoria: null, user: null, isActive: false, shownInitialAlert: false });\r\n }\r\n\r\n // if (data.response !== null) {\r\n // setSession(data.response);\r\n // } else {\r\n // setSession({ gestoria: null, user:null, isActive: false});\r\n // }\r\n //}\r\n }, 20000);\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n let sessionActive = false;\r\n if (session !== undefined && session !== null && session.isActive !== undefined) sessionActive = session.isActive;\r\n let isAdmin = false;\r\n let hasPerms = false;\r\n if (sessionActive && session.user.userType === 2) isAdmin = true;\r\n if (sessionActive && session.user.userType >= 1) hasPerms = true;\r\n return (\r\n
\r\n {(loadingSession ?\r\n
\r\n :\r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*

Hola amigo!

*/}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {/**/}\r\n {/**/}\r\n {/*Hola amigo!

} />*/}\r\n {/**/}\r\n {/**/}\r\n {/* */}\r\n {/*

Estado!

*/}\r\n {/*
*/}\r\n {/* */}\r\n {/*

Hola amigo!

*/}\r\n {/*
*/}\r\n {/*
*/}\r\n {/*

Hola amigo!

*/}\r\n {/*
*/}\r\n {/*
*/}\r\n {/**/}\r\n {/**/}\r\n {/**/}\r\n
\r\n {/*
*/}\r\n
\r\n )}\r\n
\r\n )\r\n}\r\nexport default App;\r\n\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","//import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n//import * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\n\r\nimport 'devextreme/dist/css/dx.light.css';\r\nimport \"./dx.generic.df-expedientes.css\";\r\nimport \"./index.css\";\r\n\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\n//serviceWorkerRegistration.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}