{"version":3,"sources":["main/Classes/Pesquisa/index.ts","pages/Cadastros/Usuarios/Thunks/index.ts","pages/Hooks/index.ts","main/Classes/TipoFiltroMapper/index.ts","services/ApiHeaders/index.ts","pages/Login/Thunks/index.ts","main/Types/index.ts","pages/Login/Actions/index.ts","main/Classes/TipoFlagMapper/index.ts","main/Store/Hooks/index.ts","pages/Analises/UsoAplicacoes/Types/index.ts","pages/Cadastros/Softwares/Types/index.ts","resources/Utils/DownloadUtils/index.ts","images/eworkoff.svg","resources/Constants/ApiConstants/index.ts","common/Translator/index.tsx","resources/Utils/FunctionsUtils/index.ts","pages/Cadastros/Usuarios/Parser/index.ts","pages/Login/Styles/index.ts","resources/Constants/InfoConstants/index.ts","common/Inputs/Skeleton/DmTextField/index.tsx","pages/Cadastros/Usuarios/Form/AlterarSenha/Common/index.tsx","pages/Cadastros/Usuarios/Types/index.ts","pages/Cadastros/Usuarios/Form/AlterarSenha/Styles/index.ts","services/ApiService/index.ts","pages/Cadastros/Equipes/Types/index.ts","resources/Constants/URL/index.ts","pages/Cadastros/Grupos/Types/index.ts","pages/Cadastros/Usuarios/Actions/index.ts","resources/Utils/DateUtils/index.ts","resources/i18n/index.ts","resources/i18n/locales/index.ts","pages/Login/Types/index.ts","common/Messages/DmToastrMessage/index.tsx","common/Theme/index.ts","common/Menu/DmScrollTop/index.tsx","common/Menu/DmScrollTop/Styles/index.ts","pages/Login/Form/Login/index.tsx","pages/Login/Reducer/index.ts","resources/Utils/BrowserValidator/index.ts","common/Menu/DmAppBar/Styles/index.ts","common/Menu/DmAppBar/index.tsx","common/Menu/DmDrawer/Styles/index.ts","common/Menu/DmDrawer/index.tsx","common/Modal/DmDialog/Styles/index.ts","common/Modal/DmDialog/index.tsx","main/Components/PublicRoute/index.tsx","common/Table/DmTableFooter/Styles/index.ts","common/Table/DmTableFooter/index.tsx","common/Table/DmTableSearch/Styles/index.ts","common/Table/DmTableSearch/index.tsx","common/Table/Localization/Locales/en-US/index.ts","common/Table/Localization/Locales/pt-BR/index.ts","common/Table/DmTable/index.tsx","common/Table/Localization/index.ts","common/Table/DmTableTitle/Styles/index.ts","common/Table/DmTableTitle/index.tsx","main/Classes/PesquisaAnalise/index.ts","pages/Analises/Acessos/Actions/index.ts","pages/Analises/Acessos/ExpandableRow/Styles/index.tsx","pages/Analises/Acessos/Styles/index.ts","pages/Analises/Acessos/Thunks/index.ts","pages/Analises/Acessos/ExpandableRow/index.tsx","pages/Cadastros/Equipes/Actions/index.ts","pages/Cadastros/Equipes/Thunks/index.ts","resources/i18n/date-fns/index.ts","pages/Analises/Acessos/index.tsx","common/Lottie/index.jsx","common/Chart/DmChartInfo/index.tsx","main/Classes/PesquisaUsoApp/index.tsx","pages/Analises/UsoAplicacoes/index.tsx","pages/Analises/UsoAplicacoes/Thunks/index.tsx","pages/Analises/UsoAplicacoes/Actions/index.tsx","common/Buttons/DmConfirmationButton/Styles/index.ts","common/Buttons/DmConfirmationButton/index.tsx","common/Table/DmTableDeleteButton/Styles/index.ts","common/Table/DmTableDeleteButton/index.tsx","common/Table/DmTableEditButton/Styles/index.ts","common/Table/DmTableEditButton/index.tsx","common/Table/DmTableOptions/Styles/index.ts","common/Table/DmTableOptions/index.tsx","common/Form/DmStepButton/Styles/index.ts","common/Form/DmStepButton/index.tsx","pages/Cadastros/Equipes/Styles/index.ts","pages/Cadastros/Equipes/Form/Steps/StepOne/index.tsx","pages/Cadastros/Equipes/Parser/index.ts","pages/Cadastros/Equipes/Form/Steps/StepTwo/index.tsx","pages/Cadastros/Equipes/Form/index.tsx","pages/Cadastros/Equipes/index.tsx","pages/Cadastros/Grupos/Actions/index.ts","common/Inputs/DmInputSwitch/index.tsx","pages/Cadastros/Grupos/Styles/index.ts","pages/Cadastros/Grupos/Form/Steps/StepOne/index.tsx","pages/Cadastros/Grupos/Parser/index.ts","pages/Cadastros/Softwares/Actions/index.ts","pages/Cadastros/Softwares/Thunks/index.ts","pages/Cadastros/Grupos/Form/Steps/StepTwo/index.tsx","pages/Cadastros/Grupos/Thunks/index.ts","pages/Cadastros/Grupos/Form/index.tsx","pages/Cadastros/Grupos/index.tsx","pages/Cadastros/Usuarios/Styles/index.ts","pages/Cadastros/Usuarios/Form/Steps/StepFour/index.tsx","pages/Cadastros/Usuarios/Form/Steps/StepOne/index.tsx","common/Inputs/DmWeekDayPicker/Localization/Icons/en-US/index.ts","common/Inputs/DmWeekDayPicker/Localization/Icons/pt-BR/index.ts","common/Inputs/DmWeekDayPicker/Localization/Locales/en-US/index.ts","common/Inputs/DmWeekDayPicker/Localization/Locales/pt-BR/index.ts","common/Inputs/DmWeekDayPicker/Styles/index.ts","pages/MainPage/Types/index.ts","common/Inputs/DmWeekDayPicker/index.tsx","common/Inputs/DmWeekDayPicker/Localization/index.ts","pages/Cadastros/Usuarios/Form/Steps/StepThree/index.tsx","pages/Cadastros/Usuarios/Form/Steps/StepTwo/index.tsx","pages/Cadastros/Usuarios/Form/index.tsx","pages/Cadastros/Usuarios/index.tsx","pages/Dashboard/index.tsx","main/Routes/index.tsx","pages/Cadastros/Empresas/Parser/index.ts","pages/Cadastros/Empresas/Styles/index.ts","pages/Cadastros/Empresas/Form/Common/index.tsx","pages/Cadastros/Empresas/Thunks/index.ts","pages/Cadastros/Empresas/Actions/index.ts","pages/Cadastros/Empresas/Form/DialogForm/index.tsx","pages/Cadastros/Usuarios/Form/AlterarSenha/DialogForm/index.tsx","pages/MainPage/MainPage.locales.ts","pages/MainPage/Styles/index.ts","resources/Icons/index.ts","resources/Utils/ObjectUtils/index.ts","pages/MainPage/index.tsx","main/App/index.tsx","pages/Cadastros/Empresas/Form/PostLoginForm/index.tsx","pages/Cadastros/Usuarios/Form/AlterarSenha/PostLoginForm/index.tsx","pages/Login/Form/RestaurarSenha/index.tsx","pages/Login/index.tsx","main/Authorization/index.tsx","common/Messages/DmMessage/index.ts","common/Messages/DmTranslatedMessage/index.ts","resources/Utils/StringUtils/index.ts","main/Classes/Paginacao/index.ts","pages/Analises/Acessos/Reducer/index.ts","pages/Analises/UsoAplicacoes/Reducer/index.ts","pages/Cadastros/Empresas/Reducer/index.ts","pages/Cadastros/Equipes/Reducer/index.ts","pages/Cadastros/Grupos/Reducer/index.ts","pages/Cadastros/Softwares/Reducer/index.ts","pages/Cadastros/Usuarios/Reducer/index.ts","main/Reducers/index.ts","main/Store/index.ts","index.tsx","common/Progress/DmProgressBar/Styles/index.ts","common/Progress/DmProgressBar/index.tsx","pages/Analises/Acessos/Types/index.ts","common/Operators/DmIf/index.tsx","pages/Cadastros/Empresas/Types/index.ts"],"names":["Pesquisa","dados","numPagina","itensPorPagina","filtroPadrao","novaOrdenacao","parametrosPersonalizados","Map","Object","assign","this","entries","stringPesquisa","concat","key","value","set","clear","listarUsuarios","pesquisa","dispatch","getState","a","apiService","dmTranslatedMessage","UsuariosActions","query","toString","get","ApiUrls","USUARIOS_URL","response","data","showHttpError","listarUsuariosFiltro","USUARIOS_FILTER_URL","listarUsuariosFiltroSupervisionados","USUARIOS_FILTER_SUPERVISIONADOS_URL","cadastrarUsuario","onSuccess","onError","post","success","atualizarUsuario","put","deletarUsuario","usuario","idUsuario","delete","alterarSenha","USUARIOS_SENHA_URL","useOpenHandler","init","useState","open","setOpen","usePesquisa","debounceTime","setPesquisa","fakePesquisa","setFakePesquisa","handlePesquisa","customFilter","resetFilter","novaPesquisa","clone","clearParametros","debouncedHandlePesquisa","addParametro","useCallback","debounce","params","useInterval","callback","ms","savedCallback","useRef","useEffect","current","id","setInterval","clearInterval","useDocumentListener","event","global","window","document","addEventListener","removeEventListener","TipoFiltroMapper","array","map","item","idRegistro","descricao","Array","parseInt","ApiHeadersNames","ApiHeadersValues","realizarLogin","URLSearchParams","append","LoginRequestData","NOM_LOGIN","DES_SENHA","senha","loginRequest","setHeader","ContentType","ApplicationFormUrlEncoded","LOGIN_URL","login","resetHeaders","authorizeUser","accessToken","loginSuccess","loginFailure","restaurarSenha","RestaurarSenhaRequestData","DES_EMAIL","email","restaurarSenhaRequest","RESTAURAR_SENHA_URL","restaurarSenhaSuccess","restaurarSenhaFailure","realizarLogout","logout","TiposFlags","TiposAcesso","action","LoginTypes","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAILURE","RESTAURAR_SENHA_REQUEST","RESTAURAR_SENHA_SUCCESS","RESTAURAR_SENHA_FAILURE","loginChange","LOGIN_CHANGE","LOGOUT","TipoFlagMapper","flag","ATIVADO","DESATIVADO","useAppSelector","useSelector","useAppDispatch","useDispatch","AnaliseUsoAppTypes","SoftwareTypes","downloadFile","fileName","fileExtension","blob","Blob","fileURL","URL","createObjectURL","fileLink","createElement","setAttribute","body","appendChild","click","removeChild","getFileNameFromHeader","responseHeaders","split","index","lastIndexOf","substring","ApiConstants","CLIENT","CLIENT_ID","Translator","path","t","useTranslation","func","waitTime","lodash","UsuarioParser","horCargaInicio","DateUtils","horCargaFinal","horInicioAlmoco","horFimAlmoco","diasSemana","getWeek","flgAtivo","mapToBoolean","flgRestricaoNoturno","idsGrupos","mapToTipoFiltro","idsSoftwares","codMatricula","nomUsuario","nomLogin","desSenha","desEmail","desPis","qtdHorasDia","qtdHorasMes","flgTipo","getStringWeek","mapToFlag","mapToNumberArray","desNovaSenha","desConfirmaNovaSenha","week","sunday","monday","tuesday","wednesday","thursday","friday","saturday","forEach","useStyles","makeStyles","theme","createStyles","root","height","image","backgroundImage","logo","backgroundRepeat","backgroundColor","palette","grey","backgroundSize","backgroundPosition","paperGrid","display","flexDirection","justifyContent","paper","margin","spacing","alignItems","avatar","secondary","main","form","width","marginTop","inputAdornment","color","text","submit","forgotPassword","alignSelf","footer","DEFAULT_PROTOCOL","location","protocol","InfoConstants","APP_NAME","APP_VERSION","PAGE_NAME","COMPANY_INITIALS","COMPANY_NAME","COMPANY_URL","DmTextField","loading","props","timeOut","setTimeout","autoFocus","getElementById","focus","clearTimeout","animation","fullWidth","undefined","Form","customSubmitButton","firstAccess","classes","user","state","sessao","isLoading","usuarios","validationSchema","useMemo","yup","shape","max","i18n","replace","required","min","when","is","then","notOneOf","oneOf","useForm","mode","reValidateMode","resolver","yupResolver","register","handleSubmit","formState","onSubmit","parseToUsuarioSenha","SubmitButton","disabled","type","variant","className","CancelLoginButton","onClick","cancel","noValidate","autoComplete","name","error","errors","inputRef","label","helperText","message","UsuarioTypes","TipoUsuario","formDialog","marginBottom","formDialogContent","paddingBottom","formTitle","progressContainer","marginRight","ApiService","headers","connection","defaultHeaders","axios","create","baseURL","API_URL","headerName","headerValue","defaults","common","token","bearer","Authorization","url","config","patch","responseType","instance","ApplicationJson","ClientId","EquipeTypes","EMPRESAS_URL","GRUPOS_URL","GRUPOS_FILTER_URL","EQUIPES_URL","EQUIPES_DESATIVAR_URL","EQUIPES_FILTER_SUPERVISIONADOS_URL","SOFTWARES_URL","SOFTWARES_FILTER_URL","ANALISE_ACESSOS_CABECALHO_INDIVIDUAL_URL","ANALISE_ACESSOS_CABECALHO_URL","ANALISE_ACESSOS_DETALHE_URL","ANALISE_ACESSOS_AFD_URL","ANALISE_ACESSOS_EXPORTAR_CSV_URL","ANALISE_ACESSOS_EXPORTAR_CSV_INDIVIDUAL_URL","ANALISE_USO_APPS_COMPARATIVO_URL","ANALISE_DETALHES_NAVEGACAO_EXPORTAR_CSV_URL","GrupoTypes","usuarioGetRequest","USUARIO_GET_REQUEST","usuarioGetSuccess","USUARIO_GET_SUCCESS","usuarioGetFailure","USUARIO_GET_FAILURE","usuarioGetFilterListRequest","USUARIO_GET_FILTER_REQUEST","usuarioGetFilterListSuccess","USUARIO_GET_FILTER_SUCCESS","usuarioGetFilterListFailure","USUARIO_GET_FILTER_FAILURE","usuarioPostRequest","USUARIO_POST_REQUEST","usuarioPostSuccess","USUARIO_POST_SUCCESS","usuarioPostFailure","USUARIO_POST_FAILURE","usuarioPostSenhaRequest","USUARIO_POST_SENHA_REQUEST","usuarioPostSenhaSuccess","USUARIO_POST_SENHA_SUCCESS","usuarioPostSenhaFailure","USUARIO_POST_SENHA_FAILURE","usuarioPutRequest","USUARIO_PUT_REQUEST","usuarioPutSuccess","USUARIO_PUT_SUCCESS","usuarioPutFailure","USUARIO_PUT_FAILURE","usuarioDeleteRequest","USUARIO_DELETE_REQUEST","usuarioDeleteSuccess","USUARIO_DELETE_SUCCESS","usuarioDeleteFailure","USUARIO_DELETE_FAILURE","usuarioSetFormData","USUARIO_SET_FORM_DATA","usuarioResetFormData","USUARIO_RESET_FORM_DATA","usuarioClearFilterList","USUARIO_RESET_FILTER_LIST","usuarioResetModule","USUARIO_RESET_MODULE","toDate","dateString","dateFormat","dateFns","Date","toFormat","date","format","changeDateFormat","dateValue","secondsToHours","sec","d","h","getTime","Math","trunc","getMinutes","includes","getSeconds","secondsToDateString","seconds","floor","minutes","hours","minutesString","padStart","secondsString","daysString","hoursString","maxLength","char","i18nConfig","react","useSuspense","resources","enUsTranslations","en","ptBrTranslations","pt","defaultNS","fallbackLng","use","XHR","initReactI18next","LanguageDetector","EtapasPrimeiroAcesso","DmToastrMessage","newestOnTop","progressBar","preventDuplicates","position","transitionIn","transitionOut","Theme","createTheme","primary","light","dark","tertiary","overrides","MuiChip","minWidth","maxWidth","MuiMenu","maxHeight","MuiFormHelperText","fontStyle","contained","MuiTableRow","hover","MUIDataTableToolbar","filterPaper","MUIDataTableViewCol","title","MUIDataTableFilter","gridListTile","MUIDataTableFilterList","chip","DmScrollTop","shift","trigger","useScrollTrigger","threshold","disableHysteresis","role","anchor","target","ownerDocument","querySelector","scrollIntoView","behavior","block","rootShift","in","size","transition","transitions","easing","easeOut","duration","zIndex","appBar","bottom","left","LoginForm","timeout","placeholder","InputProps","startAdornment","loginJson","localStorage","getItem","INITIAL_STATE","JSON","parse","failure","reducer","stringify","payload","setItem","removeItem","sessionStorage","ValidateIE","documentIE","navigator","userAgent","indexOf","documentMode","drawer","menuButton","flexGrow","userName","marginLeft","titleLink","textDecoration","DmAppBar","menuItems","onClickMenu","anchorEl","setAnchorEl","openUserMenu","currentTarget","closeUserMenu","AppBar","Toolbar","IconButton","edge","Typography","to","Box","Hidden","mdUp","smDown","Menu","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","onClose","keepMounted","MenuItem","flexShrink","drawerPaper","drawerContainer","overflow","growContainer","link","linkActive","logoToolbar","paddingTop","DmDrawerLogo","logoImg","logoImgAlt","Divider","src","alt","DmDrawer","menuList","drawerLogoProps","handleDrawerMenu","useTheme","isDesktop","useMediaQuery","breakpoints","up","useLocation","listSize","length","Drawer","menu","menuIndex","List","menuItem","menuItemIndex","ListItem","button","pathname","ListItemIcon","icon","ListItemText","DmIf","test","dialogTitle","padding","textAlign","DmDialog","children","closeLabel","withCloseButton","closeFunction","Dialog","scroll","DialogTitle","DialogContent","Button","PublicRoute","child","renderChild","rest","accessLevel","userObjects","lstObjetos","page","find","x","nomPagina","flgAcesso","NULO","getAccessLevel","isArray","React","paginationContainer","flex","subtitleContainer","pagination","DmTableFooter","rowCount","rowsPerPage","rowsPerPageOptions","changePage","changeRowsPerPage","textLabels","labels","actualPage","actualCount","from","TableBody","TableRow","TableCell","TextField","select","onChange","e","Pagination","siblingCount","count","ceil","align","displayRows","searchIcon","searchText","down","clearIcon","DmTableSearch","onHide","onSearch","Grow","appear","onKeyDown","locale","toolbar","filter","viewColumns","selectedRows","noMatch","toolTip","next","previous","jumpToPage","search","downloadCsv","print","filterTable","all","reset","titleAria","deleteAria","RowsPerPageOptions","DmTable","onColumnSort","onPageChange","onRowsPerPageChange","tableRef","setTextLabels","setSearchText","handleSearchChange","newTextLabels","language","options","serverSide","filterType","responsive","selectableRows","draggableColumns","enabled","setTableProps","ref","customFooter","customSearchRender","handleSearch","hideSearch","searchPlaceholder","onChangePage","currentPage","onSearchChange","onColumnSortChange","changedColumn","direction","onChangeRowsPerPage","progress","top","DmTableTitle","CircularProgress","DmProgressBar","PesquisaAnalise","dtaInicioFiltro","dtaFimFiltro","analiseAcessoCabecalhoGetRequest","AnaliseAcessoTypes","ANALISE_ACESSO_GET_CABECALHO_REQUEST","analiseAcessoCabecalhoGetSuccess","ANALISE_ACESSO_GET_CABECALHO_SUCCESS","analiseAcessoCabecalhoGetFailure","ANALISE_ACESSO_GET_CABECALHO_FAILURE","analiseAcessoExportarCSVRequest","ANALISE_ACESSO_GET_EXPORTAR_CSV_REQUEST","analiseAcessoExportarCSVSuccess","ANALISE_ACESSO_GET_EXPORTAR_CSV_SUCCESS","analiseAcessoExportarCSVFailure","ANALISE_ACESSO_GET_EXPORTAR_CSV_FAILURE","useClasses","exportButton","toolBarIconButton","dialogContainer","tableContainer","expandedRowLoadingBox","expandedRowCell","border","expandedRowWithIcon","lineHeight","listarCabecalhos","AnaliseAcessosActions","listarCabecalhosIndividual","listarDetalhes","idAcesso","ANALISE_ACESSO_GET_DETALHE_REQUEST","ANALISE_ACESSO_GET_DETALHE_SUCCESS","ANALISE_ACESSO_GET_DETALHE_FAILURE","ExpandableLoadingRow","rowClasses","colSpan","ExpandableRow","rowData","handlerExportarCSVDetalhesNavegacao","ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_REQUEST","ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_SUCCESS","ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_FAILURE","exportarCSVDetalhesNavegacao","resumo","Table","TableHead","lstDetalhes","flgAutorizado","Tooltip","desSoftware","desProcesso","desFornecedor","tempoUsoSegundos","porcentagemUso","toFixed","tempoAutorizado","porcentagemAutorizado","tempoNaoAutorizado","porcentagemNaoAutorizado","endIcon","equipeSetFormData","EQUIPE_SET_FORM_DATA","listarEquipesFiltroSupervisionados","EQUIPE_GET_FILTER_REQUEST","EQUIPE_GET_FILTER_SUCCESS","EQUIPE_GET_FILTER_FAILURE","dateFormatMap","dateTimeFormatMap","getLocale","lang","values","locales","code","getDateFormat","dateTimeFormat","getDateTimeFormat","startMonth","endMonth","dataLabels","dataValues","tiposSituacao","DmDatePicker","minDate","maxDate","startDate","onDateChange","setDate","utils","DateFnsUtils","showTodayButton","okLabel","clearLabel","todayLabel","cancelLabel","invalidDateMessage","maxDateMessage","minDateMessage","getTableColumns","equipes","dates","customDate","isDesktopUser","columns","empty","filterOptions","names","renderValue","customFilterListOptions","render","sort","update","filterList","filterPos","splice","column","customBodyRender","tableMeta","Chip","style","verticalAlign","AnaliseAcessos","analiseAcessos","setCustomDate","setDates","expandedRows","setExpandedRows","tableColumns","setTableColumns","sortOptions","setSortOptions","handleAutomaticUpdate","lstIdAcesso","handleListarCabecalhos","newExpandedRows","preventDefault","pesquisaFiltro","ANALISE_ACESSO_RESET_MODULE","totRegistros","handlePesquisaData","handleDownloadCSV","exportarCSVIndividual","exportarCSV","Grid","xs","download","getPage","sortOrder","customToolbar","sortFilterList","expandableRows","rowsExpanded","renderExpandableRow","rowMeta","dataIndex","lstResumoDetalhes","expandableRowsHeader","expandableRowsOnClick","onRowExpansionChange","currentRows","findIndex","push","handleLoadingDetalhes","onViewColumnsChange","newColumns","onFilterChange","changedColumnIndex","start","end","newDates","columnSort","UncontrolledLottie","Lottie","loadAnimation","container","loadingIndex","animationData","timeLine","aux","mediaUso","arr","i","rows","usoApp","maiorValor","valor","AppUseChart","PesquisaUsoApp","tempoMinimoMedioUso","lstIdEquipes","theFirstDay","inputVariant","AnaliseUsoAplicacoes","typeUser","usuarioSelecionado","setUsuarioSelecionado","equipesSelecionados","setEquipesSelecionados","fullData","analiseUsoApp","auxpesquisa","setAuxPesquisa","handleListarComparativo","ANALISE_USO_APP_GET_COMPARATIVO_REQUEST","ANALISE_USO_APP_GET_COMPARATIVO_SUCCESS","ANALISE_USO_APP_GET_COMPARATIVO_FAILURE","listarComparativo","valueSlider","setValueSlider","handleChangeUsuario","newValue","doPesquisa","toISOString","slice","getListarUsuariosFiltro","getListarEquipesFiltro","handleChangeEquipes","equipe","Paper","elevation","Autocomplete","blurOnSelect","clearOnBlur","selectOnFocus","handleHomeEndKeys","disableCloseOnSelect","getOptionLabel","option","getOptionSelected","renderInput","openText","closeText","clearText","loadingText","noOptionsText","multiple","limitTags","defaultValue","filterSelectedOptions","isNaN","newSliderValue","TableContainer","component","clientHeight","transform","stickyHeader","lstDetalhesUsuario","b","somaTempoUsoSegundos","row","scope","diasUso","tableBody","lstDetalhesEquipe","buttonContainer","iconButton","DmConfirmationButton","buttonLabel","confirmLabel","Icon","onActionConfirm","handleClick","handleClose","handleConfirm","Popover","startIcon","DialogActions","DmTableDeleteButton","info","DmTableEditButton","flexWrap","DmTableOptions","right","buttonsContainer","backButton","DmStepButton","nextLabel","backLabel","hideNextButton","hideBackButton","hideCancelButton","backButtonProps","nextButtonProps","cancelButtonProps","onNext","onBack","onCancel","newButton","disableButton","StepOneForm","handleNext","formData","nomEquipe","desEquipe","defaultValues","novaEquipe","EquipeParser","idsUsuarios","idsSupervisores","idEquipe","StepTwo","editMode","handleBack","carregandoUsuarios","getValues","control","equipeRequest","parseToEquipe","EQUIPE_PUT_REQUEST","EQUIPE_PUT_SUCCESS","EQUIPE_PUT_FAILURE","atualizarEquipe","EQUIPE_POST_REQUEST","EQUIPE_POST_SUCCESS","EQUIPE_POST_FAILURE","cadastrarEquipe","getUsuario","FormControl","FormLabel","filtro","field","renderOption","selected","Checkbox","checked","fontSize","checkedIcon","ChipProps","FormHelperText","steps","setSteps","activeStep","setActiveStep","newSteps","getStepContent","StepOne","Stepper","orientation","Step","StepLabel","StepContent","transitionDuration","tiposStatus","optionsColumn","setCellProps","draggable","customBodyRenderLite","Equipes","setEditMode","dialogOpen","setDialogOpen","EQUIPE_RESET_MODULE","handleListarEquipes","handleDisable","EQUIPE_DISABLE_REQUEST","EQUIPE_DISABLE_SUCCESS","EQUIPE_DISABLE_FAILURE","desativarEquipe","handleDelete","EQUIPE_DELETE_REQUEST","EQUIPE_DELETE_SUCCESS","EQUIPE_DELETE_FAILURE","deletarEquipe","handleDialogOpen","EQUIPE_RESET_FORM_DATA","EQUIPE_GET_REQUEST","EQUIPE_GET_SUCCESS","EQUIPE_GET_FAILURE","listarEquipes","parseToEquipeFormData","handleEdit","fullScreen","grupoSetFormData","GRUPO_SET_FORM_DATA","DmInputSwitch","switchProps","formControlProps","setChecked","FormGroup","Switch","grupo","grupos","nomGrupo","desGrupo","novoGrupo","invalid","GrupoParser","idGrupo","softwareClearFilterList","SOFTWARE_RESET_FILTER_LIST","listarSoftwaresFiltro","SOFTWARE_GET_FILTER_REQUEST","SOFTWARE_GET_FILTER_SUCCESS","SOFTWARE_GET_FILTER_FAILURE","StepTwoForm","softwares","carregandoSoftwares","getListarSoftwaresFiltro","grupoRequest","parseToGrupo","GRUPO_PUT_REQUEST","GRUPO_PUT_SUCCESS","GRUPO_PUT_FAILURE","atualizarGrupo","GRUPO_POST_REQUEST","GRUPO_POST_SUCCESS","GRUPO_POST_FAILURE","cadastrarGrupo","getSoftware","Grupos","GRUPO_RESET_MODULE","handleListarGrupos","GRUPO_GET_REQUEST","GRUPO_GET_SUCCESS","GRUPO_GET_FAILURE","listarGrupos","GRUPO_RESET_FORM_DATA","GRUPO_DELETE_REQUEST","GRUPO_DELETE_SUCCESS","GRUPO_DELETE_FAILURE","deletarGrupo","parseToGrupoFormData","formButtonContainer","formRadioGroup","formRadioButton","formDateTimeBox","StepFourForm","carregandoGrupos","novoUsuario","usuarioRequest","parseToUsuario","getGrupo","nullable","default","icons","Sunday","AlphaSCircle","SundayOutline","AlphaSCircleOutline","Monday","AlphaMCircle","MondayOutline","AlphaMCircleOutline","Tuesday","AlphaTCircle","TuesdayOutline","AlphaTCircleOutline","Wednesday","AlphaWCircle","WednesdayOutline","AlphaWCircleOutline","Thursday","ThursdayOutline","Friday","AlphaFCircle","FridayOutline","AlphaFCircleOutline","Saturday","SaturdayOutline","AlphaDCircle","AlphaDCircleOutline","AlphaQCircle","AlphaQCircleOutline","MenuMapProps","formGroup","checkbox","DmWeekDayPicker","checkboxProps","enUsIcons","ptBrIcons","getIcons","getTextLabels","setValues","handleChange","newValues","StepThreeForm","typeError","watchHorCargaInicio","useWatch","watchHorInicioAlmoco","ampm","as","RadioGroup","FormControlLabel","AMBOS","Radio","PORTAL","DESKTOP","StepThree","StepFour","tiposUsuario","tiposRestricao","diasSemanaOptions","InputLabel","Select","join","input","Input","toUpperCase","Usuarios","setDiasSemana","GRUPO_GET_FILTER_REQUEST","GRUPO_GET_FILTER_SUCCESS","GRUPO_GET_FILTER_FAILURE","listarGruposFiltro","GRUPO_RESET_FILTER_LIST","handleListarUsuarios","parseToUsuarioFormData","Dashboard","Routes","exact","EmpresaParser","empresa","codEmpresa","desRazaoSocial","desNomeFantasia","codCnpj","desCei","codRep","empresas","EmpresaTypes","EMPRESA_GET_REQUEST","EMPRESA_GET_SUCCESS","EMPRESA_GET_FAILURE","EMPRESA_RESET_MODULE","parseToEmpresaFormData","EMPRESA_SET_FORM_DATA","empresaSetFormData","newData","parseToEmpresa","EMPRESA_PUT_REQUEST","EMPRESA_PUT_SUCCESS","EMPRESA_PUT_FAILURE","atualizarEmpresa","DialogForm","MenusLocales","Parametros","MeusAcessos","mainContainer","mainContainerShift","aboutDialogContainer","MenuIcons","Default","sortCollection","collection","sortFields","sortBy","MainPage","setMenu","contextMenu","setContextMenu","drawerOpen","handleDrawer","infoDialogOpen","handleInfoDialog","empresaDialogOpen","handleEmpresaDialog","alterarSenhaDialogOpen","handleAlterarSenhaDialog","createContextMenu","createMenu","groupField","groups","GROUP_PROP","groupBy","keys","menuListItems","objects","SORT_PROP","flgAdministrador","SIM","InfoDialog","versaoApi","EmpresaDialog","AlterarSenhaDialog","ScrollTop","App","PostLoginForm","sm","md","square","Avatar","newUser","flgPrimeiroAcesso","EMPRESA_CONFIGURADA","PERFIL_CONFIGURADO","RestaurarSenhaForm","mt","InputAdornment","Login","isLogin","handleLogin","RestaurarSenha","Link","href","getFullYear","DmMessage","toastr","toastrOptions","warning","removeOnHoverTimeOut","DmTranslatedMessage","defaultErrorTitle","defaultErrorMessage","titlePath","errorObject","errorMessage","mensagemOperacao","trimmed","trim","isEmpty","Paginacao","numRegInicial","numRegFinal","getValoresPadrao","paginacao","ANALISE_USO_APP_RESET_MODULE","pop","EMPRESA_RESET_FORM_DATA","EQUIPE_RESET_FILTER_LIST","reducers","combineReducers","ToastrReducer","LoginReducer","EmpresasReducer","UsuariosReducer","GruposReducer","EquipesReducer","SoftwaresReducer","AnaliseUsoAppReducer","AnaliseAcessoReducer","AppStore","createStore","composeWithDevTools","applyMiddleware","promise","thunk","withExtraArgument","getInstance","ReactDOM","StrictMode","store","LinearProgress"],"mappings":"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","file":"static/js/main.2ab14f91.chunk.js","sourcesContent":["import { InfoPesquisa } from 'src/main/Types';\r\n\r\nclass Pesquisa implements InfoPesquisa {\r\n public numPagina = 1;\r\n public itensPorPagina = 10;\r\n public filtroPadrao = '';\r\n public novaOrdenacao = '';\r\n\r\n public parametrosPersonalizados = new Map();\r\n\r\n public constructor(dados?: Partial) {\r\n if (dados) {\r\n Object.assign(this, dados);\r\n }\r\n }\r\n\r\n public clone(): InfoPesquisa {\r\n const entries = this.parametrosPersonalizados.entries();\r\n\r\n return new Pesquisa({\r\n numPagina: this.numPagina,\r\n itensPorPagina: this.itensPorPagina,\r\n filtroPadrao: this.filtroPadrao,\r\n novaOrdenacao: this.novaOrdenacao,\r\n\r\n parametrosPersonalizados: new Map(entries),\r\n });\r\n }\r\n\r\n public getPage(): number {\r\n if (this.numPagina) {\r\n return this.numPagina > 1 ? this.numPagina - 1 : 0;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public toString(): string {\r\n let stringPesquisa = '';\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `?numPagina=${this.numPagina > 0 ? this.numPagina : ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&itensPorPagina=${this.itensPorPagina > 0 ? this.itensPorPagina : ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&filtroPadrao=${this.filtroPadrao || ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&novaOrdenacao=${this.novaOrdenacao || ''}`\r\n );\r\n\r\n for (const [key, value] of this.parametrosPersonalizados) {\r\n stringPesquisa = stringPesquisa.concat(`&${key}=${value || ''}`);\r\n }\r\n\r\n return stringPesquisa;\r\n }\r\n\r\n public addParametro(key: string, value: string): void {\r\n this.parametrosPersonalizados.set(key, value);\r\n }\r\n\r\n public clearParametros(): void {\r\n this.parametrosPersonalizados.clear();\r\n }\r\n}\r\n\r\nexport default Pesquisa;\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisa, RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport * as UsuariosActions from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport {\r\n Usuario,\r\n UsuarioSenha,\r\n UsuarioAction,\r\n} from 'src/pages/Cadastros/Usuarios/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const listarUsuarios = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.USUARIOS_URL}/${query}`\r\n );\r\n\r\n return dispatch(UsuariosActions.usuarioGetSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarUsuariosFiltro = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioGetFilterListRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.USUARIOS_FILTER_URL}/${query}`\r\n );\r\n\r\n return dispatch(\r\n UsuariosActions.usuarioGetFilterListSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioGetFilterListFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarUsuariosFiltroSupervisionados = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioGetFilterListRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.USUARIOS_FILTER_SUPERVISIONADOS_URL}/${query}`\r\n );\r\n\r\n return dispatch(\r\n UsuariosActions.usuarioGetFilterListSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioGetFilterListFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const cadastrarUsuario = (\r\n dados: Usuario,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioPostRequest());\r\n\r\n const response = await apiService.post(\r\n ApiUrls.USUARIOS_URL,\r\n dados\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(UsuariosActions.usuarioPostSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioPostFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const atualizarUsuario = (\r\n dados: Usuario,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioPutRequest());\r\n\r\n const response = await apiService.put(\r\n ApiUrls.USUARIOS_URL,\r\n dados\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(UsuariosActions.usuarioPutSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioPutFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const deletarUsuario = (\r\n usuario: Usuario,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioDeleteRequest());\r\n\r\n const query = `?idUsuario=${usuario.idUsuario}`;\r\n const response = await apiService.delete(\r\n `${ApiUrls.USUARIOS_URL}/${query}`\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(UsuariosActions.usuarioDeleteSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioDeleteFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const alterarSenha = (\r\n dados: UsuarioSenha,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(UsuariosActions.usuarioPostSenhaRequest());\r\n\r\n const response = await apiService.post(\r\n ApiUrls.USUARIOS_SENHA_URL,\r\n dados\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(UsuariosActions.usuarioPostSenhaSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(UsuariosActions.usuarioPostSenhaFailure());\r\n }\r\n };\r\n};\r\n","import { useEffect, useRef, useState, useCallback } from 'react';\r\n\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport { InfoPesquisa } from 'src/main/Types';\r\nimport { debounce } from 'src/resources/Utils/FunctionsUtils';\r\n\r\n// Definição de tipos auxiliares.\r\ntype PesquisaHandlerParms = {\r\n key?: string;\r\n value?: number | string;\r\n customFilter?: boolean;\r\n resetFilter?: boolean;\r\n};\r\n\r\ntype PesquisaHandler = ({\r\n key,\r\n value,\r\n customFilter: custom,\r\n resetFilter: reset,\r\n}: PesquisaHandlerParms) => void;\r\n\r\nexport function useOpenHandler(\r\n init?: boolean\r\n): [open: boolean, handleOpen: (open?: boolean) => void] {\r\n const [open, setOpen] = useState(init ?? false);\r\n\r\n const handleOpen = (value?: boolean) => {\r\n // Previne que componentes que herdem a função passem tipos incorretos.\r\n const newOpen = typeof value !== 'boolean' ? !open : value;\r\n\r\n setOpen(newOpen);\r\n };\r\n\r\n return [open, handleOpen];\r\n}\r\n\r\nexport function usePesquisa(\r\n init: Partial,\r\n debounceTime = 300\r\n): [InfoPesquisa, PesquisaHandler] {\r\n const [pesquisa, setPesquisa] = useState(new Pesquisa(init));\r\n const [fakePesquisa, setFakePesquisa] = useState(\r\n new Pesquisa(init)\r\n );\r\n\r\n const handlePesquisa = ({\r\n key,\r\n value,\r\n customFilter,\r\n resetFilter,\r\n }: PesquisaHandlerParms) => {\r\n if (resetFilter) {\r\n const novaPesquisa = fakePesquisa.clone();\r\n novaPesquisa.numPagina = 1;\r\n\r\n novaPesquisa.clearParametros();\r\n setFakePesquisa(novaPesquisa);\r\n debouncedHandlePesquisa(novaPesquisa);\r\n\r\n return;\r\n }\r\n\r\n if (\r\n !key ||\r\n (key === 'filtroPadrao' && !value && !fakePesquisa.filtroPadrao)\r\n ) {\r\n return;\r\n }\r\n\r\n const novaPesquisa = fakePesquisa.clone();\r\n novaPesquisa.numPagina = 1;\r\n\r\n if (customFilter) {\r\n novaPesquisa.addParametro(key, value ? value.toString() : '');\r\n } else {\r\n novaPesquisa[key as keyof InfoPesquisa] = value as never;\r\n }\r\n\r\n setFakePesquisa(novaPesquisa);\r\n debouncedHandlePesquisa(novaPesquisa);\r\n };\r\n\r\n const debouncedHandlePesquisa = useCallback(\r\n debounce((params: InfoPesquisa) => setPesquisa(params), debounceTime),\r\n [pesquisa]\r\n );\r\n\r\n return [pesquisa, handlePesquisa];\r\n}\r\n\r\nexport function useInterval(callback: () => void, ms: number): void {\r\n const savedCallback = useRef<() => void>();\r\n\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n useEffect(() => {\r\n function tick() {\r\n savedCallback.current?.();\r\n }\r\n\r\n const id = setInterval(tick, ms);\r\n return () => {\r\n clearInterval(id);\r\n };\r\n }, [callback, ms]);\r\n}\r\n\r\nexport function useDocumentListener(\r\n event: string,\r\n callback: (event: Event) => void\r\n): void {\r\n useEffect(() => {\r\n global.window.document.addEventListener(event, callback);\r\n\r\n return () => {\r\n global.window.document.removeEventListener(event, callback);\r\n };\r\n }, [event, callback]);\r\n}\r\n","import { TipoFiltro } from 'src/main/Types';\r\n\r\nabstract class TipoFiltroMapper {\r\n public static mapToTipoFiltro(\r\n array?: Array\r\n ): Array {\r\n if (!array) {\r\n return new Array();\r\n }\r\n\r\n return array.map((item) => {\r\n return {\r\n idRegistro: `${item}`,\r\n descricao: '',\r\n };\r\n });\r\n }\r\n\r\n public static mapToStringArray(array?: Array): Array {\r\n if (!array) {\r\n return new Array();\r\n }\r\n\r\n return array.map((item) => item.idRegistro);\r\n }\r\n\r\n public static mapToNumberArray(array?: Array): Array {\r\n if (!array) {\r\n return new Array();\r\n }\r\n\r\n return array.map((item) => parseInt(item.idRegistro));\r\n }\r\n}\r\n\r\nexport default TipoFiltroMapper;\r\n","export enum ApiHeadersNames {\r\n ContentType = 'Content-Type',\r\n Authorization = 'Authorization',\r\n\r\n ClientId = 'client_id',\r\n}\r\n\r\nexport enum ApiHeadersValues {\r\n ApplicationJson = 'Application/json; charset=utf-8;',\r\n ApplicationFormUrlEncoded = 'Application/x-www-form-urlencoded',\r\n}\r\n\r\nexport interface Header {\r\n [key: string]: string;\r\n}\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport {\r\n loginRequest,\r\n loginSuccess,\r\n loginFailure,\r\n restaurarSenhaRequest,\r\n restaurarSenhaSuccess,\r\n restaurarSenhaFailure,\r\n logout,\r\n} from 'src/pages/Login/Actions';\r\nimport {\r\n Login,\r\n LoginAction,\r\n LoginFormData,\r\n LoginRequestData,\r\n RestaurarSenhaRequestData,\r\n RestaurarSenhaFormData,\r\n} from 'src/pages/Login/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\nimport { ApiHeadersNames, ApiHeadersValues } from 'src/services/ApiHeaders';\r\n\r\nexport const realizarLogin = (\r\n data: LoginFormData\r\n): AppThunk> => {\r\n const dados = new URLSearchParams();\r\n dados.append(LoginRequestData.NOM_LOGIN, data.usuario);\r\n dados.append(LoginRequestData.DES_SENHA, data.senha);\r\n\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(loginRequest());\r\n\r\n apiService.setHeader(\r\n ApiHeadersNames.ContentType,\r\n ApiHeadersValues.ApplicationFormUrlEncoded\r\n );\r\n\r\n const response = await apiService.post(ApiUrls.LOGIN_URL, dados);\r\n const login = response.data;\r\n\r\n apiService.resetHeaders();\r\n apiService.authorizeUser(login.accessToken);\r\n\r\n return dispatch(loginSuccess(login));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error, 'loginPage.errFalhaLogin');\r\n\r\n return dispatch(loginFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const restaurarSenha = (\r\n data: RestaurarSenhaFormData,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n const dados = new URLSearchParams();\r\n dados.append(RestaurarSenhaRequestData.NOM_LOGIN, data.usuario);\r\n dados.append(RestaurarSenhaRequestData.DES_EMAIL, data.email);\r\n\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(restaurarSenhaRequest());\r\n\r\n apiService.setHeader(\r\n ApiHeadersNames.ContentType,\r\n ApiHeadersValues.ApplicationFormUrlEncoded\r\n );\r\n\r\n const response = await apiService.post(\r\n ApiUrls.RESTAURAR_SENHA_URL,\r\n dados\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(restaurarSenhaSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(restaurarSenhaFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const realizarLogout = (): AppThunk> => {\r\n return async (dispatch) => {\r\n return dispatch(logout());\r\n };\r\n};\r\n","import { AnaliseUsoApp } from 'src/pages/Analises/UsoAplicacoes/Types';\r\n\r\nexport enum TiposFlags {\r\n SIM = 'S',\r\n NAO = 'N',\r\n\r\n ATIVADO = 'S',\r\n DESATIVADO = 'N',\r\n}\r\n\r\nexport enum TiposAcesso {\r\n NULO = 'N',\r\n CONSULTA = 'C',\r\n ALTERACAO = 'A',\r\n}\r\n\r\nexport interface InfoPaginacao {\r\n numRegInicial?: number;\r\n numRegFinal?: number;\r\n numPagina?: number;\r\n totRegistros?: number;\r\n itensPorPagina?: number;\r\n}\r\n\r\nexport interface InfoPesquisa {\r\n numPagina?: number;\r\n itensPorPagina?: number;\r\n filtroPadrao?: string;\r\n novaOrdenacao?: string;\r\n parametrosPersonalizados?: Map;\r\n clone(): InfoPesquisa;\r\n getPage(): number;\r\n toString(): string;\r\n addParametro(key: string, value: string): void;\r\n clearParametros(): void;\r\n}\r\n\r\nexport interface InfoPesquisaAnalise extends InfoPesquisa {\r\n dtaInicioFiltro?: string;\r\n dtaFimFiltro?: string;\r\n clone(): InfoPesquisaAnalise;\r\n}\r\n\r\nexport interface InfoPesquisaUsoApp {\r\n dtaInicioFiltro?: string;\r\n dtaFimFiltro?: string;\r\n novaOrdenacao?: string;\r\n idUsuario?: number;\r\n tempoMinimoMedioUso?: number;\r\n lstIdEquipes?: string;\r\n parametrosPersonalizados?: Map;\r\n clone(): InfoPesquisaUsoApp;\r\n toString(): string;\r\n addParametro(key: string, value: string): void;\r\n clearParametros(): void;\r\n}\r\n\r\nexport interface RespostaApi {\r\n dados: T;\r\n paginacao?: InfoPaginacao;\r\n}\r\n\r\nexport interface TipoFiltro {\r\n idRegistro: string;\r\n descricao: string;\r\n}\r\n\r\nexport interface ResponseUsoApp {\r\n lstDetalhesUsuario: Array;\r\n lstDetalhesEquipe: Array;\r\n}\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { Login, LoginTypes, LoginAction } from 'src/pages/Login/Types';\r\n\r\nexport const loginRequest = (): LoginAction => action(LoginTypes.LOGIN_REQUEST);\r\n\r\nexport const loginSuccess = (data: Login): LoginAction =>\r\n action(LoginTypes.LOGIN_SUCCESS, data);\r\n\r\nexport const loginFailure = (): LoginAction => action(LoginTypes.LOGIN_FAILURE);\r\n\r\nexport const restaurarSenhaRequest = (): LoginAction =>\r\n action(LoginTypes.RESTAURAR_SENHA_REQUEST);\r\n\r\nexport const restaurarSenhaSuccess = (): LoginAction =>\r\n action(LoginTypes.RESTAURAR_SENHA_SUCCESS);\r\n\r\nexport const restaurarSenhaFailure = (): LoginAction =>\r\n action(LoginTypes.RESTAURAR_SENHA_FAILURE);\r\n\r\nexport const loginChange = (data: Login): LoginAction =>\r\n action(LoginTypes.LOGIN_CHANGE, data);\r\n\r\nexport const logout = (): LoginAction => action(LoginTypes.LOGOUT);\r\n","import { TiposFlags } from 'src/main/Types';\r\n\r\nabstract class TipoFlagMapper {\r\n public static mapToBoolean(flag?: string): boolean {\r\n return flag === TiposFlags.ATIVADO;\r\n }\r\n\r\n public static mapToFlag(value?: boolean): string {\r\n return value ? TiposFlags.ATIVADO : TiposFlags.DESATIVADO;\r\n }\r\n}\r\n\r\nexport default TipoFlagMapper;\r\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { AppState, AppDispatch } from 'src/main/Store';\r\n\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n\r\nexport const useAppDispatch = (): AppDispatch => useDispatch();\r\n","import { Action } from 'redux';\r\n\r\nimport { ResponseUsoApp } from 'src/main/Types';\r\n\r\nexport enum AnaliseUsoAppTypes {\r\n ANALISE_USO_APP_GET_COMPARATIVO_REQUEST = '@analiseUsoApps/ANALISE_USO_APP_GET_COMPARATIVO_REQUEST',\r\n ANALISE_USO_APP_GET_COMPARATIVO_SUCCESS = '@analiseUsoApps/ANALISE_USO_APP_GET_COMPARATIVO_SUCCESS',\r\n ANALISE_USO_APP_GET_COMPARATIVO_FAILURE = '@analiseUsoApps/ANALISE_USO_APP_GET_COMPARATIVO_FAILURE',\r\n\r\n ANALISE_USO_APP_RESET_MODULE = '@analiseUsoApps/ANALISE_USO_APP_RESET_MODULE',\r\n}\r\n\r\nexport interface AnaliseUsoApp {\r\n desFornecedor: string;\r\n desSoftware: string;\r\n desProcesso: string;\r\n somaTempoUsoSegundos: number;\r\n diasUso: number;\r\n mediaUso: number;\r\n}\r\n\r\nexport interface AnaliseUsoAppState {\r\n readonly data: ResponseUsoApp;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface AnaliseUsoAppAction extends Action {\r\n type: AnaliseUsoAppTypes;\r\n payload?: ResponseUsoApp;\r\n}\r\n","import { Action } from 'redux';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\n\r\nexport enum SoftwareTypes {\r\n SOFTWARE_GET_FILTER_REQUEST = '@softwares/SOFTWARE_GET_FILTER_REQUEST',\r\n SOFTWARE_GET_FILTER_SUCCESS = '@softwares/SOFTWARE_GET_FILTER_SUCCESS',\r\n SOFTWARE_GET_FILTER_FAILURE = '@softwares/SOFTWARE_GET_FILTER_FAILURE',\r\n\r\n SOFTWARE_RESET_FILTER_LIST = '@softwares/SOFTWARE_RESET_FILTER_LIST',\r\n}\r\n\r\nexport interface SoftwareState {\r\n readonly filterList: Array;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface SoftwareAction extends Action {\r\n type: SoftwareTypes;\r\n payload?: RespostaApi>;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n\r\nexport function downloadFile(\r\n data: any,\r\n fileName: string | null,\r\n fileExtension: string\r\n): void {\r\n const blob = new Blob([data]);\r\n\r\n const fileURL = global.window.URL.createObjectURL(blob);\r\n const fileLink = global.window.document.createElement('a');\r\n\r\n fileLink.setAttribute('href', fileURL);\r\n fileLink.setAttribute(\r\n 'download',\r\n `${fileName ?? 'download'}.${fileExtension}`\r\n );\r\n\r\n global.window.document.body.appendChild(fileLink);\r\n\r\n fileLink.click();\r\n\r\n global.window.document.body.removeChild(fileLink);\r\n}\r\n\r\nexport function getFileNameFromHeader(responseHeaders: any): string | null {\r\n try {\r\n const fileNameheader = responseHeaders['content-disposition'] as string;\r\n const fileName = fileNameheader.split(\"''\")[1];\r\n const index = fileName.lastIndexOf('.');\r\n\r\n return fileName.substring(0, index);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/eworkoff.1df67ce6.svg\";","export const ApiConstants = {\r\n CLIENT: 'eworkoff_user',\r\n CLIENT_ID: 'LZNhipN/INInCDmmw+gPR2BX6EYVMiMVjdAmNOcXgO4=',\r\n};\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ninterface TranslatorProps {\r\n path: string;\r\n}\r\n\r\nconst Translator: React.FC = ({ path }) => {\r\n const { t } = useTranslation();\r\n\r\n return t(path);\r\n};\r\n\r\nexport default Translator;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n\r\nimport lodash from 'lodash';\r\n\r\nexport function debounce any>(\r\n func: T,\r\n waitTime: number\r\n) {\r\n return lodash.debounce(func, waitTime);\r\n}\r\n","import { DmWeekDayPickerValue } from 'src/common/Inputs/DmWeekDayPicker';\r\nimport TipoFiltroMapper from 'src/main/Classes/TipoFiltroMapper';\r\nimport TipoFlagMapper from 'src/main/Classes/TipoFlagMapper';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport {\r\n UsuarioSenha,\r\n UsuarioSenhaFormData,\r\n Usuario,\r\n UsuarioFormData,\r\n} from 'src/pages/Cadastros/Usuarios/Types';\r\nimport * as DateUtils from 'src/resources/Utils/DateUtils';\r\n\r\nabstract class UsuarioParser {\r\n public static parseToUsuarioFormData(usuario: Usuario): UsuarioFormData {\r\n const horCargaInicio = DateUtils.toDate(usuario.horCargaInicio, 'HH:mm');\r\n const horCargaFinal = DateUtils.toDate(usuario.horCargaFinal, 'HH:mm');\r\n\r\n const horInicioAlmoco = DateUtils.toDate(usuario.horInicioAlmoco, 'HH:mm');\r\n const horFimAlmoco = DateUtils.toDate(usuario.horFimAlmoco, 'HH:mm');\r\n\r\n const diasSemana = UsuarioParser.getWeek(usuario.diasSemana);\r\n\r\n const flgAtivo = TipoFlagMapper.mapToBoolean(usuario.flgAtivo);\r\n const flgRestricaoNoturno = TipoFlagMapper.mapToBoolean(\r\n usuario.flgRestricaoNoturno\r\n );\r\n\r\n const idsGrupos: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n usuario.idsGrupos\r\n );\r\n const idsSoftwares: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n usuario.idsSoftwares\r\n );\r\n\r\n return {\r\n idUsuario: usuario.idUsuario,\r\n codMatricula: usuario.codMatricula,\r\n nomUsuario: usuario.nomUsuario,\r\n nomLogin: usuario.nomLogin,\r\n desSenha: usuario.desSenha,\r\n desEmail: usuario.desEmail,\r\n desPis: usuario.desPis,\r\n horCargaInicio: horCargaInicio,\r\n horCargaFinal: horCargaFinal,\r\n qtdHorasDia: usuario.qtdHorasDia,\r\n qtdHorasMes: usuario.qtdHorasMes,\r\n horInicioAlmoco: horInicioAlmoco,\r\n horFimAlmoco: horFimAlmoco,\r\n diasSemana: diasSemana,\r\n flgRestricaoNoturno: flgRestricaoNoturno,\r\n flgTipo: usuario.flgTipo,\r\n flgAtivo: flgAtivo,\r\n idsGrupos: idsGrupos,\r\n idsSoftwares: idsSoftwares,\r\n };\r\n }\r\n\r\n public static parseToUsuario(usuario: UsuarioFormData): Usuario {\r\n const horCargaInicio =\r\n DateUtils.toFormat(usuario.horCargaInicio, 'HH:mm') || '';\r\n const horCargaFinal =\r\n DateUtils.toFormat(usuario.horCargaFinal, 'HH:mm') || '';\r\n\r\n const horInicioAlmoco =\r\n DateUtils.toFormat(usuario.horInicioAlmoco, 'HH:mm') || '';\r\n const horFimAlmoco =\r\n DateUtils.toFormat(usuario.horFimAlmoco, 'HH:mm') || '';\r\n\r\n const diasSemana = UsuarioParser.getStringWeek(usuario.diasSemana);\r\n\r\n const flgAtivo = TipoFlagMapper.mapToFlag(usuario.flgAtivo);\r\n const flgRestricaoNoturno = TipoFlagMapper.mapToFlag(\r\n usuario.flgRestricaoNoturno\r\n );\r\n\r\n const idsGrupos: Array = TipoFiltroMapper.mapToNumberArray(\r\n usuario.idsGrupos\r\n );\r\n const idsSoftwares: Array = TipoFiltroMapper.mapToNumberArray(\r\n usuario.idsSoftwares\r\n );\r\n\r\n return {\r\n idUsuario: usuario.idUsuario,\r\n codMatricula: usuario.codMatricula,\r\n nomUsuario: usuario.nomUsuario,\r\n nomLogin: usuario.nomLogin,\r\n desSenha: usuario.desSenha,\r\n desEmail: usuario.desEmail,\r\n desPis: usuario.desPis,\r\n horCargaInicio: horCargaInicio,\r\n horCargaFinal: horCargaFinal,\r\n qtdHorasDia: usuario.qtdHorasDia,\r\n qtdHorasMes: usuario.qtdHorasMes,\r\n horInicioAlmoco: horInicioAlmoco,\r\n horFimAlmoco: horFimAlmoco,\r\n diasSemana: diasSemana,\r\n flgRestricaoNoturno: flgRestricaoNoturno,\r\n flgTipo: usuario.flgTipo,\r\n flgAtivo: flgAtivo,\r\n idsGrupos: idsGrupos,\r\n idsSoftwares: idsSoftwares,\r\n };\r\n }\r\n\r\n public static parseToUsuarioSenhaFormData(\r\n usuario: UsuarioSenha\r\n ): UsuarioSenhaFormData {\r\n return {\r\n idUsuario: usuario.idUsuario,\r\n nomLogin: usuario.nomLogin,\r\n desSenha: usuario.desSenha,\r\n desNovaSenha: usuario.desNovaSenha,\r\n desConfirmaNovaSenha: usuario.desConfirmaNovaSenha,\r\n };\r\n }\r\n\r\n public static parseToUsuarioSenha(\r\n usuario: UsuarioSenhaFormData\r\n ): UsuarioSenha {\r\n return {\r\n idUsuario: usuario.idUsuario,\r\n nomLogin: usuario.nomLogin,\r\n desSenha: usuario.desSenha,\r\n desNovaSenha: usuario.desNovaSenha,\r\n desConfirmaNovaSenha: usuario.desConfirmaNovaSenha,\r\n };\r\n }\r\n\r\n private static getWeek(value?: string): DmWeekDayPickerValue {\r\n const week: DmWeekDayPickerValue = {\r\n sunday: false,\r\n monday: false,\r\n tuesday: false,\r\n wednesday: false,\r\n thursday: false,\r\n friday: false,\r\n saturday: false,\r\n };\r\n\r\n if (!value) {\r\n return week;\r\n }\r\n\r\n value.split(';').forEach((item) => {\r\n switch (item) {\r\n case 'DOM':\r\n week.sunday = true;\r\n break;\r\n case 'SEG':\r\n week.monday = true;\r\n break;\r\n case 'TER':\r\n week.tuesday = true;\r\n break;\r\n case 'QUA':\r\n week.wednesday = true;\r\n break;\r\n case 'QUI':\r\n week.thursday = true;\r\n break;\r\n case 'SEX':\r\n week.friday = true;\r\n break;\r\n case 'SAB':\r\n week.saturday = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n return week;\r\n }\r\n\r\n private static getStringWeek(value?: DmWeekDayPickerValue): string {\r\n let week = '';\r\n\r\n if (!value) {\r\n return week;\r\n }\r\n\r\n if (value.sunday) {\r\n week = week.concat('DOM;');\r\n }\r\n\r\n if (value.monday) {\r\n week = week.concat('SEG;');\r\n }\r\n\r\n if (value.tuesday) {\r\n week = week.concat('TER;');\r\n }\r\n\r\n if (value.wednesday) {\r\n week = week.concat('QUA;');\r\n }\r\n\r\n if (value.thursday) {\r\n week = week.concat('QUI;');\r\n }\r\n\r\n if (value.friday) {\r\n week = week.concat('SEX;');\r\n }\r\n\r\n if (value.saturday) {\r\n week = week.concat('SAB;');\r\n }\r\n\r\n return week;\r\n }\r\n}\r\n\r\nexport default UsuarioParser;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport logo from 'src/images/eworkoff.svg';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n height: '100vh',\r\n },\r\n image: {\r\n backgroundImage: `url(${logo})`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundColor: theme.palette.grey[50],\r\n backgroundSize: '90%',\r\n backgroundPosition: 'center',\r\n },\r\n paperGrid: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n },\r\n paper: {\r\n margin: theme.spacing(8, 4),\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: '100%',\r\n marginTop: theme.spacing(1),\r\n },\r\n inputAdornment: {\r\n color: theme.palette.text.secondary,\r\n },\r\n submit: {\r\n margin: theme.spacing(1, 0, 1),\r\n },\r\n forgotPassword: {\r\n alignSelf: 'flex-end',\r\n },\r\n footer: {\r\n marginTop: theme.spacing(4),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","const DEFAULT_PROTOCOL = global.window.document.location.protocol;\r\n\r\nexport const InfoConstants = {\r\n APP_NAME: 'E-WorkOff',\r\n APP_VERSION: '01.00.00.0001',\r\n PAGE_NAME: 'eworkoff_page_name',\r\n COMPANY_INITIALS: 'W',\r\n COMPANY_NAME: 'E-WorkOff',\r\n COMPANY_URL: `${DEFAULT_PROTOCOL}//e-workoff.com/`,\r\n};\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { TextField, TextFieldProps } from '@material-ui/core';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\n\r\nexport type DmTextFieldProps = TextFieldProps & {\r\n loading?: boolean;\r\n};\r\n\r\nconst DmTextField: React.FC = ({\r\n loading,\r\n ...props\r\n}: DmTextFieldProps) => {\r\n useEffect(() => {\r\n const timeOut = setTimeout(() => {\r\n if (props.id && props.autoFocus && !loading) {\r\n global.window.document.getElementById(props.id)?.focus();\r\n }\r\n }, 100);\r\n\r\n return () => {\r\n clearTimeout(timeOut);\r\n };\r\n }, [loading]);\r\n\r\n if (loading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default DmTextField;\r\n","import React, { Fragment, ReactElement, useEffect, useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Button, TextField } from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/Styles';\r\nimport UsuarioParser from 'src/pages/Cadastros/Usuarios/Parser';\r\nimport { alterarSenha } from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport { UsuarioSenhaFormData } from 'src/pages/Cadastros/Usuarios/Types';\r\nimport { realizarLogout } from 'src/pages/Login/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n onSuccess?: () => void;\r\n customSubmitButton?: (isLoading: boolean) => ReactElement;\r\n firstAccess?: boolean;\r\n}\r\n\r\nconst Form: React.FC = ({\r\n onSuccess,\r\n customSubmitButton,\r\n firstAccess,\r\n}: FormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const user = useAppSelector((state) => state.sessao.data);\r\n const isLoading = useAppSelector((state) => state.usuarios.loading);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n nomLogin: yup\r\n .string()\r\n .max(50, i18n.t('common.errMaximoNCaracteres').replace('{0}', '50'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desSenha: yup\r\n .string()\r\n .max(30, i18n.t('common.errMaximoNCaracteres').replace('{0}', '30'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desNovaSenha: yup\r\n .string()\r\n .min(8, i18n.t('common.errMinimoNCaracteres').replace('{0}', '8'))\r\n .max(30, i18n.t('common.errMaximoNCaracteres').replace('{0}', '30'))\r\n .when('desSenha', {\r\n is: (value: string) => !!value,\r\n then: yup\r\n .string()\r\n .min(8, i18n.t('common.errMinimoNCaracteres').replace('{0}', '8'))\r\n .max(\r\n 30,\r\n i18n.t('common.errMaximoNCaracteres').replace('{0}', '30')\r\n )\r\n .notOneOf(\r\n [yup.ref('desSenha')],\r\n i18n.t('usuariosPage.errSenhasDiferentes')\r\n )\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n })\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desConfirmaNovaSenha: yup\r\n .string()\r\n .oneOf(\r\n [yup.ref('desNovaSenha')],\r\n i18n.t('usuariosPage.errSenhasIguais')\r\n )\r\n .min(8, i18n.t('common.errMinimoNCaracteres').replace('{0}', '8'))\r\n .max(30, i18n.t('common.errMaximoNCaracteres').replace('{0}', '30'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, formState } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n useEffect(() => {\r\n const timeOut = setTimeout(() => {\r\n global.window.document.getElementById('nomLogin')?.focus();\r\n }, 100);\r\n\r\n return () => {\r\n clearTimeout(timeOut);\r\n };\r\n }, []);\r\n\r\n const onSubmit = handleSubmit((data: UsuarioSenhaFormData) => {\r\n const usuario = { ...data, idUsuario: user?.idUsuario };\r\n const dados = UsuarioParser.parseToUsuarioSenha(usuario);\r\n\r\n dispatch(alterarSenha(dados, onSuccess));\r\n });\r\n\r\n const SubmitButton = () => {\r\n if (customSubmitButton) {\r\n return customSubmitButton(isLoading);\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 const logout = () => {\r\n dispatch(realizarLogout());\r\n };\r\n\r\n const CancelLoginButton = () => {\r\n if (!firstAccess) {\r\n return null;\r\n }\r\n return (\r\n \r\n logout()}\r\n className={classes.cancel}\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 \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Form;\r\n","import { Action } from 'redux';\r\n\r\nimport { DmWeekDayPickerValue } from 'src/common/Inputs/DmWeekDayPicker';\r\nimport { InfoPaginacao, RespostaApi, TipoFiltro } from 'src/main/Types';\r\n\r\nexport enum UsuarioTypes {\r\n USUARIO_GET_REQUEST = '@usuarios/USUARIO_GET_REQUEST',\r\n USUARIO_GET_SUCCESS = '@usuarios/USUARIO_GET_SUCCESS',\r\n USUARIO_GET_FAILURE = '@usuarios/USUARIO_GET_FAILURE',\r\n\r\n USUARIO_GET_FILTER_REQUEST = '@usuarios/USUARIO_GET_FILTER_REQUEST',\r\n USUARIO_GET_FILTER_SUCCESS = '@usuarios/USUARIO_GET_FILTER_SUCCESS',\r\n USUARIO_GET_FILTER_FAILURE = '@usuarios/USUARIO_GET_FILTER_FAILURE',\r\n\r\n USUARIO_POST_REQUEST = '@usuarios/USUARIO_POST_REQUEST',\r\n USUARIO_POST_SUCCESS = '@usuarios/USUARIO_POST_SUCCESS',\r\n USUARIO_POST_FAILURE = '@usuarios/USUARIO_POST_FAILURE',\r\n\r\n USUARIO_POST_SENHA_REQUEST = '@usuarios/USUARIO_POST_SENHA_REQUEST',\r\n USUARIO_POST_SENHA_SUCCESS = '@usuarios/USUARIO_POST_SENHA_SUCCESS',\r\n USUARIO_POST_SENHA_FAILURE = '@usuarios/USUARIO_POST_SENHA_FAILURE',\r\n\r\n USUARIO_PUT_REQUEST = '@usuarios/USUARIO_PUT_REQUEST',\r\n USUARIO_PUT_SUCCESS = '@usuarios/USUARIO_PUT_SUCCESS',\r\n USUARIO_PUT_FAILURE = '@usuarios/USUARIO_PUT_FAILURE',\r\n\r\n USUARIO_DELETE_REQUEST = '@usuarios/USUARIO_DELETE_REQUEST',\r\n USUARIO_DELETE_SUCCESS = '@usuarios/USUARIO_DELETE_SUCCESS',\r\n USUARIO_DELETE_FAILURE = '@usuarios/USUARIO_DELETE_FAILURE',\r\n\r\n USUARIO_SET_FORM_DATA = '@usuarios/USUARIO_SET_FORM_DATA',\r\n USUARIO_RESET_FORM_DATA = '@usuarios/USUARIO_RESET_FORM_DATA',\r\n\r\n USUARIO_RESET_FILTER_LIST = '@usuarios/USUARIO_RESET_FILTER_LIST',\r\n USUARIO_RESET_MODULE = '@usuarios/USUARIO_RESET_MODULE',\r\n}\r\n\r\nexport enum TipoUsuario {\r\n AMBOS = 'A',\r\n PORTAL = 'P',\r\n DESKTOP = 'D',\r\n}\r\n\r\nexport interface Usuario {\r\n idUsuario?: number;\r\n codMatricula: string;\r\n nomUsuario: string;\r\n nomLogin: string;\r\n desSenha: string;\r\n desEmail: string;\r\n desPis?: string;\r\n horCargaInicio?: string;\r\n horCargaFinal?: string;\r\n qtdHorasDia?: string;\r\n qtdHorasMes?: string;\r\n horInicioAlmoco?: string;\r\n horFimAlmoco?: string;\r\n diasSemana?: string;\r\n flgRestricaoNoturno?: string;\r\n flgTipo: string;\r\n flgAtivo: string;\r\n idsGrupos?: Array;\r\n idsSoftwares?: Array;\r\n}\r\n\r\nexport interface UsuarioSenha {\r\n idUsuario?: number;\r\n nomLogin: string;\r\n desSenha: string;\r\n desNovaSenha: string;\r\n desConfirmaNovaSenha: string;\r\n}\r\n\r\nexport interface UsuarioFormData {\r\n idUsuario?: number;\r\n codMatricula: string;\r\n nomUsuario: string;\r\n nomLogin: string;\r\n desSenha: string;\r\n desEmail: string;\r\n desPis?: string;\r\n horCargaInicio?: Date | null;\r\n horCargaFinal?: Date | null;\r\n qtdHorasDia?: string;\r\n qtdHorasMes?: string;\r\n horInicioAlmoco?: Date | null;\r\n horFimAlmoco?: Date | null;\r\n diasSemana?: DmWeekDayPickerValue;\r\n flgRestricaoNoturno?: boolean;\r\n flgTipo: string;\r\n flgAtivo: boolean;\r\n idsGrupos?: Array;\r\n idsSoftwares?: Array;\r\n}\r\n\r\nexport interface UsuarioSenhaFormData {\r\n idUsuario?: number;\r\n nomLogin: string;\r\n desSenha: string;\r\n desNovaSenha: string;\r\n desConfirmaNovaSenha: string;\r\n}\r\n\r\nexport interface UsuarioState {\r\n readonly data: Array;\r\n readonly formData: Partial;\r\n readonly filterList: Array;\r\n readonly pagination: InfoPaginacao;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface UsuarioAction extends Action {\r\n type: UsuarioTypes;\r\n payload?:\r\n | RespostaApi>\r\n | RespostaApi>\r\n | Partial;\r\n}\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport logo from 'src/images/eworkoff.svg';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n height: '100vh',\r\n },\r\n image: {\r\n backgroundImage: `url(${logo})`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundColor: theme.palette.grey[50],\r\n backgroundSize: '90%',\r\n backgroundPosition: 'center',\r\n },\r\n paperGrid: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n },\r\n paper: {\r\n margin: theme.spacing(8, 4),\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: '100%',\r\n },\r\n formDialog: {\r\n marginBottom: 52,\r\n },\r\n formDialogContent: {\r\n width: 512,\r\n paddingBottom: theme.spacing(3),\r\n },\r\n formTitle: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n progressContainer: {\r\n marginTop: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n submit: {\r\n margin: theme.spacing(3, 0, 0),\r\n },\r\n cancel: {\r\n margin: theme.spacing(1, 0, 2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n\r\nimport axios, { AxiosInstance, AxiosResponse, AxiosRequestConfig } from 'axios';\r\n\r\nimport { ApiConstants } from 'src/resources/Constants/ApiConstants';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\nimport {\r\n Header,\r\n ApiHeadersNames,\r\n ApiHeadersValues,\r\n} from 'src/services/ApiHeaders';\r\n\r\nclass ApiService {\r\n private static instance: ApiService;\r\n private static defaultHeaders: Header = {\r\n [ApiHeadersNames.ContentType]: ApiHeadersValues.ApplicationJson,\r\n [ApiHeadersNames.Authorization]: '',\r\n\r\n [ApiHeadersNames.ClientId]: ApiConstants.CLIENT_ID,\r\n };\r\n\r\n private headers: Header;\r\n private connection: AxiosInstance;\r\n\r\n private constructor() {\r\n this.headers = { ...ApiService.defaultHeaders };\r\n\r\n this.connection = axios.create({\r\n baseURL: ApiUrls.API_URL,\r\n headers: this.headers,\r\n });\r\n }\r\n\r\n public static getInstance(): ApiService {\r\n if (!ApiService.instance) {\r\n ApiService.instance = new ApiService();\r\n }\r\n\r\n return ApiService.instance;\r\n }\r\n\r\n public static authorizeUser(token: string): void {\r\n const bearer = `Bearer ${token}`;\r\n\r\n ApiService.defaultHeaders[ApiHeadersNames.Authorization] = bearer;\r\n ApiService.instance.setHeader(ApiHeadersNames.Authorization, bearer);\r\n }\r\n\r\n public setHeader(headerName: string, headerValue: string): void {\r\n this.headers[headerName] = headerValue;\r\n this.connection.defaults.headers.common[headerName] = headerValue;\r\n }\r\n\r\n public resetHeaders(): void {\r\n this.headers = { ...ApiService.defaultHeaders };\r\n this.connection.defaults.headers.common = this.headers;\r\n }\r\n\r\n public authorizeUser(token: string): void {\r\n const bearer = `Bearer ${token}`;\r\n\r\n this.setHeader(ApiHeadersNames.Authorization, bearer);\r\n ApiService.defaultHeaders[ApiHeadersNames.Authorization] = bearer;\r\n }\r\n\r\n public get(\r\n url: string,\r\n config: AxiosRequestConfig = { headers: this.headers }\r\n ): Promise> {\r\n return this.connection.get(url, config);\r\n }\r\n\r\n public post(\r\n url: string,\r\n data?: any,\r\n config: AxiosRequestConfig = { headers: this.headers }\r\n ): Promise> {\r\n return this.connection.post(url, data, config);\r\n }\r\n\r\n public put(\r\n url: string,\r\n data?: any,\r\n config: AxiosRequestConfig = { headers: this.headers }\r\n ): Promise> {\r\n return this.connection.put(url, data, config);\r\n }\r\n\r\n public patch(\r\n url: string,\r\n data?: any,\r\n config: AxiosRequestConfig = { headers: this.headers }\r\n ): Promise> {\r\n return this.connection.patch(url, data, config);\r\n }\r\n\r\n public delete(\r\n url: string,\r\n config: AxiosRequestConfig = { headers: this.headers }\r\n ): Promise> {\r\n return this.connection.delete(url, config);\r\n }\r\n\r\n public downloadFile(url: string): Promise> {\r\n const config: AxiosRequestConfig = { responseType: 'blob' };\r\n\r\n return this.connection.get(url, config);\r\n }\r\n}\r\n\r\nexport default ApiService;\r\n","import { Action } from 'redux';\r\n\r\nimport { InfoPaginacao, RespostaApi, TipoFiltro } from 'src/main/Types';\r\n\r\nexport enum EquipeTypes {\r\n EQUIPE_GET_REQUEST = '@equipes/EQUIPE_GET_REQUEST',\r\n EQUIPE_GET_SUCCESS = '@equipes/EQUIPE_GET_SUCCESS',\r\n EQUIPE_GET_FAILURE = '@equipes/EQUIPE_GET_FAILURE',\r\n\r\n EQUIPE_GET_FILTER_REQUEST = '@equipes/EQUIPE_GET_FILTER_REQUEST',\r\n EQUIPE_GET_FILTER_SUCCESS = '@equipes/EQUIPE_GET_FILTER_SUCCESS',\r\n EQUIPE_GET_FILTER_FAILURE = '@equipes/EQUIPE_GET_FILTER_FAILURE',\r\n\r\n EQUIPE_POST_REQUEST = '@equipes/EQUIPE_POST_REQUEST',\r\n EQUIPE_POST_SUCCESS = '@equipes/EQUIPE_POST_SUCCESS',\r\n EQUIPE_POST_FAILURE = '@equipes/EQUIPE_POST_FAILURE',\r\n\r\n EQUIPE_PUT_REQUEST = '@equipes/EQUIPE_PUT_REQUEST',\r\n EQUIPE_PUT_SUCCESS = '@equipes/EQUIPE_PUT_SUCCESS',\r\n EQUIPE_PUT_FAILURE = '@equipes/EQUIPE_PUT_FAILURE',\r\n\r\n EQUIPE_DISABLE_REQUEST = '@equipes/EQUIPE_DISABLE_REQUEST',\r\n EQUIPE_DISABLE_SUCCESS = '@equipes/EQUIPE_DISABLE_SUCCESS',\r\n EQUIPE_DISABLE_FAILURE = '@equipes/EQUIPE_DISABLE_FAILURE',\r\n\r\n EQUIPE_DELETE_REQUEST = '@equipes/EQUIPE_DELETE_REQUEST',\r\n EQUIPE_DELETE_SUCCESS = '@equipes/EQUIPE_DELETE_SUCCESS',\r\n EQUIPE_DELETE_FAILURE = '@equipes/EQUIPE_DELETE_FAILURE',\r\n\r\n EQUIPE_SET_FORM_DATA = '@equipes/EQUIPE_SET_FORM_DATA',\r\n EQUIPE_RESET_FORM_DATA = '@equipes/EQUIPE_RESET_FORM_DATA',\r\n\r\n EQUIPE_RESET_FILTER_LIST = '@equipes/EQUIPE_RESET_FILTER_LIST',\r\n EQUIPE_RESET_MODULE = '@equipes/EQUIPE_RESET_MODULE',\r\n}\r\n\r\nexport interface Equipe {\r\n idEquipe: number;\r\n idUsuarioAlt?: number;\r\n idEmpresa?: number;\r\n nomEquipe: string;\r\n desEquipe: string;\r\n dtaInicio?: string;\r\n dtaFim?: string;\r\n flgAtivo: string;\r\n dtaAlteracao?: string;\r\n idsSupervisores?: Array;\r\n idsUsuarios?: Array;\r\n}\r\n\r\nexport interface EquipeFormData {\r\n idEquipe: number;\r\n nomEquipe: string;\r\n desEquipe: string;\r\n flgAtivo: boolean;\r\n idsSupervisores: Array;\r\n idsUsuarios: Array;\r\n}\r\n\r\nexport interface EquipeState {\r\n readonly data: Array;\r\n readonly formData: Partial;\r\n readonly filterList: Array;\r\n readonly pagination: InfoPaginacao;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface EquipeAction extends Action {\r\n type: EquipeTypes;\r\n payload?:\r\n | RespostaApi>\r\n | RespostaApi>\r\n | Partial;\r\n}\r\n","const DEFAULT_PROTOCOL = global.window.document.location.protocol;\r\n\r\n// Debug e Testes\r\n//const DEFAULT_URL = `${DEFAULT_PROTOCOL}//localhost:51321/api`;\r\n//const DEFAULT_URL = `${DEFAULT_PROTOCOL}//datamob.servehttp.com:8080/iWorkOff/ApiRest/api`;\r\n\r\n// PRD e QA\r\nconst DEFAULT_URL = `${DEFAULT_PROTOCOL}//eworkoff.datamobapps.com.br/Api/api`;\r\n//const DEFAULT_URL = `${DEFAULT_PROTOCOL}//eworkoff-qa.datamobapps.com.br/Api/api`;\r\n\r\nexport const ApiUrls = {\r\n API_URL: DEFAULT_URL,\r\n\r\n LOGIN_URL: '/Auth/v1/loginPortal',\r\n RESTAURAR_SENHA_URL: '/Auth/v1/restaurarSenha',\r\n\r\n EMPRESAS_URL: '/Empresas/v1',\r\n\r\n USUARIOS_URL: '/Usuarios/v1',\r\n USUARIOS_SENHA_URL: '/Usuarios/v1/alterarSenha',\r\n USUARIOS_FILTER_URL: '/Usuarios/v1/consultarParaFiltrosTela',\r\n USUARIOS_FILTER_SUPERVISIONADOS_URL:\r\n '/Usuarios/v1/consultarParaFiltrosTelaSupervisionados',\r\n\r\n GRUPOS_URL: '/Grupos/v1',\r\n GRUPOS_FILTER_URL: '/Grupos/v1/consultarParaFiltrosTela',\r\n\r\n EQUIPES_URL: '/Equipes/v1',\r\n EQUIPES_DESATIVAR_URL: '/Equipes/v1/inativa',\r\n EQUIPES_FILTER_SUPERVISIONADOS_URL:\r\n '/Equipes/v1/consultarParaFiltrosTelaSupervisionados',\r\n\r\n SOFTWARES_URL: '/Softwares/v1',\r\n SOFTWARES_FILTER_URL: '/Softwares/v1/consultarParaFiltrosTela',\r\n\r\n ANALISE_ACESSOS_CABECALHO_INDIVIDUAL_URL:\r\n 'AnaliseAcessos/v1/consultarCabecalhosIndividual',\r\n ANALISE_ACESSOS_CABECALHO_URL: 'AnaliseAcessos/v1/consultarCabecalhos',\r\n ANALISE_ACESSOS_DETALHE_URL: 'AnaliseAcessos/v1/consultarDetalhes',\r\n ANALISE_ACESSOS_AFD_URL: 'AnaliseAcessos/v1/gerarArquivo',\r\n ANALISE_ACESSOS_EXPORTAR_CSV_URL: 'AnaliseAcessos/v1/exportarCSV',\r\n ANALISE_ACESSOS_EXPORTAR_CSV_INDIVIDUAL_URL:\r\n 'AnaliseAcessos/v1/exportarCSVIndividual',\r\n\r\n ANALISE_USO_APPS_COMPARATIVO_URL:\r\n '/AnaliseUsoAplicacoes/v1/consultarAnaliseUsoAplicacoes',\r\n\r\n ANALISE_DETALHES_NAVEGACAO_EXPORTAR_CSV_URL:\r\n 'AnaliseDetalhesNavegacao/v1/exportarCSV',\r\n};\r\n","import { Action } from 'redux';\r\n\r\nimport { InfoPaginacao, RespostaApi, TipoFiltro } from 'src/main/Types';\r\n\r\nexport enum GrupoTypes {\r\n GRUPO_GET_REQUEST = '@grupos/GRUPO_GET_REQUEST',\r\n GRUPO_GET_SUCCESS = '@grupos/GRUPO_GET_SUCCESS',\r\n GRUPO_GET_FAILURE = '@grupos/GRUPO_GET_FAILURE',\r\n\r\n GRUPO_GET_FILTER_REQUEST = '@grupos/GRUPO_GET_FILTER_REQUEST',\r\n GRUPO_GET_FILTER_SUCCESS = '@grupos/GRUPO_GET_FILTER_SUCCESS',\r\n GRUPO_GET_FILTER_FAILURE = '@grupos/GRUPO_GET_FILTER_FAILURE',\r\n\r\n GRUPO_POST_REQUEST = '@grupos/GRUPO_POST_REQUEST',\r\n GRUPO_POST_SUCCESS = '@grupos/GRUPO_POST_SUCCESS',\r\n GRUPO_POST_FAILURE = '@grupos/GRUPO_POST_FAILURE',\r\n\r\n GRUPO_PUT_REQUEST = '@grupos/GRUPO_PUT_REQUEST',\r\n GRUPO_PUT_SUCCESS = '@grupos/GRUPO_PUT_SUCCESS',\r\n GRUPO_PUT_FAILURE = '@grupos/GRUPO_PUT_FAILURE',\r\n\r\n GRUPO_DELETE_REQUEST = '@grupos/GRUPO_DELETE_REQUEST',\r\n GRUPO_DELETE_SUCCESS = '@grupos/GRUPO_DELETE_SUCCESS',\r\n GRUPO_DELETE_FAILURE = '@grupos/GRUPO_DELETE_FAILURE',\r\n\r\n GRUPO_SET_FORM_DATA = '@grupos/GRUPO_SET_FORM_DATA',\r\n GRUPO_RESET_FORM_DATA = '@grupos/GRUPO_RESET_FORM_DATA',\r\n\r\n GRUPO_RESET_FILTER_LIST = '@grupos/GRUPO_RESET_FILTER_LIST',\r\n GRUPO_RESET_MODULE = '@grupos/GRUPO_RESET_MODULE',\r\n}\r\n\r\nexport interface Grupo {\r\n idGrupo: number;\r\n nomGrupo: string;\r\n desGrupo: string;\r\n flgAtivo: string;\r\n idsUsuarios?: Array;\r\n idsSoftwares?: Array;\r\n}\r\n\r\nexport interface GrupoFormData {\r\n idGrupo: number;\r\n nomGrupo: string;\r\n desGrupo: string;\r\n flgAtivo: boolean;\r\n idsUsuarios?: Array;\r\n idsSoftwares?: Array;\r\n}\r\n\r\nexport interface GrupoState {\r\n readonly data: Array;\r\n readonly formData: Partial;\r\n readonly filterList: Array;\r\n readonly pagination: InfoPaginacao;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface GrupoAction extends Action {\r\n type: GrupoTypes;\r\n payload?:\r\n | RespostaApi>\r\n | RespostaApi>\r\n | Partial;\r\n}\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Usuario,\r\n UsuarioTypes,\r\n UsuarioAction,\r\n UsuarioFormData,\r\n} from 'src/pages/Cadastros/Usuarios/Types';\r\n\r\nexport const usuarioGetRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_GET_REQUEST);\r\n\r\nexport const usuarioGetSuccess = (\r\n data: RespostaApi>\r\n): UsuarioAction => action(UsuarioTypes.USUARIO_GET_SUCCESS, data);\r\n\r\nexport const usuarioGetFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_GET_FAILURE);\r\n\r\nexport const usuarioGetFilterListRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_GET_FILTER_REQUEST);\r\n\r\nexport const usuarioGetFilterListSuccess = (\r\n data: RespostaApi>\r\n): UsuarioAction => action(UsuarioTypes.USUARIO_GET_FILTER_SUCCESS, data);\r\n\r\nexport const usuarioGetFilterListFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_GET_FILTER_FAILURE);\r\n\r\nexport const usuarioPostRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_REQUEST);\r\n\r\nexport const usuarioPostSuccess = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_SUCCESS);\r\n\r\nexport const usuarioPostFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_FAILURE);\r\n\r\nexport const usuarioPostSenhaRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_SENHA_REQUEST);\r\n\r\nexport const usuarioPostSenhaSuccess = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_SENHA_SUCCESS);\r\n\r\nexport const usuarioPostSenhaFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_POST_SENHA_FAILURE);\r\n\r\nexport const usuarioPutRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_PUT_REQUEST);\r\n\r\nexport const usuarioPutSuccess = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_PUT_SUCCESS);\r\n\r\nexport const usuarioPutFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_PUT_FAILURE);\r\n\r\nexport const usuarioDeleteRequest = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_DELETE_REQUEST);\r\n\r\nexport const usuarioDeleteSuccess = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_DELETE_SUCCESS);\r\n\r\nexport const usuarioDeleteFailure = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_DELETE_FAILURE);\r\n\r\nexport const usuarioSetFormData = (\r\n data: Partial\r\n): UsuarioAction => action(UsuarioTypes.USUARIO_SET_FORM_DATA, data);\r\n\r\nexport const usuarioResetFormData = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_RESET_FORM_DATA);\r\n\r\nexport const usuarioClearFilterList = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_RESET_FILTER_LIST);\r\n\r\nexport const usuarioResetModule = (): UsuarioAction =>\r\n action(UsuarioTypes.USUARIO_RESET_MODULE);\r\n","import * as dateFns from 'date-fns';\r\n\r\nexport function toDate(\r\n dateString?: string | null,\r\n dateFormat = 'yyyy-MM-dd'\r\n): Date | null {\r\n try {\r\n return dateString\r\n ? dateFns.parse(dateString, dateFormat, new Date())\r\n : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toFormat(\r\n date?: Date | null,\r\n format = 'dd/MM/yyyy'\r\n): string | null {\r\n try {\r\n return date ? dateFns.format(date, format) : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function changeDateFormat(\r\n date?: string | null,\r\n dateFormat = 'yyyy-MM-dd',\r\n format = 'dd/MM/yyyy'\r\n): string | null {\r\n try {\r\n if (!date) {\r\n return null;\r\n }\r\n\r\n const dateValue = dateFns.parse(date, dateFormat, new Date());\r\n\r\n return dateFns.format(dateValue, format);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function secondsToHours(sec: number): string {\r\n sec *= 1000;\r\n const d = new Date(sec);\r\n let h = '';\r\n /* depois, fazer o arredondamento do horário pra 30 minutos */\r\n\r\n if (sec > 1) {\r\n if (d.getTime() / (60 * 60 * 1000) >= 1) {\r\n h += Math.trunc(d.getTime() / (60 * 60 * 1000)) + 'h ';\r\n }\r\n if (d.getMinutes() > 0 && !h.includes('d')) h += d.getMinutes() + 'min ';\r\n if (!h.includes('h') && !h.includes('d') && d.getSeconds() != 0) {\r\n h += d.getSeconds() + 's';\r\n }\r\n } else {\r\n h += '0h';\r\n }\r\n\r\n return h;\r\n}\r\n\r\nexport function secondsToDateString(value?: number): string {\r\n if (!value || value <= 0) {\r\n return '-';\r\n }\r\n\r\n const seconds = Math.floor(value % 60);\r\n const minutes = Math.floor((value % 3600) / 60);\r\n const hours = Math.floor(value / 3600);\r\n\r\n const minutesString = padStart(2, '0', minutes);\r\n const secondsString = padStart(2, '0', seconds);\r\n\r\n if (hours > 24) {\r\n const days = Math.floor(hours / 24);\r\n const daysString = padStart(2, '0', days);\r\n const hoursString = padStart(2, '0', hours % 24);\r\n\r\n return `${daysString}d ${hoursString}h ${minutesString}m ${secondsString}s`;\r\n }\r\n\r\n const hoursString = padStart(2, '0', hours);\r\n return `${hoursString}h ${minutesString}m ${secondsString}s`;\r\n}\r\n\r\nfunction padStart(maxLength: number, char: string, value: number): string {\r\n return value.toString().padStart(maxLength, char);\r\n}\r\n","import { initReactI18next } from 'react-i18next';\r\n\r\nimport i18n from 'i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport XHR from 'i18next-xhr-backend';\r\n\r\nimport translations from 'src/resources/i18n/locales';\r\n\r\nconst i18nConfig = {\r\n react: {\r\n useSuspense: false,\r\n },\r\n resources: translations,\r\n defaultNS: 'translations',\r\n fallbackLng: 'en',\r\n};\r\n\r\ni18n.use(XHR).use(initReactI18next).use(LanguageDetector).init(i18nConfig);\r\n\r\nexport default i18n;\r\n","import enUsTranslations from 'src/resources/i18n/locales/en-US/lang.json';\r\nimport ptBrTranslations from 'src/resources/i18n/locales/pt-BR/lang.json';\r\n\r\nconst translations = {\r\n 'en-US': enUsTranslations,\r\n en: enUsTranslations,\r\n 'pt-BR': ptBrTranslations,\r\n pt: ptBrTranslations,\r\n};\r\n\r\nexport default translations;\r\n","import { Action } from 'redux';\r\n\r\nexport enum LoginTypes {\r\n LOGIN_REQUEST = '@login/LOGIN_REQUEST',\r\n LOGIN_SUCCESS = '@login/LOGIN_SUCCESS',\r\n LOGIN_FAILURE = '@login/LOGIN_FAILURE',\r\n\r\n RESTAURAR_SENHA_REQUEST = '@login/RESTAURAR_SENHA_REQUEST',\r\n RESTAURAR_SENHA_SUCCESS = '@login/RESTAURAR_SENHA_SUCCESS',\r\n RESTAURAR_SENHA_FAILURE = '@login/RESTAURAR_SENHA_FAILURE',\r\n\r\n LOGIN_CHANGE = '@login/LOGIN_CHANGE',\r\n LOGOUT = '@login/LOGOUT',\r\n}\r\n\r\nexport enum EtapasPrimeiroAcesso {\r\n PRIMEIRO_ACESSO = 'S',\r\n PERFIL_CONFIGURADO = 'N',\r\n EMPRESA_CONFIGURADA = 'E',\r\n}\r\n\r\nexport enum LoginRequestData {\r\n NOM_LOGIN = 'nomLogin',\r\n DES_SENHA = 'desSenha',\r\n}\r\n\r\nexport enum RestaurarSenhaRequestData {\r\n NOM_LOGIN = 'nomLogin',\r\n DES_EMAIL = 'desEmail',\r\n}\r\n\r\nexport interface LoginFormData {\r\n usuario: string;\r\n senha: string;\r\n}\r\n\r\nexport interface RestaurarSenhaFormData {\r\n usuario: string;\r\n email: string;\r\n}\r\n\r\nexport interface Objeto {\r\n codObjeto: number;\r\n desObjeto: string;\r\n nomPagina: string;\r\n flgAcesso: string;\r\n flgTipo: string;\r\n}\r\n\r\nexport interface Login {\r\n idUsuario: number;\r\n nomUsuario: string;\r\n flgAdministrador: string;\r\n flgPrimeiroAcesso: string;\r\n versaoApi: string;\r\n accessToken: string;\r\n flgTipo: string;\r\n lstObjetos?: Array | null;\r\n}\r\n\r\nexport interface LoginState {\r\n readonly data?: Login | null;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface LoginAction extends Action {\r\n type: LoginTypes;\r\n payload?: Login;\r\n}\r\n","import 'react-redux-toastr/lib/css/react-redux-toastr.min.css';\r\n\r\nimport React from 'react';\r\nimport ReduxToastr from 'react-redux-toastr';\r\n\r\nconst DmToastrMessage: React.FC = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default DmToastrMessage;\r\n","import { createTheme } from '@material-ui/core/styles';\r\n\r\ndeclare module '@material-ui/core/styles/createPalette' {\r\n interface Palette {\r\n tertiary: Palette['primary'];\r\n }\r\n interface PaletteOptions {\r\n tertiary: PaletteOptions['primary'];\r\n }\r\n}\r\n\r\nconst Theme = createTheme({\r\n palette: {\r\n primary: {\r\n light: '#01E067',\r\n main: '#019444',\r\n dark: '#00612C',\r\n },\r\n secondary: {\r\n light: '#E42234',\r\n main: '#BE1D2C',\r\n dark: '#8B1520',\r\n },\r\n tertiary: {\r\n light: '#FFCD00',\r\n main: '#FBB040',\r\n dark: '#F59A00',\r\n },\r\n },\r\n overrides: {\r\n MuiChip: {\r\n root: {\r\n minWidth: 'auto',\r\n maxWidth: 256,\r\n },\r\n },\r\n MuiMenu: {\r\n paper: {\r\n maxHeight: '288px',\r\n },\r\n },\r\n MuiFormHelperText: {\r\n root: {\r\n margin: '0 !important',\r\n marginTop: '2 !important',\r\n fontStyle: 'italic',\r\n '&$error': {\r\n margin: '0 !important',\r\n marginTop: '2 !important',\r\n fontStyle: 'italic',\r\n },\r\n },\r\n contained: {\r\n margin: '0 !important',\r\n marginTop: '2 !important',\r\n fontStyle: 'italic',\r\n '&$error': {\r\n margin: '0 !important',\r\n marginTop: '2 !important',\r\n fontStyle: 'italic',\r\n },\r\n },\r\n },\r\n MuiTableRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\r\n },\r\n },\r\n hover: {\r\n '&$root': {\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.08)',\r\n },\r\n },\r\n },\r\n footer: {\r\n backgroundColor: 'inherit !important',\r\n },\r\n },\r\n MUIDataTableToolbar: {\r\n filterPaper: {\r\n minWidth: '350px',\r\n },\r\n },\r\n MUIDataTableViewCol: {\r\n title: {\r\n marginRight: 32,\r\n },\r\n },\r\n MUIDataTableFilter: {\r\n gridListTile: {\r\n marginTop: 0,\r\n },\r\n },\r\n MUIDataTableFilterList: {\r\n chip: {\r\n margin: 4,\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default Theme;\r\n","import React, { MouseEvent } from 'react';\r\n\r\nimport { Box, Fab, Zoom, useScrollTrigger } from '@material-ui/core';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\n\r\nimport useStyles from 'src/common/Menu/DmScrollTop/Styles';\r\n\r\nexport interface DmScrollTopProps {\r\n shift?: boolean;\r\n}\r\n\r\nconst DmScrollTop: React.FC = ({\r\n shift,\r\n}: DmScrollTopProps) => {\r\n const classes = useStyles();\r\n const trigger = useScrollTrigger({\r\n threshold: 100,\r\n disableHysteresis: true,\r\n });\r\n\r\n const handleClick = (event: MouseEvent) => {\r\n const htmlEvent = event.target as HTMLDivElement;\r\n const document = htmlEvent.ownerDocument || global.window.document;\r\n const anchor = document.querySelector('#back-to-top-anchor');\r\n\r\n if (anchor) {\r\n anchor.scrollIntoView({ behavior: 'smooth', block: 'center' });\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\nexport default DmScrollTop;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n transition: theme.transitions.create(['left'], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: '0.25s',\r\n }),\r\n position: 'fixed',\r\n zIndex: theme.zIndex.appBar,\r\n bottom: theme.spacing(3),\r\n left: theme.spacing(3),\r\n },\r\n rootShift: {\r\n transition: theme.transitions.create(['left'], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: '0.25s',\r\n }),\r\n left: theme.spacing(3) + 240,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Button, InputAdornment, TextField } from '@material-ui/core';\r\nimport LockIcon from '@material-ui/icons/Lock';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport * as yup from 'yup';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport useStyles from 'src/pages/Login/Styles';\r\nimport { realizarLogin } from 'src/pages/Login/Thunks';\r\nimport { LoginFormData } from 'src/pages/Login/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nconst LoginForm: React.FC = () => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const isLoading = useAppSelector((state) => state.sessao.loading);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n usuario: yup.string().required(i18n.t('common.errCampoObrigatorio')),\r\n senha: yup.string().required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, formState } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(() => {\r\n global.window.document.getElementById('usuario')?.focus();\r\n }, 100);\r\n\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, []);\r\n\r\n const onSubmit = handleSubmit((usuario: LoginFormData) => {\r\n dispatch(realizarLogin(usuario));\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 \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoginForm;\r\n","import { Reducer } from 'redux';\r\n\r\nimport {\r\n Login,\r\n LoginTypes,\r\n LoginState,\r\n LoginAction,\r\n} from 'src/pages/Login/Types';\r\nimport { ApiConstants } from 'src/resources/Constants/ApiConstants';\r\n\r\nconst loginJson = global.window.localStorage.getItem(ApiConstants.CLIENT);\r\nconst login = (loginJson ? JSON.parse(loginJson) : null) as Login;\r\n\r\nconst INITIAL_STATE: LoginState = {\r\n data: login,\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case LoginTypes.LOGIN_REQUEST:\r\n case LoginTypes.RESTAURAR_SENHA_REQUEST:\r\n return { ...state, loading: true };\r\n\r\n case LoginTypes.LOGIN_SUCCESS: {\r\n const loginJson = JSON.stringify(action.payload);\r\n global.window.localStorage.setItem(ApiConstants.CLIENT, loginJson);\r\n\r\n return {\r\n ...state,\r\n data: action.payload,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case LoginTypes.LOGIN_FAILURE:\r\n case LoginTypes.RESTAURAR_SENHA_FAILURE: {\r\n global.window.localStorage.removeItem(ApiConstants.CLIENT);\r\n\r\n return {\r\n ...state,\r\n data: null,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n }\r\n\r\n case LoginTypes.RESTAURAR_SENHA_SUCCESS: {\r\n return {\r\n ...state,\r\n data: null,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case LoginTypes.LOGIN_CHANGE: {\r\n const loginJson = JSON.stringify(action.payload);\r\n\r\n global.window.localStorage.removeItem(ApiConstants.CLIENT);\r\n global.window.localStorage.setItem(ApiConstants.CLIENT, loginJson);\r\n\r\n return {\r\n ...state,\r\n data: action.payload,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case LoginTypes.LOGOUT: {\r\n global.window.localStorage.clear();\r\n global.window.sessionStorage.clear();\r\n\r\n return {\r\n ...state,\r\n data: null,\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","interface IEDocument extends Document {\r\n documentMode?: string | number;\r\n}\r\n\r\nexport function ValidateIE(): boolean {\r\n const documentIE: IEDocument = global.window.document;\r\n\r\n return (\r\n navigator.userAgent.indexOf('MSIE') !== -1 ||\r\n (navigator.userAgent.indexOf('MSIE') === -1 &&\r\n (false || !!documentIE.documentMode))\r\n );\r\n}\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n userName: {\r\n marginLeft: 8,\r\n },\r\n titleLink: {\r\n color: 'inherit',\r\n textDecoration: 'none',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { MouseEvent, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport {\r\n AppBar,\r\n Box,\r\n Hidden,\r\n IconButton,\r\n Menu,\r\n MenuItem,\r\n Toolbar,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport AccountCircle from '@material-ui/icons/AccountCircle';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\n\r\nimport useStyles from 'src/common/Menu/DmAppBar/Styles';\r\n\r\nexport interface DmAppMenuItem {\r\n label: string;\r\n onClick(): void;\r\n}\r\n\r\nexport interface DmAppBarProps {\r\n title: string;\r\n userName?: string;\r\n menuItems?: Array;\r\n onClickMenu(): void;\r\n}\r\n\r\nconst DmAppBar: React.FC = ({\r\n title,\r\n userName,\r\n menuItems,\r\n onClickMenu,\r\n}: DmAppBarProps) => {\r\n const classes = useStyles();\r\n\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n const openUserMenu = (event: MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const closeUserMenu = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {userName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {menuItems?.map((item, index) => {\r\n return (\r\n {\r\n closeUserMenu();\r\n item.onClick();\r\n }}\r\n >\r\n {item.label}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmAppBar;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n drawer: {\r\n zIndex: theme.zIndex.appBar - 1,\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n drawerContainer: {\r\n overflow: 'auto',\r\n },\r\n growContainer: {\r\n flexGrow: 1,\r\n },\r\n link: {\r\n color: 'inherit',\r\n textDecoration: 'none',\r\n },\r\n linkActive: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.08)',\r\n },\r\n logoToolbar: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment } from 'react';\r\nimport { Link, useLocation } from 'react-router-dom';\r\n\r\nimport {\r\n Box,\r\n Divider,\r\n Drawer,\r\n Hidden,\r\n Icon,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Toolbar,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\n\r\nimport useStyles from 'src/common/Menu/DmDrawer/Styles';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\n\r\nexport interface DmDrawerLogoProps {\r\n logoImg: string;\r\n logoImgAlt: string;\r\n}\r\n\r\nexport interface DmDrawerMenuItem {\r\n label: string;\r\n icon: string;\r\n url: string;\r\n}\r\n\r\nexport interface DmDrawerMenu {\r\n menuItems?: Array;\r\n}\r\n\r\nexport interface DmDrawerProps {\r\n open: boolean;\r\n drawerLogoProps: DmDrawerLogoProps;\r\n menuList?: Array;\r\n handleDrawerMenu(): void;\r\n}\r\n\r\nconst DmDrawerLogo: React.FC = ({\r\n logoImg,\r\n logoImgAlt,\r\n}: DmDrawerLogoProps) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {logoImgAlt}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * // TODO: melhorar renders desnecessários\r\n */\r\nconst DmDrawer: React.FC = ({\r\n open,\r\n menuList,\r\n drawerLogoProps,\r\n handleDrawerMenu,\r\n}: DmDrawerProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const location = useLocation();\r\n const listSize = menuList ? menuList.length - 1 : 0;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {menuList?.map((menu, menuIndex) => {\r\n return (\r\n \r\n \r\n {menu.menuItems?.map((menuItem, menuItemIndex) => {\r\n return (\r\n \r\n \r\n \r\n {menuItem.icon}\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n menuIndex}>\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\nexport default DmDrawer;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dialogTitle: {\r\n padding: theme.spacing(1, 3, 1, 3),\r\n textAlign: 'center',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { ReactNode } from 'react';\r\n\r\nimport { Button, Dialog, DialogTitle, DialogContent } from '@material-ui/core';\r\n\r\nimport useStyles from 'src/common/Modal/DmDialog/Styles';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\n\r\nexport interface DmDialogProps {\r\n title: string;\r\n children: ReactNode;\r\n open?: boolean;\r\n closeLabel?: string;\r\n withCloseButton?: boolean;\r\n closeFunction?(): void;\r\n}\r\n\r\nconst DmDialog: React.FC = ({\r\n title,\r\n children,\r\n open,\r\n closeLabel,\r\n withCloseButton,\r\n closeFunction,\r\n}: DmDialogProps) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {title}\r\n {children}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmDialog;\r\n","import React from 'react';\r\nimport { Route, Redirect, RouteProps } from 'react-router';\r\n\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport { TiposAcesso } from 'src/main/Types';\r\nimport { PageProps } from 'src/pages/Types';\r\n\r\nexport interface PublicRouteProps extends RouteProps {\r\n child?: React.FC;\r\n renderChild?: (props: PageProps) => React.ReactElement;\r\n}\r\n\r\nconst PublicRoute: React.FC = ({\r\n child,\r\n renderChild,\r\n ...rest\r\n}: PublicRouteProps) => {\r\n const user = useAppSelector((state) => state.sessao.data);\r\n\r\n const getAccessLevel = (path: string) => {\r\n const userObjects = user?.lstObjetos;\r\n const page = userObjects?.find(\r\n (x) => x.nomPagina === path.replace('/', '')\r\n );\r\n\r\n return page?.flgAcesso ?? TiposAcesso.NULO;\r\n };\r\n\r\n const path = Array.isArray(rest.path)\r\n ? (rest.path[0] as string)\r\n : (rest.path as string);\r\n const accessLevel = getAccessLevel(path);\r\n\r\n if (accessLevel === TiposAcesso.NULO) {\r\n return ;\r\n }\r\n\r\n if (child) {\r\n return React.createElement(child, { user: user, accessLevel: accessLevel });\r\n }\r\n\r\n if (renderChild) {\r\n return renderChild({ user: user, accessLevel: accessLevel });\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default PublicRoute;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\n/**\r\n * // TODO: implementar ajustes para o desktop\r\n */\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paginationContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flex: '1 1',\r\n justifyContent: 'center',\r\n padding: theme.spacing(1),\r\n },\r\n subtitleContainer: {\r\n padding: 4,\r\n },\r\n pagination: {\r\n display: 'flex',\r\n marginLeft: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\n\r\nimport {\r\n Box,\r\n MenuItem,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport {\r\n MUIDataTableTextLabels,\r\n MUIDataTableTextLabelsPagination,\r\n} from 'mui-datatables';\r\n\r\nimport useStyles from 'src/common/Table/DmTableFooter/Styles';\r\n\r\nexport interface DmTableFooterProps {\r\n page: number;\r\n rowCount: number;\r\n rowsPerPage: number;\r\n rowsPerPageOptions: Array;\r\n changePage: (newPage: number) => void;\r\n changeRowsPerPage: (page: string | number) => void;\r\n textLabels: Partial;\r\n}\r\n\r\n/**\r\n * // TODO: implementar ajustes para o desktop\r\n */\r\nconst DmTableFooter: React.FC = ({\r\n page,\r\n rowCount,\r\n rowsPerPage,\r\n rowsPerPageOptions,\r\n changePage,\r\n changeRowsPerPage,\r\n textLabels,\r\n}: DmTableFooterProps) => {\r\n const classes = useStyles();\r\n\r\n const labels = textLabels as MUIDataTableTextLabelsPagination;\r\n\r\n const actualPage = page + 1;\r\n const actualCount = rowsPerPage * actualPage;\r\n\r\n const from = rowCount > 0 ? actualCount - rowsPerPage + 1 : 0;\r\n const to = actualCount > rowCount ? rowCount : actualCount;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n changeRowsPerPage(e.target.value)}\r\n >\r\n {rowsPerPageOptions.map((item, index) => (\r\n \r\n {`${item}`}\r\n \r\n ))}\r\n
\r\n {\r\n changePage(page - 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n {`${from}-${to} ${labels?.displayRows} ${rowCount}`}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmTableFooter;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n main: {\r\n display: 'flex',\r\n flex: '1 0',\r\n flexDirection: 'row',\r\n },\r\n searchIcon: {\r\n color: theme.palette.text.secondary,\r\n marginTop: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n searchText: {\r\n [theme.breakpoints.down('sm')]: {\r\n flex: '1 0',\r\n },\r\n flex: '0.8',\r\n },\r\n clearIcon: {\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { KeyboardEvent } from 'react';\r\n\r\nimport { Box, Grow } from '@material-ui/core';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\nimport useStyles from 'src/common/Table/DmTableSearch/Styles';\r\n\r\nexport interface DmTableSearchProps {\r\n placeholder?: string;\r\n onHide(): void;\r\n onSearch(text: string): void;\r\n}\r\n\r\nconst DmTableSearch: React.FC = ({\r\n placeholder,\r\n onHide,\r\n onSearch,\r\n}: DmTableSearchProps) => {\r\n const classes = useStyles();\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n onHide();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n onSearch(event.target.value)}\r\n onKeyDown={onKeyDown}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmTableSearch;\r\n","import { MUIDataTableTextLabels } from 'mui-datatables';\r\n\r\nconst locale: MUIDataTableTextLabels = {\r\n body: {},\r\n pagination: {},\r\n toolbar: {},\r\n filter: {},\r\n viewColumns: {},\r\n selectedRows: {},\r\n};\r\n\r\nexport default locale;\r\n","import { MUIDataTableTextLabels } from 'mui-datatables';\r\n\r\nconst locale: MUIDataTableTextLabels = {\r\n body: {\r\n noMatch: 'Desculpe, nenhum registro correspondente encontrado',\r\n toolTip: 'Ordenar',\r\n },\r\n pagination: {\r\n next: 'Próxima Página',\r\n previous: 'Página Anterior',\r\n rowsPerPage: 'Linhas por página:',\r\n displayRows: 'de',\r\n jumpToPage: 'Pular para página:',\r\n },\r\n toolbar: {\r\n search: 'Pesquisar',\r\n downloadCsv: 'Download CSV',\r\n print: 'Imprimir',\r\n viewColumns: 'Colunas Visíveis',\r\n filterTable: 'Filtrar Tabela',\r\n },\r\n filter: {\r\n all: 'Todos',\r\n title: 'FILTROS',\r\n reset: 'RESTAURAR',\r\n },\r\n viewColumns: {\r\n title: 'Mostrar Colunas',\r\n titleAria: 'Mostrar/Esconder Colunas da Tabela',\r\n },\r\n selectedRows: {\r\n text: 'linha(s) selecionada(s)',\r\n delete: 'Remover',\r\n deleteAria: 'Remover as Linhas Selecionadas',\r\n },\r\n};\r\n\r\nexport default locale;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport React, { useEffect, useRef, useState, useCallback } from 'react';\r\n\r\nimport { useTheme, useMediaQuery } from '@material-ui/core';\r\nimport MUIDataTable, {\r\n MUIDataTableProps,\r\n MUIDataTableTextLabels,\r\n} from 'mui-datatables';\r\n\r\nimport DmTableFooter from 'src/common/Table/DmTableFooter';\r\nimport DmTableSearch from 'src/common/Table/DmTableSearch';\r\nimport getTextLabels from 'src/common/Table/Localization';\r\nimport i18n from 'src/resources/i18n';\r\nimport { debounce } from 'src/resources/Utils/FunctionsUtils';\r\n\r\nexport const RowsPerPageOptions = [10, 15, 100];\r\nexport const RowsPerPageDefaultValue = 10;\r\n\r\nexport interface DmTableProps extends MUIDataTableProps {\r\n onSearch: (searchText: string) => void;\r\n onColumnSort: (columnSort: string) => void;\r\n onPageChange: (page: number) => void;\r\n onRowsPerPageChange: (rowsPerpage: number) => void;\r\n}\r\n\r\n/**\r\n * // TODO: melhorar cálculo de altura\r\n * // TODO: melhorar renders desnecessários\r\n * // TODO: melhorar a compatibildiade mobile\r\n * // TODO: alinhar colunas numéricas à direita\r\n * // TODO: implementar filtros para cada coluna\r\n * // TODO: adicionar um botão para ir para a primeira/última página\r\n * // TODO: corrigir \"bug\" ao trocar ordenação/página com o filtro de colunas ativo\r\n * // TODO: verificar a possibildiade de melhorar o menu de opções de linhas por página (line-height do input)\r\n */\r\nconst DmTable: React.FC = ({\r\n onSearch,\r\n onColumnSort,\r\n onPageChange,\r\n onRowsPerPageChange,\r\n ...props\r\n}: DmTableProps) => {\r\n const theme = useTheme();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const tableRef = useRef();\r\n const [textLabels, setTextLabels] = useState({});\r\n const [searchText, setSearchText] = useState('');\r\n\r\n const handleSearchChange = useCallback(\r\n debounce((value?: string | null) => {\r\n onSearch(value || '');\r\n setSearchText(value || '');\r\n }, 350),\r\n [onSearch]\r\n );\r\n\r\n useEffect(() => {\r\n const newTextLabels = getTextLabels(i18n.language);\r\n setTextLabels(newTextLabels);\r\n }, []);\r\n\r\n const handleChangePage = (currentPage: number) => {\r\n onPageChange(currentPage + 1);\r\n\r\n tableRef?.current?.scrollIntoView({ behavior: 'smooth' });\r\n };\r\n\r\n const handleChangeColumnSort = (\r\n changedColumn: string,\r\n direction: 'asc' | 'desc'\r\n ) => {\r\n onColumnSort(`${changedColumn} ${direction}`);\r\n\r\n if (props.options && props.options.onColumnSortChange) {\r\n props.options?.onColumnSortChange(changedColumn, direction);\r\n }\r\n };\r\n\r\n const customSearch = (\r\n searchText: string,\r\n handleSearch: (text: string) => void,\r\n hideSearch: () => void,\r\n options: any\r\n ) => {\r\n return (\r\n {\r\n hideSearch();\r\n handleSearchChange();\r\n }}\r\n onSearch={(text) => handleSearchChange(text)}\r\n />\r\n );\r\n };\r\n\r\n const customFooter = (\r\n rowCount: number,\r\n page: number,\r\n rowsPerPage: number,\r\n changeRowsPerPage: (page: string | number) => void,\r\n changePage: (newPage: number) => void,\r\n textLabels: Partial\r\n ) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n {\r\n return {\r\n size: 'small',\r\n ref: tableRef,\r\n ...props.options?.setTableProps?.(),\r\n };\r\n },\r\n\r\n customFooter: isDesktop ? undefined : customFooter,\r\n customSearchRender: customSearch,\r\n\r\n onChangePage: handleChangePage,\r\n onSearchChange: handleSearchChange,\r\n onColumnSortChange: handleChangeColumnSort,\r\n onChangeRowsPerPage: onRowsPerPageChange,\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DmTable;\r\n","import { MUIDataTableTextLabels } from 'mui-datatables';\r\n\r\nimport enUsTranslations from 'src/common/Table/Localization/Locales/en-US';\r\nimport ptBrTranslations from 'src/common/Table/Localization/Locales/pt-BR';\r\n\r\nexport default function getTextLabels(lang: string): MUIDataTableTextLabels {\r\n switch (lang) {\r\n case 'en-US':\r\n return enUsTranslations;\r\n case 'pt-BR':\r\n return ptBrTranslations;\r\n default:\r\n return enUsTranslations;\r\n }\r\n}\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n progress: {\r\n top: 4,\r\n position: 'relative',\r\n marginLeft: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport {\r\n CircularProgress,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport useStyles from 'src/common/Table/DmTableTitle/Styles';\r\n\r\nexport interface DmTableTitleProps {\r\n title: string;\r\n isLoading?: boolean;\r\n}\r\n\r\nconst DmTableTitle: React.FC = ({\r\n title,\r\n isLoading,\r\n}: DmTableTitleProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n if (!isDesktop) {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {title}\r\n {isLoading && }\r\n \r\n );\r\n};\r\n\r\nexport default DmTableTitle;\r\n","import { InfoPesquisaAnalise } from 'src/main/Types';\r\n\r\nclass PesquisaAnalise implements InfoPesquisaAnalise {\r\n public numPagina = 1;\r\n public itensPorPagina = 10;\r\n public filtroPadrao = '';\r\n public novaOrdenacao = '';\r\n\r\n public parametrosPersonalizados = new Map();\r\n public dtaInicioFiltro = '';\r\n public dtaFimFiltro = '';\r\n\r\n public constructor(dados?: Partial) {\r\n if (dados) {\r\n Object.assign(this, dados);\r\n }\r\n }\r\n\r\n public clone(): InfoPesquisaAnalise {\r\n const entries = this.parametrosPersonalizados.entries();\r\n\r\n return new PesquisaAnalise({\r\n numPagina: this.numPagina,\r\n itensPorPagina: this.itensPorPagina,\r\n filtroPadrao: this.filtroPadrao,\r\n novaOrdenacao: this.novaOrdenacao,\r\n\r\n parametrosPersonalizados: new Map(entries),\r\n dtaInicioFiltro: this.dtaInicioFiltro,\r\n dtaFimFiltro: this.dtaFimFiltro,\r\n });\r\n }\r\n\r\n public getPage(): number {\r\n if (this.numPagina) {\r\n return this.numPagina > 1 ? this.numPagina - 1 : 0;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public toString(): string {\r\n let stringPesquisa = '';\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `?numPagina=${this.numPagina > 0 ? this.numPagina : ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&itensPorPagina=${this.itensPorPagina > 0 ? this.itensPorPagina : ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&filtroPadrao=${this.filtroPadrao || ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&novaOrdenacao=${this.novaOrdenacao || ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&dtaInicioFiltro=${this.dtaInicioFiltro || ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&dtaFimFiltro=${this.dtaFimFiltro || ''}`\r\n );\r\n\r\n for (const [key, value] of this.parametrosPersonalizados) {\r\n stringPesquisa = stringPesquisa.concat(`&${key}=${value || ''}`);\r\n }\r\n\r\n return stringPesquisa;\r\n }\r\n\r\n public addParametro(key: string, value: string): void {\r\n this.parametrosPersonalizados.set(key, value);\r\n }\r\n\r\n public clearParametros(): void {\r\n this.parametrosPersonalizados.clear();\r\n }\r\n}\r\n\r\nexport default PesquisaAnalise;\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi } from 'src/main/Types';\r\nimport {\r\n AnaliseAcessoAction,\r\n AnaliseAcessoCabecalho,\r\n AnaliseAcessoResumoDetalhe,\r\n AnaliseAcessoTypes,\r\n} from 'src/pages/Analises/Acessos/Types';\r\n\r\nexport const analiseAcessoCabecalhoGetRequest = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_REQUEST);\r\n\r\nexport const analiseAcessoCabecalhoGetSuccess = (\r\n data: RespostaApi>\r\n): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_SUCCESS, data);\r\n\r\nexport const analiseAcessoCabecalhoGetFailure = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_FAILURE);\r\n\r\nexport const analiseAcessoDetalheGetRequest = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_REQUEST);\r\n\r\nexport const analiseAcessoDetalheGetSuccess = (\r\n data: RespostaApi>\r\n): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_SUCCESS, data);\r\n\r\nexport const analiseAcessoDetalheGetFailure = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_FAILURE);\r\n\r\nexport const analiseAcessoAfdGetRequest = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_AFD_REQUEST);\r\n\r\nexport const analiseAcessoAfdGetSuccess = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_AFD_SUCCESS);\r\n\r\nexport const analiseAcessoAfdGetFailure = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_AFD_FAILURE);\r\n\r\nexport const analiseAcessoResetModule = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_RESET_MODULE);\r\n\r\nexport const analiseAcessoExportarCSVDetalhesNavegacaoGetRequest =\r\n (): AnaliseAcessoAction =>\r\n action(\r\n AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_REQUEST\r\n );\r\n\r\nexport const analiseAcessoExportarCSVDetalhesNavegacaoGetSuccess =\r\n (): AnaliseAcessoAction =>\r\n action(\r\n AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_SUCCESS\r\n );\r\n\r\nexport const analiseAcessoExportarCSVDetalhesNavegacaoGetFailure =\r\n (): AnaliseAcessoAction =>\r\n action(\r\n AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_FAILURE\r\n );\r\n\r\nexport const analiseAcessoExportarCSVRequest = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_REQUEST);\r\n\r\nexport const analiseAcessoExportarCSVSuccess = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_SUCCESS);\r\n\r\nexport const analiseAcessoExportarCSVFailure = (): AnaliseAcessoAction =>\r\n action(AnaliseAcessoTypes.ANALISE_ACESSO_GET_EXPORTAR_CSV_FAILURE);\r\n","import { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useClasses = makeStyles({\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: 'inherit',\r\n },\r\n },\r\n});\r\n\r\nexport default useClasses;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n marginTop: {\r\n marginTop: theme.spacing(2),\r\n },\r\n marginLeft: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n exportButton: {\r\n margin: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n toolBarIconButton: {\r\n '&:hover': {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n dialogContainer: {\r\n width: 512,\r\n },\r\n tableContainer: {\r\n margin: theme.spacing(1, 0, 1, 0),\r\n },\r\n expandedRowLoadingBox: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n },\r\n expandedRowCell: {\r\n border: 'none',\r\n },\r\n expandedRowWithIcon: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n border: 'none',\r\n lineHeight: 'initial',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisaAnalise, RespostaApi } from 'src/main/Types';\r\nimport * as AnaliseAcessosActions from 'src/pages/Analises/Acessos/Actions';\r\nimport {\r\n AnaliseAcessoCabecalho,\r\n AnaliseAcessoResumoDetalhe,\r\n AnaliseAcessoAction,\r\n} from 'src/pages/Analises/Acessos/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\nimport {\r\n downloadFile,\r\n getFileNameFromHeader,\r\n} from 'src/resources/Utils/DownloadUtils';\r\n\r\nexport const listarCabecalhos = (\r\n pesquisa: InfoPesquisaAnalise\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoCabecalhoGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get<\r\n RespostaApi>\r\n >(`${ApiUrls.ANALISE_ACESSOS_CABECALHO_URL}/${query}`);\r\n\r\n return dispatch(\r\n AnaliseAcessosActions.analiseAcessoCabecalhoGetSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoCabecalhoGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarCabecalhosIndividual = (\r\n pesquisa: InfoPesquisaAnalise\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoCabecalhoGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get<\r\n RespostaApi>\r\n >(`${ApiUrls.ANALISE_ACESSOS_CABECALHO_INDIVIDUAL_URL}/${query}`);\r\n\r\n return dispatch(\r\n AnaliseAcessosActions.analiseAcessoCabecalhoGetSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoCabecalhoGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarDetalhes = (\r\n idAcesso?: number\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoDetalheGetRequest());\r\n\r\n const query = `?idAcesso=${idAcesso}`;\r\n const response = await apiService.get<\r\n RespostaApi>\r\n >(`${ApiUrls.ANALISE_ACESSOS_DETALHE_URL}/${query}`);\r\n\r\n return dispatch(\r\n AnaliseAcessosActions.analiseAcessoDetalheGetSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoDetalheGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const downloadArquivoAfd = (\r\n idUsuario?: string,\r\n idGrupo?: string,\r\n flgSituacao?: string,\r\n dtaInicioFiltro?: string,\r\n dtaFimFiltro?: string,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoAfdGetRequest());\r\n\r\n let query = '';\r\n query = query.concat(`?idUsuario=${idUsuario || ''}`);\r\n query = query.concat(`&idGrupo=${idGrupo || ''}`);\r\n query = query.concat(`&flgSituacao=${flgSituacao || ''}`);\r\n query = query.concat(`&dtaInicioFiltro=${dtaInicioFiltro || ''}`);\r\n query = query.concat(`&dtaFimFiltro=${dtaFimFiltro || ''}`);\r\n\r\n const response = await apiService.get(\r\n `${ApiUrls.ANALISE_ACESSOS_AFD_URL}/${query}`\r\n );\r\n const fileName = getFileNameFromHeader(response.headers);\r\n\r\n downloadFile(response.data, fileName, 'txt');\r\n onSuccess?.();\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoAfdGetSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoAfdGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const exportarCSVDetalhesNavegacao = (\r\n idAcesso?: number\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(\r\n AnaliseAcessosActions.analiseAcessoExportarCSVDetalhesNavegacaoGetRequest()\r\n );\r\n\r\n const query = `${idAcesso}`;\r\n const response = await apiService.get(\r\n `${ApiUrls.ANALISE_DETALHES_NAVEGACAO_EXPORTAR_CSV_URL}/${query}`\r\n );\r\n const fileName = getFileNameFromHeader(response.headers);\r\n\r\n downloadFile(response.data, fileName, 'csv');\r\n\r\n return dispatch(\r\n AnaliseAcessosActions.analiseAcessoExportarCSVDetalhesNavegacaoGetSuccess()\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(\r\n AnaliseAcessosActions.analiseAcessoExportarCSVDetalhesNavegacaoGetFailure()\r\n );\r\n }\r\n };\r\n};\r\n\r\nexport const exportarCSV = (\r\n pesquisa: InfoPesquisaAnalise\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get(\r\n `${ApiUrls.ANALISE_ACESSOS_EXPORTAR_CSV_URL}/${query}`\r\n );\r\n const fileName = getFileNameFromHeader(response.headers);\r\n\r\n downloadFile(response.data, fileName, 'csv');\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVSuccess());\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const exportarCSVIndividual = (\r\n pesquisa: InfoPesquisaAnalise\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get(\r\n `${ApiUrls.ANALISE_ACESSOS_EXPORTAR_CSV_INDIVIDUAL_URL}/${query}`\r\n );\r\n const fileName = getFileNameFromHeader(response.headers);\r\n\r\n downloadFile(response.data, fileName, 'csv');\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVSuccess());\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(AnaliseAcessosActions.analiseAcessoExportarCSVFailure());\r\n }\r\n };\r\n};\r\n","import React, { Fragment } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Tooltip,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport BlockIcon from '@material-ui/icons/Block';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport PageviewOutlinedIcon from '@material-ui/icons/PageviewOutlined';\r\n\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppDispatch } from 'src/main/Store/Hooks';\r\nimport useClasses from 'src/pages/Analises/Acessos/ExpandableRow/Styles';\r\nimport useStyles from 'src/pages/Analises/Acessos/Styles';\r\nimport { exportarCSVDetalhesNavegacao } from 'src/pages/Analises/Acessos/Thunks';\r\nimport { AnaliseAcessoResumoDetalhe } from 'src/pages/Analises/Acessos/Types';\r\nimport i18n from 'src/resources/i18n';\r\nimport { secondsToDateString } from 'src/resources/Utils/DateUtils';\r\n\r\nexport interface ExpandableRowProps {\r\n rowData: Array;\r\n}\r\n\r\nexport const ExpandableLoadingRow: React.FC = () => {\r\n const classes = useStyles();\r\n const rowClasses = useClasses();\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\nconst ExpandableRow: React.FC = ({\r\n rowData,\r\n}: ExpandableRowProps) => {\r\n const classes = useStyles();\r\n const rowClasses = useClasses();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const handlerExportarCSVDetalhesNavegacao = (idAcesso: number) => {\r\n dispatch(exportarCSVDetalhesNavegacao(idAcesso));\r\n };\r\n\r\n return (\r\n \r\n {rowData.map((resumo) => {\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 \r\n \r\n \r\n \r\n \r\n \r\n {resumo.lstDetalhes?.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.flgAutorizado === 'S' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {item.desSoftware || item.desProcesso}\r\n \r\n \r\n {item.desFornecedor}\r\n \r\n \r\n {secondsToDateString(item.tempoUsoSegundos)}\r\n \r\n \r\n {item.porcentagemUso\r\n ? `${item.porcentagemUso.toFixed(2)}%`\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 {secondsToDateString(resumo.tempoAutorizado)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resumo.porcentagemAutorizado\r\n ? `${resumo.porcentagemAutorizado.toFixed(2)}%`\r\n : '-'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {secondsToDateString(resumo.tempoNaoAutorizado)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resumo.porcentagemNaoAutorizado\r\n ? `${resumo.porcentagemNaoAutorizado.toFixed(\r\n 2\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 className={classes.exportButton}\r\n variant=\"text\"\r\n onClick={() => {\r\n handlerExportarCSVDetalhesNavegacao(\r\n resumo.idAcesso\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\nexport default ExpandableRow;\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Equipe,\r\n EquipeAction,\r\n EquipeFormData,\r\n EquipeTypes,\r\n} from 'src/pages/Cadastros/Equipes/Types';\r\n\r\nexport const equipeGetRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_GET_REQUEST);\r\n\r\nexport const equipeGetSuccess = (\r\n data: RespostaApi>\r\n): EquipeAction => action(EquipeTypes.EQUIPE_GET_SUCCESS, data);\r\n\r\nexport const equipeGetFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_GET_FAILURE);\r\n\r\nexport const equipeGetFilterListRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_GET_FILTER_REQUEST);\r\n\r\nexport const equipeGetFilterListSuccess = (\r\n data: RespostaApi>\r\n): EquipeAction => action(EquipeTypes.EQUIPE_GET_FILTER_SUCCESS, data);\r\n\r\nexport const equipeGetFilterListFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_GET_FILTER_FAILURE);\r\n\r\nexport const equipePostRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_POST_REQUEST);\r\n\r\nexport const equipePostSuccess = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_POST_SUCCESS);\r\n\r\nexport const equipePostFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_POST_FAILURE);\r\n\r\nexport const equipePutRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_PUT_REQUEST);\r\n\r\nexport const equipePutSuccess = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_PUT_SUCCESS);\r\n\r\nexport const equipePutFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_PUT_FAILURE);\r\n\r\nexport const equipeDisableRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DISABLE_REQUEST);\r\n\r\nexport const equipeDisableSuccess = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DISABLE_SUCCESS);\r\n\r\nexport const equipeDisableFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DISABLE_FAILURE);\r\n\r\nexport const equipeDeleteRequest = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DELETE_REQUEST);\r\n\r\nexport const equipeDeleteSuccess = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DELETE_SUCCESS);\r\n\r\nexport const equipeDeleteFailure = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_DELETE_FAILURE);\r\n\r\nexport const equipeSetFormData = (\r\n data: Partial\r\n): EquipeAction => action(EquipeTypes.EQUIPE_SET_FORM_DATA, data);\r\n\r\nexport const equipeResetFormData = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_RESET_FORM_DATA);\r\n\r\nexport const equipeClearFilterList = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_RESET_FILTER_LIST);\r\n\r\nexport const equipeResetModule = (): EquipeAction =>\r\n action(EquipeTypes.EQUIPE_RESET_MODULE);\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisa, RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport * as EquipesActions from 'src/pages/Cadastros/Equipes/Actions';\r\nimport { Equipe, EquipeAction } from 'src/pages/Cadastros/Equipes/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const listarEquipes = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipeGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.EQUIPES_URL}/${query}`\r\n );\r\n\r\n return dispatch(EquipesActions.equipeGetSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipeGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const cadastrarEquipe = (\r\n dados: Equipe,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipePostRequest());\r\n\r\n const response = await apiService.post(\r\n ApiUrls.EQUIPES_URL,\r\n dados\r\n );\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(EquipesActions.equipePostSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipePostFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const atualizarEquipe = (\r\n dados: Equipe,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipePutRequest());\r\n\r\n const response = await apiService.put(ApiUrls.EQUIPES_URL, dados);\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(EquipesActions.equipePutSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipePutFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const deletarEquipe = (\r\n equipe: Equipe,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipeDeleteRequest());\r\n\r\n const query = `${equipe.idEquipe}`;\r\n const response = await apiService.delete(\r\n `${ApiUrls.EQUIPES_URL}/${query}`\r\n );\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(EquipesActions.equipeDeleteSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipeDeleteFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const desativarEquipe = (\r\n equipe: Equipe,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipeDisableRequest());\r\n\r\n const query = `${equipe.idEquipe}`;\r\n const response = await apiService.patch(\r\n `${ApiUrls.EQUIPES_DESATIVAR_URL}/${query}`\r\n );\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(EquipesActions.equipeDisableSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipeDisableFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarEquipesFiltroSupervisionados = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EquipesActions.equipeGetFilterListRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.EQUIPES_FILTER_SUPERVISIONADOS_URL}/${query}`\r\n );\r\n\r\n return dispatch(EquipesActions.equipeGetFilterListSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EquipesActions.equipeGetFilterListFailure());\r\n }\r\n };\r\n};\r\n","import { Locale } from 'date-fns';\r\nimport * as locales from 'date-fns/locale';\r\n\r\ninterface LocaleFormat {\r\n [key: string]: string;\r\n}\r\n\r\nconst dateFormatMap: LocaleFormat = {\r\n 'en-US': 'MM/dd/yyyy',\r\n en: 'MM/dd/yyyy',\r\n 'pt-BR': 'dd/MM/yyyy',\r\n pt: 'dd/MM/yyyy',\r\n};\r\n\r\nconst dateTimeFormatMap: LocaleFormat = {\r\n 'en-US': 'MM/dd/yyyy HH:mm:ss',\r\n en: 'MM/dd/yyyy HH:mm:ss',\r\n 'pt-BR': 'dd/MM/yyyy HH:mm:ss',\r\n pt: 'dd/MM/yyyy HH:mm:ss',\r\n};\r\n\r\nexport function getLocale(lang: string): Locale {\r\n return (\r\n Object.values(locales).find((item) => {\r\n return item.code === lang;\r\n }) ?? locales.ptBR\r\n );\r\n}\r\n\r\nexport function getDateFormat(lang: string): string {\r\n return dateFormatMap[lang] ?? dateFormatMap['pt-BR'];\r\n}\r\n\r\nexport function getDateTimeFormat(lang: string): string {\r\n return dateTimeFormatMap[lang] ?? dateTimeFormatMap['pt-BR'];\r\n}\r\n","import 'date-fns';\r\nimport React, { useState, useEffect, useCallback } from 'react';\r\n\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport {\r\n Box,\r\n Chip,\r\n Grid,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n Tooltip,\r\n IconButton,\r\n} from '@material-ui/core';\r\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider,\r\n} from '@material-ui/pickers';\r\nimport * as dateFns from 'date-fns';\r\nimport DownloadCircleIcon from 'mdi-material-ui/DownloadCircle';\r\nimport {\r\n MUIDataTableColumnDef,\r\n MUIDataTableColumn,\r\n MUISortOptions,\r\n MUIDataTableMeta,\r\n} from 'mui-datatables';\r\n\r\nimport DmIf from 'src/common/Operators/DmIf';\r\nimport DmTable from 'src/common/Table/DmTable';\r\nimport DmTableTitle from 'src/common/Table/DmTableTitle';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport PesquisaAnalise from 'src/main/Classes/PesquisaAnalise';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport { InfoPesquisaAnalise, TipoFiltro } from 'src/main/Types';\r\nimport { analiseAcessoResetModule } from 'src/pages/Analises/Acessos/Actions';\r\nimport ExpandableRow, {\r\n ExpandableLoadingRow,\r\n} from 'src/pages/Analises/Acessos/ExpandableRow';\r\nimport useStyles from 'src/pages/Analises/Acessos/Styles';\r\nimport {\r\n exportarCSV,\r\n exportarCSVIndividual,\r\n listarCabecalhos,\r\n listarCabecalhosIndividual,\r\n listarDetalhes,\r\n} from 'src/pages/Analises/Acessos/Thunks';\r\nimport { listarEquipesFiltroSupervisionados } from 'src/pages/Cadastros/Equipes/Thunks';\r\nimport { listarUsuariosFiltroSupervisionados } from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport { useInterval, useDocumentListener } from 'src/pages/Hooks';\r\nimport { PageProps } from 'src/pages/Types';\r\nimport i18n from 'src/resources/i18n';\r\nimport {\r\n getLocale,\r\n getDateFormat,\r\n getDateTimeFormat,\r\n} from 'src/resources/i18n/date-fns';\r\nimport * as DateUtils from 'src/resources/Utils/DateUtils';\r\n\r\nconst dateFormat = getDateFormat(i18n.language);\r\nconst dateTimeFormat = getDateTimeFormat(i18n.language);\r\n\r\nconst startMonth = dateFns.startOfMonth(new Date());\r\nconst endMonth = dateFns.endOfMonth(new Date());\r\n\r\nconst dataLabels = [\r\n i18n.t('components.dmDatePicker.hoje'),\r\n i18n.t('components.dmDatePicker.anoAtual'),\r\n i18n.t('components.dmDatePicker.mesAtual'),\r\n i18n.t('components.dmDatePicker.ultimosSeisMeses'),\r\n i18n.t('components.dmDatePicker.ultimosTresMeses'),\r\n i18n.t('components.dmDatePicker.ultimosQuinzeDias'),\r\n i18n.t('components.dmDatePicker.ultimaSemana'),\r\n i18n.t('components.dmDatePicker.personalizado'),\r\n];\r\n\r\nconst dataValues = ['0', '1', '2', '3', '4', '5', '6', '7'];\r\n\r\nconst tiposSituacao = [\r\n {\r\n key: 'A',\r\n label: i18n.t('analiseAcessosPage.lblAberto'),\r\n },\r\n {\r\n key: 'F',\r\n label: i18n.t('analiseAcessosPage.lblFinalizado'),\r\n },\r\n];\r\n\r\nexport interface DmDatePickerProps {\r\n label?: string;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n startDate?: Date;\r\n onDateChange(date?: Date | null, dateString?: string | null): void;\r\n}\r\n\r\nconst DmDatePicker: React.FC = ({\r\n label,\r\n minDate,\r\n maxDate,\r\n startDate,\r\n onDateChange,\r\n}: DmDatePickerProps) => {\r\n const locale = getLocale(i18n.language);\r\n const [date, setDate] = useState(startDate || new Date());\r\n\r\n return (\r\n \r\n {\r\n setDate(date);\r\n onDateChange(date, value);\r\n }}\r\n okLabel={i18n.t('components.datePicker.okLabel')}\r\n clearLabel={i18n.t('components.datePicker.clearLabel')}\r\n todayLabel={i18n.t('components.datePicker.todayLabel')}\r\n cancelLabel={i18n.t('components.datePicker.cancelLabel')}\r\n invalidDateMessage={i18n.t('components.datePicker.invalidDateMessage')}\r\n maxDateMessage={i18n.t('components.datePicker.maxDateMessage')}\r\n minDateMessage={i18n.t('components.datePicker.minDateMessage')}\r\n margin=\"dense\"\r\n variant=\"dialog\"\r\n label={label}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst getTableColumns = (\r\n isDesktop: boolean,\r\n equipes: Array,\r\n usuarios: Array,\r\n dates: Array,\r\n customDate = false,\r\n isDesktopUser = false\r\n): Array => {\r\n let columns = new Array();\r\n\r\n columns = columns.concat([\r\n {\r\n name: 'idUsuario',\r\n label: i18n.t('analiseAcessosPage.colDefNomUsuario'),\r\n options: {\r\n empty: true,\r\n filter: !isDesktopUser,\r\n display: false,\r\n viewColumns: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: usuarios.map((item) => item.idRegistro),\r\n renderValue: (value) => {\r\n return (\r\n usuarios.find((item) => item.idRegistro == value)?.descricao ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return usuarios.find((item) => item.idRegistro == value)?.descricao;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'idEquipe',\r\n label: i18n.t('analiseAcessosPage.colDefIdEquipe'),\r\n options: {\r\n empty: true,\r\n filter: !isDesktopUser,\r\n display: false,\r\n viewColumns: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: equipes.map((item) => item.idRegistro),\r\n renderValue: (value) => {\r\n return (\r\n equipes.find((item) => item.idRegistro == value)?.descricao ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return equipes.find((item) => item.idRegistro == value)?.descricao;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'dtaAcesso',\r\n label: i18n.t('analiseAcessosPage.colDefDtaAcesso'),\r\n options: {\r\n empty: true,\r\n filter: true,\r\n display: false,\r\n viewColumns: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: dataValues,\r\n renderValue: (value) => {\r\n return (\r\n dataLabels.find((item, index) => index.toString() === value) ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n if (value === '7') {\r\n return [\r\n i18n.t('common.lblDataDe'),\r\n ` ${DateUtils.toFormat(dates[0], dateFormat)} `,\r\n i18n.t('common.lblDataA'),\r\n ` ${DateUtils.toFormat(dates[1], dateFormat)}`,\r\n ];\r\n }\r\n\r\n return dataLabels.find((item, index) => index.toString() === value);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'nomUsuario',\r\n label: i18n.t('analiseAcessosPage.colDefNomUsuario'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n },\r\n },\r\n {\r\n name: 'dtaHorInicio',\r\n label: i18n.t('analiseAcessosPage.colDefDtaHorInicio'),\r\n options: {\r\n sort: true,\r\n filter: customDate,\r\n filterType: 'custom',\r\n customFilterListOptions: {\r\n render: () => {\r\n return [];\r\n },\r\n update: (filterList, filterPos, index) => {\r\n filterList[index].splice(filterPos, 1);\r\n return filterList;\r\n },\r\n },\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n return (\r\n {\r\n filterList[index] = dateString ? [dateString] : [];\r\n\r\n onChange(filterList[index], index, column);\r\n }}\r\n />\r\n );\r\n },\r\n },\r\n customBodyRender: (value: string) => {\r\n return DateUtils.changeDateFormat(\r\n value,\r\n 'yyyy-MM-dd HH:mm:ss',\r\n dateTimeFormat\r\n );\r\n },\r\n },\r\n },\r\n {\r\n name: 'dtaHorFim',\r\n label: i18n.t('analiseAcessosPage.colDefDtaHorFim'),\r\n options: {\r\n sort: true,\r\n filter: customDate,\r\n filterType: 'custom',\r\n customFilterListOptions: {\r\n render: () => {\r\n return [];\r\n },\r\n update: (filterList, filterPos, index) => {\r\n filterList[index].splice(filterPos, 1);\r\n return filterList;\r\n },\r\n },\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n return (\r\n {\r\n filterList[index] = dateString ? [dateString] : [];\r\n\r\n onChange(filterList[index], index, column);\r\n }}\r\n />\r\n );\r\n },\r\n },\r\n customBodyRender: (value: string) => {\r\n return DateUtils.changeDateFormat(\r\n value,\r\n 'yyyy-MM-dd HH:mm:ss',\r\n dateTimeFormat\r\n );\r\n },\r\n },\r\n },\r\n {\r\n name: 'tempoTotalSegundos',\r\n label: i18n.t('analiseAcessosPage.colDefTempoTotalSegundos'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n display: isDesktop,\r\n customBodyRender: (value: number) => {\r\n return DateUtils.secondsToDateString(value);\r\n },\r\n },\r\n },\r\n {\r\n name: 'tempoRegistradoSegundos',\r\n label: i18n.t('analiseAcessosPage.colDefTempoRegistradoSegundos'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n display: isDesktop,\r\n customBodyRender: (value: number) => {\r\n return DateUtils.secondsToDateString(value);\r\n },\r\n },\r\n },\r\n {\r\n name: 'tempoAtivoSegundos',\r\n label: i18n.t('analiseAcessosPage.colDefTempoAtivoSegundos'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n display: isDesktop,\r\n customBodyRender: (value: number) => {\r\n return DateUtils.secondsToDateString(value);\r\n },\r\n },\r\n },\r\n {\r\n name: 'tempoInativoSegundos',\r\n label: i18n.t('analiseAcessosPage.colDefTempoInativoSegundos'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n display: isDesktop,\r\n customBodyRender: (value: number) => {\r\n return DateUtils.secondsToDateString(value);\r\n },\r\n },\r\n },\r\n {\r\n name: 'flgAlertaInatividade',\r\n options: {\r\n empty: true,\r\n filter: false,\r\n display: false,\r\n viewColumns: false,\r\n },\r\n },\r\n {\r\n name: 'ultimoTempoInativoSegundos',\r\n label: i18n.t('analiseAcessosPage.colDefUltimoTempoInativoSegundos'),\r\n options: {\r\n sort: true,\r\n filter: false,\r\n display: isDesktop,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n );\r\n },\r\n },\r\n },\r\n {\r\n name: 'flgSituacao',\r\n label: i18n.t('analiseAcessosPage.colDefFlgSituacao'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposSituacao.map((item) => item.key),\r\n renderValue: (value) => {\r\n return (\r\n tiposSituacao.find((item) => item.key === value)?.label ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return (\r\n tiposSituacao.find((item) => item.key === value)?.label ?? ''\r\n );\r\n },\r\n },\r\n display: isDesktop,\r\n customBodyRender: (value: string) => {\r\n return (\r\n : }\r\n />\r\n );\r\n },\r\n },\r\n },\r\n ]);\r\n\r\n return columns;\r\n};\r\n\r\nexport interface AnaliseAcessosProps extends PageProps {\r\n isDesktopUser?: boolean;\r\n}\r\n\r\nconst AnaliseAcessos: React.FC = ({\r\n user,\r\n isDesktopUser,\r\n}: AnaliseAcessosProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const data = useAppSelector((state) => state.analiseAcessos.data);\r\n const equipes = useAppSelector((state) => state.equipes.filterList);\r\n const usuarios = useAppSelector((state) => state.usuarios.filterList);\r\n const isLoading = useAppSelector((state) => state.analiseAcessos.loading);\r\n const pagination = useAppSelector((state) => state.analiseAcessos.pagination);\r\n\r\n const [customDate, setCustomDate] = useState(false);\r\n const [dates, setDates] = useState>([startMonth, endMonth]);\r\n const [expandedRows, setExpandedRows] = useState>([]);\r\n\r\n const [tableColumns, setTableColumns] = useState<\r\n Array\r\n >(\r\n getTableColumns(\r\n isDesktop,\r\n equipes,\r\n usuarios,\r\n dates,\r\n customDate,\r\n isDesktopUser\r\n )\r\n );\r\n\r\n const [pesquisa, setPesquisa] = useState(() => {\r\n const t = new PesquisaAnalise({ novaOrdenacao: 'dtaHorInicio desc' });\r\n if (isDesktopUser) {\r\n t.addParametro('idUsuario', `${user?.idUsuario || ''}`);\r\n }\r\n\r\n return t;\r\n });\r\n\r\n const [sortOptions, setSortOptions] = useState({\r\n name: 'dtaHorInicio',\r\n direction: 'desc',\r\n });\r\n\r\n const handleAutomaticUpdate = useCallback(async () => {\r\n const lstIdAcesso = expandedRows.map((index) => data[index].idAcesso);\r\n await handleListarCabecalhos();\r\n let newExpandedRows = data.map((value, index) => {\r\n return lstIdAcesso.indexOf(value.idAcesso) > -1 ? index : -1;\r\n });\r\n newExpandedRows = newExpandedRows.filter((value) => value !== -1);\r\n setExpandedRows(newExpandedRows);\r\n newExpandedRows.forEach((item) => {\r\n dispatch(listarDetalhes(data[item].idAcesso));\r\n });\r\n }, [data, expandedRows, dispatch]);\r\n\r\n useInterval(() => handleAutomaticUpdate(), 300_000);\r\n\r\n useDocumentListener('keydown', async (event) => {\r\n const e = event as KeyboardEvent;\r\n if (e.key === 'F5') {\r\n e.preventDefault();\r\n handleAutomaticUpdate();\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n const novaPesquisa = pesquisa.clone();\r\n novaPesquisa.clearParametros();\r\n\r\n if (!isDesktopUser) {\r\n const pesquisaFiltro = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n dispatch(listarEquipesFiltroSupervisionados(pesquisaFiltro));\r\n dispatch(listarUsuariosFiltroSupervisionados(pesquisaFiltro));\r\n\r\n setPesquisa(novaPesquisa);\r\n } else if (isDesktopUser) {\r\n setPesquisa(novaPesquisa);\r\n }\r\n\r\n return () => {\r\n dispatch(analiseAcessoResetModule());\r\n };\r\n }, [isDesktopUser]);\r\n\r\n useEffect(() => {\r\n const columns = getTableColumns(\r\n isDesktop,\r\n equipes,\r\n usuarios,\r\n dates,\r\n customDate,\r\n isDesktopUser\r\n );\r\n setTableColumns(columns);\r\n }, [isDesktop, usuarios, equipes, customDate, dates, isDesktopUser]);\r\n\r\n useEffect(() => {\r\n if (data.length === 0 && pagination.totRegistros !== 0) {\r\n handlePesquisa('numPagina', 1);\r\n }\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n handleListarCabecalhos();\r\n }, [pesquisa]);\r\n\r\n const handleListarCabecalhos = async () => {\r\n await dispatch(\r\n !isDesktopUser\r\n ? listarCabecalhos(pesquisa)\r\n : listarCabecalhosIndividual(pesquisa)\r\n );\r\n };\r\n\r\n const handlePesquisa = (\r\n key: string,\r\n value: number | string,\r\n customFilter = false,\r\n resetFilter = false\r\n ) => {\r\n if (resetFilter) {\r\n const novaPesquisa = pesquisa.clone();\r\n pesquisa.numPagina = 1;\r\n\r\n novaPesquisa.clearParametros();\r\n\r\n setPesquisa(novaPesquisa);\r\n setExpandedRows([]);\r\n\r\n return;\r\n }\r\n\r\n if (key === 'filtroPadrao' && !value && !pesquisa.filtroPadrao) {\r\n return;\r\n }\r\n\r\n const novaPesquisa = pesquisa.clone();\r\n novaPesquisa.numPagina = 1;\r\n\r\n if (customFilter) {\r\n novaPesquisa.addParametro(key, value ? value.toString() : '');\r\n } else {\r\n novaPesquisa[key as keyof InfoPesquisaAnalise] = value as never;\r\n }\r\n\r\n setPesquisa(novaPesquisa);\r\n setExpandedRows([]);\r\n };\r\n\r\n const handlePesquisaData = (\r\n dtaInicioFiltro?: string | null,\r\n dtaFimFiltro?: string | null\r\n ) => {\r\n const novaPesquisa = pesquisa.clone();\r\n\r\n novaPesquisa.numPagina = 1;\r\n novaPesquisa.dtaInicioFiltro =\r\n dtaInicioFiltro ?? novaPesquisa.dtaInicioFiltro;\r\n novaPesquisa.dtaFimFiltro = dtaFimFiltro ?? novaPesquisa.dtaFimFiltro;\r\n\r\n setPesquisa(novaPesquisa);\r\n setExpandedRows([]);\r\n };\r\n\r\n const handleLoadingDetalhes = (item: number) => {\r\n const index = expandedRows.findIndex((x) => x === item);\r\n const newExpandedRows = [...expandedRows];\r\n\r\n if (index === -1) {\r\n newExpandedRows.push(item);\r\n } else {\r\n newExpandedRows.splice(index, 1);\r\n }\r\n\r\n setExpandedRows(newExpandedRows);\r\n\r\n if (index === -1 && !data[item].lstResumoDetalhes) {\r\n dispatch(listarDetalhes(data[item].idAcesso));\r\n }\r\n };\r\n\r\n const handleDownloadCSV = () => {\r\n dispatch(\r\n !isDesktopUser ? exportarCSV(pesquisa) : exportarCSVIndividual(pesquisa)\r\n );\r\n };\r\n\r\n const renderExpandableRow = (\r\n rowData: Array,\r\n rowMeta: { dataIndex: number; rowIndex: number }\r\n ) => {\r\n const index = rowMeta.dataIndex;\r\n const value = data[index].lstResumoDetalhes;\r\n\r\n if (!value) {\r\n return ;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n const customToolBar = () => {\r\n return (\r\n \r\n handleDownloadCSV()}\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n data={data || []}\r\n columns={tableColumns}\r\n options={{\r\n download: false,\r\n\r\n page: pesquisa.getPage(),\r\n count: pagination?.totRegistros || 0,\r\n rowsPerPage: pesquisa.itensPorPagina,\r\n\r\n searchPlaceholder: i18n.t('common.lblPesquisar'),\r\n\r\n sortOrder: sortOptions,\r\n onColumnSortChange: (changedColumn, direction) => {\r\n setSortOptions({\r\n name: changedColumn,\r\n direction: direction,\r\n });\r\n },\r\n\r\n customToolbar: customToolBar,\r\n setTableProps: () => {\r\n return {\r\n size: 'medium',\r\n };\r\n },\r\n\r\n sortFilterList: false,\r\n expandableRows: isDesktop,\r\n\r\n rowsExpanded: expandedRows,\r\n renderExpandableRow: renderExpandableRow,\r\n expandableRowsHeader: false,\r\n expandableRowsOnClick: isDesktop,\r\n onRowExpansionChange: (currentRows) => {\r\n handleLoadingDetalhes(currentRows[0].dataIndex);\r\n },\r\n\r\n onViewColumnsChange: (changedColumn, action) => {\r\n const columns = tableColumns as Array;\r\n\r\n const newColumns = columns.map((item) => {\r\n if (item.name === changedColumn) {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n display: action === 'add',\r\n },\r\n };\r\n }\r\n\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n },\r\n\r\n onFilterChange: (\r\n changedColumn,\r\n filterList,\r\n type,\r\n changedColumnIndex\r\n ) => {\r\n if (type === 'reset') {\r\n setCustomDate(false);\r\n handlePesquisa('', '', false, true);\r\n handlePesquisaData('', '');\r\n return;\r\n }\r\n\r\n if (\r\n changedColumn !== 'dtaAcesso' &&\r\n changedColumn !== 'dtaHorInicio' &&\r\n changedColumn !== 'dtaHorFim'\r\n ) {\r\n handlePesquisa(\r\n changedColumn?.toString() || '',\r\n filterList[changedColumnIndex][0],\r\n true\r\n );\r\n } else if (changedColumn === 'dtaAcesso') {\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n if (value !== '7' && customDate) {\r\n setCustomDate(false);\r\n handlePesquisaData('', '');\r\n\r\n if (!value) {\r\n return;\r\n }\r\n }\r\n\r\n let start = new Date();\r\n let end = new Date();\r\n switch (value) {\r\n case '0': {\r\n start = dateFns.startOfDay(start);\r\n end = dateFns.startOfDay(end);\r\n break;\r\n }\r\n case '1': {\r\n start = dateFns.startOfYear(start);\r\n end = dateFns.endOfYear(end);\r\n break;\r\n }\r\n case '2': {\r\n start = dateFns.startOfMonth(start);\r\n end = dateFns.endOfMonth(end);\r\n break;\r\n }\r\n case '3': {\r\n start = dateFns.subMonths(start, 6);\r\n break;\r\n }\r\n case '4': {\r\n start = dateFns.subMonths(end, 3);\r\n break;\r\n }\r\n case '5': {\r\n start = dateFns.subDays(start, 15);\r\n break;\r\n }\r\n case '6': {\r\n start = dateFns.subDays(start, 7);\r\n break;\r\n }\r\n case '7': {\r\n start = dateFns.startOfMonth(start);\r\n end = dateFns.endOfMonth(end);\r\n setCustomDate(true);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n\r\n handlePesquisaData(\r\n dateFns.format(start, 'yyyy-MM-dd'),\r\n dateFns.format(end, 'yyyy-MM-dd')\r\n );\r\n } else if (changedColumn === 'dtaHorInicio') {\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n const dtaInicioFiltro =\r\n DateUtils.changeDateFormat(value, dateFormat, 'yyyy-MM-dd') ||\r\n '';\r\n\r\n const newDates = [...dates];\r\n newDates[0] = DateUtils.toDate(value, dateFormat) || dates[0];\r\n\r\n setDates(newDates);\r\n handlePesquisaData(dtaInicioFiltro, null);\r\n } else if (changedColumn === 'dtaHorFim') {\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n const dtaFimFiltro =\r\n DateUtils.changeDateFormat(value, dateFormat, 'yyyy-MM-dd') ||\r\n '';\r\n\r\n const newDates = [...dates];\r\n newDates[1] = DateUtils.toDate(value, dateFormat) || dates[1];\r\n\r\n setDates(newDates);\r\n handlePesquisaData(null, dtaFimFiltro);\r\n }\r\n },\r\n }}\r\n onSearch={(searchText) => handlePesquisa('filtroPadrao', searchText)}\r\n onColumnSort={(columnSort) =>\r\n handlePesquisa('novaOrdenacao', columnSort)\r\n }\r\n onPageChange={(page) => handlePesquisa('numPagina', page)}\r\n onRowsPerPageChange={(rowsPerPage) =>\r\n handlePesquisa('itensPorPagina', rowsPerPage)\r\n }\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AnaliseAcessos;\r\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\n\r\nimport Lottie from 'lottie-web';\r\n\r\nimport animationData from 'src/resources/looties/loadingLottie.json';\r\nimport './Styles/index.css';\r\n\r\nconst UncontrolledLottie = (props) => {\r\n React.useEffect(() => {\r\n Lottie.loadAnimation({\r\n container: document.querySelector(\r\n `#lottie${props.loadingIndex ? props.loadingIndex : ''}`\r\n ),\r\n animationData: animationData,\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default UncontrolledLottie;\r\n","import React from 'react';\r\n\r\nimport UncontrolledLottie from 'src/common/Lottie';\r\nimport { AnaliseUsoApp } from 'src/pages/Analises/UsoAplicacoes/Types';\r\nimport { secondsToHours } from 'src/resources/Utils/DateUtils';\r\nimport './Styles/index.css';\r\n\r\nfunction timeLine(data?: Array) {\r\n if (data && data.length > 0) {\r\n const aux = data[0]?.mediaUso / 8;\r\n const arr: JSX.Element[] = [];\r\n\r\n for (let i = 0; i < 9; i++) {\r\n let h = '';\r\n\r\n h = secondsToHours(aux * i);\r\n\r\n arr.push(\r\n
\r\n {h}\r\n
\r\n );\r\n }\r\n\r\n return
{arr}
;\r\n }\r\n}\r\n\r\nfunction calcWidth(maiorValor: number, valor: number) {\r\n return (valor / maiorValor) * 100;\r\n}\r\n\r\nfunction rows(data?: Array) {\r\n if (data) {\r\n return (\r\n
\r\n {data.map((usoApp, index) => {\r\n return (\r\n \r\n
\r\n
\r\n {usoApp.desSoftware ? usoApp.desSoftware : usoApp.desProcesso}\r\n
\r\n
\r\n {secondsToHours(usoApp.mediaUso)}\r\n
\r\n
\r\n
\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n}\r\n\r\ntype Props = {\r\n data?: Array;\r\n isLoading?: boolean;\r\n loadingIndex?: number;\r\n};\r\n\r\nconst AppUseChart: React.FC = (props: Props) => {\r\n if (!props.isLoading) {\r\n return (\r\n
\r\n {timeLine(props.data)}\r\n {rows(props.data)}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default AppUseChart;\r\n","import { InfoPesquisaUsoApp } from 'src/main/Types';\r\n\r\nclass PesquisaUsoApp implements InfoPesquisaUsoApp {\r\n public dtaInicioFiltro = '';\r\n public dtaFimFiltro = '';\r\n public novaOrdenacao = '';\r\n public idUsuario = 1;\r\n public tempoMinimoMedioUso = 600;\r\n public lstIdEquipes = '';\r\n public parametrosPersonalizados = new Map();\r\n\r\n public constructor(dados?: Partial) {\r\n if (dados) {\r\n Object.assign(this, dados);\r\n }\r\n }\r\n\r\n public clone(): InfoPesquisaUsoApp {\r\n const entries = this.parametrosPersonalizados.entries();\r\n\r\n return new PesquisaUsoApp({\r\n dtaInicioFiltro: this.dtaInicioFiltro,\r\n dtaFimFiltro: this.dtaFimFiltro,\r\n novaOrdenacao: this.novaOrdenacao,\r\n idUsuario: this.idUsuario,\r\n tempoMinimoMedioUso: this.tempoMinimoMedioUso,\r\n lstIdEquipes: this.lstIdEquipes,\r\n parametrosPersonalizados: new Map(entries),\r\n });\r\n }\r\n\r\n public addParametro(key: string, value: string): void {\r\n this.parametrosPersonalizados.set(key, value);\r\n }\r\n\r\n public clearParametros(): void {\r\n this.parametrosPersonalizados.clear();\r\n }\r\n\r\n public toString(): string {\r\n let stringPesquisa = '';\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `?dtaInicioFiltro=${this.dtaInicioFiltro}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&dtaFimFiltro=${this.dtaFimFiltro}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&tempoMinimoMedioUso=${this.tempoMinimoMedioUso}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(`&idUsuario=${this.idUsuario}`);\r\n\r\n for (const [key, value] of this.parametrosPersonalizados) {\r\n stringPesquisa = stringPesquisa.concat(`&${key}=${value || ''}`);\r\n }\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&novaOrdenacao=${this.novaOrdenacao || ''}`\r\n );\r\n\r\n stringPesquisa = stringPesquisa.concat(\r\n `&lstIdEquipes=${this.lstIdEquipes || ''}`\r\n );\r\n\r\n return stringPesquisa;\r\n }\r\n}\r\n\r\nexport default PesquisaUsoApp;\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\n\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from '@material-ui/pickers';\r\n\r\nimport './Styles/index.css';\r\nimport AppUseChart from 'src/common/Chart/DmChartInfo';\r\nimport UncontrolledLottie from 'src/common/Lottie';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport PesquisaUsoApp from 'src/main/Classes/PesquisaUsoApp';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport { InfoPesquisaUsoApp, TipoFiltro } from 'src/main/Types';\r\nimport { listarComparativo } from 'src/pages/Analises/UsoAplicacoes/Thunks';\r\nimport { listarEquipesFiltroSupervisionados } from 'src/pages/Cadastros/Equipes/Thunks';\r\nimport { listarUsuariosFiltroSupervisionados } from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\nimport { getLocale } from 'src/resources/i18n/date-fns';\r\nimport * as DateUtils from 'src/resources/Utils/DateUtils';\r\nimport { debounce } from 'src/resources/Utils/FunctionsUtils';\r\n\r\nfunction theFirstDay() {\r\n return new Date(new Date().setDate(1));\r\n}\r\n\r\nexport interface DmDatePickerProps {\r\n label?: string;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n startDate?: Date;\r\n onDateChange(date?: Date | null, dateString?: string | null): void;\r\n}\r\n\r\nconst DmDatePicker: React.FC = ({\r\n label,\r\n minDate,\r\n maxDate,\r\n startDate,\r\n onDateChange,\r\n}: DmDatePickerProps) => {\r\n const locale = getLocale(i18n.language);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AnaliseUsoAplicacoes = (): JSX.Element => {\r\n const user = useAppSelector((state) => state.sessao.data);\r\n const typeUser = useAppSelector((state) => state.sessao.data?.flgTipo);\r\n const [usuarioSelecionado, setUsuarioSelecionado] =\r\n useState(() => {\r\n return user\r\n ? { idRegistro: `${user.idUsuario}`, descricao: user.nomUsuario }\r\n : null;\r\n });\r\n\r\n const [equipesSelecionados, setEquipesSelecionados] = useState(\r\n []\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const fullData = useAppSelector((state) => state.analiseUsoApp.data);\r\n const isLoading = useAppSelector((state) => state.analiseUsoApp.loading);\r\n\r\n const [pesquisa, setPesquisa] = useState(() => {\r\n const t = new PesquisaUsoApp({\r\n novaOrdenacao: 'mediaUso desc',\r\n });\r\n\r\n if (usuarioSelecionado) t.idUsuario = +usuarioSelecionado.idRegistro;\r\n else if (user) t.idUsuario = user.idUsuario;\r\n\r\n t.tempoMinimoMedioUso = 600;\r\n\r\n t.dtaInicioFiltro =\r\n DateUtils.toFormat(new Date(theFirstDay().getTime()), 'yyyy-MM-dd') || '';\r\n\r\n t.dtaFimFiltro = DateUtils.toFormat(new Date(), 'yyyy-MM-dd') || '';\r\n return t;\r\n });\r\n const [auxpesquisa, setAuxPesquisa] = useState(pesquisa);\r\n\r\n const handleListarComparativo = () => {\r\n dispatch(listarComparativo(pesquisa));\r\n };\r\n useEffect(() => {\r\n handleListarComparativo();\r\n }, [pesquisa]);\r\n\r\n const [valueSlider, setValueSlider] = useState([\r\n theFirstDay().getTime(),\r\n new Date().getTime(),\r\n ]);\r\n\r\n const handleChangeUsuario = useCallback(\r\n (event: React.ChangeEvent, newValue: TipoFiltro | null) => {\r\n setUsuarioSelecionado(newValue);\r\n const novaPesquisa = auxpesquisa.clone();\r\n if (newValue) novaPesquisa.idUsuario = +newValue.idRegistro;\r\n else if (user) {\r\n novaPesquisa.idUsuario = user.idUsuario;\r\n\r\n setUsuarioSelecionado({\r\n idRegistro: user.idUsuario.toString(),\r\n descricao: user.nomUsuario,\r\n });\r\n }\r\n setAuxPesquisa(novaPesquisa);\r\n setPesquisa(novaPesquisa);\r\n },\r\n [auxpesquisa]\r\n );\r\n\r\n const doPesquisa = useCallback(\r\n debounce((newValue: number | number[]) => {\r\n const novaPesquisa = auxpesquisa.clone();\r\n novaPesquisa.dtaInicioFiltro = new Date((newValue as number[])[0])\r\n .toISOString()\r\n .slice(0, 10);\r\n novaPesquisa.dtaFimFiltro = new Date((newValue as number[])[1])\r\n .toISOString()\r\n .slice(0, 10);\r\n\r\n setAuxPesquisa(novaPesquisa);\r\n setPesquisa(novaPesquisa);\r\n }, 1000),\r\n [auxpesquisa]\r\n );\r\n\r\n const usuarios = useAppSelector((state) => state.usuarios.filterList);\r\n const getListarUsuariosFiltro = async () => {\r\n await dispatch(\r\n listarUsuariosFiltroSupervisionados(new Pesquisa({ itensPorPagina: 0 }))\r\n );\r\n };\r\n const equipes = useAppSelector((state) => state.equipes.filterList);\r\n const getListarEquipesFiltro = async () => {\r\n await dispatch(\r\n listarEquipesFiltroSupervisionados(new Pesquisa({ itensPorPagina: 0 }))\r\n );\r\n };\r\n\r\n useEffect(() => {\r\n getListarUsuariosFiltro();\r\n getListarEquipesFiltro();\r\n }, []);\r\n\r\n const handleChangeEquipes = useCallback(\r\n (event: React.ChangeEvent, newValue: TipoFiltro[] | []) => {\r\n setEquipesSelecionados(newValue);\r\n const novaPesquisa = auxpesquisa.clone();\r\n\r\n if (newValue) {\r\n novaPesquisa.lstIdEquipes = newValue\r\n .map((equipe) => equipe.idRegistro)\r\n .toString();\r\n }\r\n\r\n setAuxPesquisa(novaPesquisa);\r\n setPesquisa(novaPesquisa);\r\n },\r\n [auxpesquisa]\r\n );\r\n\r\n function tableBody(isLoading: boolean, loadingIndex: number) {\r\n if (!isLoading) {\r\n return (\r\n \r\n \r\n \r\n \r\n {i18n.t('analiseUsoAppPage.colDefApp')}\r\n \r\n \r\n {i18n.t('analiseUsoAppPage.colDefUsoTotal')}\r\n \r\n \r\n {i18n.t('analiseUsoAppPage.colDefDias')}\r\n \r\n \r\n {i18n.t('analiseUsoAppPage.colDefUsoMedio')}\r\n \r\n \r\n \r\n \r\n {[...fullData.lstDetalhesUsuario]\r\n .sort((a, b) =>\r\n a.somaTempoUsoSegundos < b.somaTempoUsoSegundos\r\n ? 1\r\n : b.somaTempoUsoSegundos < a.somaTempoUsoSegundos\r\n ? -1\r\n : 0\r\n )\r\n .map((row, index) => (\r\n \r\n \r\n {row.desSoftware ? row.desSoftware : row.desProcesso}\r\n \r\n \r\n {DateUtils.secondsToHours(row.somaTempoUsoSegundos)}\r\n \r\n \r\n {row.diasUso}\r\n \r\n \r\n {DateUtils.secondsToHours(row.mediaUso)}\r\n \r\n \r\n ))}\r\n \r\n
\r\n );\r\n } else {\r\n return (\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 \r\n option.descricao}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n onChange={handleChangeUsuario}\r\n id=\"cbUser\"\r\n options={usuarios}\r\n renderInput={(params) => (\r\n \r\n )}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\r\n />\r\n
\r\n option.descricao}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n onChange={handleChangeEquipes}\r\n defaultValue={equipesSelecionados}\r\n filterSelectedOptions\r\n renderInput={(params) => (\r\n \r\n )}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\r\n />\r\n
\r\n
\r\n {\r\n if (!isNaN(new Date(newValue ? newValue : '').getTime())) {\r\n const newSliderValue = [\r\n newValue ? newValue.getTime() : valueSlider[0],\r\n valueSlider[1],\r\n ];\r\n setValueSlider(newSliderValue);\r\n doPesquisa(newSliderValue);\r\n }\r\n }}\r\n />\r\n {\r\n if (!isNaN(new Date(newValue ? newValue : '').getTime())) {\r\n const newSliderValue = [\r\n valueSlider[0],\r\n newValue ? newValue.getTime() : valueSlider[1],\r\n ];\r\n setValueSlider(newSliderValue);\r\n doPesquisa(newSliderValue);\r\n }\r\n }}\r\n />\r\n
\r\n
\r\n \r\n {tableBody(isLoading, 1)}\r\n \r\n \r\n
{i18n.t('analiseUsoAppPage.lblChartColab')}
\r\n \r\n
\r\n \r\n
\r\n
\r\n {i18n.t('analiseUsoAppPage.lblChartEquipe')}\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AnaliseUsoAplicacoes;\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisaUsoApp, ResponseUsoApp } from 'src/main/Types';\r\nimport * as AnaliseUsoAppActions from 'src/pages/Analises/UsoAplicacoes/Actions';\r\nimport { AnaliseUsoAppAction } from 'src/pages/Analises/UsoAplicacoes/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const listarComparativo = (\r\n pesquisa: InfoPesquisaUsoApp\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(AnaliseUsoAppActions.analiseUsoAppComparativoGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get(\r\n `${ApiUrls.ANALISE_USO_APPS_COMPARATIVO_URL}/${query}`\r\n );\r\n\r\n return dispatch(\r\n AnaliseUsoAppActions.analiseUsoAppComparativoGetSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(\r\n AnaliseUsoAppActions.analiseUsoAppComparativoGetFailure()\r\n );\r\n }\r\n };\r\n};\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { ResponseUsoApp } from 'src/main/Types';\r\nimport {\r\n AnaliseUsoAppAction,\r\n AnaliseUsoAppTypes,\r\n} from 'src/pages/Analises/UsoAplicacoes/Types';\r\n\r\nexport const analiseUsoAppComparativoGetRequest = (): AnaliseUsoAppAction =>\r\n action(AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_REQUEST);\r\n\r\nexport const analiseUsoAppComparativoGetSuccess = (\r\n data: ResponseUsoApp\r\n): AnaliseUsoAppAction =>\r\n action(AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_SUCCESS, data);\r\n\r\nexport const analiseUsoAppComparativoGetFailure = (): AnaliseUsoAppAction =>\r\n action(AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_FAILURE);\r\n\r\nexport const analiseUsoAppResetModule = (): AnaliseUsoAppAction =>\r\n action(AnaliseUsoAppTypes.ANALISE_USO_APP_RESET_MODULE);\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n padding: theme.spacing(2),\r\n },\r\n buttonContainer: {\r\n textAlign: 'right',\r\n },\r\n button: {\r\n margin: '5px 5px 5px 5px',\r\n },\r\n iconButton: {\r\n margin: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment, MouseEvent, useState } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n Popover,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\n\r\nimport useStyles from 'src/common/Buttons/DmConfirmationButton/Styles';\r\n\r\nexport interface ConfirmationButtonProps {\r\n title: string;\r\n message: string;\r\n buttonLabel: string;\r\n cancelLabel: string;\r\n confirmLabel: string;\r\n Icon: JSX.Element;\r\n color?: 'primary' | 'secondary' | 'inherit' | 'default';\r\n disabled?: boolean;\r\n className?: string;\r\n onActionConfirm?(): void;\r\n}\r\n\r\nconst DmConfirmationButton: React.FC = ({\r\n title,\r\n message,\r\n buttonLabel,\r\n cancelLabel,\r\n confirmLabel,\r\n Icon,\r\n color,\r\n disabled,\r\n className,\r\n onActionConfirm,\r\n}: ConfirmationButtonProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n function handleClick(event: MouseEvent) {\r\n setAnchorEl(event.currentTarget);\r\n }\r\n\r\n function handleClose() {\r\n setAnchorEl(null);\r\n }\r\n\r\n function handleConfirm() {\r\n handleClose();\r\n onActionConfirm?.();\r\n }\r\n\r\n if (!isDesktop) {\r\n return (\r\n \r\n \r\n {buttonLabel}\r\n \r\n \r\n {title}\r\n \r\n {message}\r\n \r\n \r\n }\r\n onClick={handleClose}\r\n >\r\n {cancelLabel}\r\n \r\n }\r\n onClick={handleConfirm}\r\n >\r\n {confirmLabel}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {Icon}\r\n \r\n \r\n {message}\r\n \r\n }\r\n onClick={handleClose}\r\n >\r\n {cancelLabel}\r\n \r\n }\r\n onClick={handleConfirm}\r\n >\r\n {confirmLabel}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmConfirmationButton;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n padding: theme.spacing(2),\r\n },\r\n buttonContainer: {\r\n textAlign: 'right',\r\n },\r\n button: {\r\n margin: '5px 5px 5px 5px',\r\n },\r\n iconButton: {\r\n margin: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment, MouseEvent, useState } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n Popover,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\n\r\nimport useStyles from 'src/common/Table/DmTableDeleteButton/Styles';\r\n\r\nexport interface DmTableDeleteButtonProps {\r\n title: string;\r\n message: string;\r\n buttonLabel: string;\r\n cancelLabel: string;\r\n confirmLabel: string;\r\n disabled?: boolean;\r\n onActionConfirm?(): void;\r\n}\r\n\r\nconst DmTableDeleteButton: React.FC = ({\r\n title,\r\n message,\r\n buttonLabel,\r\n cancelLabel,\r\n confirmLabel,\r\n disabled,\r\n onActionConfirm,\r\n}: DmTableDeleteButtonProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n function handleClick(event: MouseEvent) {\r\n setAnchorEl(event.currentTarget);\r\n }\r\n\r\n function handleClose() {\r\n setAnchorEl(null);\r\n }\r\n\r\n function handleConfirm() {\r\n handleClose();\r\n onActionConfirm?.();\r\n }\r\n\r\n if (!isDesktop) {\r\n return (\r\n \r\n \r\n {buttonLabel}\r\n \r\n \r\n {title}\r\n \r\n {message}\r\n \r\n \r\n }\r\n onClick={handleClose}\r\n >\r\n {cancelLabel}\r\n \r\n }\r\n onClick={handleConfirm}\r\n >\r\n {confirmLabel}\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 \r\n {message}\r\n \r\n }\r\n onClick={handleClose}\r\n >\r\n {cancelLabel}\r\n \r\n }\r\n onClick={handleConfirm}\r\n >\r\n {confirmLabel}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmTableDeleteButton;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n button: {\r\n margin: '5px 5px 5px 5px',\r\n },\r\n iconButton: {\r\n color: theme.palette.info.main,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\n\r\nimport { Button, IconButton, useTheme, useMediaQuery } from '@material-ui/core';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport useStyles from 'src/common/Table/DmTableEditButton/Styles';\r\n\r\nexport interface DmTableEditButtonProps {\r\n buttonLabel: string;\r\n disabled?: boolean;\r\n onClick?(): void;\r\n}\r\n\r\nconst DmTableEditButton: React.FC = ({\r\n buttonLabel,\r\n disabled,\r\n onClick,\r\n}: DmTableEditButtonProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n if (!isDesktop) {\r\n return (\r\n \r\n {buttonLabel}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmTableEditButton;\r\n","import { createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { ReactNode } from 'react';\r\n\r\nimport { Box } from '@material-ui/core';\r\n\r\nimport useStyles from 'src/common/Table/DmTableOptions/Styles';\r\n\r\nexport interface DmTableOptionsProps {\r\n children?: ReactNode;\r\n}\r\n\r\nconst DmTableOptions: React.FC = ({\r\n children,\r\n}: DmTableOptionsProps) => {\r\n const classes = useStyles();\r\n\r\n return {children};\r\n};\r\n\r\nexport default DmTableOptions;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n height: 52,\r\n padding: theme.spacing(1),\r\n position: 'fixed',\r\n },\r\n growContainer: {\r\n flexGrow: 1,\r\n },\r\n buttonsContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n marginTop: theme.spacing(2),\r\n },\r\n backButton: {\r\n marginRight: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport { Box, Button, ButtonProps, Hidden } from '@material-ui/core';\r\n\r\nimport useStyles from 'src/common/Form/DmStepButton/Styles';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\n\r\nexport interface DmStepButtonProps {\r\n nextLabel?: string;\r\n backLabel?: string;\r\n cancelLabel?: string;\r\n hideNextButton?: boolean;\r\n hideBackButton?: boolean;\r\n hideCancelButton?: boolean;\r\n backButtonProps?: ButtonProps;\r\n nextButtonProps?: ButtonProps;\r\n cancelButtonProps?: ButtonProps;\r\n onNext?(): void;\r\n onBack?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\nconst DmStepButton: React.FC = ({\r\n nextLabel,\r\n backLabel,\r\n cancelLabel,\r\n hideNextButton,\r\n hideBackButton,\r\n hideCancelButton,\r\n backButtonProps,\r\n nextButtonProps,\r\n cancelButtonProps,\r\n onNext,\r\n onBack,\r\n onCancel,\r\n}: DmStepButtonProps) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {backLabel}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {nextLabel}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {cancelLabel}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {backLabel}\r\n \r\n \r\n \r\n \r\n {nextLabel}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmStepButton;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tableContainer: {\r\n margin: theme.spacing(1, 0, 1, 0),\r\n },\r\n newButton: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n progressContainer: {\r\n marginTop: theme.spacing(1),\r\n },\r\n formDialog: {\r\n marginBottom: 52,\r\n },\r\n formDialogContent: {\r\n width: 576,\r\n },\r\n formTitle: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n disableButton: {\r\n color: theme.palette.tertiary.main,\r\n [theme.breakpoints.down('sm')]: {\r\n color: '#fff',\r\n backgroundColor: theme.palette.tertiary.main,\r\n '&:hover': {\r\n backgroundColor: theme.palette.tertiary.dark,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Hidden, TextField, Typography } from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { equipeSetFormData } from 'src/pages/Cadastros/Equipes/Actions';\r\nimport useStyles from 'src/pages/Cadastros/Equipes/Styles';\r\nimport { EquipeFormData } from 'src/pages/Cadastros/Equipes/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepOneFormProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n handleNext(): void;\r\n}\r\n\r\nconst StepOneForm: React.FC = ({\r\n title,\r\n onClose,\r\n handleNext,\r\n}: StepOneFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const equipe = useAppSelector((state) => state.equipes.formData);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n nomEquipe: yup\r\n .string()\r\n .max(50, i18n.t('common.errMaximoNCaracteres').replace('{0}', '50'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desEquipe: yup\r\n .string()\r\n .max(100, i18n.t('common.errMaximoNCaracteres').replace('{0}', '100'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, formState } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: equipe,\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n const onSubmit = handleSubmit((data: EquipeFormData) => {\r\n const novaEquipe = { ...equipe, ...data };\r\n\r\n dispatch(equipeSetFormData(novaEquipe));\r\n handleNext();\r\n });\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StepOneForm;\r\n","import TipoFiltroMapper from 'src/main/Classes/TipoFiltroMapper';\r\nimport TipoFlagMapper from 'src/main/Classes/TipoFlagMapper';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { Equipe, EquipeFormData } from 'src/pages/Cadastros/Equipes/Types';\r\n\r\nabstract class EquipeParser {\r\n public static parseToEquipeFormData(equipe: Equipe): EquipeFormData {\r\n const flgAtivo = TipoFlagMapper.mapToBoolean(equipe.flgAtivo);\r\n\r\n const idsUsuarios: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n equipe.idsUsuarios\r\n );\r\n const idsSupervisores: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n equipe.idsSupervisores\r\n );\r\n\r\n return {\r\n idEquipe: equipe.idEquipe,\r\n nomEquipe: equipe.nomEquipe,\r\n desEquipe: equipe.desEquipe,\r\n flgAtivo: flgAtivo,\r\n idsSupervisores: idsSupervisores,\r\n idsUsuarios: idsUsuarios,\r\n };\r\n }\r\n\r\n public static parseToEquipe(equipe: EquipeFormData): Equipe {\r\n const flgAtivo = TipoFlagMapper.mapToFlag(equipe.flgAtivo);\r\n\r\n const idsUsuarios: Array = TipoFiltroMapper.mapToNumberArray(\r\n equipe.idsUsuarios\r\n );\r\n const idsSupervisores: Array = TipoFiltroMapper.mapToNumberArray(\r\n equipe.idsSupervisores\r\n );\r\n\r\n return {\r\n idEquipe: equipe.idEquipe,\r\n nomEquipe: equipe.nomEquipe,\r\n desEquipe: equipe.desEquipe,\r\n flgAtivo: flgAtivo,\r\n idsSupervisores: idsSupervisores,\r\n idsUsuarios: idsUsuarios,\r\n };\r\n }\r\n}\r\n\r\nexport default EquipeParser;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport React, { ChangeEvent, Fragment, useEffect } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport {\r\n Checkbox,\r\n FormControl,\r\n FormHelperText,\r\n FormLabel,\r\n Hidden,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { equipeSetFormData } from 'src/pages/Cadastros/Equipes/Actions';\r\nimport EquipeParser from 'src/pages/Cadastros/Equipes/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Equipes/Styles';\r\nimport {\r\n atualizarEquipe,\r\n cadastrarEquipe,\r\n} from 'src/pages/Cadastros/Equipes/Thunks';\r\nimport { EquipeFormData } from 'src/pages/Cadastros/Equipes/Types';\r\nimport { listarUsuariosFiltro } from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepTwoProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n handleBack(): void;\r\n}\r\n\r\n/**\r\n * // TODO: tratar respostas de sucesso parcial (API)\r\n */\r\nconst StepTwo: React.FC = ({\r\n title,\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n handleBack,\r\n}: StepTwoProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const equipe = useAppSelector((state) => state.equipes.formData);\r\n\r\n const usuarios = useAppSelector((state) => state.usuarios.filterList);\r\n const carregandoUsuarios = useAppSelector((state) => state.usuarios.loading);\r\n\r\n const getListarUsuariosFiltro = async () => {\r\n const pesquisa = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n await dispatch(listarUsuariosFiltro(pesquisa));\r\n };\r\n\r\n useEffect(() => {\r\n getListarUsuariosFiltro();\r\n }, []);\r\n\r\n const { getValues, handleSubmit, control } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: equipe,\r\n });\r\n\r\n const onSubmit = handleSubmit((data: EquipeFormData) => {\r\n const novaEquipe = { ...equipe, ...data };\r\n const equipeRequest = EquipeParser.parseToEquipe(novaEquipe);\r\n\r\n dispatch(equipeSetFormData(novaEquipe));\r\n\r\n if (editMode) {\r\n dispatch(atualizarEquipe(equipeRequest, onSuccess));\r\n return;\r\n }\r\n\r\n dispatch(cadastrarEquipe(equipeRequest, onSuccess));\r\n });\r\n\r\n const customHandleBack = () => {\r\n const data = getValues();\r\n const novaEquipe = { ...equipe, ...data };\r\n\r\n dispatch(equipeSetFormData(novaEquipe));\r\n handleBack();\r\n };\r\n\r\n const getUsuario = (option?: TipoFiltro) => {\r\n if (option) {\r\n option = usuarios.find((item) => item.idRegistro === option?.idRegistro);\r\n }\r\n\r\n return option;\r\n };\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n return getUsuario(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getUsuario(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{ style: { maxWidth: 125 }, size: 'small' }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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 getUsuario(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getUsuario(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{ style: { maxWidth: 125 }, size: 'small' }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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\nexport default StepTwo;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport {\r\n Box,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n Step,\r\n StepContent,\r\n StepLabel,\r\n Stepper,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport StepOneForm from 'src/pages/Cadastros/Equipes/Form/Steps/StepOne';\r\nimport StepTwoForm from 'src/pages/Cadastros/Equipes/Form/Steps/StepTwo';\r\nimport useStyles from 'src/pages/Cadastros/Equipes/Styles';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n}\r\n\r\nconst Form: React.FC = ({\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n}: FormProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const isLoading = useAppSelector((state) => state.equipes.loading);\r\n\r\n const [steps, setSteps] = useState>([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n\r\n useEffect(() => {\r\n const newSteps = [\r\n i18n.t('equipesPage.titDadosEquipe'),\r\n i18n.t('common.titPermissoes'),\r\n ];\r\n\r\n setSteps(newSteps);\r\n }, []);\r\n\r\n const handleNext = () => {\r\n setActiveStep((activeStep) => activeStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((activeStep) => activeStep - 1);\r\n };\r\n\r\n const getStepContent = (index: number) => {\r\n switch (index) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n if (!isDesktop) {\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 {getStepContent(activeStep)}\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 {steps.map((label, index) => (\r\n \r\n {label}\r\n \r\n {getStepContent(index)}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Form;\r\n","import React, { ReactNode, useState, useEffect } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Chip,\r\n Dialog,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n useMediaQuery,\r\n useTheme,\r\n} from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/AddCircle';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport {\r\n FilterType,\r\n MUIDataTableColumn,\r\n MUIDataTableColumnDef,\r\n MUIDataTableState,\r\n MUISortOptions,\r\n} from 'mui-datatables';\r\n\r\nimport DmConfirmationButton from 'src/common/Buttons/DmConfirmationButton';\r\nimport DmTable from 'src/common/Table/DmTable';\r\nimport DmTableDeleteButton from 'src/common/Table/DmTableDeleteButton';\r\nimport DmTableEditButton from 'src/common/Table/DmTableEditButton';\r\nimport DmTableOptions from 'src/common/Table/DmTableOptions';\r\nimport DmTableTitle from 'src/common/Table/DmTableTitle';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport {\r\n equipeSetFormData,\r\n equipeResetFormData,\r\n equipeResetModule,\r\n} from 'src/pages/Cadastros/Equipes/Actions';\r\nimport Form from 'src/pages/Cadastros/Equipes/Form';\r\nimport EquipeParser from 'src/pages/Cadastros/Equipes/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Equipes/Styles';\r\nimport {\r\n listarEquipes,\r\n deletarEquipe,\r\n desativarEquipe,\r\n} from 'src/pages/Cadastros/Equipes/Thunks';\r\nimport { usePesquisa } from 'src/pages/Hooks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nconst tiposStatus = [\r\n {\r\n key: 'S',\r\n label: i18n.t('common.lblAtivado'),\r\n },\r\n {\r\n key: 'N',\r\n label: i18n.t('common.lblDesativado'),\r\n },\r\n];\r\n\r\nconst getTableColumns = (\r\n isDesktop: boolean,\r\n optionsColumn: (index: number) => ReactNode\r\n): Array => {\r\n let columns = new Array();\r\n\r\n columns = columns.concat([\r\n {\r\n name: 'nomEquipe',\r\n label: i18n.t('equipesPage.colDefNomEquipe'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n setCellProps: () => {\r\n return {\r\n style: {\r\n width: isDesktop ? '30%' : '100%',\r\n },\r\n };\r\n },\r\n },\r\n },\r\n {\r\n name: 'desEquipe',\r\n label: i18n.t('equipesPage.colDefDesEquipe'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n display: isDesktop,\r\n },\r\n },\r\n {\r\n name: 'flgAtivo',\r\n label: i18n.t('common.colDefFlgAtivo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposStatus.map((item) => item.key),\r\n renderValue: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label ?? '';\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label;\r\n },\r\n },\r\n display: isDesktop,\r\n customBodyRender: (value: string) => {\r\n return (\r\n : }\r\n />\r\n );\r\n },\r\n },\r\n },\r\n {\r\n name: '',\r\n label: i18n.t('common.lblOpcoes'),\r\n options: {\r\n sort: false,\r\n empty: true,\r\n filter: false,\r\n draggable: false,\r\n viewColumns: false,\r\n setCellProps: () => {\r\n return {\r\n style: {\r\n width: isDesktop ? '15%' : '100%',\r\n },\r\n };\r\n },\r\n customBodyRenderLite: (dataIndex) => optionsColumn(dataIndex),\r\n },\r\n },\r\n ]);\r\n\r\n return columns;\r\n};\r\n\r\n/**\r\n * // TODO: melhorar render dialog\r\n * // TODO: melhorar renders desnecessários\r\n */\r\nconst Equipes: React.FC = () => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const data = useAppSelector((state) => state.equipes.data);\r\n const isLoading = useAppSelector((state) => state.equipes.loading);\r\n const pagination = useAppSelector((state) => state.equipes.pagination);\r\n\r\n const [editMode, setEditMode] = useState(false);\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n\r\n const [pesquisa, handlePesquisa] = usePesquisa({\r\n novaOrdenacao: 'nomEquipe asc',\r\n });\r\n\r\n const [sortOptions, setSortOptions] = useState({\r\n name: 'nomEquipe',\r\n direction: 'asc',\r\n });\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(equipeResetModule());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const columns = getTableColumns(isDesktop, optionsColumn);\r\n setTableColumns(columns);\r\n }, [isDesktop]);\r\n\r\n useEffect(() => {\r\n const columns = tableColumns as Array;\r\n const newColumns = columns.map((item) => {\r\n if (item.name === '') {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n customBodyRenderLite: (dataIndex: number) =>\r\n optionsColumn(dataIndex),\r\n },\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (data.length === 0 && pagination.totRegistros !== 0) {\r\n handlePesquisa({ key: 'numPagina', value: 1 });\r\n }\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n handleListarEquipes();\r\n }, [pesquisa]);\r\n\r\n const onSuccess = () => {\r\n handleDialogOpen(true);\r\n handleListarEquipes();\r\n };\r\n\r\n const handleEdit = (index: number) => {\r\n if (data && data[index]) {\r\n const equipe = EquipeParser.parseToEquipeFormData(data[index]);\r\n dispatch(equipeSetFormData(equipe));\r\n\r\n setEditMode(true);\r\n setDialogOpen(true);\r\n }\r\n\r\n setEditMode(true);\r\n setDialogOpen(true);\r\n };\r\n\r\n const handleDisable = (index: number) => {\r\n const equipe = data[index];\r\n\r\n if (equipe) {\r\n dispatch(desativarEquipe(equipe, handleListarEquipes));\r\n }\r\n };\r\n\r\n const handleDelete = (index: number) => {\r\n const equipe = data[index];\r\n\r\n if (equipe) {\r\n dispatch(deletarEquipe(equipe, handleListarEquipes));\r\n }\r\n };\r\n\r\n const handleDialogOpen = (reset?: boolean) => {\r\n setDialogOpen(!dialogOpen);\r\n\r\n setTimeout(() => {\r\n if (reset) {\r\n dispatch(equipeResetFormData());\r\n }\r\n\r\n if (editMode) {\r\n setEditMode(false);\r\n }\r\n }, 100);\r\n };\r\n\r\n const handleListarEquipes = () => {\r\n dispatch(listarEquipes(pesquisa));\r\n };\r\n\r\n const handleFilterChange = (\r\n changedColumn: string | MUIDataTableColumn | null,\r\n filterList: MUIDataTableState['filterList'],\r\n type: FilterType | 'chip' | 'reset',\r\n changedColumnIndex: number\r\n ) => {\r\n if (\r\n type === 'reset' ||\r\n !filterList.find((item) => item && item.length > 0)\r\n ) {\r\n handlePesquisa({ resetFilter: true });\r\n return;\r\n }\r\n\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n handlePesquisa({\r\n key: changedColumn?.toString() || '',\r\n value: value,\r\n customFilter: true,\r\n });\r\n };\r\n\r\n const optionsColumn = (index: number) => {\r\n if (data[index]?.flgAtivo === 'N') {\r\n return (\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n handleEdit(index)}\r\n />\r\n }\r\n className={classes.disableButton}\r\n onActionConfirm={() => handleDisable(index)}\r\n />\r\n handleDelete(index)}\r\n />\r\n \r\n );\r\n };\r\n\r\n const customToolBar = () => {\r\n if (!isDesktop) {\r\n return (\r\n \r\n handleDialogOpen()}>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n }\r\n className={classes.newButton}\r\n onClick={() => handleDialogOpen()}\r\n >\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const [tableColumns, setTableColumns] = useState<\r\n Array\r\n >(getTableColumns(isDesktop, optionsColumn));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n data={data || []}\r\n columns={tableColumns}\r\n options={{\r\n download: false,\r\n\r\n page: pesquisa.getPage(),\r\n count: pagination?.totRegistros || 0,\r\n rowsPerPage: pesquisa.itensPorPagina,\r\n\r\n searchPlaceholder: i18n.t('common.lblPesquisar'),\r\n customToolbar: customToolBar,\r\n\r\n sortOrder: sortOptions,\r\n onColumnSortChange: (changedColumn, direction) => {\r\n setSortOptions({\r\n name: changedColumn,\r\n direction: direction,\r\n });\r\n },\r\n\r\n sortFilterList: false,\r\n onFilterChange: handleFilterChange,\r\n\r\n onViewColumnsChange: (changedColumn, action) => {\r\n const columns = tableColumns as Array;\r\n\r\n const newColumns = columns.map((item) => {\r\n if (item.name === changedColumn) {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n display: action === 'add',\r\n },\r\n };\r\n }\r\n\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n },\r\n }}\r\n onSearch={(searchText) =>\r\n handlePesquisa({ key: 'filtroPadrao', value: searchText })\r\n }\r\n onColumnSort={(columnSort) =>\r\n handlePesquisa({ key: 'novaOrdenacao', value: columnSort })\r\n }\r\n onPageChange={(page) =>\r\n handlePesquisa({ key: 'numPagina', value: page })\r\n }\r\n onRowsPerPageChange={(rowsPerPage) =>\r\n handlePesquisa({ key: 'itensPorPagina', value: rowsPerPage })\r\n }\r\n />\r\n \r\n\r\n handleDialogOpen(editMode)}\r\n >\r\n handleDialogOpen(true)}\r\n onSuccess={() => onSuccess()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Equipes;\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Grupo,\r\n GrupoAction,\r\n GrupoFormData,\r\n GrupoTypes,\r\n} from 'src/pages/Cadastros/Grupos/Types';\r\n\r\nexport const grupoGetRequest = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_GET_REQUEST);\r\n\r\nexport const grupoGetSuccess = (data: RespostaApi>): GrupoAction =>\r\n action(GrupoTypes.GRUPO_GET_SUCCESS, data);\r\n\r\nexport const grupoGetFailure = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_GET_FAILURE);\r\n\r\nexport const grupoGetFilterListRequest = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_GET_FILTER_REQUEST);\r\n\r\nexport const grupoGetFilterListSuccess = (\r\n data: RespostaApi>\r\n): GrupoAction => action(GrupoTypes.GRUPO_GET_FILTER_SUCCESS, data);\r\n\r\nexport const grupoGetFilterListFailure = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_GET_FILTER_FAILURE);\r\n\r\nexport const grupoPostRequest = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_POST_REQUEST);\r\n\r\nexport const grupoPostSuccess = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_POST_SUCCESS);\r\n\r\nexport const grupoPostFailure = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_POST_FAILURE);\r\n\r\nexport const grupoPutRequest = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_PUT_REQUEST);\r\n\r\nexport const grupoPutSuccess = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_PUT_SUCCESS);\r\n\r\nexport const grupoPutFailure = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_PUT_FAILURE);\r\n\r\nexport const grupoDeleteRequest = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_DELETE_REQUEST);\r\n\r\nexport const grupoDeleteSuccess = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_DELETE_SUCCESS);\r\n\r\nexport const grupoDeleteFailure = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_DELETE_FAILURE);\r\n\r\nexport const grupoSetFormData = (data: Partial): GrupoAction =>\r\n action(GrupoTypes.GRUPO_SET_FORM_DATA, data);\r\n\r\nexport const grupoResetFormData = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_RESET_FORM_DATA);\r\n\r\nexport const grupoClearFilterList = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_RESET_FILTER_LIST);\r\n\r\nexport const grupoResetModule = (): GrupoAction =>\r\n action(GrupoTypes.GRUPO_RESET_MODULE);\r\n","import React, { ChangeEvent, useState } from 'react';\r\n\r\nimport {\r\n FormControl,\r\n FormControlProps,\r\n FormGroup,\r\n FormHelperText,\r\n FormLabel,\r\n Switch,\r\n SwitchProps,\r\n} from '@material-ui/core';\r\n\r\nexport interface DmInputSwitchProps {\r\n name: string;\r\n label: string;\r\n value?: boolean;\r\n error?: boolean;\r\n helperText?: string;\r\n switchProps?: SwitchProps;\r\n formControlProps?: FormControlProps<'fieldset'>;\r\n onChange?(value: boolean): void;\r\n}\r\n\r\nconst DmInputSwitch: React.FC = ({\r\n name,\r\n label,\r\n value,\r\n error,\r\n helperText,\r\n switchProps,\r\n formControlProps,\r\n onChange,\r\n}: DmInputSwitchProps) => {\r\n const [checked, setChecked] = useState(value || false);\r\n\r\n const handleChange = (event: ChangeEvent) => {\r\n setChecked(event.target.checked);\r\n\r\n onChange?.(event.target.checked);\r\n };\r\n\r\n return (\r\n \r\n {label}\r\n \r\n \r\n \r\n {helperText}\r\n \r\n );\r\n};\r\n\r\nexport default DmInputSwitch;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tableContainer: {\r\n margin: theme.spacing(1, 0, 1, 0),\r\n },\r\n newButton: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n progressContainer: {\r\n marginTop: theme.spacing(1),\r\n },\r\n formDialog: {\r\n marginBottom: 52,\r\n },\r\n formDialogContent: {\r\n width: 576,\r\n },\r\n formTitle: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useMemo } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Hidden, TextField, Typography } from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport DmInputSwitch from 'src/common/Inputs/DmInputSwitch';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { grupoSetFormData } from 'src/pages/Cadastros/Grupos/Actions';\r\nimport useStyles from 'src/pages/Cadastros/Grupos/Styles';\r\nimport { GrupoFormData } from 'src/pages/Cadastros/Grupos/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepOneFormProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n handleNext(): void;\r\n}\r\n\r\nconst StepOneForm: React.FC = ({\r\n title,\r\n editMode,\r\n onClose,\r\n handleNext,\r\n}: StepOneFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const grupo = useAppSelector((state) => state.grupos.formData);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n nomGrupo: yup\r\n .string()\r\n .max(50, i18n.t('common.errMaximoNCaracteres').replace('{0}', '50'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desGrupo: yup\r\n .string()\r\n .max(100, i18n.t('common.errMaximoNCaracteres').replace('{0}', '100'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, control, formState } = useForm(\r\n {\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: grupo,\r\n\r\n resolver: yupResolver(validationSchema),\r\n }\r\n );\r\n\r\n const onSubmit = handleSubmit((data: GrupoFormData) => {\r\n const novoGrupo = { ...grupo, ...data };\r\n\r\n dispatch(grupoSetFormData(novoGrupo));\r\n handleNext();\r\n });\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n {\r\n return (\r\n field.onChange(e)}\r\n />\r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StepOneForm;\r\n","import TipoFiltroMapper from 'src/main/Classes/TipoFiltroMapper';\r\nimport TipoFlagMapper from 'src/main/Classes/TipoFlagMapper';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { Grupo, GrupoFormData } from 'src/pages/Cadastros/Grupos/Types';\r\n\r\nabstract class GrupoParser {\r\n public static parseToGrupoFormData(grupo: Grupo): GrupoFormData {\r\n const flgAtivo = TipoFlagMapper.mapToBoolean(grupo.flgAtivo);\r\n\r\n const idsUsuarios: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n grupo.idsUsuarios\r\n );\r\n const idsSoftwares: Array = TipoFiltroMapper.mapToTipoFiltro(\r\n grupo.idsSoftwares\r\n );\r\n\r\n return {\r\n idGrupo: grupo.idGrupo,\r\n nomGrupo: grupo.nomGrupo,\r\n desGrupo: grupo.desGrupo,\r\n flgAtivo: flgAtivo,\r\n idsUsuarios: idsUsuarios,\r\n idsSoftwares: idsSoftwares,\r\n };\r\n }\r\n\r\n public static parseToGrupo(grupo: GrupoFormData): Grupo {\r\n const flgAtivo = TipoFlagMapper.mapToFlag(grupo.flgAtivo);\r\n\r\n const idsUsuarios: Array = TipoFiltroMapper.mapToNumberArray(\r\n grupo.idsUsuarios\r\n );\r\n const idsSoftwares: Array = TipoFiltroMapper.mapToNumberArray(\r\n grupo.idsSoftwares\r\n );\r\n\r\n return {\r\n idGrupo: grupo.idGrupo,\r\n nomGrupo: grupo.nomGrupo,\r\n desGrupo: grupo.desGrupo,\r\n flgAtivo: flgAtivo,\r\n idsUsuarios: idsUsuarios,\r\n idsSoftwares: idsSoftwares,\r\n };\r\n }\r\n}\r\n\r\nexport default GrupoParser;\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n SoftwareAction,\r\n SoftwareTypes,\r\n} from 'src/pages/Cadastros/Softwares/Types';\r\n\r\nexport const softwareGetFilterListRequest = (): SoftwareAction =>\r\n action(SoftwareTypes.SOFTWARE_GET_FILTER_REQUEST);\r\n\r\nexport const softwareGetFilterListSuccess = (\r\n data: RespostaApi>\r\n): SoftwareAction => action(SoftwareTypes.SOFTWARE_GET_FILTER_SUCCESS, data);\r\n\r\nexport const softwareGetFilterListFailure = (): SoftwareAction =>\r\n action(SoftwareTypes.SOFTWARE_GET_FILTER_FAILURE);\r\n\r\nexport const softwareClearFilterList = (): SoftwareAction =>\r\n action(SoftwareTypes.SOFTWARE_RESET_FILTER_LIST);\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisa, RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport * as SoftwaresActions from 'src/pages/Cadastros/Softwares/Actions';\r\nimport { SoftwareAction } from 'src/pages/Cadastros/Softwares/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const listarSoftwaresFiltro = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(SoftwaresActions.softwareGetFilterListRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.SOFTWARES_FILTER_URL}/${query}`\r\n );\r\n\r\n return dispatch(\r\n SoftwaresActions.softwareGetFilterListSuccess(response.data)\r\n );\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(SoftwaresActions.softwareGetFilterListFailure());\r\n }\r\n };\r\n};\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport React, { ChangeEvent, Fragment, useEffect } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport {\r\n Checkbox,\r\n FormControl,\r\n FormHelperText,\r\n FormLabel,\r\n Hidden,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { grupoSetFormData } from 'src/pages/Cadastros/Grupos/Actions';\r\nimport GrupoParser from 'src/pages/Cadastros/Grupos/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Grupos/Styles';\r\nimport {\r\n atualizarGrupo,\r\n cadastrarGrupo,\r\n} from 'src/pages/Cadastros/Grupos/Thunks';\r\nimport { GrupoFormData } from 'src/pages/Cadastros/Grupos/Types';\r\nimport { listarSoftwaresFiltro } from 'src/pages/Cadastros/Softwares/Thunks';\r\nimport { listarUsuariosFiltro } from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepFourFormProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n handleBack(): void;\r\n}\r\n\r\n/**\r\n * // TODO: tratar respostas de sucesso parcial (API)\r\n */\r\nconst StepTwoForm: React.FC = ({\r\n title,\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n handleBack,\r\n}: StepFourFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const grupo = useAppSelector((state) => state.grupos.formData);\r\n\r\n const usuarios = useAppSelector((state) => state.usuarios.filterList);\r\n const softwares = useAppSelector((state) => state.softwares.filterList);\r\n const carregandoUsuarios = useAppSelector((state) => state.usuarios.loading);\r\n const carregandoSoftwares = useAppSelector(\r\n (state) => state.softwares.loading\r\n );\r\n\r\n const getListarUsuariosFiltro = async () => {\r\n const pesquisa = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n await dispatch(listarUsuariosFiltro(pesquisa));\r\n };\r\n\r\n const getListarSoftwaresFiltro = async () => {\r\n const pesquisa = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n await dispatch(listarSoftwaresFiltro(pesquisa));\r\n };\r\n\r\n useEffect(() => {\r\n getListarUsuariosFiltro();\r\n getListarSoftwaresFiltro();\r\n }, []);\r\n\r\n const { getValues, handleSubmit, control } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: grupo,\r\n });\r\n\r\n const onSubmit = handleSubmit((data: GrupoFormData) => {\r\n const novoGrupo = { ...grupo, ...data };\r\n const grupoRequest = GrupoParser.parseToGrupo(novoGrupo);\r\n\r\n dispatch(grupoSetFormData(novoGrupo));\r\n\r\n if (editMode) {\r\n dispatch(atualizarGrupo(grupoRequest, onSuccess));\r\n return;\r\n }\r\n\r\n dispatch(cadastrarGrupo(grupoRequest, onSuccess));\r\n });\r\n\r\n const customHandleBack = () => {\r\n const data = getValues();\r\n const novoGrupo = { ...grupo, ...data };\r\n\r\n dispatch(grupoSetFormData(novoGrupo));\r\n handleBack();\r\n };\r\n\r\n const getUsuario = (option?: TipoFiltro) => {\r\n if (option) {\r\n option = usuarios.find((item) => item.idRegistro === option?.idRegistro);\r\n }\r\n\r\n return option;\r\n };\r\n\r\n const getSoftware = (option?: TipoFiltro) => {\r\n if (option) {\r\n option = softwares.find((item) => item.idRegistro === option?.idRegistro);\r\n }\r\n\r\n return option;\r\n };\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n return getUsuario(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getUsuario(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{\r\n style: {\r\n maxWidth: 125,\r\n },\r\n size: 'small',\r\n }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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 getSoftware(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getSoftware(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{\r\n style: {\r\n maxWidth: 125,\r\n },\r\n size: 'small',\r\n }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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\nexport default StepTwoForm;\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { InfoPesquisa, RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport * as GruposActions from 'src/pages/Cadastros/Grupos/Actions';\r\nimport { Grupo, GrupoAction } from 'src/pages/Cadastros/Grupos/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const listarGrupos = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(GruposActions.grupoGetRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.GRUPOS_URL}/${query}`\r\n );\r\n\r\n return dispatch(GruposActions.grupoGetSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(GruposActions.grupoGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const listarGruposFiltro = (\r\n pesquisa: InfoPesquisa\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(GruposActions.grupoGetFilterListRequest());\r\n\r\n const query = pesquisa.toString();\r\n const response = await apiService.get>>(\r\n `${ApiUrls.GRUPOS_FILTER_URL}/${query}`\r\n );\r\n\r\n return dispatch(GruposActions.grupoGetFilterListSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(GruposActions.grupoGetFilterListFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const cadastrarGrupo = (\r\n dados: Grupo,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(GruposActions.grupoPostRequest());\r\n\r\n const response = await apiService.post(ApiUrls.GRUPOS_URL, dados);\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(GruposActions.grupoPostSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(GruposActions.grupoPostFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const atualizarGrupo = (\r\n dados: Grupo,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(GruposActions.grupoPutRequest());\r\n\r\n const response = await apiService.put(ApiUrls.GRUPOS_URL, dados);\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(GruposActions.grupoPutSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(GruposActions.grupoPutFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const deletarGrupo = (\r\n grupo: Grupo,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(GruposActions.grupoDeleteRequest());\r\n\r\n const query = `?idGrupo=${grupo.idGrupo}`;\r\n const response = await apiService.delete(\r\n `${ApiUrls.GRUPOS_URL}/${query}`\r\n );\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n onSuccess?.();\r\n return dispatch(GruposActions.grupoDeleteSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(GruposActions.grupoDeleteFailure());\r\n }\r\n };\r\n};\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport {\r\n Box,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n Step,\r\n StepContent,\r\n StepLabel,\r\n Stepper,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport StepOneForm from 'src/pages/Cadastros/Grupos/Form/Steps/StepOne';\r\nimport StepTwoForm from 'src/pages/Cadastros/Grupos/Form/Steps/StepTwo';\r\nimport useStyles from 'src/pages/Cadastros/Grupos/Styles';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n}\r\n\r\nconst Form: React.FC = ({\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n}: FormProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const isLoading = useAppSelector((state) => state.grupos.loading);\r\n\r\n const [steps, setSteps] = useState>([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n\r\n useEffect(() => {\r\n const newSteps = [\r\n i18n.t('gruposPage.titDadosGrupo'),\r\n i18n.t('common.titPermissoes'),\r\n ];\r\n\r\n setSteps(newSteps);\r\n }, []);\r\n\r\n const handleNext = () => {\r\n setActiveStep((activeStep) => activeStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((activeStep) => activeStep - 1);\r\n };\r\n\r\n const getStepContent = (index: number) => {\r\n switch (index) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n if (!isDesktop) {\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 {getStepContent(activeStep)}\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 {steps.map((label, index) => (\r\n \r\n {label}\r\n \r\n {getStepContent(index)}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Form;\r\n","import React, { ReactNode, useState, useEffect } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/AddCircle';\r\nimport {\r\n FilterType,\r\n MUIDataTableColumn,\r\n MUIDataTableColumnDef,\r\n MUIDataTableState,\r\n MUISortOptions,\r\n} from 'mui-datatables';\r\n\r\nimport DmTable from 'src/common/Table/DmTable';\r\nimport DmTableDeleteButton from 'src/common/Table/DmTableDeleteButton';\r\nimport DmTableEditButton from 'src/common/Table/DmTableEditButton';\r\nimport DmTableOptions from 'src/common/Table/DmTableOptions';\r\nimport DmTableTitle from 'src/common/Table/DmTableTitle';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport {\r\n grupoResetFormData,\r\n grupoResetModule,\r\n grupoSetFormData,\r\n} from 'src/pages/Cadastros/Grupos/Actions';\r\nimport Form from 'src/pages/Cadastros/Grupos/Form';\r\nimport GrupoParser from 'src/pages/Cadastros/Grupos/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Grupos/Styles';\r\nimport { deletarGrupo, listarGrupos } from 'src/pages/Cadastros/Grupos/Thunks';\r\nimport { softwareClearFilterList } from 'src/pages/Cadastros/Softwares/Actions';\r\nimport { usuarioClearFilterList } from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport { usePesquisa } from 'src/pages/Hooks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nconst tiposStatus = [\r\n {\r\n key: 'S',\r\n label: i18n.t('common.lblAtivado'),\r\n },\r\n {\r\n key: 'N',\r\n label: i18n.t('common.lblDesativado'),\r\n },\r\n];\r\n\r\nconst getTableColumns = (\r\n isDesktop: boolean,\r\n optionsColumn: (index: number) => ReactNode\r\n): Array => {\r\n let columns = new Array();\r\n\r\n columns = columns.concat([\r\n {\r\n name: 'nomGrupo',\r\n label: i18n.t('gruposPage.colDefNomGrupo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n setCellProps: () => {\r\n return {\r\n style: {\r\n width: isDesktop ? '30%' : '100%',\r\n },\r\n };\r\n },\r\n },\r\n },\r\n {\r\n name: 'desGrupo',\r\n label: i18n.t('gruposPage.colDefDesGrupo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n display: isDesktop,\r\n },\r\n },\r\n {\r\n name: 'flgAtivo',\r\n label: i18n.t('common.colDefFlgAtivo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposStatus.map((item) => item.key),\r\n renderValue: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label ?? '';\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: '',\r\n label: i18n.t('common.lblOpcoes'),\r\n options: {\r\n sort: false,\r\n empty: true,\r\n filter: false,\r\n draggable: false,\r\n viewColumns: false,\r\n setCellProps: () => {\r\n return {\r\n style: {\r\n width: isDesktop ? '15%' : '100%',\r\n },\r\n };\r\n },\r\n customBodyRenderLite: (dataIndex) => optionsColumn(dataIndex),\r\n },\r\n },\r\n ]);\r\n\r\n return columns;\r\n};\r\n\r\n/**\r\n * // TODO: melhorar render dialog\r\n * // TODO: melhorar renders desnecessários\r\n */\r\nconst Grupos: React.FC = () => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const data = useAppSelector((state) => state.grupos.data);\r\n const isLoading = useAppSelector((state) => state.grupos.loading);\r\n const pagination = useAppSelector((state) => state.grupos.pagination);\r\n\r\n const [editMode, setEditMode] = useState(false);\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n\r\n const [pesquisa, handlePesquisa] = usePesquisa({\r\n novaOrdenacao: 'nomGrupo asc',\r\n });\r\n\r\n const [sortOptions, setSortOptions] = useState({\r\n name: 'nomGrupo',\r\n direction: 'asc',\r\n });\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(grupoResetModule());\r\n dispatch(usuarioClearFilterList());\r\n dispatch(softwareClearFilterList());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const columns = getTableColumns(isDesktop, optionsColumn);\r\n setTableColumns(columns);\r\n }, [isDesktop]);\r\n\r\n useEffect(() => {\r\n const columns = tableColumns as Array;\r\n const newColumns = columns.map((item) => {\r\n if (item.name === '') {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n customBodyRenderLite: (dataIndex: number) =>\r\n optionsColumn(dataIndex),\r\n },\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (data.length === 0 && pagination.totRegistros !== 0) {\r\n handlePesquisa({ key: 'numPagina', value: 1 });\r\n }\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n handleListarGrupos();\r\n }, [pesquisa]);\r\n\r\n const onSuccess = () => {\r\n handleDialogOpen(true);\r\n handleListarGrupos();\r\n };\r\n\r\n const handleListarGrupos = () => {\r\n dispatch(listarGrupos(pesquisa));\r\n };\r\n\r\n const handleDialogOpen = (reset?: boolean) => {\r\n setDialogOpen(!dialogOpen);\r\n\r\n setTimeout(() => {\r\n if (reset) {\r\n dispatch(grupoResetFormData());\r\n }\r\n\r\n if (editMode) {\r\n setEditMode(false);\r\n }\r\n }, 100);\r\n };\r\n\r\n const handleEdit = (index: number) => {\r\n if (data && data[index]) {\r\n const grupo = GrupoParser.parseToGrupoFormData(data[index]);\r\n dispatch(grupoSetFormData(grupo));\r\n\r\n setEditMode(true);\r\n setDialogOpen(true);\r\n }\r\n };\r\n\r\n const handleDelete = (index: number) => {\r\n const grupo = data[index];\r\n\r\n if (grupo) {\r\n dispatch(deletarGrupo(grupo, handleListarGrupos));\r\n }\r\n };\r\n\r\n const handleFilterChange = (\r\n changedColumn: string | MUIDataTableColumn | null,\r\n filterList: MUIDataTableState['filterList'],\r\n type: FilterType | 'chip' | 'reset',\r\n changedColumnIndex: number\r\n ) => {\r\n if (\r\n type === 'reset' ||\r\n !filterList.find((item) => item && item.length > 0)\r\n ) {\r\n handlePesquisa({ resetFilter: true });\r\n return;\r\n }\r\n\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n handlePesquisa({\r\n key: changedColumn?.toString() || '',\r\n value: value,\r\n customFilter: true,\r\n });\r\n };\r\n\r\n const optionsColumn = (index: number) => {\r\n return (\r\n \r\n handleEdit(index)}\r\n />\r\n handleDelete(index)}\r\n />\r\n \r\n );\r\n };\r\n\r\n const customToolBar = () => {\r\n if (!isDesktop) {\r\n return (\r\n \r\n handleDialogOpen()}>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n }\r\n className={classes.newButton}\r\n onClick={() => handleDialogOpen()}\r\n >\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const [tableColumns, setTableColumns] = useState<\r\n Array\r\n >(getTableColumns(isDesktop, optionsColumn));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n data={data || []}\r\n columns={tableColumns}\r\n options={{\r\n download: false,\r\n\r\n page: pesquisa.getPage(),\r\n count: pagination?.totRegistros || 0,\r\n rowsPerPage: pesquisa.itensPorPagina,\r\n\r\n searchPlaceholder: i18n.t('common.lblPesquisar'),\r\n customToolbar: customToolBar,\r\n\r\n sortOrder: sortOptions,\r\n onColumnSortChange: (changedColumn, direction) => {\r\n setSortOptions({\r\n name: changedColumn,\r\n direction: direction,\r\n });\r\n },\r\n\r\n sortFilterList: false,\r\n onFilterChange: handleFilterChange,\r\n\r\n onViewColumnsChange: (changedColumn, action) => {\r\n const columns = tableColumns as Array;\r\n\r\n const newColumns = columns.map((item) => {\r\n if (item.name === changedColumn) {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n display: action === 'add',\r\n },\r\n };\r\n }\r\n\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n },\r\n }}\r\n onSearch={(searchText) =>\r\n handlePesquisa({ key: 'filtroPadrao', value: searchText })\r\n }\r\n onColumnSort={(columnSort) =>\r\n handlePesquisa({ key: 'novaOrdenacao', value: columnSort })\r\n }\r\n onPageChange={(page) =>\r\n handlePesquisa({ key: 'numPagina', value: page })\r\n }\r\n onRowsPerPageChange={(rowsPerPage) =>\r\n handlePesquisa({ key: 'itensPorPagina', value: rowsPerPage })\r\n }\r\n />\r\n \r\n\r\n handleDialogOpen(editMode)}\r\n >\r\n handleDialogOpen(true)}\r\n onSuccess={() => onSuccess()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Grupos;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tableContainer: {\r\n margin: theme.spacing(1, 0, 1, 0),\r\n },\r\n newButton: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n progressContainer: {\r\n marginTop: theme.spacing(1),\r\n },\r\n formDialog: {\r\n marginBottom: 52,\r\n },\r\n formDialogContent: {\r\n width: 576,\r\n },\r\n formTitle: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n formButtonContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n padding: theme.spacing(1, 0, 1, 0),\r\n },\r\n formRadioGroup: {\r\n margin: theme.spacing(1, 0, 0, 1),\r\n },\r\n formRadioButton: {\r\n width: 'fit-content',\r\n },\r\n formDateTimeBox: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport React, { ChangeEvent, Fragment, useEffect } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport {\r\n Checkbox,\r\n FormControl,\r\n FormHelperText,\r\n FormLabel,\r\n Hidden,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { listarSoftwaresFiltro } from 'src/pages/Cadastros/Softwares/Thunks';\r\nimport { usuarioSetFormData } from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport UsuarioParser from 'src/pages/Cadastros/Usuarios/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport {\r\n atualizarUsuario,\r\n cadastrarUsuario,\r\n} from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport { UsuarioFormData } from 'src/pages/Cadastros/Usuarios/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepFourFormProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n handleBack(): void;\r\n}\r\n\r\n/**\r\n * // TODO: tratar respostas de sucesso parcial (API)\r\n */\r\nconst StepFourForm: React.FC = ({\r\n title,\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n handleBack,\r\n}: StepFourFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const usuario = useAppSelector((state) => state.usuarios.formData);\r\n\r\n const grupos = useAppSelector((state) => state.grupos.filterList);\r\n const softwares = useAppSelector((state) => state.softwares.filterList);\r\n const carregandoGrupos = useAppSelector((state) => state.grupos.loading);\r\n const carregandoSoftwares = useAppSelector(\r\n (state) => state.softwares.loading\r\n );\r\n\r\n useEffect(() => {\r\n const pesquisa = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n dispatch(listarSoftwaresFiltro(pesquisa));\r\n }, []);\r\n\r\n const { getValues, handleSubmit, control } = useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: usuario,\r\n });\r\n\r\n const onSubmit = handleSubmit((data: UsuarioFormData) => {\r\n const novoUsuario = { ...usuario, ...data };\r\n const usuarioRequest = UsuarioParser.parseToUsuario(novoUsuario);\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n\r\n if (editMode) {\r\n dispatch(atualizarUsuario(usuarioRequest, onSuccess));\r\n return;\r\n }\r\n\r\n dispatch(cadastrarUsuario(usuarioRequest, onSuccess));\r\n });\r\n\r\n const customHandleBack = () => {\r\n const data = getValues();\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleBack();\r\n };\r\n\r\n const getGrupo = (option?: TipoFiltro) => {\r\n if (option) {\r\n option = grupos.find((item) => item.idRegistro === option?.idRegistro);\r\n }\r\n\r\n return option;\r\n };\r\n\r\n const getSoftware = (option?: TipoFiltro) => {\r\n if (option) {\r\n option = softwares.find((item) => item.idRegistro === option?.idRegistro);\r\n }\r\n\r\n return option;\r\n };\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n return getGrupo(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getGrupo(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{\r\n style: {\r\n maxWidth: 125,\r\n },\r\n size: 'small',\r\n }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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 getSoftware(filtro)?.idRegistro;\r\n }}\r\n render={(field) => {\r\n return (\r\n field.onChange(data)}\r\n getOptionLabel={(option: TipoFiltro) => {\r\n return getSoftware(option)?.descricao || '';\r\n }}\r\n getOptionSelected={(option, value) => {\r\n return option.idRegistro === value?.idRegistro;\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n }\r\n checkedIcon={}\r\n />\r\n {option.descricao}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n ChipProps={{\r\n style: {\r\n maxWidth: 125,\r\n },\r\n size: 'small',\r\n }}\r\n openText={i18n.t('components.autoComplete.openText')}\r\n closeText={i18n.t('components.autoComplete.closeText')}\r\n clearText={i18n.t('components.autoComplete.clearText')}\r\n loadingText={i18n.t('components.autoComplete.loadingText')}\r\n noOptionsText={i18n.t('components.autoComplete.noOptionsText')}\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\nexport default StepFourForm;\r\n","import React, { useMemo } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Hidden, TextField, Typography } from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport DmInputSwitch from 'src/common/Inputs/DmInputSwitch';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { usuarioSetFormData } from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport { UsuarioFormData } from 'src/pages/Cadastros/Usuarios/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepOneFormProps {\r\n title: string;\r\n editMode?: boolean;\r\n onClose(): void;\r\n handleNext(): void;\r\n}\r\n\r\nconst StepOneForm: React.FC = ({\r\n title,\r\n editMode,\r\n onClose,\r\n handleNext,\r\n}: StepOneFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const usuario = useAppSelector((state) => state.usuarios.formData);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n codMatricula: yup\r\n .number()\r\n .transform((value) => (isNaN(value) ? undefined : value))\r\n .min(1, i18n.t('common.errNumeroMaiorQue').replace('{0}', '0'))\r\n .max(\r\n 9_999_999_999,\r\n i18n.t('common.errMaximoNCaracteres').replace('{0}', '10')\r\n )\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n nomUsuario: yup\r\n .string()\r\n .max(200, i18n.t('common.errMaximoNCaracteres').replace('{0}', '200'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desEmail: yup\r\n .string()\r\n .email(i18n.t('common.errEmailInvalido'))\r\n .max(100, i18n.t('common.errMaximoNCaracteres').replace('{0}', '100'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desPis: yup\r\n .string()\r\n .nullable()\r\n .default(null)\r\n .test(\r\n 'len',\r\n i18n.t('common.errNumeroCaracteres').replace('{0}', '14'),\r\n (value) => (value ? value.length === 14 : true)\r\n ),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, control, formState } =\r\n useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: usuario,\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n const onSubmit = handleSubmit((data: UsuarioFormData) => {\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleNext();\r\n });\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return (\r\n field.onChange(e)}\r\n />\r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StepOneForm;\r\n","import AlphaFCircle from 'mdi-material-ui/AlphaFCircle';\r\nimport AlphaFCircleOutline from 'mdi-material-ui/AlphaFCircleOutline';\r\nimport AlphaMCircle from 'mdi-material-ui/AlphaMCircle';\r\nimport AlphaMCircleOutline from 'mdi-material-ui/AlphaMCircleOutline';\r\nimport AlphaSCircle from 'mdi-material-ui/AlphaSCircle';\r\nimport AlphaSCircleOutline from 'mdi-material-ui/AlphaSCircleOutline';\r\nimport AlphaTCircle from 'mdi-material-ui/AlphaTCircle';\r\nimport AlphaTCircleOutline from 'mdi-material-ui/AlphaTCircleOutline';\r\nimport AlphaWCircle from 'mdi-material-ui/AlphaWCircle';\r\nimport AlphaWCircleOutline from 'mdi-material-ui/AlphaWCircleOutline';\r\n\r\nimport { DmWeekDayPickerIconDef } from 'src/common/Inputs/DmWeekDayPicker/Localization';\r\n\r\nconst icons: DmWeekDayPickerIconDef = {\r\n Sunday: AlphaSCircle,\r\n SundayOutline: AlphaSCircleOutline,\r\n Monday: AlphaMCircle,\r\n MondayOutline: AlphaMCircleOutline,\r\n Tuesday: AlphaTCircle,\r\n TuesdayOutline: AlphaTCircleOutline,\r\n Wednesday: AlphaWCircle,\r\n WednesdayOutline: AlphaWCircleOutline,\r\n Thursday: AlphaTCircle,\r\n ThursdayOutline: AlphaTCircleOutline,\r\n Friday: AlphaFCircle,\r\n FridayOutline: AlphaFCircleOutline,\r\n Saturday: AlphaSCircle,\r\n SaturdayOutline: AlphaSCircleOutline,\r\n};\r\n\r\nexport default icons;\r\n","import AlphaDCircle from 'mdi-material-ui/AlphaDCircle';\r\nimport AlphaDCircleOutline from 'mdi-material-ui/AlphaDCircleOutline';\r\nimport AlphaQCircle from 'mdi-material-ui/AlphaQCircle';\r\nimport AlphaQCircleOutline from 'mdi-material-ui/AlphaQCircleOutline';\r\nimport AlphaSCircle from 'mdi-material-ui/AlphaSCircle';\r\nimport AlphaSCircleOutline from 'mdi-material-ui/AlphaSCircleOutline';\r\nimport AlphaTCircle from 'mdi-material-ui/AlphaTCircle';\r\nimport AlphaTCircleOutline from 'mdi-material-ui/AlphaTCircleOutline';\r\n\r\nimport { DmWeekDayPickerIconDef } from 'src/common/Inputs/DmWeekDayPicker/Localization';\r\n\r\nconst icons: DmWeekDayPickerIconDef = {\r\n Sunday: AlphaDCircle,\r\n SundayOutline: AlphaDCircleOutline,\r\n Monday: AlphaSCircle,\r\n MondayOutline: AlphaSCircleOutline,\r\n Tuesday: AlphaTCircle,\r\n TuesdayOutline: AlphaTCircleOutline,\r\n Wednesday: AlphaQCircle,\r\n WednesdayOutline: AlphaQCircleOutline,\r\n Thursday: AlphaQCircle,\r\n ThursdayOutline: AlphaQCircleOutline,\r\n Friday: AlphaSCircle,\r\n FridayOutline: AlphaSCircleOutline,\r\n Saturday: AlphaSCircle,\r\n SaturdayOutline: AlphaSCircleOutline,\r\n};\r\n\r\nexport default icons;\r\n","import { DmWeekDayPickerLangDef } from 'src/common/Inputs/DmWeekDayPicker/Localization';\r\n\r\nconst locale: DmWeekDayPickerLangDef = {\r\n sunday: 'Sunday',\r\n monday: 'Monday',\r\n tuesday: 'Tuesday',\r\n wednesday: 'Wednesday',\r\n thursday: 'Thursday',\r\n friday: 'Friday',\r\n saturday: 'Saturday',\r\n};\r\n\r\nexport default locale;\r\n","import { DmWeekDayPickerLangDef } from 'src/common/Inputs/DmWeekDayPicker/Localization';\r\n\r\nconst locale: DmWeekDayPickerLangDef = {\r\n sunday: 'Domingo',\r\n monday: 'Segunda-Feira',\r\n tuesday: 'Terça-Feira',\r\n wednesday: 'Quarta-Feira',\r\n thursday: 'Quinta-Feira',\r\n friday: 'Sexta-Feira',\r\n saturday: 'Sábado',\r\n};\r\n\r\nexport default locale;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n formGroup: {\r\n ['@media(max-width: 320px)']: {\r\n justifyContent: 'space-between',\r\n },\r\n marginTop: theme.spacing(1),\r\n },\r\n checkbox: {\r\n ['@media(max-width: 320px)']: {\r\n padding: 6,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","export enum MenuMapProps {\r\n SORT_PROP = 'desObjeto',\r\n GROUP_PROP = 'flgTipo',\r\n}\r\n","import React, { ChangeEvent, useState } from 'react';\r\n\r\nimport {\r\n Checkbox,\r\n CheckboxProps,\r\n FormControl,\r\n FormControlProps,\r\n FormGroup,\r\n FormHelperText,\r\n FormLabel,\r\n Tooltip,\r\n} from '@material-ui/core';\r\n\r\nimport {\r\n getIcons,\r\n getTextLabels,\r\n} from 'src/common/Inputs/DmWeekDayPicker/Localization';\r\nimport useStyles from 'src/common/Inputs/DmWeekDayPicker/Styles';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface DmWeekDayPickerValue {\r\n sunday?: boolean;\r\n monday?: boolean;\r\n tuesday?: boolean;\r\n wednesday?: boolean;\r\n thursday?: boolean;\r\n friday?: boolean;\r\n saturday?: boolean;\r\n}\r\n\r\nexport interface DmWeekDayPickerProps {\r\n name: string;\r\n label: string;\r\n value?: DmWeekDayPickerValue;\r\n error?: boolean;\r\n helperText?: string;\r\n checkboxProps?: CheckboxProps;\r\n formControlProps?: FormControlProps<'fieldset'>;\r\n onChange?(values: DmWeekDayPickerValue): void;\r\n}\r\n\r\nconst DmWeekDayPicker: React.FC = ({\r\n name,\r\n label,\r\n value,\r\n error,\r\n helperText,\r\n checkboxProps,\r\n formControlProps,\r\n onChange,\r\n}: DmWeekDayPickerProps) => {\r\n const classes = useStyles();\r\n\r\n const {\r\n Sunday,\r\n SundayOutline,\r\n Monday,\r\n MondayOutline,\r\n Tuesday,\r\n TuesdayOutline,\r\n Wednesday,\r\n WednesdayOutline,\r\n Thursday,\r\n ThursdayOutline,\r\n Friday,\r\n FridayOutline,\r\n Saturday,\r\n SaturdayOutline,\r\n } = getIcons(i18n.language);\r\n\r\n const textLabels = getTextLabels(i18n.language);\r\n\r\n const [values, setValues] = useState({\r\n sunday: value?.sunday || false,\r\n monday: value?.monday || false,\r\n tuesday: value?.tuesday || false,\r\n wednesday: value?.wednesday || false,\r\n thursday: value?.thursday || false,\r\n friday: value?.friday || false,\r\n saturday: value?.saturday || false,\r\n });\r\n\r\n const handleChange = (event: ChangeEvent) => {\r\n const newValues = { ...values, [event.target.name]: event.target.checked };\r\n\r\n onChange?.(newValues);\r\n setValues(newValues);\r\n };\r\n\r\n return (\r\n \r\n {label}\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n }\r\n checkedIcon={}\r\n {...checkboxProps}\r\n />\r\n \r\n \r\n {helperText}\r\n \r\n );\r\n};\r\n\r\nexport default DmWeekDayPicker;\r\n","import enUsIcons from 'src/common/Inputs/DmWeekDayPicker/Localization/Icons/en-US';\r\nimport ptBrIcons from 'src/common/Inputs/DmWeekDayPicker/Localization/Icons/pt-BR';\r\nimport enUsTranslations from 'src/common/Inputs/DmWeekDayPicker/Localization/Locales/en-US';\r\nimport ptBrTranslations from 'src/common/Inputs/DmWeekDayPicker/Localization/Locales/pt-BR';\r\n\r\nexport interface DmWeekDayPickerIconDef {\r\n Sunday: React.FC;\r\n SundayOutline: React.FC;\r\n Monday: React.FC;\r\n MondayOutline: React.FC;\r\n Tuesday: React.FC;\r\n TuesdayOutline: React.FC;\r\n Wednesday: React.FC;\r\n WednesdayOutline: React.FC;\r\n Thursday: React.FC;\r\n ThursdayOutline: React.FC;\r\n Friday: React.FC;\r\n FridayOutline: React.FC;\r\n Saturday: React.FC;\r\n SaturdayOutline: React.FC;\r\n}\r\n\r\nexport interface DmWeekDayPickerLangDef {\r\n sunday: string;\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n}\r\n\r\nexport function getIcons(lang: string): DmWeekDayPickerIconDef {\r\n switch (lang) {\r\n case 'en-US':\r\n return enUsIcons;\r\n case 'pt-BR':\r\n return ptBrIcons;\r\n }\r\n\r\n switch (lang.split('-')[0]) {\r\n case 'en':\r\n return enUsIcons;\r\n case 'pt':\r\n return ptBrIcons;\r\n }\r\n\r\n return enUsIcons;\r\n}\r\n\r\nexport function getTextLabels(lang: string): DmWeekDayPickerLangDef {\r\n switch (lang) {\r\n case 'en-US':\r\n return enUsTranslations;\r\n case 'pt-BR':\r\n return ptBrTranslations;\r\n }\r\n\r\n switch (lang.split('-')[0]) {\r\n case 'en':\r\n return enUsTranslations;\r\n case 'pt':\r\n return ptBrTranslations;\r\n }\r\n\r\n return enUsTranslations;\r\n}\r\n","import 'date-fns';\r\nimport React, { useMemo } from 'react';\r\nimport { Controller, useForm, useWatch } from 'react-hook-form';\r\n\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport {\r\n Box,\r\n FormControl,\r\n FormLabel,\r\n Hidden,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardTimePicker,\r\n} from '@material-ui/pickers';\r\nimport * as yup from 'yup';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport DmInputSwitch from 'src/common/Inputs/DmInputSwitch';\r\nimport DmWeekDayPicker from 'src/common/Inputs/DmWeekDayPicker';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { usuarioSetFormData } from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport { UsuarioFormData } from 'src/pages/Cadastros/Usuarios/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepThreeFormProps {\r\n title: string;\r\n onClose(): void;\r\n handleNext(): void;\r\n handleBack(): void;\r\n}\r\n\r\n/**\r\n * // TODO: melhorar renders desnecessários\r\n */\r\nconst StepThreeForm: React.FC = ({\r\n title,\r\n onClose,\r\n handleNext,\r\n handleBack,\r\n}: StepThreeFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const usuario = useAppSelector((state) => state.usuarios.formData);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n horCargaInicio: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n horCargaFinal: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .when('horCargaInicio', {\r\n is: (value: Date) => !!value,\r\n then: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .required(i18n.t('common.errCampoObrigatorio'))\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n })\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n horInicioAlmoco: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n horFimAlmoco: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .when('horInicioAlmoco', {\r\n is: (value: Date) => !!value,\r\n then: yup\r\n .date()\r\n .nullable()\r\n .default(null)\r\n .required(i18n.t('common.errCampoObrigatorio'))\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n })\r\n .typeError(i18n.t('common.errHorarioInvalido')),\r\n qtdHorasDia: yup\r\n .number()\r\n .transform((value) => (isNaN(value) ? undefined : value))\r\n .min(1, i18n.t('common.errNumeroMaiorQue').replace('{0}', '0'))\r\n .max(\r\n 99_999,\r\n i18n.t('common.errMaximoNCaracteres').replace('{0}', '5')\r\n ),\r\n qtdHorasMes: yup\r\n .number()\r\n .transform((value) => (isNaN(value) ? undefined : value))\r\n .min(1, i18n.t('common.errNumeroMaiorQue').replace('{0}', '0'))\r\n .max(\r\n 99_999,\r\n i18n.t('common.errMaximoNCaracteres').replace('{0}', '5')\r\n ),\r\n }),\r\n []\r\n );\r\n\r\n const { register, getValues, handleSubmit, control, formState } =\r\n useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: usuario,\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n const watchHorCargaInicio = useWatch({\r\n control,\r\n name: 'horCargaInicio',\r\n defaultValue: null,\r\n });\r\n\r\n const watchHorInicioAlmoco = useWatch({\r\n control,\r\n name: 'horInicioAlmoco',\r\n defaultValue: null,\r\n });\r\n\r\n const onSubmit = handleSubmit((data: UsuarioFormData) => {\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleNext();\r\n });\r\n\r\n const customHandleBack = () => {\r\n const data = getValues();\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleBack();\r\n };\r\n\r\n return (\r\n
\r\n \r\n {title}\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 {\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 \r\n \r\n {\r\n return (\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 return (\r\n field.onChange(e)}\r\n />\r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n field.onChange(e)}\r\n />\r\n );\r\n }}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default StepThreeForm;\r\n","import React, { useMemo } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport {\r\n Box,\r\n FormControl,\r\n FormControlLabel,\r\n FormHelperText,\r\n FormLabel,\r\n Hidden,\r\n Radio,\r\n RadioGroup,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { usuarioSetFormData } from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport {\r\n TipoUsuario,\r\n UsuarioFormData,\r\n} from 'src/pages/Cadastros/Usuarios/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface StepTwoFormProps {\r\n title: string;\r\n onClose(): void;\r\n handleNext(): void;\r\n handleBack(): void;\r\n}\r\n\r\nconst StepTwoForm: React.FC = ({\r\n title,\r\n onClose,\r\n handleNext,\r\n handleBack,\r\n}: StepTwoFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const usuario = useAppSelector((state) => state.usuarios.formData);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n nomLogin: yup\r\n .string()\r\n .max(50, i18n.t('common.errMaximoNCaracteres').replace('{0}', '50'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desSenha: yup\r\n .string()\r\n .min(8, i18n.t('common.errMinimoNCaracteres').replace('{0}', '8'))\r\n .max(30, i18n.t('common.errMaximoNCaracteres').replace('{0}', '30'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n flgTipo: yup\r\n .string()\r\n .max(1, i18n.t('common.errMaximoNCaracteres').replace('{0}', '1'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, getValues, handleSubmit, control, formState } =\r\n useForm({\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n defaultValues: usuario,\r\n\r\n resolver: yupResolver(validationSchema),\r\n });\r\n\r\n const onSubmit = handleSubmit((data: UsuarioFormData) => {\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleNext();\r\n });\r\n\r\n const customHandleBack = () => {\r\n const data = getValues();\r\n const novoUsuario = { ...usuario, ...data };\r\n\r\n dispatch(usuarioSetFormData(novoUsuario));\r\n handleBack();\r\n };\r\n\r\n return (\r\n
\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n className={classes.formRadioButton}\r\n />\r\n }\r\n className={classes.formRadioButton}\r\n />\r\n }\r\n className={classes.formRadioButton}\r\n />\r\n \r\n }\r\n />\r\n {formState.errors.flgTipo?.message}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StepTwoForm;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport {\r\n Box,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n Step,\r\n StepContent,\r\n StepLabel,\r\n Stepper,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport StepFourForm from 'src/pages/Cadastros/Usuarios/Form/Steps/StepFour';\r\nimport StepOneForm from 'src/pages/Cadastros/Usuarios/Form/Steps/StepOne';\r\nimport StepThreeForm from 'src/pages/Cadastros/Usuarios/Form/Steps/StepThree';\r\nimport StepTwoForm from 'src/pages/Cadastros/Usuarios/Form/Steps/StepTwo';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n editMode?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n}\r\n\r\nconst Form: React.FC = ({\r\n editMode,\r\n onClose,\r\n onSuccess,\r\n}: FormProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const isLoading = useAppSelector((state) => state.usuarios.loading);\r\n\r\n const [steps, setSteps] = useState>([]);\r\n const [activeStep, setActiveStep] = useState(0);\r\n\r\n useEffect(() => {\r\n const newSteps = [\r\n i18n.t('usuariosPage.titDadosUsuario'),\r\n i18n.t('usuariosPage.titDadosAcesso'),\r\n i18n.t('usuariosPage.titColaborador'),\r\n i18n.t('common.titPermissoes'),\r\n ];\r\n\r\n setSteps(newSteps);\r\n }, []);\r\n\r\n const handleNext = () => {\r\n setActiveStep((activeStep) => activeStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((activeStep) => activeStep - 1);\r\n };\r\n\r\n const getStepContent = (index: number) => {\r\n switch (index) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n );\r\n case 3:\r\n return (\r\n \r\n );\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n if (!isDesktop) {\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 {getStepContent(activeStep)}\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 {steps.map((label, index) => (\r\n \r\n {label}\r\n \r\n {getStepContent(index)}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Form;\r\n","/* eslint-disable react/display-name */\r\n\r\nimport React, { ReactNode, useState, useEffect } from 'react';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Checkbox,\r\n Dialog,\r\n FormControl,\r\n Grid,\r\n IconButton,\r\n Input,\r\n InputLabel,\r\n ListItemText,\r\n MenuItem,\r\n Select,\r\n TextField,\r\n Tooltip,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/AddCircle';\r\nimport {\r\n FilterType,\r\n MUIDataTableColumn,\r\n MUIDataTableColumnDef,\r\n MUIDataTableState,\r\n MUISortOptions,\r\n} from 'mui-datatables';\r\n\r\nimport DmTable from 'src/common/Table/DmTable';\r\nimport DmTableDeleteButton from 'src/common/Table/DmTableDeleteButton';\r\nimport DmTableEditButton from 'src/common/Table/DmTableEditButton';\r\nimport DmTableOptions from 'src/common/Table/DmTableOptions';\r\nimport DmTableTitle from 'src/common/Table/DmTableTitle';\r\nimport Translator from 'src/common/Translator';\r\nimport Pesquisa from 'src/main/Classes/Pesquisa';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport { TipoFiltro } from 'src/main/Types';\r\nimport { grupoClearFilterList } from 'src/pages/Cadastros/Grupos/Actions';\r\nimport { listarGruposFiltro } from 'src/pages/Cadastros/Grupos/Thunks';\r\nimport { softwareClearFilterList } from 'src/pages/Cadastros/Softwares/Actions';\r\nimport {\r\n usuarioResetFormData,\r\n usuarioResetModule,\r\n usuarioSetFormData,\r\n} from 'src/pages/Cadastros/Usuarios/Actions';\r\nimport Form from 'src/pages/Cadastros/Usuarios/Form';\r\nimport UsuarioParser from 'src/pages/Cadastros/Usuarios/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Styles';\r\nimport {\r\n deletarUsuario,\r\n listarUsuarios,\r\n} from 'src/pages/Cadastros/Usuarios/Thunks';\r\nimport { usePesquisa } from 'src/pages/Hooks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nconst tiposUsuario = [\r\n {\r\n key: 'A',\r\n label: i18n.t('usuariosPage.lblFlgAmbos'),\r\n },\r\n {\r\n key: 'D',\r\n label: i18n.t('usuariosPage.lblFlgDesktop'),\r\n },\r\n {\r\n key: 'P',\r\n label: i18n.t('usuariosPage.lblFlgPortal'),\r\n },\r\n];\r\n\r\nconst tiposRestricao = [\r\n {\r\n key: 'S',\r\n label: i18n.t('usuariosPage.lblComRestricaoNoturna'),\r\n },\r\n {\r\n key: 'N',\r\n label: i18n.t('usuariosPage.lblSemRestricaoNoturna'),\r\n },\r\n];\r\n\r\nconst tiposStatus = [\r\n {\r\n key: 'S',\r\n label: i18n.t('common.lblAtivado'),\r\n },\r\n {\r\n key: 'N',\r\n label: i18n.t('common.lblDesativado'),\r\n },\r\n];\r\n\r\nconst diasSemanaOptions = [\r\n {\r\n key: 'DOM;',\r\n label: i18n.t('components.weekDays.sunday'),\r\n },\r\n {\r\n key: 'SEG;',\r\n label: i18n.t('components.weekDays.monday'),\r\n },\r\n {\r\n key: 'TER;',\r\n label: i18n.t('components.weekDays.tuesday'),\r\n },\r\n {\r\n key: 'QUA;',\r\n label: i18n.t('components.weekDays.wednesday'),\r\n },\r\n {\r\n key: 'QUI;',\r\n label: i18n.t('components.weekDays.thursday'),\r\n },\r\n {\r\n key: 'SEX;',\r\n label: i18n.t('components.weekDays.friday'),\r\n },\r\n {\r\n key: 'SAB;',\r\n label: i18n.t('components.weekDays.saturday'),\r\n },\r\n];\r\n\r\nconst getTableColumns = (\r\n isDesktop: boolean,\r\n diasSemana: Array,\r\n grupos: Array,\r\n optionsColumn: (index: number) => ReactNode\r\n): Array => {\r\n let columns = new Array();\r\n\r\n columns = columns.concat([\r\n {\r\n name: 'codMatricula',\r\n label: i18n.t('usuariosPage.colDefCodMatricula'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n },\r\n },\r\n {\r\n name: 'nomUsuario',\r\n label: i18n.t('usuariosPage.colDefNomUsuario'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n filterType: 'textField',\r\n },\r\n },\r\n {\r\n name: 'nomLogin',\r\n label: i18n.t('usuariosPage.colDefNomLogin'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: isDesktop,\r\n filterType: 'textField',\r\n },\r\n },\r\n {\r\n name: 'desEmail',\r\n label: i18n.t('usuariosPage.colDefDesEmail'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: isDesktop,\r\n filterType: 'textField',\r\n },\r\n },\r\n {\r\n name: 'desPis',\r\n label: i18n.t('usuariosPage.colDefDesPis'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: isDesktop,\r\n filterType: 'textField',\r\n },\r\n },\r\n {\r\n name: 'qtdHorasDia',\r\n label: i18n.t('usuariosPage.colDefQtdHorasDia'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n return (\r\n {\r\n filterList[index] = e.target.value ? [e.target.value] : [];\r\n\r\n onChange(filterList[index], index, column);\r\n }}\r\n label={column.label}\r\n />\r\n );\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'qtdHorasMes',\r\n label: i18n.t('usuariosPage.colDefQtdHorasMes'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n return (\r\n {\r\n filterList[index] = e.target.value ? [e.target.value] : [];\r\n\r\n onChange(filterList[index], index, column);\r\n }}\r\n label={column.label}\r\n />\r\n );\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'diasSemana',\r\n label: i18n.t('usuariosPage.colDefDiasSemana'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: isDesktop,\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n return (\r\n \r\n {column.label}\r\n {\r\n const array = selected as Array;\r\n\r\n return diasSemanaOptions\r\n .filter((item) => array.includes(item.key))\r\n .map((item) => item.label)\r\n .join(', ');\r\n }}\r\n onChange={(e) => {\r\n filterList[index] = e.target.value\r\n ? (e.target.value as Array)\r\n : [];\r\n\r\n onChange(filterList[index], index, column);\r\n }}\r\n input={}\r\n >\r\n {diasSemanaOptions.map((item) => (\r\n \r\n -1}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value: Array) => {\r\n return (\r\n diasSemanaOptions\r\n .filter((item) => value.includes(item.key))\r\n .map((item) => item.label.substring(0, 3).toUpperCase())\r\n .join(', ') ?? ''\r\n );\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'flgRestricaoNoturno',\r\n label: i18n.t('usuariosPage.colDefFlgRestricaoNoturno'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposRestricao.map((item) => item.key),\r\n renderValue: (value) => {\r\n return (\r\n tiposRestricao.find((item) => item.key === value)?.label ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return tiposRestricao.find((item) => item.key === value)?.label;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'flgTipo',\r\n label: i18n.t('usuariosPage.colDefFlgTipo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposUsuario.map((item) => item.key),\r\n renderValue: (value) => {\r\n return tiposUsuario.find((item) => item.key === value)?.label ?? '';\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return tiposUsuario.find((item) => item.key === value)?.label;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'flgAtivo',\r\n label: i18n.t('common.colDefFlgAtivo'),\r\n options: {\r\n sort: true,\r\n filter: true,\r\n display: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: tiposStatus.map((item) => item.key),\r\n renderValue: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label ?? '';\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return tiposStatus.find((item) => item.key === value)?.label;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: 'idGrupo',\r\n label: i18n.t('usuariosPage.colDefIdGrupo'),\r\n options: {\r\n empty: true,\r\n filter: true,\r\n display: false,\r\n viewColumns: false,\r\n filterType: 'dropdown',\r\n filterOptions: {\r\n names: grupos.map((item) => item.idRegistro),\r\n renderValue: (value) => {\r\n return (\r\n grupos.find((item) => item.idRegistro == value)?.descricao ?? ''\r\n );\r\n },\r\n },\r\n customFilterListOptions: {\r\n render: (value) => {\r\n return grupos.find((item) => item.idRegistro == value)?.descricao;\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: '',\r\n label: i18n.t('common.lblOpcoes'),\r\n options: {\r\n sort: false,\r\n empty: true,\r\n filter: false,\r\n draggable: false,\r\n viewColumns: false,\r\n customBodyRenderLite: (dataIndex) => optionsColumn(dataIndex),\r\n },\r\n },\r\n ]);\r\n\r\n return columns;\r\n};\r\n\r\n/**\r\n * // TODO: melhorar render dialog\r\n * // TODO: melhorar renders desnecessários\r\n */\r\nconst Usuarios: React.FC = () => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const data = useAppSelector((state) => state.usuarios.data);\r\n const grupos = useAppSelector((state) => state.grupos.filterList);\r\n const isLoading = useAppSelector((state) => state.usuarios.loading);\r\n const pagination = useAppSelector((state) => state.usuarios.pagination);\r\n\r\n const [editMode, setEditMode] = useState(false);\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n const [diasSemana, setDiasSemana] = useState>([]);\r\n\r\n const [pesquisa, handlePesquisa] = usePesquisa({\r\n novaOrdenacao: 'codMatricula asc',\r\n });\r\n\r\n const [sortOptions, setSortOptions] = useState({\r\n name: 'codMatricula',\r\n direction: 'asc',\r\n });\r\n\r\n useEffect(() => {\r\n const pesquisa = new Pesquisa({ itensPorPagina: 0 });\r\n\r\n dispatch(listarGruposFiltro(pesquisa));\r\n\r\n return () => {\r\n dispatch(usuarioResetModule());\r\n dispatch(grupoClearFilterList());\r\n dispatch(softwareClearFilterList());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const columns = getTableColumns(\r\n isDesktop,\r\n diasSemana,\r\n grupos,\r\n optionsColumn\r\n );\r\n setTableColumns(columns);\r\n }, [isDesktop, diasSemana, grupos]);\r\n\r\n useEffect(() => {\r\n const columns = tableColumns as Array;\r\n const newColumns = columns.map((item) => {\r\n if (item.name === '') {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n customBodyRenderLite: (dataIndex: number) =>\r\n optionsColumn(dataIndex),\r\n },\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (data.length === 0 && pagination.totRegistros !== 0) {\r\n handlePesquisa({ key: 'numPagina', value: 1 });\r\n }\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n handleListarUsuarios();\r\n }, [pesquisa]);\r\n\r\n const onSuccess = () => {\r\n handleDialogOpen(true);\r\n handleListarUsuarios();\r\n };\r\n\r\n const handleListarUsuarios = () => {\r\n dispatch(listarUsuarios(pesquisa));\r\n };\r\n\r\n const handleDialogOpen = (reset?: boolean) => {\r\n setDialogOpen(!dialogOpen);\r\n\r\n setTimeout(() => {\r\n if (reset) {\r\n dispatch(usuarioResetFormData());\r\n }\r\n\r\n if (editMode) {\r\n setEditMode(false);\r\n }\r\n }, 100);\r\n };\r\n\r\n const handleEdit = (index: number) => {\r\n if (data && data[index]) {\r\n const usuario = UsuarioParser.parseToUsuarioFormData(data[index]);\r\n dispatch(usuarioSetFormData(usuario));\r\n\r\n setEditMode(true);\r\n setDialogOpen(true);\r\n }\r\n };\r\n\r\n const handleDelete = (index: number) => {\r\n const usuario = data[index];\r\n\r\n if (usuario) {\r\n dispatch(deletarUsuario(usuario, handleListarUsuarios));\r\n }\r\n };\r\n\r\n const handleFilterChange = (\r\n changedColumn: string | MUIDataTableColumn | null,\r\n filterList: MUIDataTableState['filterList'],\r\n type: FilterType | 'chip' | 'reset',\r\n changedColumnIndex: number\r\n ) => {\r\n if (\r\n type === 'reset' ||\r\n !filterList.find((item) => item && item.length > 0)\r\n ) {\r\n setDiasSemana([]);\r\n handlePesquisa({ resetFilter: true });\r\n return;\r\n }\r\n\r\n if (changedColumn === 'diasSemana') {\r\n const value = filterList[changedColumnIndex];\r\n const array = diasSemanaOptions\r\n .filter((item) => value.includes(item.key))\r\n .map((item) => item.key);\r\n\r\n setDiasSemana(array);\r\n handlePesquisa({\r\n key: changedColumn?.toString() || '',\r\n value: array.join(''),\r\n customFilter: true,\r\n });\r\n } else {\r\n const value = filterList[changedColumnIndex][0];\r\n\r\n handlePesquisa({\r\n key: changedColumn?.toString() || '',\r\n value: value,\r\n customFilter: true,\r\n });\r\n }\r\n };\r\n\r\n const optionsColumn = (index: number) => {\r\n return (\r\n \r\n handleEdit(index)}\r\n />\r\n handleDelete(index)}\r\n />\r\n \r\n );\r\n };\r\n\r\n const customToolBar = () => {\r\n if (!isDesktop) {\r\n return (\r\n \r\n handleDialogOpen()}>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n }\r\n className={classes.newButton}\r\n onClick={() => handleDialogOpen()}\r\n >\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const [tableColumns, setTableColumns] = useState<\r\n Array\r\n >(getTableColumns(isDesktop, diasSemana, grupos, optionsColumn));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n data={data || []}\r\n columns={tableColumns}\r\n options={{\r\n download: false,\r\n\r\n page: pesquisa.getPage(),\r\n count: pagination?.totRegistros || 0,\r\n rowsPerPage: pesquisa.itensPorPagina,\r\n\r\n searchPlaceholder: i18n.t('common.lblPesquisar'),\r\n customToolbar: customToolBar,\r\n\r\n sortOrder: sortOptions,\r\n onColumnSortChange: (changedColumn, direction) => {\r\n setSortOptions({\r\n name: changedColumn,\r\n direction: direction,\r\n });\r\n },\r\n\r\n sortFilterList: false,\r\n onFilterChange: handleFilterChange,\r\n\r\n onViewColumnsChange: (changedColumn, action) => {\r\n const columns = tableColumns as Array;\r\n\r\n const newColumns = columns.map((item) => {\r\n if (item.name === changedColumn) {\r\n return {\r\n ...item,\r\n options: {\r\n ...item.options,\r\n display: action === 'add',\r\n },\r\n };\r\n }\r\n\r\n return item;\r\n });\r\n\r\n setTableColumns(newColumns);\r\n },\r\n }}\r\n onSearch={(searchText) =>\r\n handlePesquisa({ key: 'filtroPadrao', value: searchText })\r\n }\r\n onColumnSort={(columnSort) =>\r\n handlePesquisa({ key: 'novaOrdenacao', value: columnSort })\r\n }\r\n onPageChange={(page) =>\r\n handlePesquisa({ key: 'numPagina', value: page })\r\n }\r\n onRowsPerPageChange={(rowsPerPage) =>\r\n handlePesquisa({ key: 'itensPorPagina', value: rowsPerPage })\r\n }\r\n />\r\n \r\n\r\n handleDialogOpen(editMode)}\r\n >\r\n handleDialogOpen(true)}\r\n onSuccess={() => onSuccess()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Usuarios;\r\n","import React from 'react';\r\n\r\nimport { Box } from '@material-ui/core';\r\n\r\nconst Dashboard: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default Dashboard;\r\n","import React from 'react';\r\nimport { Switch, Route, Redirect } from 'react-router';\r\n\r\nimport PublicRoute from 'src/main/Components/PublicRoute';\r\nimport AnaliseAcessos from 'src/pages/Analises/Acessos';\r\nimport AnaliseUsoAplicacoes from 'src/pages/Analises/UsoAplicacoes';\r\nimport Equipes from 'src/pages/Cadastros/Equipes';\r\nimport Grupos from 'src/pages/Cadastros/Grupos';\r\nimport Usuarios from 'src/pages/Cadastros/Usuarios';\r\nimport Dashboard from 'src/pages/Dashboard';\r\n\r\nconst Routes: React.FC = () => {\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 \r\n );\r\n};\r\n\r\nexport default Routes;\r\n","import { Empresa, EmpresaFormData } from 'src/pages/Cadastros/Empresas/Types';\r\n\r\nabstract class EmpresaParser {\r\n public static parseToEmpresaFormData(empresa: Empresa): EmpresaFormData {\r\n return {\r\n codEmpresa: empresa.codEmpresa,\r\n desRazaoSocial: empresa.desRazaoSocial,\r\n desNomeFantasia: empresa.desNomeFantasia,\r\n codCnpj: empresa.codCnpj,\r\n desCei: empresa.desCei,\r\n codRep: empresa.codRep,\r\n };\r\n }\r\n\r\n public static parseToEmpresa(empresa: EmpresaFormData): Empresa {\r\n return {\r\n codEmpresa: empresa.codEmpresa,\r\n desRazaoSocial: empresa.desRazaoSocial,\r\n desNomeFantasia: empresa.desNomeFantasia,\r\n codCnpj: empresa.codCnpj,\r\n desCei: empresa.desCei,\r\n codRep: empresa.codRep,\r\n };\r\n }\r\n}\r\n\r\nexport default EmpresaParser;\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nimport logo from 'src/images/eworkoff.svg';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n height: '100vh',\r\n },\r\n image: {\r\n backgroundImage: `url(${logo})`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundColor: theme.palette.grey[50],\r\n backgroundSize: '90%',\r\n backgroundPosition: 'center',\r\n },\r\n paperGrid: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n },\r\n paper: {\r\n margin: theme.spacing(8, 4),\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: '100%',\r\n },\r\n formDialog: {\r\n marginBottom: 52,\r\n },\r\n formDialogContent: {\r\n width: 512,\r\n paddingBottom: theme.spacing(3),\r\n },\r\n progressContainer: {\r\n marginTop: theme.spacing(1),\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1),\r\n },\r\n submit: {\r\n margin: theme.spacing(3, 0, 0),\r\n },\r\n cancel: {\r\n margin: theme.spacing(1, 0, 2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { Fragment, ReactElement, useEffect, useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { Button } from '@material-ui/core';\r\nimport * as yup from 'yup';\r\n\r\nimport DmTextField from 'src/common/Inputs/Skeleton/DmTextField';\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport {\r\n empresaSetFormData,\r\n empresaResetModule,\r\n} from 'src/pages/Cadastros/Empresas/Actions';\r\nimport EmpresaParser from 'src/pages/Cadastros/Empresas/Parser';\r\nimport useStyles from 'src/pages/Cadastros/Empresas/Styles';\r\nimport {\r\n atualizarEmpresa,\r\n recuperarEmpresa,\r\n} from 'src/pages/Cadastros/Empresas/Thunks';\r\nimport { EmpresaFormData } from 'src/pages/Cadastros/Empresas/Types';\r\nimport { realizarLogout } from 'src/pages/Login/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n onSuccess?: () => void;\r\n customSubmitButton?: (isLoading: boolean) => ReactElement;\r\n firstAccess?: boolean;\r\n}\r\n\r\nconst Form: React.FC = ({\r\n onSuccess,\r\n customSubmitButton,\r\n firstAccess,\r\n}: FormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const data = useAppSelector((state) => state.empresas.data);\r\n const formData = useAppSelector((state) => state.empresas.formData);\r\n const isLoading = useAppSelector((state) => state.empresas.loading);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n desRazaoSocial: yup\r\n .string()\r\n .max(100, i18n.t('common.errMaximoNCaracteres').replace('{0}', '100'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n desNomeFantasia: yup\r\n .string()\r\n .max(100, i18n.t('common.errMaximoNCaracteres').replace('{0}', '100'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n codCnpj: yup\r\n .string()\r\n .max(18, i18n.t('common.errMaximoNCaracteres').replace('{0}', '18')),\r\n desCei: yup\r\n .string()\r\n .max(12, i18n.t('common.errMaximoNCaracteres').replace('{0}', '12')),\r\n codRep: yup\r\n .number()\r\n .transform((value) => (isNaN(value) ? undefined : value))\r\n .max(\r\n 9_999_999_999,\r\n i18n.t('common.errMaximoNCaracteres').replace('{0}', '10')\r\n ),\r\n }),\r\n []\r\n );\r\n\r\n const { handleSubmit, register, reset, formState } = useForm(\r\n {\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n resolver: yupResolver(validationSchema),\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n dispatch(recuperarEmpresa());\r\n\r\n return () => {\r\n dispatch(empresaResetModule());\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n const formData = EmpresaParser.parseToEmpresaFormData(data);\r\n\r\n reset(formData);\r\n dispatch(empresaSetFormData(formData));\r\n }\r\n }, [data]);\r\n\r\n const onSubmit = handleSubmit((data: EmpresaFormData) => {\r\n const newData = EmpresaParser.parseToEmpresa(data);\r\n\r\n dispatch(atualizarEmpresa(newData, onSuccess));\r\n });\r\n\r\n const SubmitButton = () => {\r\n if (customSubmitButton) {\r\n return customSubmitButton(isLoading);\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 const logout = () => {\r\n dispatch(realizarLogout());\r\n };\r\n\r\n const CancelLoginButton = () => {\r\n if (!firstAccess) {\r\n return null;\r\n }\r\n return (\r\n \r\n logout()}\r\n className={classes.cancel}\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 \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Form;\r\n","import { AppThunk } from 'src/main/Store/Types';\r\nimport { RespostaApi } from 'src/main/Types';\r\nimport * as EmpresasActions from 'src/pages/Cadastros/Empresas/Actions';\r\nimport { Empresa, EmpresaAction } from 'src/pages/Cadastros/Empresas/Types';\r\nimport { ApiUrls } from 'src/resources/Constants/URL';\r\n\r\nexport const recuperarEmpresa = (): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EmpresasActions.empresaGetRequest());\r\n\r\n const response = await apiService.get>>(\r\n `${ApiUrls.EMPRESAS_URL}`\r\n );\r\n\r\n return dispatch(EmpresasActions.empresaGetSuccess(response.data));\r\n } catch (error) {\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EmpresasActions.empresaGetFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const atualizarEmpresa = (\r\n dados: Empresa,\r\n onSuccess?: () => void,\r\n onError?: () => void\r\n): AppThunk> => {\r\n return async (dispatch, getState, { apiService, dmTranslatedMessage }) => {\r\n try {\r\n dispatch(EmpresasActions.empresaPutRequest());\r\n\r\n const response = await apiService.put(\r\n ApiUrls.EMPRESAS_URL,\r\n dados\r\n );\r\n\r\n onSuccess?.();\r\n dmTranslatedMessage.success('messages.successTitle', response.data);\r\n\r\n return dispatch(EmpresasActions.empresaPutSuccess());\r\n } catch (error) {\r\n onError?.();\r\n dmTranslatedMessage.showHttpError(error);\r\n\r\n return dispatch(EmpresasActions.empresaPutFailure());\r\n }\r\n };\r\n};\r\n","import { action } from 'typesafe-actions';\r\n\r\nimport { RespostaApi } from 'src/main/Types';\r\nimport {\r\n Empresa,\r\n EmpresaAction,\r\n EmpresaFormData,\r\n EmpresaTypes,\r\n} from 'src/pages/Cadastros/Empresas/Types';\r\n\r\nexport const empresaGetRequest = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_GET_REQUEST);\r\n\r\nexport const empresaGetSuccess = (\r\n data: RespostaApi>\r\n): EmpresaAction => action(EmpresaTypes.EMPRESA_GET_SUCCESS, data);\r\n\r\nexport const empresaGetFailure = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_GET_FAILURE);\r\n\r\nexport const empresaPutRequest = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_PUT_REQUEST);\r\n\r\nexport const empresaPutSuccess = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_PUT_SUCCESS);\r\n\r\nexport const empresaPutFailure = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_PUT_FAILURE);\r\n\r\nexport const empresaSetFormData = (\r\n data: Partial\r\n): EmpresaAction => action(EmpresaTypes.EMPRESA_SET_FORM_DATA, data);\r\n\r\nexport const empresaResetFormData = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_RESET_FORM_DATA);\r\n\r\nexport const empresaResetModule = (): EmpresaAction =>\r\n action(EmpresaTypes.EMPRESA_RESET_MODULE);\r\n","import React from 'react';\r\n\r\nimport {\r\n Box,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport Form from 'src/pages/Cadastros/Empresas/Form/Common';\r\nimport useStyles from 'src/pages/Cadastros/Empresas/Styles';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface FormProps {\r\n open?: boolean;\r\n onClose(): void;\r\n onSuccess(): void;\r\n}\r\n\r\nconst DialogForm: React.FC = ({\r\n open,\r\n onClose,\r\n onSuccess,\r\n}: FormProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const isLoading = useAppSelector((state) => state.empresas.loading);\r\n\r\n const customSubmitButton = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n if (!isDesktop) {\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 }\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\nexport default DialogForm;\r\n","import React from 'react';\r\n\r\nimport {\r\n Box,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport DmStepButton from 'src/common/Form/DmStepButton';\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport Form from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/Common';\r\nimport useStyles from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/Styles';\r\nimport { realizarLogout } from 'src/pages/Login/Thunks';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface DialogFormProps {\r\n open?: boolean;\r\n onClose?: () => void;\r\n onSuccess?: () => void;\r\n}\r\n\r\nconst DialogForm: React.FC = ({\r\n open,\r\n onClose,\r\n}: DialogFormProps) => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const isLoading = useAppSelector((state) => state.usuarios.loading);\r\n\r\n const customSubmitButton = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n const onSuccess = () => {\r\n onClose?.();\r\n\r\n dispatch(realizarLogout());\r\n };\r\n\r\n if (!isDesktop) {\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 }\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\nexport default DialogForm;\r\n","import i18n from 'src/resources/i18n';\r\n\r\ntype MenuLocale = {\r\n [key: string]: string;\r\n};\r\n\r\nexport const MenusLocales: MenuLocale = {\r\n Parametros: i18n.t('menus.titParametros'),\r\n Usuarios: i18n.t('menus.titUsuarios'),\r\n Grupos: i18n.t('menus.titGrupos'),\r\n Equipes: i18n.t('menus.titEquipes'),\r\n AnaliseAcessos: i18n.t('menus.titAnaliseAcessos'),\r\n MeusAcessos: i18n.t('menus.titMeusAcessos'),\r\n AnaliseUsoAplicacoes: i18n.t('menus.titAnaliseUsoAplicacoes'),\r\n};\r\n","import { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mainContainer: {\r\n /**\r\n * // TODO: melhorar cálculo de altura\r\n */\r\n [theme.breakpoints.up('md')]: {\r\n height: `calc(100vh - 64px)`,\r\n },\r\n transition: theme.transitions.create(['margin'], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: '0.25s',\r\n }),\r\n width: 'inherit',\r\n padding: theme.spacing(2),\r\n marginLeft: 0,\r\n },\r\n mainContainerShift: {\r\n transition: theme.transitions.create(['margin'], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: '0.25s',\r\n }),\r\n marginLeft: 240,\r\n },\r\n aboutDialogContainer: {\r\n height: 96,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","interface MenuIcon {\r\n [key: string]: string;\r\n}\r\n\r\nexport const MenuIcons: MenuIcon = {\r\n AnaliseAcessos: 'access_time_filled',\r\n AnaliseUsoAplicacoes: 'assessment',\r\n MeusAcessos: 'timeline',\r\n Grupos: 'people_alt',\r\n Parametros: 'build',\r\n Usuarios: 'person',\r\n Equipes: 'supervisor_account',\r\n\r\n Default: 'book',\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n\r\nimport lodash, { Dictionary, ListIteratee, Many, ValueIteratee } from 'lodash';\r\n\r\nexport function isNullOrUndefined(value: any): boolean {\r\n return value === null || value === undefined;\r\n}\r\n\r\nexport function isEmpty(value: any): boolean {\r\n return lodash.isEmpty(value);\r\n}\r\n\r\nexport function sortCollection(\r\n collection?: Array | null,\r\n sortFields?: Many>\r\n): Array {\r\n if (sortFields) {\r\n return lodash.sortBy(collection, sortFields);\r\n }\r\n\r\n return lodash.sortBy(collection);\r\n}\r\n\r\nexport function groupCollection(\r\n collection?: Array | null,\r\n groupField?: ValueIteratee\r\n): Dictionary> {\r\n if (groupField) {\r\n return lodash.groupBy(collection, groupField);\r\n }\r\n\r\n return lodash.groupBy(collection);\r\n}\r\n\r\nexport function isDataInCollection(value: T, collection: Array): boolean {\r\n if (!value || !collection) {\r\n return false;\r\n }\r\n\r\n return collection.findIndex((item) => item === value) !== -1;\r\n}\r\n","import React, { Fragment, useState, useEffect, useCallback } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nimport {\r\n Box,\r\n Grid,\r\n Toolbar,\r\n Typography,\r\n useTheme,\r\n useMediaQuery,\r\n} from '@material-ui/core';\r\n\r\nimport DmAppBar, { DmAppMenuItem } from 'src/common/Menu/DmAppBar';\r\nimport DmDrawer, {\r\n DmDrawerMenu,\r\n DmDrawerMenuItem,\r\n} from 'src/common/Menu/DmDrawer';\r\nimport DmScrollTop from 'src/common/Menu/DmScrollTop';\r\nimport DmDialog from 'src/common/Modal/DmDialog';\r\nimport DmIf from 'src/common/Operators/DmIf';\r\nimport Translator from 'src/common/Translator';\r\nimport logo from 'src/images/eworkoff.svg';\r\nimport Routes from 'src/main/Routes';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport { TiposFlags } from 'src/main/Types';\r\nimport { useOpenHandler } from 'src/pages//Hooks';\r\nimport EmpresaForm from 'src/pages/Cadastros/Empresas/Form/DialogForm';\r\nimport AlterarSenhaForm from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/DialogForm';\r\nimport { realizarLogout } from 'src/pages/Login/Thunks';\r\nimport { MenusLocales } from 'src/pages/MainPage/MainPage.locales';\r\nimport useStyles from 'src/pages/MainPage/Styles';\r\nimport { MenuMapProps } from 'src/pages/MainPage/Types';\r\nimport { InfoConstants } from 'src/resources/Constants/InfoConstants';\r\nimport i18n from 'src/resources/i18n';\r\nimport { MenuIcons } from 'src/resources/Icons';\r\nimport {\r\n groupCollection,\r\n sortCollection,\r\n} from 'src/resources/Utils/ObjectUtils';\r\n\r\nconst MainPage: React.FC = () => {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const user = useAppSelector((state) => state.sessao.data);\r\n\r\n const location = useLocation();\r\n const [menu, setMenu] = useState>([]);\r\n const [contextMenu, setContextMenu] = useState>([]);\r\n\r\n const [drawerOpen, handleDrawer] = useOpenHandler(false);\r\n const [infoDialogOpen, handleInfoDialog] = useOpenHandler(false);\r\n const [empresaDialogOpen, handleEmpresaDialog] = useOpenHandler(false);\r\n const [alterarSenhaDialogOpen, handleAlterarSenhaDialog] =\r\n useOpenHandler(false);\r\n\r\n useEffect(() => {\r\n const contextMenu = createContextMenu();\r\n setContextMenu(contextMenu);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (location.pathname === '/') {\r\n handleDrawer(true);\r\n }\r\n }, [location.pathname]);\r\n\r\n useEffect(() => {\r\n const menu = createMenu();\r\n setMenu(menu);\r\n }, [user?.lstObjetos]);\r\n\r\n const createMenu = () => {\r\n const menuList = new Array();\r\n\r\n const groups = groupCollection(user?.lstObjetos, MenuMapProps.GROUP_PROP);\r\n const keys = sortCollection(Object.keys(groups));\r\n\r\n keys.forEach((key) => {\r\n const menuListItems = new Array();\r\n const objects = sortCollection(groups[key], [MenuMapProps.SORT_PROP]);\r\n\r\n objects?.forEach((item) => {\r\n menuListItems.push({\r\n label: MenusLocales[item.nomPagina],\r\n url: `/${item.nomPagina}`,\r\n icon: MenuIcons[item.nomPagina] || MenuIcons['Default'],\r\n });\r\n });\r\n menuList.push({ menuItems: menuListItems });\r\n });\r\n\r\n return menuList;\r\n };\r\n\r\n const createContextMenu = () => {\r\n let contextMenu = new Array();\r\n\r\n contextMenu = contextMenu.concat([\r\n {\r\n label: i18n.t('mainPage.lblTrocarSenha'),\r\n onClick: handleAlterarSenhaDialog,\r\n },\r\n {\r\n label: i18n.t('common.lblSobre'),\r\n onClick: handleInfoDialog,\r\n },\r\n {\r\n label: i18n.t('common.lblSair'),\r\n onClick: logout,\r\n },\r\n ]);\r\n\r\n if (user?.flgAdministrador === TiposFlags.SIM) {\r\n contextMenu.splice(1, 0, {\r\n label: i18n.t('mainPage.lblEmpresa'),\r\n onClick: handleEmpresaDialog,\r\n });\r\n }\r\n\r\n return contextMenu;\r\n };\r\n\r\n const logout = () => {\r\n dispatch(realizarLogout());\r\n };\r\n\r\n const InfoDialog = useCallback(() => {\r\n return (\r\n \r\n \r\n \r\n \r\n {` ${InfoConstants.APP_VERSION}`}\r\n \r\n
\r\n \r\n \r\n {` ${user?.versaoApi ?? ''}`}\r\n \r\n
\r\n \r\n );\r\n }, [user?.versaoApi, infoDialogOpen]);\r\n\r\n const EmpresaDialog = useCallback(() => {\r\n return (\r\n \r\n \r\n \r\n );\r\n }, [user?.flgAdministrador, empresaDialogOpen]);\r\n\r\n const AlterarSenhaDialog = useCallback(() => {\r\n return (\r\n \r\n );\r\n }, [alterarSenhaDialogOpen]);\r\n\r\n const ScrollTop = useCallback(() => {\r\n return ;\r\n }, [drawerOpen, isDesktop]);\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};\r\n\r\nexport default MainPage;\r\n","import React from 'react';\r\nimport { HashRouter } from 'react-router-dom';\r\n\r\nimport MainPage from 'src/pages/MainPage';\r\n\r\nconst App: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import React from 'react';\r\n\r\nimport { Grid, Typography, Paper, Box, Avatar } from '@material-ui/core';\r\nimport BusinessIcon from '@material-ui/icons/Business';\r\n\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport Form from 'src/pages/Cadastros/Empresas/Form/Common';\r\nimport useStyles from 'src/pages/Cadastros/Empresas/Styles';\r\nimport { loginChange } from 'src/pages/Login/Actions';\r\nimport { EtapasPrimeiroAcesso, Login } from 'src/pages/Login/Types';\r\n\r\nconst PostLoginForm: React.FC = () => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const user = useAppSelector((state) => state.sessao.data);\r\n\r\n const onSuccess = () => {\r\n const newUser = { ...user } as Login;\r\n newUser.flgPrimeiroAcesso = EtapasPrimeiroAcesso.EMPRESA_CONFIGURADA;\r\n\r\n dispatch(loginChange(newUser));\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 \r\n );\r\n};\r\n\r\nexport default PostLoginForm;\r\n","import React from 'react';\r\n\r\nimport { Grid, Typography, Paper, Box, Avatar } from '@material-ui/core';\r\nimport BusinessIcon from '@material-ui/icons/Business';\r\n\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppDispatch, useAppSelector } from 'src/main/Store/Hooks';\r\nimport useStyles from 'src/pages/Cadastros/Empresas/Styles';\r\nimport Form from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/Common';\r\nimport { loginChange } from 'src/pages/Login/Actions';\r\nimport { EtapasPrimeiroAcesso, Login } from 'src/pages/Login/Types';\r\n\r\nconst PostLoginForm: React.FC = () => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const user = useAppSelector((state) => state.sessao.data);\r\n\r\n const onSuccess = () => {\r\n const newUser = { ...user } as Login;\r\n newUser.flgPrimeiroAcesso = EtapasPrimeiroAcesso.PERFIL_CONFIGURADO;\r\n\r\n dispatch(loginChange(newUser));\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 \r\n );\r\n};\r\n\r\nexport default PostLoginForm;\r\n","import React, { useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport {\r\n Box,\r\n Button,\r\n InputAdornment,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport EmailIcon from '@material-ui/icons/Email';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport * as yup from 'yup';\r\n\r\nimport DmProgressBar from 'src/common/Progress/DmProgressBar';\r\nimport Translator from 'src/common/Translator';\r\nimport { useAppSelector, useAppDispatch } from 'src/main/Store/Hooks';\r\nimport useStyles from 'src/pages/Login/Styles';\r\nimport { restaurarSenha } from 'src/pages/Login/Thunks';\r\nimport { RestaurarSenhaFormData } from 'src/pages/Login/Types';\r\nimport i18n from 'src/resources/i18n';\r\n\r\nexport interface RestaurarSenhaFormProps {\r\n onSuccess?: () => void;\r\n onError?: () => void;\r\n}\r\n\r\nconst RestaurarSenhaForm: React.FC = ({\r\n onSuccess,\r\n}: RestaurarSenhaFormProps) => {\r\n const classes = useStyles();\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const isLoading = useAppSelector((state) => state.sessao.loading);\r\n\r\n const validationSchema = useMemo(\r\n () =>\r\n yup.object().shape({\r\n usuario: yup.string().required(i18n.t('common.errCampoObrigatorio')),\r\n email: yup\r\n .string()\r\n .email(i18n.t('common.errEmailInvalido'))\r\n .required(i18n.t('common.errCampoObrigatorio')),\r\n }),\r\n []\r\n );\r\n\r\n const { register, handleSubmit, formState } = useForm(\r\n {\r\n mode: 'onChange',\r\n reValidateMode: 'onChange',\r\n\r\n resolver: yupResolver(validationSchema),\r\n }\r\n );\r\n\r\n const onSubmit = handleSubmit((formData: RestaurarSenhaFormData) => {\r\n dispatch(restaurarSenha(formData, onSuccess));\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 ),\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RestaurarSenhaForm;\r\n","import React from 'react';\r\n\r\nimport { Avatar, Box, Grid, Link, Paper, Typography } from '@material-ui/core';\r\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined';\r\n\r\nimport Translator from 'src/common/Translator';\r\nimport { useOpenHandler } from 'src/pages/Hooks';\r\nimport LoginForm from 'src/pages/Login/Form/Login';\r\nimport RestaurarSenhaForm from 'src/pages/Login/Form/RestaurarSenha';\r\nimport useStyles from 'src/pages/Login/Styles';\r\nimport { InfoConstants } from 'src/resources/Constants/InfoConstants';\r\n\r\nconst Login: React.FC = () => {\r\n const date = new Date();\r\n const classes = useStyles();\r\n\r\n const [isLogin, handleLogin] = useOpenHandler(true);\r\n\r\n const Form = () => {\r\n if (isLogin) {\r\n return ;\r\n }\r\n\r\n return ;\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 handleLogin()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {` ${InfoConstants.COMPANY_NAME}`}\r\n \r\n {` ${date.getFullYear()}`}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React from 'react';\r\n\r\nimport App from 'src/main/App';\r\nimport { useAppSelector } from 'src/main/Store/Hooks';\r\nimport { TiposFlags } from 'src/main/Types';\r\nimport EmpresaPostLoginForm from 'src/pages/Cadastros/Empresas/Form/PostLoginForm';\r\nimport AlterarSenhaPostLoginForm from 'src/pages/Cadastros/Usuarios/Form/AlterarSenha/PostLoginForm';\r\nimport Login from 'src/pages/Login';\r\nimport { EtapasPrimeiroAcesso } from 'src/pages/Login/Types';\r\nimport ApiService from 'src/services/ApiService';\r\n\r\nconst Authorization: React.FC = (props) => {\r\n const user = useAppSelector((state) => state.sessao.data);\r\n\r\n if (user) {\r\n ApiService.authorizeUser(user.accessToken);\r\n\r\n if (user.flgPrimeiroAcesso !== EtapasPrimeiroAcesso.PERFIL_CONFIGURADO) {\r\n if (\r\n user.flgAdministrador === TiposFlags.SIM &&\r\n user.flgPrimeiroAcesso !== EtapasPrimeiroAcesso.EMPRESA_CONFIGURADA\r\n ) {\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n return {props.children};\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nexport default Authorization;\r\n","import { BasicToastrOptions, toastr } from 'react-redux-toastr';\r\n\r\ninterface ToastrOptions extends BasicToastrOptions {\r\n removeOnHoverTimeOut?: number;\r\n}\r\n\r\nabstract class DmMessage {\r\n private static toastrOptions: ToastrOptions = {\r\n removeOnHoverTimeOut: 5000,\r\n };\r\n\r\n public static success(title: string, message: string): void {\r\n toastr.success(title, message, DmMessage.toastrOptions);\r\n }\r\n\r\n public static info(title: string, message: string): void {\r\n toastr.info(title, message, DmMessage.toastrOptions);\r\n }\r\n\r\n public static warning(title: string, message: string): void {\r\n toastr.warning(title, message, DmMessage.toastrOptions);\r\n }\r\n\r\n public static error(title: string, message: string): void {\r\n toastr.error(title, message, DmMessage.toastrOptions);\r\n }\r\n}\r\n\r\nexport default DmMessage;\r\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport DmMessage from 'src/common/Messages/DmMessage';\r\nimport i18n from 'src/resources/i18n';\r\nimport { isEmpty } from 'src/resources/Utils/StringUtils';\r\n\r\nclass DmTranslatedMessage {\r\n private static instance: DmTranslatedMessage;\r\n private defaultErrorTitle = i18n.t('messages.errorTitle');\r\n private defaultErrorMessage = i18n.t('messages.errorMessage');\r\n\r\n private constructor() {}\r\n\r\n public static getInstance(): DmTranslatedMessage {\r\n if (!DmTranslatedMessage.instance) {\r\n DmTranslatedMessage.instance = new DmTranslatedMessage();\r\n }\r\n\r\n return DmTranslatedMessage.instance;\r\n }\r\n\r\n public success(titlePath: string, message: string): void {\r\n DmMessage.success(i18n.t(titlePath), message);\r\n }\r\n\r\n public info(titlePath: string, message: string): void {\r\n DmMessage.info(i18n.t(titlePath), message);\r\n }\r\n\r\n public warning(titlePath: string, message: string): void {\r\n DmMessage.warning(i18n.t(titlePath), message);\r\n }\r\n\r\n public error(titlePath: string, message: string): void {\r\n DmMessage.error(i18n.t(titlePath), message);\r\n }\r\n\r\n public showHttpError(error: any, titlePath?: string): void {\r\n const title = titlePath ? i18n.t(titlePath) : this.defaultErrorTitle;\r\n const errorObject = error.response.data;\r\n\r\n let message = null;\r\n try {\r\n const errorMessage =\r\n typeof errorObject === 'string'\r\n ? errorObject ?? ''\r\n : errorObject.mensagemOperacao ?? '';\r\n\r\n message = isEmpty(errorMessage) ? this.defaultErrorMessage : errorMessage;\r\n } catch {\r\n message = this.defaultErrorMessage;\r\n }\r\n\r\n DmMessage.error(title, message);\r\n }\r\n}\r\n\r\nexport default DmTranslatedMessage;\r\n","import lodash from 'lodash';\r\n\r\nexport function toFirstLowerCase(text?: string): string {\r\n return lodash.lowerFirst(text);\r\n}\r\n\r\nexport function toFirstUpperCase(text?: string): string {\r\n return lodash.upperFirst(text);\r\n}\r\n\r\nexport function toLowerCase(text?: string): string {\r\n return lodash.toLower(text);\r\n}\r\n\r\nexport function toUpperCase(text?: string): string {\r\n return lodash.toUpper(text);\r\n}\r\n\r\nexport function isEmpty(text?: string): boolean {\r\n const trimmed = lodash.trim(text);\r\n\r\n return lodash.isEmpty(trimmed);\r\n}\r\n\r\nexport function isEquals(firstValue?: string, secondValue?: string): boolean {\r\n return lodash.isEqual(firstValue, secondValue);\r\n}\r\n","import { InfoPaginacao } from 'src/main/Types';\r\n\r\nabstract class Paginacao implements InfoPaginacao {\r\n public numRegInicial = 0;\r\n public numRegFinal = 0;\r\n public numPagina = 1;\r\n public totRegistros = 0;\r\n public itensPorPagina = 10;\r\n\r\n public static getValoresPadrao(): InfoPaginacao {\r\n return {\r\n numRegInicial: 0,\r\n numRegFinal: 0,\r\n numPagina: 1,\r\n totRegistros: 0,\r\n itensPorPagina: 10,\r\n };\r\n }\r\n}\r\n\r\nexport default Paginacao;\r\n","import { Reducer } from 'redux';\r\n\r\nimport Paginacao from 'src/main/Classes/Paginacao';\r\nimport { RespostaApi } from 'src/main/Types';\r\nimport {\r\n AnaliseAcessoAction,\r\n AnaliseAcessoCabecalho,\r\n AnaliseAcessoResumoDetalhe,\r\n AnaliseAcessoState,\r\n AnaliseAcessoTypes,\r\n} from 'src/pages/Analises/Acessos/Types';\r\n\r\nconst INITIAL_STATE: AnaliseAcessoState = {\r\n data: [],\r\n pagination: Paginacao.getValoresPadrao(),\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_REQUEST:\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n data: data?.dados || INITIAL_STATE.data,\r\n pagination: data?.paginacao || INITIAL_STATE.pagination,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_SUCCESS: {\r\n const data = action.payload as RespostaApi<\r\n Array\r\n >;\r\n\r\n if (!data.dados || data.dados.length === 0) {\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n const idAcesso = data.dados[0].idAcesso;\r\n const dados = state.data.map((item) => {\r\n if (item.idAcesso === idAcesso) {\r\n return {\r\n ...item,\r\n lstResumoDetalhes: [...data.dados],\r\n };\r\n }\r\n\r\n return item;\r\n });\r\n\r\n return {\r\n ...state,\r\n data: dados,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_CABECALHO_FAILURE:\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_GET_DETALHE_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case AnaliseAcessoTypes.ANALISE_ACESSO_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport { ResponseUsoApp } from 'src/main/Types';\r\nimport {\r\n AnaliseUsoAppAction,\r\n AnaliseUsoAppState,\r\n AnaliseUsoAppTypes,\r\n} from 'src/pages/Analises/UsoAplicacoes/Types';\r\n\r\nconst INITIAL_STATE: AnaliseUsoAppState = {\r\n data: { lstDetalhesUsuario: [], lstDetalhesEquipe: [] },\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_SUCCESS: {\r\n const data = action.payload as ResponseUsoApp;\r\n\r\n return {\r\n ...state,\r\n data: data || INITIAL_STATE.data,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case AnaliseUsoAppTypes.ANALISE_USO_APP_GET_COMPARATIVO_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case AnaliseUsoAppTypes.ANALISE_USO_APP_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport Paginacao from 'src/main/Classes/Paginacao';\r\nimport { RespostaApi } from 'src/main/Types';\r\nimport {\r\n Empresa,\r\n EmpresaAction,\r\n EmpresaFormData,\r\n EmpresaState,\r\n EmpresaTypes,\r\n} from 'src/pages/Cadastros/Empresas/Types';\r\n\r\nconst INITIAL_STATE: EmpresaState = {\r\n data: null,\r\n formData: {\r\n codEmpresa: '',\r\n desRazaoSocial: '',\r\n desNomeFantasia: '',\r\n codCnpj: '',\r\n desCei: '',\r\n codRep: 0,\r\n },\r\n pagination: Paginacao.getValoresPadrao(),\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case EmpresaTypes.EMPRESA_GET_REQUEST:\r\n case EmpresaTypes.EMPRESA_PUT_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case EmpresaTypes.EMPRESA_GET_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n data: data?.dados.pop() || INITIAL_STATE.data,\r\n pagination: data?.paginacao || INITIAL_STATE.pagination,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case EmpresaTypes.EMPRESA_PUT_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case EmpresaTypes.EMPRESA_GET_FAILURE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case EmpresaTypes.EMPRESA_PUT_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case EmpresaTypes.EMPRESA_SET_FORM_DATA: {\r\n const data = action.payload as EmpresaFormData;\r\n\r\n return { ...state, formData: data };\r\n }\r\n\r\n case EmpresaTypes.EMPRESA_RESET_FORM_DATA:\r\n return { ...state, formData: INITIAL_STATE.formData };\r\n\r\n case EmpresaTypes.EMPRESA_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n formData: INITIAL_STATE.formData,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport Paginacao from 'src/main/Classes/Paginacao';\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Equipe,\r\n EquipeAction,\r\n EquipeFormData,\r\n EquipeState,\r\n EquipeTypes,\r\n} from 'src/pages/Cadastros/Equipes/Types';\r\n\r\nconst INITIAL_STATE: EquipeState = {\r\n data: [],\r\n formData: {\r\n idEquipe: undefined,\r\n nomEquipe: '',\r\n desEquipe: '',\r\n flgAtivo: true,\r\n idsUsuarios: [],\r\n idsSupervisores: [],\r\n },\r\n filterList: [],\r\n pagination: Paginacao.getValoresPadrao(),\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case EquipeTypes.EQUIPE_GET_REQUEST:\r\n case EquipeTypes.EQUIPE_GET_FILTER_REQUEST:\r\n case EquipeTypes.EQUIPE_POST_REQUEST:\r\n case EquipeTypes.EQUIPE_PUT_REQUEST:\r\n case EquipeTypes.EQUIPE_DELETE_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case EquipeTypes.EQUIPE_GET_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n data: data?.dados || INITIAL_STATE.data,\r\n pagination: data?.paginacao || INITIAL_STATE.pagination,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case EquipeTypes.EQUIPE_GET_FILTER_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n filterList: data?.dados || INITIAL_STATE.filterList,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case EquipeTypes.EQUIPE_POST_SUCCESS:\r\n case EquipeTypes.EQUIPE_PUT_SUCCESS:\r\n case EquipeTypes.EQUIPE_DELETE_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case EquipeTypes.EQUIPE_GET_FAILURE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case EquipeTypes.EQUIPE_GET_FILTER_FAILURE:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case EquipeTypes.EQUIPE_POST_FAILURE:\r\n case EquipeTypes.EQUIPE_PUT_FAILURE:\r\n case EquipeTypes.EQUIPE_DELETE_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case EquipeTypes.EQUIPE_SET_FORM_DATA: {\r\n const data = action.payload as EquipeFormData;\r\n\r\n return { ...state, formData: data };\r\n }\r\n\r\n case EquipeTypes.EQUIPE_RESET_FORM_DATA:\r\n return { ...state, formData: INITIAL_STATE.formData };\r\n\r\n case EquipeTypes.EQUIPE_RESET_FILTER_LIST:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n case EquipeTypes.EQUIPE_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n formData: INITIAL_STATE.formData,\r\n filterList: INITIAL_STATE.filterList,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport Paginacao from 'src/main/Classes/Paginacao';\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Grupo,\r\n GrupoAction,\r\n GrupoFormData,\r\n GrupoState,\r\n GrupoTypes,\r\n} from 'src/pages/Cadastros/Grupos/Types';\r\n\r\nconst INITIAL_STATE: GrupoState = {\r\n data: [],\r\n formData: {\r\n idGrupo: undefined,\r\n nomGrupo: '',\r\n desGrupo: '',\r\n flgAtivo: true,\r\n idsUsuarios: [],\r\n idsSoftwares: [],\r\n },\r\n filterList: [],\r\n pagination: Paginacao.getValoresPadrao(),\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case GrupoTypes.GRUPO_GET_REQUEST:\r\n case GrupoTypes.GRUPO_GET_FILTER_REQUEST:\r\n case GrupoTypes.GRUPO_POST_REQUEST:\r\n case GrupoTypes.GRUPO_PUT_REQUEST:\r\n case GrupoTypes.GRUPO_DELETE_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case GrupoTypes.GRUPO_GET_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n data: data?.dados || INITIAL_STATE.data,\r\n pagination: data?.paginacao || INITIAL_STATE.pagination,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case GrupoTypes.GRUPO_GET_FILTER_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n filterList: data?.dados || INITIAL_STATE.filterList,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case GrupoTypes.GRUPO_POST_SUCCESS:\r\n case GrupoTypes.GRUPO_PUT_SUCCESS:\r\n case GrupoTypes.GRUPO_DELETE_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case GrupoTypes.GRUPO_GET_FAILURE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case GrupoTypes.GRUPO_GET_FILTER_FAILURE:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case GrupoTypes.GRUPO_POST_FAILURE:\r\n case GrupoTypes.GRUPO_PUT_FAILURE:\r\n case GrupoTypes.GRUPO_DELETE_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case GrupoTypes.GRUPO_SET_FORM_DATA: {\r\n const data = action.payload as GrupoFormData;\r\n\r\n return { ...state, formData: data };\r\n }\r\n\r\n case GrupoTypes.GRUPO_RESET_FORM_DATA:\r\n return { ...state, formData: INITIAL_STATE.formData };\r\n\r\n case GrupoTypes.GRUPO_RESET_FILTER_LIST:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n case GrupoTypes.GRUPO_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n formData: INITIAL_STATE.formData,\r\n filterList: INITIAL_STATE.filterList,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n SoftwareTypes,\r\n SoftwareState,\r\n SoftwareAction,\r\n} from 'src/pages/Cadastros/Softwares/Types';\r\n\r\nconst INITIAL_STATE: SoftwareState = {\r\n filterList: [],\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case SoftwareTypes.SOFTWARE_GET_FILTER_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case SoftwareTypes.SOFTWARE_GET_FILTER_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n filterList: data?.dados || INITIAL_STATE.filterList,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case SoftwareTypes.SOFTWARE_GET_FILTER_FAILURE:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case SoftwareTypes.SOFTWARE_RESET_FILTER_LIST:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { Reducer } from 'redux';\r\n\r\nimport Paginacao from 'src/main/Classes/Paginacao';\r\nimport { RespostaApi, TipoFiltro } from 'src/main/Types';\r\nimport {\r\n Usuario,\r\n UsuarioAction,\r\n UsuarioFormData,\r\n UsuarioState,\r\n UsuarioTypes,\r\n} from 'src/pages/Cadastros/Usuarios/Types';\r\n\r\nconst INITIAL_STATE: UsuarioState = {\r\n data: [],\r\n formData: {\r\n idUsuario: undefined,\r\n codMatricula: '',\r\n nomUsuario: '',\r\n nomLogin: '',\r\n desSenha: '',\r\n desEmail: '',\r\n horCargaInicio: null,\r\n horCargaFinal: null,\r\n qtdHorasDia: '',\r\n qtdHorasMes: '',\r\n horInicioAlmoco: null,\r\n horFimAlmoco: null,\r\n diasSemana: {\r\n sunday: false,\r\n monday: false,\r\n tuesday: false,\r\n wednesday: false,\r\n thursday: false,\r\n friday: false,\r\n saturday: false,\r\n },\r\n flgRestricaoNoturno: false,\r\n flgTipo: '',\r\n flgAtivo: true,\r\n idsGrupos: [],\r\n idsSoftwares: [],\r\n },\r\n filterList: [],\r\n pagination: Paginacao.getValoresPadrao(),\r\n loading: false,\r\n success: false,\r\n failure: false,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = INITIAL_STATE,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case UsuarioTypes.USUARIO_GET_REQUEST:\r\n case UsuarioTypes.USUARIO_GET_FILTER_REQUEST:\r\n case UsuarioTypes.USUARIO_POST_REQUEST:\r\n case UsuarioTypes.USUARIO_POST_SENHA_REQUEST:\r\n case UsuarioTypes.USUARIO_PUT_REQUEST:\r\n case UsuarioTypes.USUARIO_DELETE_REQUEST:\r\n return { ...state, loading: true, success: false, failure: false };\r\n\r\n case UsuarioTypes.USUARIO_GET_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n data: data?.dados || INITIAL_STATE.data,\r\n pagination: data?.paginacao || INITIAL_STATE.pagination,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case UsuarioTypes.USUARIO_GET_FILTER_SUCCESS: {\r\n const data = action.payload as RespostaApi>;\r\n\r\n return {\r\n ...state,\r\n filterList: data?.dados || INITIAL_STATE.filterList,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n }\r\n\r\n case UsuarioTypes.USUARIO_POST_SUCCESS:\r\n case UsuarioTypes.USUARIO_POST_SENHA_SUCCESS:\r\n case UsuarioTypes.USUARIO_PUT_SUCCESS:\r\n case UsuarioTypes.USUARIO_DELETE_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true,\r\n failure: false,\r\n };\r\n\r\n case UsuarioTypes.USUARIO_GET_FAILURE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case UsuarioTypes.USUARIO_GET_FILTER_FAILURE:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case UsuarioTypes.USUARIO_POST_FAILURE:\r\n case UsuarioTypes.USUARIO_POST_SENHA_FAILURE:\r\n case UsuarioTypes.USUARIO_PUT_FAILURE:\r\n case UsuarioTypes.USUARIO_DELETE_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: false,\r\n failure: true,\r\n };\r\n\r\n case UsuarioTypes.USUARIO_SET_FORM_DATA: {\r\n const data = action.payload as UsuarioFormData;\r\n\r\n return { ...state, formData: data };\r\n }\r\n\r\n case UsuarioTypes.USUARIO_RESET_FORM_DATA:\r\n return { ...state, formData: INITIAL_STATE.formData };\r\n\r\n case UsuarioTypes.USUARIO_RESET_FILTER_LIST:\r\n return {\r\n ...state,\r\n filterList: INITIAL_STATE.filterList,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n case UsuarioTypes.USUARIO_RESET_MODULE:\r\n return {\r\n ...state,\r\n data: INITIAL_STATE.data,\r\n formData: INITIAL_STATE.formData,\r\n filterList: INITIAL_STATE.filterList,\r\n pagination: INITIAL_STATE.pagination,\r\n loading: INITIAL_STATE.loading,\r\n success: INITIAL_STATE.success,\r\n failure: INITIAL_STATE.failure,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { reducer as ToastrReducer } from 'react-redux-toastr';\r\n\r\nimport { combineReducers } from 'redux';\r\n\r\nimport AnaliseAcessoReducer from 'src/pages/Analises/Acessos/Reducer';\r\nimport AnaliseUsoAppReducer from 'src/pages/Analises/UsoAplicacoes/Reducer';\r\nimport EmpresasReducer from 'src/pages/Cadastros/Empresas/Reducer';\r\nimport EquipesReducer from 'src/pages/Cadastros/Equipes/Reducer';\r\nimport GruposReducer from 'src/pages/Cadastros/Grupos/Reducer';\r\nimport SoftwaresReducer from 'src/pages/Cadastros/Softwares/Reducer';\r\nimport UsuariosReducer from 'src/pages/Cadastros/Usuarios/Reducer';\r\nimport LoginReducer from 'src/pages/Login/Reducer';\r\n\r\nconst reducers = combineReducers({\r\n toastr: ToastrReducer,\r\n\r\n sessao: LoginReducer,\r\n empresas: EmpresasReducer,\r\n\r\n usuarios: UsuariosReducer,\r\n grupos: GruposReducer,\r\n equipes: EquipesReducer,\r\n softwares: SoftwaresReducer,\r\n\r\n analiseUsoApp: AnaliseUsoAppReducer,\r\n analiseAcessos: AnaliseAcessoReducer,\r\n});\r\n\r\nexport default reducers;\r\n","import { AnyAction, applyMiddleware, createStore, Store } from 'redux';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport promise from 'redux-promise';\r\nimport thunk, { ThunkDispatch } from 'redux-thunk';\r\n\r\nimport DmTranslatedMessage from 'src/common/Messages/DmTranslatedMessage';\r\nimport reducers from 'src/main/Reducers';\r\nimport { State, ThunkExtraArguments } from 'src/main/Store/Types';\r\nimport ApiService from 'src/services/ApiService';\r\n\r\n// Somente para publicações em testes e desenvolvimento.\r\nconst AppStore: Store = createStore(\r\n reducers,\r\n composeWithDevTools(\r\n applyMiddleware(\r\n promise,\r\n thunk.withExtraArgument({\r\n apiService: ApiService.getInstance(),\r\n dmTranslatedMessage: DmTranslatedMessage.getInstance(),\r\n })\r\n )\r\n )\r\n);\r\n\r\n// Substituir para publicações em produção.\r\n// const AppStore: Store = createStore(\r\n// reducers,\r\n// applyMiddleware(\r\n// promise,\r\n// thunk.withExtraArgument({\r\n// apiService: ApiService.getInstance(),\r\n// dmTranslatedMessage: DmTranslatedMessage.getInstance(),\r\n// })\r\n// )\r\n// );\r\n\r\nexport type AppState = ReturnType;\r\n\r\nexport type AppDispatch = ThunkDispatch<\r\n AppState,\r\n ThunkExtraArguments,\r\n AnyAction\r\n>;\r\n\r\nexport default AppStore;\r\n","// Suporte para o Internet Explorer 9-11.\r\nimport 'react-app-polyfill/ie9';\r\nimport 'react-app-polyfill/stable';\r\n\r\n// Internacionalização.\r\nimport 'src/resources/i18n';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport { CssBaseline, ThemeProvider } from '@material-ui/core';\r\n\r\nimport DmToastrMessage from 'src/common/Messages/DmToastrMessage';\r\nimport Theme from 'src/common/Theme';\r\nimport Authorization from 'src/main/Authorization';\r\nimport AppStore from 'src/main/Store';\r\nimport { ValidateIE } from 'src/resources/Utils/BrowserValidator';\r\n\r\nif (ValidateIE()) {\r\n global.window.document.location.replace('browser_error.html');\r\n} else {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n global.window.document.getElementById('root')\r\n );\r\n}\r\n","import { createStyles, makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n root: {\r\n height: 4,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\n\r\nimport { Box, LinearProgress } from '@material-ui/core';\r\n\r\nimport DmIf from 'src/common/Operators/DmIf';\r\nimport useStyles from 'src/common/Progress/DmProgressBar/Styles';\r\n\r\nexport interface DmProgressBarProps {\r\n loading?: boolean;\r\n}\r\n\r\nconst DmProgressBar: React.FC = ({\r\n loading,\r\n}: DmProgressBarProps) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DmProgressBar;\r\n","import { Action } from 'redux';\r\n\r\nimport { InfoPaginacao, RespostaApi } from 'src/main/Types';\r\n\r\nexport enum AnaliseAcessoTypes {\r\n ANALISE_ACESSO_GET_CABECALHO_REQUEST = '@analiseAcessos/ANALISE_ACESSO_GET_CABECALHO_REQUEST',\r\n ANALISE_ACESSO_GET_CABECALHO_SUCCESS = '@analiseAcessos/ANALISE_ACESSO_GET_CABECALHO_SUCCESS',\r\n ANALISE_ACESSO_GET_CABECALHO_FAILURE = '@analiseAcessos/ANALISE_ACESSO_GET_CABECALHO_FAILURE',\r\n\r\n ANALISE_ACESSO_GET_DETALHE_REQUEST = '@analiseAcessos/ANALISE_ACESSO_GET_DETALHE_REQUEST',\r\n ANALISE_ACESSO_GET_DETALHE_SUCCESS = '@analiseAcessos/ANALISE_ACESSO_GET_DETALHE_SUCCESS',\r\n ANALISE_ACESSO_GET_DETALHE_FAILURE = '@analiseAcessos/ANALISE_ACESSO_GET_DETALHE_FAILURE',\r\n\r\n ANALISE_ACESSO_GET_AFD_REQUEST = '@analiseAcessos/ANALISE_ACESSO_GET_AFD_REQUEST',\r\n ANALISE_ACESSO_GET_AFD_SUCCESS = '@analiseAcessos/ANALISE_ACESSO_GET_AFD_SUCCESS',\r\n ANALISE_ACESSO_GET_AFD_FAILURE = '@analiseAcessos/ANALISE_ACESSO_GET_AFD_FAILURE',\r\n\r\n ANALISE_ACESSO_RESET_MODULE = '@analiseAcessos/ANALISE_ACESSO_RESET_MODULE',\r\n\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_REQUEST = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_REQUEST',\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_SUCCESS = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_SUCCESS',\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_FAILURE = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_DETALHES_NAVEGAO_FAILURE',\r\n\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_REQUEST = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_REQUEST',\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_SUCCESS = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_SUCCESS',\r\n ANALISE_ACESSO_GET_EXPORTAR_CSV_FAILURE = '@analiseAcessos/ANALISE_ACESSO_GET_EXPORTAR_CSV_FAILURE',\r\n}\r\n\r\nexport interface AnaliseAcessoCabecalho {\r\n idAcesso?: number;\r\n nomUsuario: string;\r\n dtaHorInicio: string;\r\n dtaHorFim: string;\r\n dtaHorFimAti: string;\r\n tempoTotalSegundos?: number;\r\n tempoRegistradoSegundos?: number;\r\n tempoAtivoSegundos?: number;\r\n tempoInativoSegundos?: number;\r\n ultimoTempoInativoSegundos?: number;\r\n tempoAtivoAutorizado?: number;\r\n tempoAtivoNaoAutorizado?: number;\r\n flgAlertaInatividade: string;\r\n flgSituacao: string;\r\n lstResumoDetalhes?: Array | null;\r\n}\r\n\r\nexport interface AnaliseAcessoDetalhe {\r\n desFornecedor: string;\r\n desProcesso: string;\r\n desSoftware: string;\r\n tempoUsoSegundos?: number;\r\n porcentagemUso?: number;\r\n flgAutorizado: string;\r\n}\r\n\r\nexport interface AnaliseAcessoResumoDetalhe {\r\n idAcesso: number;\r\n tempoAutorizado: number;\r\n tempoNaoAutorizado: number;\r\n porcentagemAutorizado: number;\r\n porcentagemNaoAutorizado: number;\r\n lstDetalhes: Array | null;\r\n}\r\n\r\nexport interface AnaliseAcessoState {\r\n readonly data: Array;\r\n readonly pagination: InfoPaginacao;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface AnaliseAcessoAction extends Action {\r\n type: AnaliseAcessoTypes;\r\n payload?:\r\n | RespostaApi>\r\n | RespostaApi>;\r\n}\r\n","import React, { Fragment, ReactNode } from 'react';\r\n\r\ninterface DmIfProps {\r\n children: ReactNode;\r\n test?: boolean;\r\n}\r\n\r\nconst DmIf: React.FC = ({ test, children }: DmIfProps) => {\r\n if (test) {\r\n return {children};\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nexport default DmIf;\r\n","import { Action } from 'redux';\r\n\r\nimport { InfoPaginacao, RespostaApi } from 'src/main/Types';\r\n\r\nexport enum EmpresaTypes {\r\n EMPRESA_GET_REQUEST = '@empresas/EMPRESA_GET_REQUEST',\r\n EMPRESA_GET_SUCCESS = '@empresas/EMPRESA_GET_SUCCESS',\r\n EMPRESA_GET_FAILURE = '@empresas/EMPRESA_GET_FAILURE',\r\n\r\n EMPRESA_PUT_REQUEST = '@empresas/EMPRESA_PUT_REQUEST',\r\n EMPRESA_PUT_SUCCESS = '@empresas/EMPRESA_PUT_SUCCESS',\r\n EMPRESA_PUT_FAILURE = '@empresas/EMPRESA_PUT_FAILURE',\r\n\r\n EMPRESA_SET_FORM_DATA = '@empresas/EMPRESA_SET_FORM_DATA',\r\n EMPRESA_RESET_FORM_DATA = '@empresas/EMPRESA_RESET_FORM_DATA',\r\n\r\n EMPRESA_RESET_MODULE = '@empresas/EMPRESA_RESET_MODULE',\r\n}\r\n\r\nexport interface Empresa {\r\n codEmpresa: string;\r\n desRazaoSocial: string;\r\n desNomeFantasia: string;\r\n codCnpj: string;\r\n desCei: string;\r\n codRep: number;\r\n}\r\n\r\nexport interface EmpresaFormData {\r\n codEmpresa: string;\r\n desRazaoSocial: string;\r\n desNomeFantasia: string;\r\n codCnpj: string;\r\n desCei: string;\r\n codRep: number;\r\n}\r\n\r\nexport interface EmpresaState {\r\n readonly data: Empresa | null;\r\n readonly formData: Partial;\r\n readonly pagination: InfoPaginacao;\r\n readonly loading: boolean;\r\n readonly success: boolean;\r\n readonly failure: boolean;\r\n}\r\n\r\nexport interface EmpresaAction extends Action {\r\n type: EmpresaTypes;\r\n payload?: RespostaApi> | Partial;\r\n}\r\n"],"sourceRoot":""}