{"version":3,"sources":["containers/App/PrivateRoute.jsx","containers/Layout/topbar/Topbar.jsx","redux/actions/sidebarActions.js","shared/prop-types/ReducerProps.js","containers/Layout/topbar/TopbarMobile.jsx","containers/Layout/index.jsx","containers/Home/components/ItemCertificado.jsx","containers/Home/components/ListaCertificados.jsx","utils/helpers.js","utils/api/base/axios.js","utils/api/base/get.js","utils/api/base/post.js","utils/api/certificadosApi.js","redux/actions/certificadosActions.js","utils/api/inscricoesApi.js","utils/api/base/put.js","redux/actions/inscricoesActions.js","utils/api/alunosApi.js","redux/actions/alunosActions.js","containers/Home/components/ListaInscritos.jsx","containers/Home/index.jsx","containers/App/MainWrapper.jsx","shared/components/form/CheckBox.jsx","containers/LogIn/components/LogInForm.jsx","containers/LogIn/index.jsx","containers/LogInAluno/index.jsx","containers/Comuns/DetalheCertificado/index.jsx","containers/Inscricao/components/CartaoCredito/validate.js","containers/Inscricao/components/CartaoCredito/CartaoCreditoForm.jsx","containers/Inscricao/components/BoletoBancario/validate.js","containers/Inscricao/components/BoletoBancario/BoletoBancarioForm.jsx","shared/components/form/RadioButton.jsx","shared/components/Alert.jsx","containers/Inscricao/components/Cupom/validate.js","utils/api/cuponsApi.js","redux/actions/cuponsActions.js","containers/Inscricao/components/Cupom/CupomForm.jsx","containers/Inscricao/components/PagamentoInscricao.jsx","containers/Inscricao/index.jsx","shared/components/table/components/ReactTableHeader.jsx","shared/components/table/components/ReactTableBody.jsx","shared/components/table/components/ReactTableFooter.jsx","shared/components/table/components/ReactTableFilter.jsx","shared/components/table/components/ReactTablePagination.jsx","shared/components/table/components/ReactTableConstructor.jsx","shared/components/table/components/ReactTableCell.jsx","shared/components/table/components/ReactTableEditableCell.jsx","shared/components/table/ReactTableBase.jsx","utils/api/pagamentosApi.js","redux/actions/pagamentosActions.js","containers/Pagamentos/components/ListaPagamentos.jsx","containers/Pagamentos/index.jsx","containers/Quiz/components/ResultadoFinal.jsx","containers/Quiz/components/QuizStart.jsx","containers/Quiz/index.jsx","containers/SituacaoInscricao/components/DetalheInscricao.jsx","containers/SituacaoInscricao/index.jsx","containers/Comuns/DetalheInscricao/index.jsx","containers/Certificado/Components/Certificado.jsx","containers/Certificado/index.jsx","containers/SituacaoPagamento/components/DetalhePagamento.jsx","containers/SituacaoPagamento/index.jsx","containers/Layout/footer/Footer.jsx","containers/App/Router.jsx","redux/actions/themeActions.js","redux/reducers/themeReducer.js","redux/reducers/sidebarReducer.js","redux/actions/rtlActions.js","redux/reducers/rtlReducer.js","redux/reducers/alunosReducer.js","redux/reducers/certificadosReducer.js","redux/reducers/cuponsReducer.js","redux/reducers/inscricoesReducer.js","redux/reducers/pagamentosReducer.js","containers/App/store.js","containers/App/ScrollToTop.jsx","containers/App/App.jsx","serviceWorker.js","index.js"],"names":["PrivateRoute","_ref","component","Component","roles","rest","_jsx","Route","render","props","localStorage","getItem","window","location","href","Topbar","changeMobileSidebarVisibility","changeSidebarVisibility","useEffect","document","querySelector","classList","remove","_jsxs","className","children","Link","to","onClick","add","HamburgerMenuIcon","size","createAction","string","shape","PropTypes","show","bool","collapse","direction","TopbarMobile","id","CloseCircleOutlineIcon","withRouter","connect","state","sidebar","dispatch","layoutClass","classNames","layout","mobileSidebarVisibility","sidebarVisibility","ItemCertificado","titulo","descricao","status","inscricaoId","Col","sm","PlaylistCheckIcon","pathname","FormatListChecksIcon","CertificateIcon","CloseOctagonOutlineIcon","defaultProps","ListaCertificados","lista","md","lg","xl","Card","CardBody","map","item","_id","length","API","process","getToken","user","JSON","parse","token","getUserId","aluno","defaultParams","headers","Authorization","axios","url","params","get","e","response","data","setItem","search","err","body","post","getCertificadosDisponiveis","fetchCertificadoRequest","fetchCertificadoSuccess","fetchCertificadoError","fetchCertificadosDisponiveisRequest","fetchCertificadosDisponiveisSuccess","fetchCertificadosDisponiveisError","fetchCertificado","async","certificadosApi","console","log","getInscricoesEmAndamento","getInscricoesConcluidas","novaInscricaoCartaoCredito","certificadoId","form","novaInscricaoBoletoBancario","novaInscricaoCupom","sendTestResult","result","put","fetchInscricaoRequest","fetchInscricaoSuccess","fetchInscricaoError","fetchInscricoesEmAndamentoRequest","fetchInscricoesEmAndamentoSuccess","fetchInscricoesEmAndamentoError","fetchInscricoesConcluidasRequest","fetchInscricoesConcluidasSuccess","fetchInscricoesConcluidasError","novaInscricaoCartaoCreditoRequest","novaInscricaoCartaoCreditoSuccess","novaInscricaoCartaoCreditoError","novaInscricaoBoletoBancarioRequest","novaInscricaoBoletoBancarioSuccess","novaInscricaoBoletoBancarioError","novaInscricaoCupomRequest","novaInscricaoCupomSuccess","novaInscricaoCupomError","testeEnviadoSuccess","testeEnviadoError","fetchPdfCertificadoRequest","fetchPdfCertificadoSuccess","fetchPdfCertificadoError","fetchInscricao","inscricoesApi","loginAluno","emailAluno","idUscreen","loginAlunoRequest","loginAlunoSuccess","loginAlunoError","setAlunoData","ListaInscritos","certificado","rtl","Home","useDispatch","certificadosDisponiveis","useSelector","certificados","inscricoesEmAndamento","inscricoes","inscricoesConcluidas","alunos","auth","Container","Row","name","theme","dir","CheckBoxField","disabled","value","onChange","label","color","CheckboxClass","htmlFor","type","changeHandler","checked","style","background","borderColor","CheckIcon","CloseIcon","renderCheckBoxField","_ref2","input","defaultChecked","other","reduxForm","handleSubmit","isPasswordShown","setIsPasswordShown","useState","onSubmit","AccountOutlineIcon","Field","placeholder","KeyVariantIcon","EyeIcon","LogIn","LogInForm","FacebookIcon","GooglePlusIcon","LogInAluno","error","isFetching","match","alunosApi","stringify","Spinner","Redirect","DetalheCertificado","_certificado$professo","tempo_prova","carga_horaria","nota_aprovacao","professor","validate","values","errors","CardNumber","ExpirationDate","Holder","SecurityCode","renderField","mask","meta","touched","MaskedInput","renderFieldText","_ref3","CreditCardIcon","valor","ButtonToolbar","Button","cpf","cep","uf","cidade","bairro","endereco","RadioButtonField","radioValue","RadioButtonClass","handleChange","renderRadioButtonField","AlertComponent","icon","visible","setVisible","onDismiss","Icon","InformationOutlineIcon","ThumbUpOutlineIcon","CommentAlertOutlineIcon","Alert","isOpen","codigo","validarCupomRequest","validarCupomSuccess","validarCupomError","cupom","cupons","setCodigo","setValor","valorDesconto","setValorDesconto","validarCupomHandle","cuponsApi","validarCupom","desconto","tipo_desconto","valor_desconto","target","isRedirect","setIsRedirect","formaPagamento","setformaPagamento","isProcessing","inscricao","event","_inscricao$pagamento","src","alt","display","CartaoCreditoForm","pagamento","forma_pagamento","dataArray","split","dataCompleta","creditcard","replaceAll","Brand","BoletoBancarioForm","boletobancario","CupomForm","Inscricao","span","order","xs","PagamentoInscricao","Header","column","isSortable","canSort","Sorting","undefined","isSortedDesc","SortIcon","SortDescendingIcon","SortAscendingIcon","ReactTableHeader","headerGroups","isResizable","headerPropsSortable","_ref4","getSortByToggleProps","headerPropsResize","_ref5","getResizerProps","justifyContent","arguments","alignItems","getStylesResizable","align","headerGroup","getHeaderGroupProps","getHeaderProps","isResizing","ReactTableDefaultBody","page","getTableBodyProps","prepareRow","row","getRowProps","cells","cell","getCellProps","withDragAndDrop","updateDraggableData","Fragment","ReactTableFooter","footerGroups","group","getFooterGroupProps","getFooterProps","ReactTableFilter","rows","setGlobalFilter","setFilterValue","globalFilter","dataLength","setValue","useAsyncDebounce","Input","ReactTablePagination","gotoPage","canPreviousPage","pageOptions","pageSize","pageIndex","previousPage","nextPage","canNextPage","setPageSize","manualPageSize","arrayPageIndex","slice","Pagination","PaginationLink","ChevronDoubleLeftIcon","ChevronLeftIcon","i","PaginationItem","active","ChevronRightIcon","ChevronDoubleRightIcon","FormGroup","Number","ReactTableConstructor","tableConfig","tableOptions","tableOptionalHook","isEditable","withPagination","withSearchEngine","getTableProps","pageCount","updateEditableData","useTable","useGlobalFilter","useSortBy","usePagination","useResizeColumns","useRowSelect","BodyReactTable","columns","defaultColumn","disableSortBy","manualSortBy","manualGlobalFilter","manualPagination","ReactTableCell","initialValue","disableGlobalFilter","Highlighter","searchWords","autoEscape","textToHighlight","EditableCell","index","isActiveInput","setIsActiveInput","updateData","onDoubleClick","handleClick","onBlur","onKeyPress","key","ReactTableBase","filterValue","autoResetPage","initialState","useFlexLayout","Cell","ReactTableCellEditable","accessor","first","last","getPagamentosAluno","fetchPagamentoRequest","fetchPagamentoSuccess","fetchPagamentoError","fetchPagamentosAlunoRequest","fetchPagamentosAlunoSuccess","fetchPagamentosAlunoError","imagensPagamento","cartaocredito","pix","ListaPagamentos","pagamentos","colunas","useMemo","width","pagamentosApi","moment","locale","_pagamento$certificad","createdAt","format","certificadoTitulo","Badge","acao","dadosTabela","TimerSandEmptyIcon","Pagamentos","ResultadoFinal","inscricaoAtual","tentativas","aprovado","_Fragment","nota","init","QuizStart","step","setStep","questoes","setQuestoes","finalizado","setFinalizado","setAprovado","seconds","minutes","pause","restart","useTimer","onExpire","finalizar","randomicoTeste","teste","questions","sort","Math","random","a","b","indice","respostas","setShowResult","acertos","questoesIds","questao","questaoId","respostaId","push","indiceAprovacao","tentativa","Date","percentual","toLocaleString","maximumFractionDigits","enviarResultadoTeste","tempo","time","setSeconds","getSeconds","hidden","fontSize","String","ButtonGroup","CommentQuestionOutlineIcon","numero","questoesAtuais","definirResposta","outline","Quiz","permitir","setPermitir","showResult","useLocation","DetalheInscricao","_inscricao$aluno","_inscricao$aluno2","_inscricao$certificad","_inscricao$certificad2","_inscricao$certificad3","_inscricao$certificad4","_inscricao$pagamento2","email","Table","responsive","SituacaoInscricao","pdfjs","GlobalWorkerOptions","workerSrc","version","CertificadoGerado","pdfCertificado","Document","file","pdf","Page","pageNumber","download","DownloadIcon","ArrowLeftIcon","Certificado","DetalhePagamento","fetchPagamento","CheckCircleOutlineIcon","pdfBoleto","CancelIcon","CloseCircleIcon","SituacaoPagamento","SituacaoPagamentoInscricao","Footer","rel","wrappedRoutes","Layout","exact","path","Viewer","Router","MainWrapper","Switch","changeThemeToDark","changeThemeToLight","handleActions","changeDirectionToLTR","changeDirectionToRTL","payload","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","reducer","combineReducers","reduxFormReducer","themeReducer","sidebarReducer","rtlReducer","alunosReducer","certificadosReducer","cuponsReducer","inscricoesReducer","pagamentosReducer","store","createStore","applyMiddleware","thunk","ScrollToTop","scrollTo","propTypes","isRequired","element","App","isLoading","setIsLoading","isLoaded","setIsLoaded","addEventListener","setTimeout","Provider","BrowserRouter","fill","d","Boolean","hostname","ReactDOM","React","StrictMode","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.0a8486d3.chunk.js","sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { Route } from 'react-router-dom';\n\nfunction PrivateRoute({ component: Component, roles, ...rest }) {\n return (\n <Route\n {...rest}\n render={(props) => {\n if (!localStorage.getItem('certificadoNerdflixUser')) {\n // not logged in so redirect to login page with the return url\n return render((window.location.href = 'https://nerdflix.io/'));\n }\n\n // logged in so return component\n return <Component {...props} />;\n }}\n />\n );\n}\n\nexport { PrivateRoute };\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport HamburgerMenuIcon from 'mdi-react/HamburgerMenuIcon';\n\nconst Topbar = ({ changeMobileSidebarVisibility, changeSidebarVisibility }) => {\n useEffect(() => {\n const offcanvasMobileMenu = document.querySelector('#mobile-menu');\n offcanvasMobileMenu.classList.remove('active');\n }, []);\n const triggerMobileMenu = () => {\n const offcanvasMobileMenu = document.querySelector('#mobile-menu');\n offcanvasMobileMenu.classList.add('active');\n };\n\n return (\n <div className=\"topbar\">\n <div className=\"topbar__wrapper\">\n <div className=\"topbar__left ml-3\">\n <a className=\"topbar__logo\" href=\"https://nerdflix.io/\" />\n </div>\n <nav className=\"topbar__nav\">\n <a className=\"topbar__nav-link\" href=\"https://nerdflix.io/catalog\">\n Aulas\n </a>\n <a className=\"topbar__nav-link\" href=\"https://nerdflix.io/plan\">\n Assinar\n </a>\n <a\n className=\"topbar__nav-link\"\n href=\"https://nerdflix.io/pages/artigos-cientificos\"\n >\n Artigos CientÃficos\n </a>\n <a\n className=\"topbar__nav-link\"\n href=\"https://www.certificadosnerdflix.com.br/home\"\n >\n Certificados\n </a>\n <a\n className=\"topbar__nav-link\"\n href=\"https://nerdflix.io/pages/central-de-ajuda\"\n >\n Central de Ajuda\n </a>\n <a\n className=\"topbar__nav-link\"\n href=\"https://nerdflix.io/account/profile\"\n >\n Painel\n </a>\n <a className=\"topbar__nav-link\" href=\"https://nerdflix.io/signout\">\n Sair\n </a>\n </nav>\n </div>\n <div className=\"mobile_topbar_icon d-block d-lg-none\">\n <Link\n className=\"icon-mobile\"\n to={`#`}\n onClick={() => triggerMobileMenu()}\n >\n <HamburgerMenuIcon className=\"ml-2\" size=\"40px\" />\n </Link>\n </div>\n </div>\n );\n};\n\nTopbar.propTypes = {\n changeMobileSidebarVisibility: PropTypes.func.isRequired,\n changeSidebarVisibility: PropTypes.func.isRequired,\n};\n\nexport default Topbar;\n","import { createAction } from 'redux-actions';\n\nexport const changeSidebarVisibility = createAction('CHANGE_SIDEBAR_VISIBILITY');\nexport const changeMobileSidebarVisibility = createAction('CHANGE_MOBILE_SIDEBAR_VISIBILITY');\n","import PropTypes from 'prop-types';\n\nconst {\n string, shape,\n} = PropTypes;\n\nexport const SidebarProps = shape({\n show: PropTypes.bool,\n collapse: PropTypes.bool,\n});\n\nexport const ThemeProps = shape({\n className: string,\n});\n\nexport const RTLProps = shape({\n direction: string,\n});\n","import React from 'react';\nimport CloseCircleOutlineIcon from 'mdi-react/CloseCircleOutlineIcon';\n\nconst TopbarMobile = () => {\n const closeMenu = () => {\n const offcanvasMobileMenu = document.querySelector('#mobile-menu');\n offcanvasMobileMenu.classList.remove('active');\n };\n return (\n <div className=\"mobile-menu d-block d-lg-none\" id=\"mobile-menu\">\n <div className=\"offcanvas-wrapper\">\n <div className=\"offcanvas-inner-content\">\n <nav>\n <a\n className=\"topbar_mobile__nav-link center\"\n onClick={() => closeMenu()}\n href=\"#close\"\n >\n <CloseCircleOutlineIcon className=\"ml-2\" size=\"38px\" />\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/catalog\"\n >\n Aulas\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/orders/customer_info?o=25867\"\n >\n Assinar\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/pages/artigos-cientificos\"\n >\n Artigos CientÃficos\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://www.certificadosnerdflix.com.br/home\"\n >\n Certificados\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/pages/central-de-ajuda\"\n >\n Central de Ajuda\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/dashboard\"\n >\n Painel\n </a>\n <a\n className=\"topbar_mobile__nav-link\"\n href=\"https://nerdflix.io/sign_out\"\n >\n Sair\n </a>\n </nav>\n </div>\n </div>\n </div>\n );\n};\n\nexport default TopbarMobile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport Topbar from './topbar/Topbar';\nimport {\n changeMobileSidebarVisibility,\n changeSidebarVisibility,\n} from '../../redux/actions/sidebarActions';\nimport { SidebarProps } from '../../shared/prop-types/ReducerProps';\nimport TopbarMobile from './topbar/TopbarMobile';\n\nconst Layout = ({ dispatch, sidebar }) => {\n const layoutClass = classNames({\n layout: true,\n 'layout--collapse': true,\n });\n\n const sidebarVisibility = () => {\n dispatch(changeSidebarVisibility());\n };\n\n const mobileSidebarVisibility = () => {\n dispatch(changeMobileSidebarVisibility());\n };\n\n return (\n <div className={layoutClass}>\n <Topbar\n changeMobileSidebarVisibility={mobileSidebarVisibility}\n changeSidebarVisibility={sidebarVisibility}\n />\n <TopbarMobile />\n </div>\n );\n};\n\nLayout.propTypes = {\n dispatch: PropTypes.func.isRequired,\n sidebar: SidebarProps.isRequired,\n};\n\nexport default withRouter(\n connect((state) => ({\n sidebar: state.sidebar,\n }))(Layout)\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { Col } from 'reactstrap';\n\nimport PlaylistCheckIcon from 'mdi-react/PlaylistCheckIcon';\nimport FormatListChecksIcon from 'mdi-react/FormatListChecksIcon';\nimport CertificateIcon from 'mdi-react/CertificateIcon';\nimport CloseOctagonOutlineIcon from 'mdi-react/CloseOctagonOutlineIcon';\n\nconst ItemCertificado = ({ titulo, descricao, status, id, inscricaoId }) => {\n return (\n <div className=\"project-member\">\n <Col sm={10}>\n <div className=\"pr-5\">\n <p className=\"project-member__name\">{titulo}</p>\n <p className=\"project-member__post\">{descricao}</p>\n </div>\n </Col>\n {status === 'publicado' ? (\n <Link\n className=\"project-member__btn btn btn-primary btn-sm icon\"\n to={`inscricao/${id}`}\n >\n Inscreva-se\n <PlaylistCheckIcon className=\"ml-2\" />\n </Link>\n ) : status === 'inscrito' ? (\n <Link\n className=\"project-member__btn btn btn-secondary btn-sm icon\"\n to={{\n pathname: `quiz/${id}`,\n state: {\n inscricaoId: inscricaoId,\n },\n }}\n >\n Começar\n <FormatListChecksIcon className=\"ml-2\" />\n </Link>\n ) : status === 'em execução' ? (\n <Link\n className=\"project-member__btn btn btn-warning btn-sm icon\"\n to={{\n pathname: `quiz/${id}`,\n state: {\n inscricaoId: inscricaoId,\n },\n }}\n >\n Refazer\n <FormatListChecksIcon className=\"ml-2\" />\n </Link>\n ) : status === 'concluÃdo' ? (\n <Link\n className=\"project-member__btn btn btn-success btn-sm icon\"\n to={`/certificado/${inscricaoId}`}\n >\n Sucesso\n <CertificateIcon className=\"ml-2\" />\n </Link>\n ) : status === 'falhou' ? (\n <Link\n className=\"project-member__btn btn btn-danger btn-sm icon\"\n to={`situacao-inscricao/${inscricaoId}`}\n >\n Falhou\n <CloseOctagonOutlineIcon className=\"ml-2\" />\n </Link>\n ) : (\n status\n )}\n </div>\n );\n};\n\nItemCertificado.propTypes = {\n titulo: PropTypes.string.isRequired,\n descricao: PropTypes.string,\n status: PropTypes.string.isRequired,\n};\n\nItemCertificado.defaultProps = {\n descricao: '',\n};\n\nexport default ItemCertificado;\n","import React from 'react';\nimport { Card, CardBody, Col } from 'reactstrap';\nimport ItemCertificado from './ItemCertificado';\n\nconst ListaCertificados = ({ titulo, lista }) => (\n <Col md={12} lg={4} xl={4} className=\"mb-3\">\n <Card className=\"card--not-full-height\">\n <CardBody>\n <div className=\"card__title\">\n <h5 className=\"bold-text\">{titulo}</h5>\n </div>\n {lista?.map((item) => (\n <ItemCertificado\n titulo={item.titulo}\n status={item.status}\n descricao={item.descricao}\n id={item._id}\n key={item._id}\n />\n ))}\n {lista.length === 0 && (\n <p className=\"project-member__name\">Nada aqui por enquanto...</p>\n )}\n </CardBody>\n </Card>\n </Col>\n);\n\nexport default ListaCertificados;\n","export const API = process.env.REACT_APP_API_URL;\n\nexport const getOidcStorageKey = () => {\n const authSettings = JSON.parse(localStorage.getItem('authSettings'));\n if (authSettings) {\n return `oidc.user:${authSettings.auth_server}:${authSettings.client_id}`;\n }\n return null;\n};\n\nexport const getOidcInfo = () => {\n const key = getOidcStorageKey();\n if (key) {\n const oidc = JSON.parse(localStorage.getItem(key));\n return oidc;\n }\n return null;\n};\n\nexport const getToken = () => {\n const user = JSON.parse(localStorage.getItem('certificadoNerdflixUser'));\n\n if (user) {\n return user.token;\n } else {\n return '';\n }\n};\n\nexport const getUserId = () => {\n const { aluno } = JSON.parse(localStorage.getItem('certificadoNerdflixUser'));\n\n if (aluno) {\n return aluno._id;\n } else {\n return '';\n }\n};\n","import axios from 'axios';\nimport { getToken } from '../../helpers';\n\nexport const defaultParams = () => ({\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${getToken()}`,\n },\n});\n\nexport default axios;\n","import axios, { defaultParams } from './axios';\n\nexport default async (url, params) => {\n try {\n return await axios.get(url, { ...defaultParams(), ...params });\n } catch (e) {\n if (e.response.data) throw e.response.data;\n if (!e || !e.response || e.response.status !== 401) throw e;\n localStorage.setItem(\n 'url',\n `${window.location.pathname}${window.location.search}`\n );\n try {\n return axios.get(url, { ...defaultParams(), ...params });\n } catch (err) {\n return null;\n }\n }\n};\n","import axios, { defaultParams } from './axios';\n\nexport default async (url, body, params) => {\n try {\n return await axios.post(url, body, { ...defaultParams(), ...params });\n } catch (e) {\n if (e.response.data) throw e.response.data;\n if (!e || !e.response || e.response.status !== 401) throw e;\n localStorage.setItem(\n 'url',\n `${window.location.pathname}${window.location.search}`\n );\n try {\n return axios.post(url, body, { ...defaultParams(), ...params });\n } catch (err) {\n return null;\n }\n }\n};\n","import { get } from './base/index';\nimport { API, getUserId } from '../helpers';\n\nexport default {\n getCertificadosDisponiveis: () =>\n get(`${API}/certificados/by/disponiveis/${getUserId()}`),\n getCertificado: (id) => get(`${API}/certificado/${id}/${getUserId()}`),\n};\n","import { createAction } from 'redux-actions';\nimport certificadosApi from '../../utils/api/certificadosApi';\n\nexport const fetchCertificadoRequest = createAction(\n 'FETCH_CERTIFICADO_REQUEST'\n);\nexport const fetchCertificadoSuccess = createAction(\n 'FETCH_CERTIFICADO_SUCCESS'\n);\nexport const fetchCertificadoError = createAction('FETCH_CERTIFICADO_ERROR');\n\nexport const fetchCertificadosDisponiveisRequest = createAction(\n 'FETCH_CERTIFICADOS_DISPONIVEIS_REQUEST'\n);\nexport const fetchCertificadosDisponiveisSuccess = createAction(\n 'FETCH_CERTIFICADOS_DISPONIVEIS_SUCCESS'\n);\nexport const fetchCertificadosDisponiveisError = createAction(\n 'FETCH_CERTIFICADOS_DISPONIVEIS_ERROR'\n);\n\nexport const fetchCertificado = (id) => async (dispatch) => {\n try {\n dispatch(fetchCertificadoRequest());\n const { data } = await certificadosApi.getCertificado(id);\n dispatch(fetchCertificadoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(fetchCertificadoError());\n }\n};\n\nexport const fetchCertificadosDisponiveis = () => async (dispatch) => {\n try {\n dispatch(fetchCertificadosDisponiveisRequest());\n const { data } = await certificadosApi.getCertificadosDisponiveis();\n dispatch(fetchCertificadosDisponiveisSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(fetchCertificadosDisponiveisError());\n }\n};\n","import { get, post, put } from './base/index';\nimport { API, getUserId } from '../helpers';\n\nexport default {\n getInscricoesEmAndamento: () =>\n get(`${API}/inscricoes/em-andamento/${getUserId()}`),\n getInscricoesConcluidas: () =>\n get(`${API}/inscricoes/concluidas/${getUserId()}`),\n novaInscricaoCartaoCredito: (certificadoId, form) =>\n post(\n `${API}/inscricao/nova/cartaocredito/${getUserId()}/${certificadoId}`,\n form\n ),\n novaInscricaoBoletoBancario: (certificadoId, form) =>\n post(`${API}/inscricao/nova/boleto/${getUserId()}/${certificadoId}`, form),\n novaInscricaoCupom: (certificadoId, form) =>\n post(`${API}/inscricao/nova/cupom/${getUserId()}/${certificadoId}`, form),\n getInscricao: (id) => get(`${API}/inscricao/${id}`),\n sendTestResult: (id, result) =>\n put(`${API}/inscricao/resultado/${getUserId()}/${id}`, result),\n pdfCertificado: (id) => get(`${API}/inscricao/certificado/pdf/${id}`),\n};\n","import axios, { defaultParams } from './axios';\n\nexport default async (url, body, params) => {\n try {\n return await axios.put(url, body, { ...defaultParams(), ...params });\n } catch (e) {\n if (e.response.data) throw e.response.data;\n if (!e || !e.response || e.response.status !== 401) throw e;\n localStorage.setItem(\n 'url',\n `${window.location.pathname}${window.location.search}`\n );\n try {\n return axios.put(url, body, { ...defaultParams(), ...params });\n } catch (err) {\n return null;\n }\n }\n};\n","import { createAction } from 'redux-actions';\nimport inscricoesApi from '../../utils/api/inscricoesApi';\n\nexport const fetchInscricaoRequest = createAction('FETCH_INSCRICAO_REQUEST');\nexport const fetchInscricaoSuccess = createAction('FETCH_INSCRICAO_SUCCESS');\nexport const fetchInscricaoError = createAction('FETCH_INSCRICAO_ERROR');\n\nexport const fetchInscricoesEmAndamentoRequest = createAction(\n 'FETCH_INSCRICOES_EM_ANDAMENTO_REQUEST'\n);\nexport const fetchInscricoesEmAndamentoSuccess = createAction(\n 'FETCH_INSCRICOES_EM_ANDAMENTO_SUCCESS'\n);\nexport const fetchInscricoesEmAndamentoError = createAction(\n 'FETCH_INSCRICOES_EM_ANDAMENTO_ERROR'\n);\n\nexport const fetchInscricoesConcluidasRequest = createAction(\n 'FETCH_INSCRICOES_CONCLUIDAS_REQUEST'\n);\nexport const fetchInscricoesConcluidasSuccess = createAction(\n 'FETCH_INSCRICOES_CONCLUIDAS_SUCCESS'\n);\nexport const fetchInscricoesConcluidasError = createAction(\n 'FETCH_INSCRICOES_CONCLUIDAS_ERROR'\n);\n\nexport const novaInscricaoCartaoCreditoRequest = createAction(\n 'NOVA_INSCRICAO_CARTAO_CREDITO_REQUEST'\n);\nexport const novaInscricaoCartaoCreditoSuccess = createAction(\n 'NOVA_INSCRICAO_CARTAO_CREDITO_SUCCESS'\n);\nexport const novaInscricaoCartaoCreditoError = createAction(\n 'NOVA_INSCRICAO_CARTAO_CREDITO_ERROR'\n);\n\nexport const novaInscricaoBoletoBancarioRequest = createAction(\n 'NOVA_INSCRICAO_BOLETO_BANCARIO_REQUEST'\n);\nexport const novaInscricaoBoletoBancarioSuccess = createAction(\n 'NOVA_INSCRICAO_BOLETO_BANCARIO_SUCCESS'\n);\nexport const novaInscricaoBoletoBancarioError = createAction(\n 'NOVA_INSCRICAO_BOLETO_BANCARIO_ERROR'\n);\n\nexport const novaInscricaoCupomRequest = createAction(\n 'NOVA_INSCRICAO_CUPOM_REQUEST'\n);\nexport const novaInscricaoCupomSuccess = createAction(\n 'NOVA_INSCRICAO_CUPOM_SUCCESS'\n);\nexport const novaInscricaoCupomError = createAction(\n 'NOVA_INSCRICAO_CUPOM_ERROR'\n);\n\nexport const testeEnviadoSuccess = createAction('TESTE_ENVIADO_SUCCESS');\nexport const testeEnviadoError = createAction('TESTE_ENVIADO_ERROR');\n\nexport const fetchPdfCertificadoRequest = createAction(\n 'FETCH_PDF_CERTIFICADO_REQUEST'\n);\nexport const fetchPdfCertificadoSuccess = createAction(\n 'FETCH_PDF_CERTIFICADO_SUCCESS'\n);\nexport const fetchPdfCertificadoError = createAction(\n 'FETCH_PDF_CERTIFICADO_ERROR'\n);\n\nexport const fetchInscricao = (id) => async (dispatch) => {\n try {\n dispatch(fetchInscricaoRequest());\n const { data } = await inscricoesApi.getInscricao(id);\n dispatch(fetchInscricaoSuccess(data));\n } catch (e) {\n console.log(e.response);\n dispatch(fetchInscricaoError(e));\n }\n};\n\nexport const fetchInscricoesEmAndamento = () => async (dispatch) => {\n try {\n dispatch(fetchInscricoesEmAndamentoRequest());\n const { data } = await inscricoesApi.getInscricoesEmAndamento();\n dispatch(fetchInscricoesEmAndamentoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(fetchInscricoesEmAndamentoError(e));\n }\n};\n\nexport const fetchInscricoesConcluidas = () => async (dispatch) => {\n try {\n dispatch(fetchInscricoesConcluidasRequest());\n const { data } = await inscricoesApi.getInscricoesConcluidas();\n dispatch(fetchInscricoesConcluidasSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(fetchInscricoesConcluidasError(e));\n }\n};\n\nexport const novaInscricaoCartaoCredito =\n (certificadoId, form) => async (dispatch) => {\n try {\n dispatch(novaInscricaoCartaoCreditoRequest());\n const { data } = await inscricoesApi.novaInscricaoCartaoCredito(\n certificadoId,\n form\n );\n dispatch(novaInscricaoCartaoCreditoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(novaInscricaoCartaoCreditoError(e.error));\n }\n };\n\nexport const novaInscricaoBoletoBancario =\n (certificadoId, form) => async (dispatch) => {\n try {\n dispatch(novaInscricaoBoletoBancarioRequest());\n const { data } = await inscricoesApi.novaInscricaoBoletoBancario(\n certificadoId,\n form\n );\n dispatch(novaInscricaoBoletoBancarioSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(novaInscricaoBoletoBancarioError(e.error));\n }\n };\n\nexport const novaInscricaoCupom = (certificadoId, form) => async (dispatch) => {\n try {\n dispatch(novaInscricaoCupomRequest());\n const { data } = await inscricoesApi.novaInscricaoCupom(\n certificadoId,\n form\n );\n dispatch(novaInscricaoCupomSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(novaInscricaoCupomError(e.error));\n }\n};\n\nexport const enviarResultadoTeste = (inscricaoId, form) => async (dispatch) => {\n try {\n const { data } = await inscricoesApi.sendTestResult(inscricaoId, form);\n dispatch(testeEnviadoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(testeEnviadoError(e));\n }\n};\n\nexport const fetchPdfCertificado = (inscricaoId) => async (dispatch) => {\n try {\n dispatch(fetchPdfCertificadoRequest());\n const { data } = await inscricoesApi.pdfCertificado(inscricaoId);\n dispatch(fetchPdfCertificadoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(fetchPdfCertificadoError(e));\n }\n};\n","import { get } from './base/index';\nimport { API } from '../helpers';\n\nexport default {\n loginAluno: (emailAluno, idUscreen) =>\n get(`${API}/aluno/login/${emailAluno}/${idUscreen}`),\n};\n","import { createAction } from 'redux-actions';\nimport alunosApi from '../../utils/api/alunosApi';\n\nexport const loginAlunoRequest = createAction('LOGIN_ALUNO_REQUEST');\nexport const loginAlunoSuccess = createAction('LOGIN_ALUNO_SUCCESS');\nexport const loginAlunoError = createAction('LOGIN_ALUNO_ERROR');\nexport const setAlunoData = createAction('SET_ALUNO_DATA');\n\nexport const loginAluno = (emailAluno, idUscreen) => async (dispatch) => {\n try {\n dispatch(loginAlunoRequest());\n const { data } = await alunosApi.loginAluno(emailAluno, idUscreen);\n localStorage.setItem('certificadoNerdflixUser', JSON.stringify(data));\n dispatch(loginAlunoSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(loginAlunoError(e));\n }\n};\n\nexport const setAluno = () => async (dispatch) => {\n dispatch(\n setAlunoData(JSON.parse(localStorage.getItem('certificadoNerdflixUser')))\n );\n};\n","import React from 'react';\nimport { Card, CardBody, Col } from 'reactstrap';\nimport ItemCertificado from './ItemCertificado';\n\nconst ListaInscritos = ({ titulo, lista }) => (\n <Col md={12} lg={4} xl={4} className=\"mb-3\">\n <Card className=\"card--not-full-height\">\n <CardBody>\n <div className=\"card__title\">\n <h5 className=\"bold-text\">{titulo}</h5>\n </div>\n {lista?.map((item) => (\n <ItemCertificado\n titulo={item.certificado.titulo}\n status={item.status}\n descricao={item.certificado.descricao}\n key={item._id}\n inscricaoId={item._id}\n id={item.certificado._id}\n />\n ))}\n {lista.length === 0 && (\n <p className=\"project-member__name\">Nada aqui por enquanto...</p>\n )}\n </CardBody>\n </Card>\n </Col>\n);\n\nexport default ListaInscritos;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Col, Container, Row } from 'reactstrap';\nimport ListaCertificados from './components/ListaCertificados';\nimport { fetchCertificadosDisponiveis } from '../../redux/actions/certificadosActions';\nimport {\n fetchInscricoesEmAndamento,\n fetchInscricoesConcluidas,\n} from '../../redux/actions/inscricoesActions';\nimport { setAluno } from '../../redux/actions/alunosActions';\nimport ListaInscritos from './components/ListaInscritos';\n\nconst Home = () => {\n const dispatch = useDispatch();\n const certificadosDisponiveis = useSelector(\n (state) => state.certificados.certificadosDisponiveis\n );\n const inscricoesEmAndamento = useSelector(\n (state) => state.inscricoes.inscricoesEmAndamento\n );\n const inscricoesConcluidas = useSelector(\n (state) => state.inscricoes.inscricoesConcluidas\n );\n const { aluno } = useSelector((state) => state.alunos.auth);\n\n useEffect(() => {\n dispatch(setAluno());\n dispatch(fetchCertificadosDisponiveis());\n dispatch(fetchInscricoesEmAndamento());\n dispatch(fetchInscricoesConcluidas());\n }, [dispatch]);\n\n return (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Certificados</h1>\n <h3 className=\"page-subhead subhead\">\n {`Bem vindo ${aluno?.name}, nesta área você poderá obter certificados, fazer testes para obtenção de novos certificados e emitir os certificados já obtidos. Caso tenha alguma dúvida sobre pagamentos clique no botão abaixo para verificar.`}\n </h3>\n </Col>\n </Row>\n <Row>\n <ListaCertificados\n titulo={`Inscreva-se!`}\n lista={certificadosDisponiveis}\n />\n <ListaInscritos titulo={`Faça o teste`} lista={inscricoesEmAndamento} />\n <ListaInscritos\n titulo={`Teste concluÃdos`}\n lista={inscricoesConcluidas}\n />\n </Row>\n <Row className=\"justify-content-center mt-5\">\n <p>Verifique a situação de pagamentos anteriores.</p>\n </Row>\n <Row className=\"justify-content-center mt-2\">\n <Link className=\"btn btn-secondary\" to=\"/pagamentos\">\n Pagamentos anteriores\n </Link>\n </Row>\n </Container>\n );\n};\n\nHome.propTypes = {};\n\nexport default connect((state) => ({\n rtl: state.rtl,\n}))(Home);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { ThemeProps, RTLProps } from '../../shared/prop-types/ReducerProps';\n\nconst MainWrapper = ({\n theme, children, rtl, location,\n}) => {\n const direction = location.pathname === '/' ? 'ltr' : rtl.direction;\n\n return (\n <div className={`${theme.className} ${direction}-support`} dir={direction}>\n <div className=\"wrapper\">\n {children}\n </div>\n </div>\n );\n};\n\nMainWrapper.propTypes = {\n theme: ThemeProps.isRequired,\n rtl: RTLProps.isRequired,\n children: PropTypes.element.isRequired,\n location: PropTypes.shape().isRequired,\n};\n\nexport default withRouter(connect((state) => ({\n theme: state.theme,\n rtl: state.rtl,\n}))(MainWrapper));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CheckIcon from 'mdi-react/CheckIcon';\nimport CloseIcon from 'mdi-react/CloseIcon';\n\nconst CheckBoxField = ({\n disabled, className, name, value, onChange, label, color,\n}) => {\n const CheckboxClass = classNames({\n 'checkbox-btn': true,\n disabled,\n });\n\n const changeHandler = () => {\n onChange();\n };\n\n return (\n <label\n className={`${CheckboxClass} ${className ? ` checkbox-btn--${className}` : ''}`}\n htmlFor={name}\n >\n <input\n className=\"checkbox-btn__checkbox\"\n type=\"checkbox\"\n id={name}\n name={name}\n onChange={changeHandler}\n checked={value}\n disabled={disabled}\n />\n <span\n className=\"checkbox-btn__checkbox-custom\"\n style={color ? { background: color, borderColor: color } : {}}\n >\n <CheckIcon />\n </span>\n {className === 'button'\n ? (\n <span className=\"checkbox-btn__label-svg\">\n <CheckIcon className=\"checkbox-btn__label-check\" />\n <CloseIcon className=\"checkbox-btn__label-uncheck\" />\n </span>\n ) : ''}\n <span className=\"checkbox-btn__label\">\n {label}\n </span>\n </label>\n );\n};\n\nCheckBoxField.propTypes = {\n onChange: PropTypes.func,\n name: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]).isRequired,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n color: PropTypes.string,\n};\n\nCheckBoxField.defaultProps = {\n onChange: () => {},\n label: '',\n disabled: false,\n className: '',\n color: '',\n};\n\nconst renderCheckBoxField = ({\n input,\n label,\n defaultChecked,\n disabled,\n className,\n color,\n ...other\n}) => (\n <CheckBoxField\n input={input}\n label={label}\n defaultChecked={defaultChecked}\n disabled={disabled}\n className={className}\n color={color}\n {...other}\n />\n);\n\nrenderCheckBoxField.propTypes = {\n input: PropTypes.shape({\n onChange: PropTypes.func,\n name: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n }).isRequired,\n label: PropTypes.string,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n color: PropTypes.string,\n};\n\nrenderCheckBoxField.defaultProps = {\n label: '',\n defaultChecked: false,\n disabled: false,\n className: '',\n color: '',\n};\n\nexport default renderCheckBoxField;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { Field, reduxForm } from 'redux-form';\nimport EyeIcon from 'mdi-react/EyeIcon';\nimport KeyVariantIcon from 'mdi-react/KeyVariantIcon';\nimport AccountOutlineIcon from 'mdi-react/AccountOutlineIcon';\nimport renderCheckBoxField from '../../../shared/components/form/CheckBox';\n\nconst LogInForm = ({ handleSubmit }) => {\n const [isPasswordShown, setIsPasswordShown] = useState(false);\n\n const showPassword = () => {\n setIsPasswordShown(!isPasswordShown);\n };\n\n return (\n <form className=\"form\" onSubmit={handleSubmit}>\n <div className=\"form__form-group\">\n <span className=\"form__form-group-label\">Username</span>\n <div className=\"form__form-group-field\">\n <div className=\"form__form-group-icon\">\n <AccountOutlineIcon />\n </div>\n <Field\n name=\"name\"\n component=\"input\"\n type=\"text\"\n placeholder=\"Name\"\n />\n </div>\n </div>\n <div className=\"form__form-group\">\n <span className=\"form__form-group-label\">Password</span>\n <div className=\"form__form-group-field\">\n <div className=\"form__form-group-icon\">\n <KeyVariantIcon />\n </div>\n <Field\n name=\"password\"\n component=\"input\"\n type={isPasswordShown ? 'text' : 'password'}\n placeholder=\"Password\"\n />\n <button\n className={`form__form-group-button${isPasswordShown ? ' active' : ''}`}\n onClick={() => showPassword()}\n type=\"button\"\n ><EyeIcon />\n </button>\n </div>\n <div className=\"account__forgot-password\">\n <a href=\"/\">Forgot a password?</a>\n </div>\n </div>\n <div className=\"form__form-group\">\n <div className=\"form__form-group-field\">\n <Field\n name=\"remember_me\"\n component={renderCheckBoxField}\n label=\"Remember me\"\n />\n </div>\n </div>\n <Link className=\"btn btn-primary account__btn account__btn--small\" to=\"/pages/one\">Sign In</Link>\n <Link className=\"btn btn-outline-primary account__btn account__btn--small\" to=\"/log_in\">Create Account</Link>\n </form>\n );\n};\n\nLogInForm.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n};\n\nexport default reduxForm({\n form: 'log_in_form',\n})(LogInForm);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport FacebookIcon from 'mdi-react/FacebookIcon';\nimport GooglePlusIcon from 'mdi-react/GooglePlusIcon';\nimport LogInForm from './components/LogInForm';\n\nconst LogIn = () => (\n <div className=\"account\">\n <div className=\"account__wrapper\">\n <div className=\"account__card\">\n <div className=\"account__head\">\n <h3 className=\"account__title\">Welcome to\n <span className=\"account__logo\"> Easy\n <span className=\"account__logo-accent\">DEV</span>\n </span>\n </h3>\n <h4 className=\"account__subhead subhead\">Start your business easily</h4>\n </div>\n <LogInForm onSubmit />\n <div className=\"account__or\">\n <p>Or Easily Using</p>\n </div>\n <div className=\"account__social\">\n <Link\n className=\"account__social-btn account__social-btn--facebook\"\n to=\"/pages/one\"\n ><FacebookIcon />\n </Link>\n <Link\n className=\"account__social-btn account__social-btn--google\"\n to=\"/pages/one\"\n ><GooglePlusIcon />\n </Link>\n </div>\n </div>\n </div>\n </div>\n);\n\nexport default LogIn;\n\n// if you want to add select, date-picker and time-picker in your app you need to uncomment the first\n// four lines in /scss/components/form.scss to add styles\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect } from 'react-router';\nimport { CardBody, Row, Spinner } from 'reactstrap';\nimport CloseCircleOutlineIcon from 'mdi-react/CloseCircleOutlineIcon';\nimport { loginAluno } from '../../redux/actions/alunosActions';\n\nconst LogInAluno = (props) => {\n const dispatch = useDispatch();\n const { aluno } = useSelector((state) => state.alunos.auth);\n const error = useSelector((state) => state.alunos.error);\n const isFetching = useSelector((state) => state.alunos.isFetching);\n const { emailAluno, idUscreen } = props.match.params;\n\n useEffect(() => {\n dispatch(loginAluno(emailAluno, idUscreen));\n }, [dispatch, emailAluno, idUscreen]);\n\n return (\n <div>\n {isFetching && <Spinner className=\"loading-spinner\" />}\n {!isFetching && !error && aluno?._id && <Redirect to=\"/home\" />}\n {!isFetching && error && (\n <CardBody className=\"cardbody-confirmacao\">\n <CloseCircleOutlineIcon className=\"icon-confirmacao--fail\" />\n <h4>{`Acesso não permitido. ${error.error}`}</h4>\n <p>Este acesso é exclusivo para usuários do Nerdflix.</p>\n <p>Verifique seu email de acesso e se a sua assinatura está ativa.</p>\n <p>\n Caso precise de ajuda, entre em contato:{' '}\n <a href=\"mailto:atendimento@paulogentil.com\">\n atendimento@paulogentil.com\n </a>\n </p>\n <Row className=\"buttontoolbar-confirmacao\">\n <a\n className=\"btn btn-primary\"\n href=\"https://nerdflix.io/pages/certificados\"\n >\n Voltar\n </a>\n </Row>\n </CardBody>\n )}\n </div>\n );\n};\n\nexport default LogInAluno;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Card, CardBody, Col, Container, Row } from 'reactstrap';\nimport { fetchCertificado } from '../../../redux/actions/certificadosActions';\n\nconst DetalheCertificado = ({ props }) => {\n const dispatch = useDispatch();\n const { id } = props.match.params;\n const certificado = useSelector((state) => state.certificados.certificado);\n\n useEffect(() => {\n dispatch(fetchCertificado(id));\n }, [dispatch, id]);\n\n return (\n <Container className=\"container-lateral\">\n <Card>\n <CardBody>\n <Row>\n <Col md={12}>\n <h5 className=\"bold-text text-uppercase\">Certificado</h5>\n <p className=\"bold-text\">{certificado.titulo}</p>\n <p>{certificado.descricao}</p>\n <ul className=\"list list--icon list--icon-green mt-2\">\n <li>\n <p>\n <span className=\"lnr lnr-clock\" />\n Tempo de prova: {certificado.tempo_prova} minutos\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-graduation-hat\" />\n Carga Horária: {certificado.carga_horaria} horas\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-checkmark-circle\" />\n Nota para aprovação: {certificado.nota_aprovacao}%\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-bubble\" />\n Professor: {certificado?.professor?.name}\n </p>\n </li>\n </ul>\n </Col>\n </Row>\n </CardBody>\n </Card>\n </Container>\n );\n};\n\nexport default DetalheCertificado;\n","/* eslint-disable */\nconst validate = (values) => {\n const errors = {};\n if (!values.CardNumber) {\n errors.CardNumber = 'Número do cartão não pode ser vazio';\n }\n if (!values.ExpirationDate) {\n errors.ExpirationDate = 'Data de validade não pode ser vazio';\n }\n if (!values.Holder) {\n errors.Holder = 'Nome impresso no cartão não pode ser vazio';\n }\n if (!values.SecurityCode) {\n errors.SecurityCode = 'CVV do cartão não pode ser vazio';\n }\n return errors;\n};\n\nexport default validate;\n","import React from 'react';\nimport { Button, ButtonToolbar, Col, Row } from 'reactstrap';\nimport { Field, reduxForm } from 'redux-form';\nimport * as PropTypes from 'prop-types';\nimport MaskedInput from 'react-text-mask';\nimport CreditCardIcon from 'mdi-react/CreditCardIcon';\nimport validate from './validate';\n\nconst renderField = ({\n input,\n placeholder,\n type,\n mask,\n meta: { touched, error },\n}) => (\n <div>\n <MaskedInput {...input} placeholder={placeholder} type={type} mask={mask} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\n\nconst renderFieldText = ({\n input,\n placeholder,\n type,\n meta: { touched, error },\n}) => (\n <div className=\"form__form-group-input-wrap\">\n <input {...input} placeholder={placeholder} type={type} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\nrenderField.propTypes = {\n input: PropTypes.shape().isRequired,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n mask: PropTypes.arrayOf(PropTypes.any),\n meta: PropTypes.shape({\n touched: PropTypes.bool,\n error: PropTypes.string,\n }),\n};\n\nrenderField.defaultProps = {\n placeholder: '',\n type: 'text',\n mask: [],\n meta: null,\n};\n\nconst CartaoCreditoForm = ({ handleSubmit, certificado }) => (\n <form className=\"form payment__credit-cards\" onSubmit={handleSubmit}>\n <div className=\"form__form-group\">\n <input type=\"hidden\" name=\"forma_pagamento\" value=\"cartaocredito\" />\n <Row>\n <Col lg={4}>\n <span className=\"form__form-group-label\">Número do cartão</span>\n <div className=\"form__form-group-field\">\n <div className=\"form__form-group-icon\">\n <CreditCardIcon />\n </div>\n <Field\n name=\"CardNumber\"\n component={renderField}\n type=\"text\"\n mask={[\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n '-',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n '-',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n '-',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ]}\n placeholder=\"xxxx-xxxx-xxxx-xxxx\"\n />\n </div>\n </Col>\n <Col lg={4}>\n <div className=\"form__form-group form__form-group-date\">\n <span className=\"form__form-group-label\">Válido até</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"ExpirationDate\"\n component={renderField}\n type=\"text\"\n mask={[/[0-1]/, /\\d/, '/', /\\d/, /\\d/]}\n placeholder=\"MM/AA\"\n />\n </div>\n </div>\n </Col>\n <Col lg={4}>\n <div className=\"form__form-group form__form-group-cvc\">\n <span className=\"form__form-group-label\">CVV</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"SecurityCode\"\n component={renderField}\n type=\"text\"\n mask={[/\\d/, /\\d/, /\\d/]}\n />\n </div>\n </div>\n </Col>\n </Row>\n </div>\n\n <div className=\"form__form-group\">\n <span className=\"form__form-group-label\">Nome impresso no cartão</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"Holder\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"Nome e sobrenome\"\n />\n </div>\n </div>\n\n <h4 className=\"payment__total\">Valor Total: R${certificado.valor}</h4>\n <ButtonToolbar className=\"form__button-toolbar\">\n <Button color=\"primary\" type=\"submit\">\n Realizar Pagamento\n </Button>\n </ButtonToolbar>\n </form>\n);\n\nCartaoCreditoForm.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n};\n\nexport default reduxForm({\n form: 'payment_form', // a unique identifier for this form\n validate,\n})(CartaoCreditoForm);\n","/* eslint-disable */\nconst validate = (values) => {\n const errors = {};\n if (!values.cpf) {\n errors.cpf = 'O CPF não pode ser vazio';\n }\n if (!values.cep) {\n errors.cep = 'O CEP não pode ser vazio';\n }\n if (!values.uf) {\n errors.uf = 'O campo UF não pode ser vazio';\n }\n if (!values.cidade) {\n errors.cidade = 'O campo cidade não pode ser vazio';\n }\n if (!values.bairro) {\n errors.bairro = 'O campo bairro não pode ser vazio';\n }\n if (!values.endereco) {\n errors.endereco = 'O campo endereço não pode ser vazio';\n }\n return errors;\n};\n\nexport default validate;\n","import React from 'react';\nimport { Button, ButtonToolbar, Col, Row } from 'reactstrap';\nimport { Field, reduxForm } from 'redux-form';\nimport * as PropTypes from 'prop-types';\nimport MaskedInput from 'react-text-mask';\nimport validate from './validate';\n\nconst renderField = ({\n input,\n placeholder,\n type,\n mask,\n meta: { touched, error },\n}) => (\n <div>\n <MaskedInput {...input} placeholder={placeholder} type={type} mask={mask} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\n\nconst renderFieldText = ({\n input,\n placeholder,\n type,\n meta: { touched, error },\n}) => (\n <div className=\"form__form-group-input-wrap\">\n <input {...input} placeholder={placeholder} type={type} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\nrenderField.propTypes = {\n input: PropTypes.shape().isRequired,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n mask: PropTypes.arrayOf(PropTypes.any),\n meta: PropTypes.shape({\n touched: PropTypes.bool,\n error: PropTypes.string,\n }),\n};\n\nrenderField.defaultProps = {\n placeholder: '',\n type: 'text',\n mask: [],\n meta: null,\n};\n\nconst BoletoBancarioForm = ({ handleSubmit, certificado }) => (\n <form className=\"form payment__credit-cards\" onSubmit={handleSubmit}>\n <input type=\"hidden\" name=\"forma_pagamento\" value=\"boleto\" />\n <div className=\"form__form-group\">\n <Row>\n <Col lg={8}>\n <span className=\"form__form-group-label\">Nome completo</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"Holder\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"Nome e sobrenome\"\n />\n </div>\n </Col>\n <Col lg={4}>\n <span className=\"form__form-group-label\">CPF:</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"cpf\"\n component={renderField}\n type=\"text\"\n mask={[\n /\\d/,\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n '-',\n /\\d/,\n /\\d/,\n ]}\n placeholder=\"xxx.xxx.xxx-xx\"\n />\n </div>\n </Col>\n </Row>\n </div>\n <div className=\"form__form-group\">\n <Row>\n <Col lg={4}>\n <span className=\"form__form-group-label\">CEP</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"cep\"\n component={renderField}\n type=\"text\"\n mask={[/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/]}\n placeholder=\"99.999-999\"\n />\n </div>\n </Col>\n <Col lg={8}>\n <span className=\"form__form-group-label\">Endereço</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"endereco\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"Endereço\"\n />\n </div>\n </Col>\n </Row>\n </div>\n <div className=\"form__form-group\">\n <Row>\n <Col lg={4}>\n <span className=\"form__form-group-label\">Cidade</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"cidade\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"Cidade\"\n />\n </div>\n </Col>\n <Col lg={4}>\n <span className=\"form__form-group-label\">Bairro</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"bairro\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"Bairro\"\n />\n </div>\n </Col>\n <Col lg={4}>\n <span className=\"form__form-group-label\">UF</span>\n <div className=\"form__form-group-field\">\n <Field name=\"uf\" component={renderFieldText} type=\"text\" />\n </div>\n </Col>\n </Row>\n </div>\n\n <h4 className=\"payment__total\">Valor Total: R${certificado.valor}</h4>\n <ButtonToolbar className=\"form__button-toolbar\">\n <Button color=\"primary\" type=\"submit\">\n Realizar Pagamento\n </Button>\n </ButtonToolbar>\n </form>\n);\n\nBoletoBancarioForm.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n};\n\nexport default reduxForm({\n form: 'payment_form', // a unique identifier for this form\n validate,\n})(BoletoBancarioForm);\n","import React, { useEffect } from 'react';\nimport CheckIcon from 'mdi-react/CheckIcon';\nimport CloseIcon from 'mdi-react/CloseIcon';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst RadioButtonField = ({\n defaultChecked,\n onChange,\n radioValue,\n className,\n disabled,\n label,\n name,\n value,\n}) => {\n useEffect(() => {\n if (defaultChecked) {\n onChange(radioValue);\n }\n }, [defaultChecked, onChange, radioValue]);\n const RadioButtonClass = classNames({\n 'radio-btn': true,\n disabled,\n });\n const handleChange = () => {\n onChange(radioValue);\n };\n return (\n // eslint-disable-next-line jsx-a11y/label-has-for\n <label\n className={`${RadioButtonClass}${\n className ? ` radio-btn--${className}` : ''\n }`}\n >\n <input\n className=\"radio-btn__radio\"\n name={name}\n type=\"radio\"\n onChange={handleChange}\n checked={value === radioValue}\n disabled={disabled}\n />\n <span className=\"radio-btn__radio-custom\" />\n {className === 'button' ? (\n <span className=\"radio-btn__label-svg\">\n <CheckIcon className=\"radio-btn__label-check\" />\n <CloseIcon className=\"radio-btn__label-uncheck\" />\n </span>\n ) : (\n ''\n )}\n <span className=\"radio-btn__label\">{label}</span>\n </label>\n );\n};\n\nRadioButtonField.propTypes = {\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n label: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n radioValue: PropTypes.string,\n className: PropTypes.string,\n};\n\nRadioButtonField.defaultProps = {\n label: '',\n defaultChecked: false,\n disabled: false,\n radioValue: '',\n className: '',\n};\n\nconst renderRadioButtonField = ({\n input,\n label,\n defaultChecked,\n disabled,\n className,\n radioValue,\n}) => (\n <RadioButtonField\n {...input}\n label={label}\n defaultChecked={defaultChecked}\n disabled={disabled}\n radioValue={radioValue}\n className={className}\n />\n);\n\nrenderRadioButtonField.propTypes = {\n input: PropTypes.shape({\n onChange: PropTypes.func,\n name: PropTypes.string,\n }).isRequired,\n label: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n radioValue: PropTypes.string,\n className: PropTypes.string,\n};\n\nrenderRadioButtonField.defaultProps = {\n label: '',\n defaultChecked: false,\n disabled: false,\n radioValue: '',\n className: '',\n};\n\nexport default renderRadioButtonField;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert } from 'reactstrap';\nimport InformationOutlineIcon from 'mdi-react/InformationOutlineIcon';\nimport ThumbUpOutlineIcon from 'mdi-react/ThumbUpOutlineIcon';\nimport CommentAlertOutlineIcon from 'mdi-react/CommentAlertOutlineIcon';\nimport CloseCircleOutlineIcon from 'mdi-react/CloseCircleOutlineIcon';\n\nconst AlertComponent = ({ color, className, icon, children }) => {\n const [visible, setVisible] = useState(true);\n\n const onDismiss = () => {\n setVisible(false);\n };\n\n let Icon;\n\n switch (color) {\n case 'info':\n Icon = <InformationOutlineIcon />;\n break;\n case 'success':\n Icon = <ThumbUpOutlineIcon />;\n break;\n case 'warning':\n Icon = <CommentAlertOutlineIcon />;\n break;\n case 'danger':\n Icon = <CloseCircleOutlineIcon />;\n break;\n default:\n console.log('Wrong color!');\n break;\n }\n\n if (visible) {\n return (\n <Alert color={color} className={className} isOpen={visible}>\n {icon && <div className=\"alert__icon\">{Icon}</div>}\n <button className=\"close\" type=\"button\" onClick={onDismiss}>\n <span className=\"lnr lnr-cross\" />\n </button>\n <div className=\"alert__content\">{children}</div>\n </Alert>\n );\n }\n\n return null;\n};\n\nexport default AlertComponent;\n\nAlertComponent.propTypes = {\n color: PropTypes.string,\n icon: PropTypes.bool,\n className: PropTypes.string,\n children: PropTypes.element.isRequired,\n};\n\nAlertComponent.defaultProps = {\n color: '',\n icon: false,\n className: '',\n};\n","/* eslint-disable */\nconst validate = (values) => {\n const errors = {};\n if (!values.codigo) {\n errors.codigo = 'O Cupom não pode ser vazio';\n }\n return errors;\n};\n\nexport default validate;\n","import { get } from './base/index';\nimport { API, getUserId } from '../helpers';\n\nexport default {\n validarCupom: (codigo) =>\n get(`${API}/cupom/validar/${codigo}/${getUserId()}`),\n};\n","import { createAction } from 'redux-actions';\nimport cuponsApi from '../../utils/api/cuponsApi';\n\nexport const validarCupomRequest = createAction('VALIDAR_LOGIN_REQUEST');\nexport const validarCupomSuccess = createAction('VALIDAR_LOGIN_SUCCESS');\nexport const validarCupomError = createAction('VALIDAR_LOGIN_ERROR');\n\nexport const validarCupom = (codigo) => async (dispatch) => {\n try {\n dispatch(validarCupomRequest());\n const { data } = await cuponsApi.validarCupom(codigo);\n dispatch(validarCupomSuccess(data));\n } catch (e) {\n console.log(e);\n dispatch(validarCupomError(e.error));\n }\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Button, ButtonToolbar, Col, Row } from 'reactstrap';\nimport { Field, reduxForm } from 'redux-form';\nimport * as PropTypes from 'prop-types';\nimport MaskedInput from 'react-text-mask';\nimport validate from './validate';\nimport { validarCupom } from '../../../../redux/actions/cuponsActions';\n\nconst renderField = ({\n input,\n placeholder,\n type,\n mask,\n meta: { touched, error },\n}) => (\n <div>\n <MaskedInput {...input} placeholder={placeholder} type={type} mask={mask} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\n\nconst renderFieldText = ({\n input,\n placeholder,\n type,\n meta: { touched, error },\n}) => (\n <div className=\"form__form-group-input-wrap\">\n <input {...input} placeholder={placeholder} type={type} />\n {touched && error && (\n <span className=\"form__form-group-error\">{error}</span>\n )}\n </div>\n);\nrenderField.propTypes = {\n input: PropTypes.shape().isRequired,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n mask: PropTypes.arrayOf(PropTypes.any),\n meta: PropTypes.shape({\n touched: PropTypes.bool,\n error: PropTypes.string,\n }),\n};\n\nrenderField.defaultProps = {\n placeholder: '',\n type: 'text',\n mask: [],\n meta: null,\n};\n\nconst CupomForm = ({ handleSubmit, certificado }) => {\n const dispatch = useDispatch();\n const cupom = useSelector((state) => state.cupons.cupom);\n const error = useSelector((state) => state.cupons.error);\n\n const [codigo, setCodigo] = useState('');\n const [valor, setValor] = useState(certificado.valor);\n const [valorDesconto, setValorDesconto] = useState(0);\n\n const validarCupomHandle = () => {\n dispatch(validarCupom(codigo));\n };\n\n useEffect(() => {\n setValorDesconto(0);\n }, [codigo]);\n\n useEffect(() => {\n let desconto = 0;\n\n if (cupom.tipo_desconto === 'percentual') {\n desconto = (valor * cupom.valor_desconto) / 100;\n }\n\n if (cupom.tipo_desconto === 'valor') {\n desconto = cupom.valor_desconto;\n }\n setValorDesconto(desconto);\n }, [cupom]);\n\n useEffect(() => {\n setValor(certificado.valor - valorDesconto);\n }, [cupom, valorDesconto, certificado.valor]);\n\n return (\n <form className=\"form payment__credit-cards\" onSubmit={handleSubmit}>\n <input type=\"hidden\" name=\"forma_pagamento\" value=\"cupom\" />\n <div className=\"form__form-group\">\n <Row>\n <Col lg={4}>\n <span className=\"form__form-group-label\">Código do cupom</span>\n <div className=\"form__form-group-field\">\n <Field\n name=\"codigo\"\n component={renderFieldText}\n type=\"text\"\n placeholder=\"código do cupom\"\n onChange={(e) => setCodigo(e.target.value)}\n />\n </div>\n <span className=\"form__form-group-error\">{error}</span>\n </Col>\n <Col lg={4} className=\"align-text-bottom\">\n <span className=\"form__form-group-label\"> </span>\n <div className=\"form__form-group-field\">\n <Button\n color=\"secondary\"\n className=\"py-1\"\n onClick={(e, data) => validarCupomHandle(data)}\n >\n Aplicar\n </Button>\n </div>\n </Col>\n </Row>\n </div>\n\n <h4 className=\"payment__total\">\n {`Valor Total: R$${valor}`}\n {valorDesconto > 0 && (\n <span className=\"form__form-group-message\">{`Desconto de R$${valorDesconto}`}</span>\n )}\n </h4>\n <ButtonToolbar className=\"form__button-toolbar\">\n <Button color=\"primary\" type=\"submit\">\n Realizar Pagamento\n </Button>\n </ButtonToolbar>\n </form>\n );\n};\n\nCupomForm.propTypes = {\n handleSubmit: PropTypes.func.isRequired,\n};\n\nexport default reduxForm({\n form: 'payment_form', // a unique identifier for this form\n validate,\n})(CupomForm);\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Field, reduxForm } from 'redux-form';\nimport { Card, CardBody, Col, Spinner } from 'reactstrap';\nimport { Redirect } from 'react-router-dom';\nimport CartaoCreditoForm from './CartaoCredito/CartaoCreditoForm';\nimport BoletoBancarioForm from './BoletoBancario/BoletoBancarioForm';\nimport { fetchCertificado } from '../../../redux/actions/certificadosActions';\nimport {\n novaInscricaoCartaoCredito,\n novaInscricaoBoletoBancario,\n novaInscricaoCupom,\n} from '../../../redux/actions/inscricoesActions';\nimport renderRadioButtonField from '../../../shared/components/form/RadioButton';\nimport Alert from '../../../shared/components/Alert';\nimport CupomForm from './Cupom/CupomForm';\n\nconst Cupom = `${process.env.PUBLIC_URL}/img/cards/cupom.svg`;\nconst CartaoCredito = `${process.env.PUBLIC_URL}/img/cards/cartao.svg`;\nconst BoletoBancario = `${process.env.PUBLIC_URL}/img/cards/boleto.svg`;\nconst Pix = `${process.env.PUBLIC_URL}/img/cards/pix.svg`;\n\nconst PagamentoInscricao = ({ props }) => {\n const dispatch = useDispatch();\n const [isRedirect, setIsRedirect] = useState(false);\n const [formaPagamento, setformaPagamento] = useState('cartaocredito');\n const certificado = useSelector((state) => state.certificados.certificado);\n const isFetching = useSelector((state) => state.certificados.isFetching);\n const isProcessing = useSelector((state) => state.inscricoes.isProcessing);\n const error = useSelector((state) => state.inscricoes.error);\n const inscricao = useSelector((state) => state.inscricoes.inscricao);\n const { id } = props.match.params;\n\n useEffect(() => {\n dispatch(fetchCertificado(id));\n }, [dispatch, id]);\n\n const onSubmitCartaoCredito = (data) => {\n const pagamento = {\n forma_pagamento: 'cartaocredito',\n };\n const dataArray = data.ExpirationDate.split('/');\n const dataCompleta = `${dataArray[0]}/20${dataArray[1]}`;\n const numeroCartao = data.CardNumber.replaceAll('-', '');\n const creditcard = {\n CardNumber: numeroCartao,\n Holder: data.Holder,\n ExpirationDate: dataCompleta,\n SecurityCode: data.SecurityCode,\n Brand: 'visa',\n };\n pagamento.creditcard = creditcard;\n dispatch(novaInscricaoCartaoCredito(id, pagamento));\n setIsRedirect(true);\n };\n\n const onSubmitBoletoBancario = (data) => {\n const pagamento = {\n forma_pagamento: 'boletobancario',\n };\n const cpf = data.cpf.replaceAll('-', '').replaceAll('.', '');\n const cep = data.cep.replaceAll('-', '').replaceAll('.', '');\n const boletobancario = {\n cpf: cpf,\n cep: cep,\n uf: data.uf,\n cidade: data.cidade,\n bairro: data.bairro,\n endereco: data.endereco,\n };\n pagamento.boletobancario = boletobancario;\n dispatch(novaInscricaoBoletoBancario(id, pagamento));\n setIsRedirect(true);\n };\n\n const onSubmitCupom = (data) => {\n const pagamento = {\n forma_pagamento: 'cupom',\n codigo: data.codigo,\n };\n dispatch(novaInscricaoCupom(id, pagamento));\n setIsRedirect(true);\n };\n\n const handleChange = (event) => {\n setformaPagamento(event);\n };\n\n if (isRedirect && !isFetching && !isProcessing && inscricao && !error) {\n return <Redirect to={`/pagamento/${inscricao?.pagamento?._id}`} />;\n }\n\n return (\n <Col md={12} lg={12}>\n <Card>\n <CardBody>\n <div className=\"card__title\">\n <h5 className=\"bold-text\">Pagamento</h5>\n </div>\n {!isFetching && error && (\n <Alert color=\"danger\">\n <p>\n {`Não foi possÃvel efetuar o pagamento. Status de erro: ${error}`}\n </p>\n </Alert>\n )}\n {(isFetching || isProcessing) && (\n <Spinner className=\"loading-spinner\" />\n )}\n {certificado && !isFetching && !isProcessing && (\n <div className=\"payment\">\n <form className=\"form payment__credit-cards\">\n <div className=\"form__form-group\">\n <span className=\"form__form-group-label\">\n Escolha uma forma de pagamento:\n </span>\n <div className=\"form__form-group-field\">\n <div className=\"payment__credit-card\">\n <Field\n name=\"forma_pagamento\"\n component={renderRadioButtonField}\n onChange={handleChange}\n // eslint-disable-next-line\n label={\n <div>\n <img\n className=\"payment__credit-card_img\"\n src={Cupom}\n alt=\"cupom\"\n />\n <p className=\"payment__credit-name\">Cupom</p>\n </div>\n }\n radioValue=\"cupom\"\n defaultChecked\n />\n </div>\n <div className=\"payment__credit-card\">\n <Field\n name=\"forma_pagamento\"\n component={renderRadioButtonField}\n onChange={handleChange}\n // eslint-disable-next-line\n label={\n <div>\n <img\n className=\"payment__credit-card_img\"\n src={CartaoCredito}\n alt=\"mc\"\n />\n <p className=\"payment__credit-name\">\n Cartão de crédito\n </p>\n </div>\n }\n radioValue=\"cartaocredito\"\n />\n </div>\n <div\n className=\"payment__credit-card\"\n style={{ display: 'none' }}\n >\n <Field\n name=\"forma_pagamento\"\n component={renderRadioButtonField}\n onChange={handleChange}\n // eslint-disable-next-line\n label={\n <div>\n <img\n className=\"payment__credit-card_img\"\n src={BoletoBancario}\n alt=\"visa\"\n />\n <p className=\"payment__credit-name\">\n Boleto Bancário\n </p>\n </div>\n }\n radioValue=\"boleto\"\n />\n </div>\n <div\n className=\"payment__credit-card\"\n style={{ display: 'none' }}\n >\n <Field\n name=\"forma_pagamento\"\n component={renderRadioButtonField}\n onChange={handleChange}\n // eslint-disable-next-line\n label={\n <div>\n <img\n className=\"payment__credit-card_img\"\n src={Pix}\n alt=\"paypal\"\n />\n <p className=\"payment__credit-name\">Pix</p>\n </div>\n }\n radioValue=\"pix\"\n />\n </div>\n </div>\n </div>\n </form>\n {formaPagamento === 'cartaocredito' ? (\n <CartaoCreditoForm\n onSubmit={onSubmitCartaoCredito}\n certificado={certificado}\n />\n ) : formaPagamento === 'boleto' ? (\n <BoletoBancarioForm\n onSubmit={onSubmitBoletoBancario}\n certificado={certificado}\n />\n ) : formaPagamento === 'cupom' ? (\n <CupomForm onSubmit={onSubmitCupom} certificado={certificado} />\n ) : (\n ''\n )}\n </div>\n )}\n </CardBody>\n </Card>\n </Col>\n );\n};\nexport default reduxForm({\n form: 'metodopagamento', // a unique identifier for this form\n})(PagamentoInscricao);\n","import React from 'react';\nimport { Col, Container, Row } from 'reactstrap';\nimport DetalheCertificado from '../Comuns/DetalheCertificado';\nimport PagamentoInscricao from './components/PagamentoInscricao';\n\nconst Inscricao = (props) => (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Inscrição</h1>\n <h3 className=\"page-subhead subhead\">\n Após selecionar a forma de pagamento e realizar sua inscrição, você\n poderá fazer o teste e emitir o seu certificado.\n </h3>\n </Col>\n </Row>\n <Row>\n <Col lg={{ span: 8, order: 1 }} md={8} xs={{ span: 12, order: 2 }}>\n <PagamentoInscricao props={props} />\n </Col>\n <Col\n lg={{ span: 4, order: 2 }}\n md={4}\n xs={{ span: 12, order: 1 }}\n className=\"mb-4\"\n >\n <DetalheCertificado props={props} />\n </Col>\n </Row>\n </Container>\n);\n\nexport default Inscricao;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SortIcon from 'mdi-react/SortIcon';\nimport SortAscendingIcon from 'mdi-react/SortAscendingIcon';\nimport SortDescendingIcon from 'mdi-react/SortDescendingIcon';\n\nconst Header = ({ column, isSortable }) => (\n <span className=\"react-table__column-header\">\n <span className={isSortable ? 'react-table__column-header sortable' : ''}>\n {column.render('Header')}\n </span>\n {isSortable && column.canSort && <Sorting column={column} />}\n </span>\n);\n\nHeader.propTypes = {\n column: PropTypes.shape({\n Header: PropTypes.string,\n disableGlobalFilter: PropTypes.bool,\n accessor: PropTypes.func,\n render: PropTypes.func,\n canSort: PropTypes.bool,\n }).isRequired,\n isSortable: PropTypes.bool.isRequired,\n};\n\nconst Sorting = ({ column }) => (\n <span className=\"react-table__column-header sortable\">\n {column.isSortedDesc === undefined ? (\n <SortIcon />\n ) : (\n <span>\n {column.isSortedDesc\n ? <SortDescendingIcon />\n : <SortAscendingIcon />}\n </span>\n )}\n </span>\n);\n\nSorting.propTypes = {\n column: PropTypes.shape({\n Header: PropTypes.string,\n disableGlobalFilter: PropTypes.bool,\n accessor: PropTypes.func,\n isSorted: PropTypes.bool,\n isSortedDesc: PropTypes.bool,\n }).isRequired,\n};\n\nconst getStylesResizable = (props, align = 'left') => [\n props,\n {\n style: {\n justifyContent: align === 'right' ? 'flex-end' : 'flex-start',\n alignItems: 'flex-start',\n display: 'flex',\n },\n },\n];\n\nconst ReactTableHeader = ({ headerGroups, isResizable, isSortable }) => {\n const headerPropsSortable = (props, { column }) => {\n if (column.getSortByToggleProps && isSortable) {\n return column.getSortByToggleProps;\n }\n return { column };\n };\n const headerPropsResize = (props, { column }) => {\n if (column.getResizerProps) {\n return getStylesResizable(props, column.align);\n }\n return { column };\n };\n\n return (\n <thead className=\"thead th\">\n {headerGroups.map(headerGroup => (\n <tr {...headerGroup.getHeaderGroupProps()} className=\"react-table thead tr\">\n {headerGroup.headers.map(column => (\n <th\n {...column.getHeaderProps(headerPropsSortable)}\n {...column.getHeaderProps(headerPropsResize)}\n {...column.getHeaderProps()}\n >\n <Header\n column={column}\n isSortable={isSortable}\n />\n {isResizable && (\n <div {...column.getResizerProps()} className={`resizer ${column.isResizing && 'isResizing'}`} />\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n );\n};\n\nReactTableHeader.propTypes = {\n headerGroups: PropTypes.arrayOf(PropTypes.shape({\n headers: PropTypes.arrayOf(PropTypes.shape()),\n getHeaderGroupProps: PropTypes.func,\n getFooterGroupProps: PropTypes.func,\n })).isRequired,\n isResizable: PropTypes.bool.isRequired,\n isSortable: PropTypes.bool.isRequired,\n};\n\nexport default ReactTableHeader;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { ThemeProps } from '../../../prop-types/ReducerProps';\n\nconst ReactTableDefaultBody = ({ page, getTableBodyProps, prepareRow }) => (\n <tbody className=\"table table--bordered\" {...getTableBodyProps()}>\n {page.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n ))}\n </tr>\n );\n })}\n </tbody>\n);\n\nReactTableDefaultBody.propTypes = {\n page: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n getTableBodyProps: PropTypes.func.isRequired,\n prepareRow: PropTypes.func.isRequired,\n};\n\nconst ReactTableBody = ({\n page,\n getTableBodyProps,\n prepareRow,\n withDragAndDrop,\n updateDraggableData,\n theme,\n}) => (\n <Fragment>\n <ReactTableDefaultBody\n page={page}\n getTableBodyProps={getTableBodyProps}\n prepareRow={prepareRow}\n />\n </Fragment>\n);\n\nReactTableBody.propTypes = {\n page: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n getTableBodyProps: PropTypes.func.isRequired,\n prepareRow: PropTypes.func.isRequired,\n updateDraggableData: PropTypes.func.isRequired,\n withDragAndDrop: PropTypes.bool.isRequired,\n theme: ThemeProps.isRequired,\n};\n\nexport default connect((state) => ({\n theme: state.theme,\n}))(ReactTableBody);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ReactTableFooter = ({ footerGroups }) => (\n <tfoot className=\"tfoot\">\n {footerGroups.map(group => (\n <tr {...group.getFooterGroupProps()}>\n {group.headers.map(column => (\n <td {...column.getFooterProps()}>{column.render('Footer')}</td>\n ))}\n </tr>\n ))}\n </tfoot>\n);\n\nReactTableFooter.propTypes = {\n footerGroups: PropTypes.arrayOf(PropTypes.shape({\n headers: PropTypes.arrayOf(PropTypes.shape()),\n getFooterGroupProps: PropTypes.func,\n })).isRequired,\n};\n\nexport default ReactTableFooter;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useAsyncDebounce } from 'react-table';\nimport { Input } from 'reactstrap';\n\nconst ReactTableFilter = ({\n rows,\n setGlobalFilter, setFilterValue,\n globalFilter, placeholder, dataLength,\n}) => {\n const [value, setValue] = useState(globalFilter);\n const onChange = useAsyncDebounce((item) => {\n setGlobalFilter(item || undefined);\n }, 200);\n if (value) {\n setFilterValue(value);\n }\n\n return (\n <div className=\"table__search\">\n <Input\n className=\"table__search table__search-input\"\n value={value}\n onChange={(e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n placeholder={`${placeholder}`}\n />\n {dataLength !== rows.length && (\n <span>Found {rows.length} matches</span>\n )}\n </div>\n );\n};\n\nconst filterGreaterThan = (rows, id, filterValue) => rows.filter((row) => {\n const rowValue = row.values[id];\n return rowValue >= filterValue;\n});\n\nfilterGreaterThan.autoRemove = val => typeof val !== 'number';\n\nReactTableFilter.propTypes = {\n rows: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n setGlobalFilter: PropTypes.func.isRequired,\n setFilterValue: PropTypes.func,\n globalFilter: PropTypes.string,\n placeholder: PropTypes.string,\n dataLength: PropTypes.number.isRequired,\n};\n\nReactTableFilter.defaultProps = {\n setFilterValue: () => {},\n globalFilter: undefined,\n placeholder: 'Search...',\n};\n\nexport default ReactTableFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Pagination,\n PaginationItem,\n PaginationLink,\n FormGroup,\n Input,\n} from 'reactstrap';\nimport ChevronRightIcon from 'mdi-react/ChevronRightIcon';\nimport ChevronDoubleRightIcon from 'mdi-react/ChevronDoubleRightIcon';\nimport ChevronLeftIcon from 'mdi-react/ChevronLeftIcon';\nimport ChevronDoubleLeftIcon from 'mdi-react/ChevronDoubleLeftIcon';\n\nconst ReactTablePagination = ({\n dataLength,\n page,\n gotoPage,\n canPreviousPage,\n pageOptions,\n pageSize,\n pageIndex,\n previousPage,\n nextPage,\n canNextPage,\n setPageSize,\n manualPageSize,\n}) => {\n const arrayPageIndex =\n pageIndex - 2 < 0\n ? pageOptions.slice(0, pageIndex + 3)\n : pageOptions.slice(pageIndex - 2, pageIndex + 3);\n\n return (\n <Pagination className=\"pagination\" dir=\"ltr\">\n <div className=\"pagination\">\n <PaginationLink\n className=\"pagination__link pagination__link--arrow\"\n type=\"button\"\n onClick={() => gotoPage(0)}\n disabled={!canPreviousPage}\n >\n <ChevronDoubleLeftIcon className=\"pagination__link-icon\" />\n </PaginationLink>\n <PaginationLink\n className=\"pagination__link pagination__link--arrow\"\n type=\"button\"\n onClick={previousPage}\n disabled={!canPreviousPage}\n >\n <ChevronLeftIcon className=\"pagination__link-icon\" />\n </PaginationLink>\n {arrayPageIndex.map((i) => (\n <PaginationItem\n className=\"pagination__item\"\n active={pageIndex === i}\n key={i}\n >\n <PaginationLink\n key={i}\n className=\"pagination__link\"\n type=\"button\"\n onClick={() => gotoPage(i)}\n >\n {i + 1}\n </PaginationLink>\n </PaginationItem>\n ))}\n <PaginationItem className=\"pagination__item\">\n <PaginationLink\n className=\"pagination__link pagination__link--arrow\"\n type=\"button\"\n onClick={nextPage}\n disabled={!canNextPage}\n >\n <ChevronRightIcon className=\"pagination__link-icon\" />\n </PaginationLink>\n </PaginationItem>\n <PaginationItem className=\"pagination__item\">\n <PaginationLink\n className=\"pagination__link pagination__link--arrow\"\n type=\"button\"\n onClick={() => gotoPage(pageOptions.length - 1)}\n disabled={!canNextPage}\n >\n <ChevronDoubleRightIcon className=\"pagination__link-icon\" />\n </PaginationLink>\n </PaginationItem>\n <PaginationItem className=\"pagination__item pagination-info\">\n Mostrando {pageSize * pageIndex + 1} de{' '}\n {pageSize * pageIndex + page.length} a {dataLength}\n </PaginationItem>\n {manualPageSize.length > 1 && (\n <PaginationItem className=\"pagination__item\">\n <FormGroup className=\"pagination__select-form \">\n <Input\n className=\"pagination__item pagination-info\"\n type=\"select\"\n name=\"select\"\n id=\"exampleSelect\"\n value={pageSize}\n onChange={(event) => {\n setPageSize(Number(event.target.value));\n }}\n >\n {manualPageSize.map((item) => (\n <option\n className=\"pagination__item pagination__item-option\"\n key={item}\n value={item}\n >\n Ver {item}\n </option>\n ))}\n </Input>\n </FormGroup>\n </PaginationItem>\n )}\n </div>\n </Pagination>\n );\n};\n\nReactTablePagination.propTypes = {\n dataLength: PropTypes.number.isRequired,\n page: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n gotoPage: PropTypes.func.isRequired,\n canNextPage: PropTypes.bool.isRequired,\n canPreviousPage: PropTypes.bool.isRequired,\n pageOptions: PropTypes.arrayOf(PropTypes.number).isRequired,\n pageSize: PropTypes.number.isRequired,\n pageIndex: PropTypes.number.isRequired,\n previousPage: PropTypes.func.isRequired,\n nextPage: PropTypes.func.isRequired,\n setPageSize: PropTypes.func.isRequired,\n manualPageSize: PropTypes.arrayOf(PropTypes.number),\n};\n\nReactTablePagination.defaultProps = {\n manualPageSize: [10, 20, 30, 40],\n};\n\nexport default ReactTablePagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n useTable, useGlobalFilter, usePagination, useSortBy, useResizeColumns, useRowSelect,\n} from 'react-table';\nimport ReactTableHeader from './ReactTableHeader';\nimport BodyReactTable from './ReactTableBody';\nimport ReactTableFooter from './ReactTableFooter';\nimport ReactTableFilter from './ReactTableFilter';\nimport ReactTablePagination from './ReactTablePagination';\n\nconst ReactTableConstructor = ({\n tableConfig, tableOptions, tableOptionalHook,\n}) => {\n const {\n isEditable,\n isResizable,\n isSortable,\n withPagination,\n withSearchEngine,\n manualPageSize,\n placeholder,\n } = tableConfig;\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n footerGroups,\n state,\n rows,\n prepareRow,\n page,\n pageCount,\n pageOptions,\n gotoPage,\n previousPage,\n canPreviousPage,\n nextPage,\n canNextPage,\n setPageSize,\n setGlobalFilter,\n withDragAndDrop,\n updateDraggableData,\n updateEditableData,\n dataLength,\n state: { pageIndex, pageSize },\n } = useTable(\n tableOptions,\n useGlobalFilter,\n useSortBy,\n usePagination,\n useResizeColumns,\n useRowSelect,\n ...tableOptionalHook,\n );\n\n return (\n <div>\n {withSearchEngine && (\n <ReactTableFilter\n rows={rows}\n setGlobalFilter={setGlobalFilter}\n setFilterValue={tableOptions.setFilterValue}\n globalFilter={state.globalFilter}\n placeholder={placeholder}\n dataLength={dataLength}\n />\n )}\n <div className={withPagination ? 'table react-table' : 'table react-table table--not-pagination'}>\n <table\n {...getTableProps()}\n className={isEditable ? 'react-table editable-table' : 'react-table resizable-table'}\n >\n <ReactTableHeader\n headerGroups={headerGroups}\n isSortable={isSortable}\n isResizable={isResizable}\n />\n <BodyReactTable\n page={page}\n getTableBodyProps={getTableBodyProps}\n prepareRow={prepareRow}\n updateDraggableData={updateDraggableData}\n updateEditableData={updateEditableData}\n isEditable={isEditable}\n withDragAndDrop={withDragAndDrop}\n />\n {(pageCount === (pageIndex + 1) || (!withPagination && rows.length !== 0)) && (\n <ReactTableFooter\n footerGroups={footerGroups}\n />\n )}\n </table>\n </div>\n {(withPagination && rows.length > 0) && (\n <ReactTablePagination\n page={page}\n gotoPage={gotoPage}\n previousPage={previousPage}\n nextPage={nextPage}\n canPreviousPage={canPreviousPage}\n canNextPage={canNextPage}\n pageOptions={pageOptions}\n pageSize={pageSize}\n pageIndex={pageIndex}\n pageCount={pageCount}\n setPageSize={setPageSize}\n manualPageSize={manualPageSize}\n dataLength={dataLength}\n />\n )}\n </div>\n );\n};\n\nReactTableConstructor.propTypes = {\n tableConfig: PropTypes.shape({\n isEditable: PropTypes.bool,\n isResizable: PropTypes.bool,\n isSortable: PropTypes.bool,\n withDragAndDrop: PropTypes.bool,\n withPagination: PropTypes.bool,\n withSearchEngine: PropTypes.bool,\n manualPageSize: PropTypes.arrayOf(PropTypes.number),\n placeholder: PropTypes.string,\n }),\n tableOptions: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string,\n name: PropTypes.string,\n })),\n data: PropTypes.arrayOf(PropTypes.shape()),\n setFilterValue: PropTypes.func,\n updateDraggableData: PropTypes.func,\n updateEditableData: PropTypes.func,\n defaultColumn: PropTypes.oneOfType([\n PropTypes.any,\n PropTypes.shape({\n Cell: PropTypes.func,\n }).isRequired,\n ]),\n isEditable: PropTypes.bool,\n withDragAndDrop: PropTypes.bool,\n dataLength: PropTypes.number,\n }),\n tableOptionalHook: PropTypes.arrayOf(PropTypes.func).isRequired,\n};\n\nReactTableConstructor.defaultProps = {\n tableConfig: {\n isEditable: false,\n isResizable: false,\n isSortable: false,\n withDragAndDrop: false,\n withPagination: false,\n withSearchEngine: false,\n manualPageSize: [10, 20, 30, 40],\n placeholder: 'Search...',\n },\n tableOptions: [{\n columns: [],\n data: [],\n setFilterValue: () => {},\n updateDraggableData: () => {},\n updateEditableData: () => {},\n defaultColumn: [],\n withDragAndDrop: false,\n dataLength: null,\n disableSortBy: false,\n manualSortBy: false,\n manualGlobalFilter: false,\n manualPagination: false,\n }],\n};\n\nexport default ReactTableConstructor;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Highlighter from 'react-highlight-words';\n\nconst ReactTableCell = ({ value: initialValue, state, column }) => (\n <Fragment>\n {column.disableGlobalFilter ? (\n <Fragment>{initialValue}</Fragment>\n ) : (\n <Highlighter\n className=\"react-table__highlighter\"\n searchWords={[state.globalFilter]}\n autoEscape\n textToHighlight={initialValue}\n />\n )}\n </Fragment>\n);\n\nReactTableCell.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n state: PropTypes.shape({\n globalFilter: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n }).isRequired,\n column: PropTypes.shape().isRequired,\n};\n\nexport default ReactTableCell;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Input } from 'reactstrap';\nimport ReactTableCell from './ReactTableCell';\n\nconst EditableCell = ({\n value: initialValue,\n row: { index },\n column: { id },\n column,\n state,\n updateEditableData,\n}) => {\n const [value, setValue] = useState(initialValue);\n const [isActiveInput, setIsActiveInput] = useState(false);\n\n const handleClick = () => {\n setIsActiveInput(!isActiveInput);\n };\n const onChange = (event) => {\n setValue(event.target.value);\n };\n const updateData = () => {\n updateEditableData(index, id, value);\n setIsActiveInput(false);\n };\n const handleKeyPress = (event) => {\n if (event.key === 'Enter') {\n updateData();\n }\n };\n\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n return (\n <div onDoubleClick={handleClick}>\n {isActiveInput ? (\n <div className=\"table__editable-table--cell-active\">\n <Input\n className=\"table__edit-form\"\n value={value}\n onChange={onChange}\n onBlur={updateData}\n onKeyPress={handleKeyPress}\n />\n </div>\n ) : (\n <ReactTableCell\n value={value}\n column={column}\n state={state}\n />\n )}\n </div>\n );\n};\n\nEditableCell.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n row: PropTypes.shape({\n index: PropTypes.number,\n }).isRequired,\n column: PropTypes.shape({\n id: PropTypes.string,\n }).isRequired,\n state: PropTypes.shape({\n globalFilter: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n }).isRequired,\n updateEditableData: PropTypes.func.isRequired,\n};\n\nexport default EditableCell;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useFlexLayout } from 'react-table';\nimport ReactTableConstructor from './components/ReactTableConstructor';\nimport ReactTableCell from './components/ReactTableCell';\nimport ReactTableCellEditable from './components/ReactTableEditableCell';\n\nconst ReactTableBase = ({\n tableConfig,\n columns,\n data,\n updateDraggableData,\n updateEditableData,\n}) => {\n const {\n isEditable,\n isResizable,\n isSortable,\n withDragAndDrop,\n withPagination,\n withSearchEngine,\n manualPageSize,\n } = tableConfig;\n const [filterValue, setFilterValue] = useState(null);\n const tableOptions = {\n columns,\n data,\n updateDraggableData,\n updateEditableData,\n setFilterValue,\n defaultColumn: {},\n isEditable,\n withDragAndDrop: withDragAndDrop || false,\n dataLength: data.length,\n autoResetPage: false,\n disableSortBy: !isSortable,\n manualSortBy: !isSortable,\n manualGlobalFilter: !withSearchEngine,\n manualPagination: !withPagination,\n initialState: {\n pageIndex: 0,\n pageSize: manualPageSize ? manualPageSize[0] : 10,\n globalFilter: withSearchEngine && filterValue ? filterValue : undefined,\n },\n };\n\n let tableOptionalHook = [];\n if (isResizable) tableOptionalHook = [useFlexLayout];\n if (withSearchEngine) {\n tableOptions.defaultColumn = {\n Cell: ReactTableCell,\n };\n }\n if (isEditable) {\n tableOptions.defaultColumn = {\n Cell: ReactTableCellEditable,\n };\n }\n\n return (\n <ReactTableConstructor\n key={isResizable || isEditable ? 'modified' : 'common'}\n tableConfig={tableConfig}\n tableOptions={tableOptions}\n tableOptionalHook={tableOptionalHook}\n />\n );\n};\n\nReactTableBase.propTypes = {\n tableConfig: PropTypes.shape({\n isEditable: PropTypes.bool,\n isResizable: PropTypes.bool,\n isSortable: PropTypes.bool,\n withDragAndDrop: PropTypes.bool,\n withPagination: PropTypes.bool,\n withSearchEngine: PropTypes.bool,\n manualPageSize: PropTypes.arrayOf(PropTypes.number),\n }),\n columns: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string,\n name: PropTypes.string,\n })),\n data: PropTypes.arrayOf(PropTypes.shape()),\n updateDraggableData: PropTypes.func,\n updateEditableData: PropTypes.func,\n};\n\nReactTableBase.defaultProps = {\n tableConfig: {\n isEditable: false,\n isResizable: false,\n isSortable: false,\n withDragAndDrop: false,\n withPagination: false,\n withSearchEngine: false,\n manualPageSize: [],\n },\n columns: [\n { Header: '#', accessor: 'id' },\n { Header: 'Header Example Title one', accessor: 'first' },\n { Header: 'Header Example Title two', accessor: 'last' },\n ],\n data: [\n { id: 1, first: 'Cell Example Data one', last: 'Cell Example Data two' },\n { id: 2, first: 'Cell Example Data three', last: 'Cell Example Data four' },\n ],\n updateDraggableData: () => {},\n updateEditableData: () => {},\n};\n\nexport default ReactTableBase;\n","import { get } from './base/index';\nimport { API, getUserId } from '../helpers';\n\nexport default {\n getPagamento: (id) => get(`${API}/pagamento/${id}/${getUserId()}`),\n getPagamentosAluno: () => get(`${API}/pagamentos/aluno/${getUserId()}`),\n};\n","import { createAction } from 'redux-actions';\nimport pagamentosApi from '../../utils/api/pagamentosApi';\n\nexport const fetchPagamentoRequest = createAction('FETCH_PAGAMENTO_REQUEST');\nexport const fetchPagamentoSuccess = createAction('FETCH_PAGAMENTO_SUCCESS');\nexport const fetchPagamentoError = createAction('FETCH_PAGAMENTO_ERROR');\n\nexport const fetchPagamentosAlunoRequest = createAction(\n 'FETCH_PAGAMENTOS_ALUNO_REQUEST'\n);\nexport const fetchPagamentosAlunoSuccess = createAction(\n 'FETCH_PAGAMENTOS_ALUNO_SUCCESS'\n);\nexport const fetchPagamentosAlunoError = createAction(\n 'FETCH_PAGAMENTOS_ALUNO_ERROR'\n);\n\nexport const fetchPagamento = (id) => async (dispatch) => {\n try {\n dispatch(fetchPagamentoRequest());\n const { data } = await pagamentosApi.getPagamento(id);\n dispatch(fetchPagamentoSuccess(data));\n } catch (e) {\n console.log(e.response);\n dispatch(fetchPagamentoError(e));\n }\n};\n\nexport const fetchPagamentosAluno = () => async (dispatch) => {\n try {\n dispatch(fetchPagamentosAlunoRequest());\n const { data } = await pagamentosApi.getPagamentosAluno();\n dispatch(fetchPagamentosAlunoSuccess(data));\n } catch (e) {\n console.log(e.response);\n dispatch(fetchPagamentosAlunoError(e));\n }\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Badge, Card, Spinner } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport EyeIcon from 'mdi-react/EyeIcon';\nimport moment from 'moment';\nimport TimerSandEmptyIcon from 'mdi-react/TimerSandEmptyIcon';\nimport ReactTableBase from '../../../shared/components/table/ReactTableBase';\nimport { fetchPagamentosAluno } from '../../../redux/actions/pagamentosActions';\n\nconst imagensPagamento = {\n cupom: `${process.env.PUBLIC_URL}/img/cards/cupom.svg`,\n cartaocredito: `${process.env.PUBLIC_URL}/img/cards/cartao.svg`,\n boletobancario: `${process.env.PUBLIC_URL}/img/cards/boleto.svg`,\n pix: `${process.env.PUBLIC_URL}/img/cards/pix.svg`,\n};\n\nconst ListaPagamentos = ({ props }) => {\n const dispatch = useDispatch();\n const pagamentos = useSelector((state) => state.pagamentos.pagamentos);\n const isFetching = useSelector((state) => state.pagamentos.isFetching);\n\n const colunas = useMemo(\n () => [\n {\n Header: 'DATA',\n accessor: 'data',\n disableGlobalFilter: true,\n width: 250,\n },\n {\n Header: 'CERTIFICADO',\n accessor: 'certificadoTitulo',\n disableGlobalFilter: true,\n width: 200,\n },\n {\n Header: 'VALOR',\n accessor: 'valor',\n disableGlobalFilter: true,\n width: 80,\n },\n {\n Header: 'FORMA DE PAGAMENTO',\n accessor: 'forma_pagamento',\n disableGlobalFilter: true,\n width: 80,\n },\n {\n Header: 'SITUAÇÃO',\n accessor: 'status',\n disableGlobalFilter: true,\n width: 80,\n },\n {\n Header: '',\n accessor: 'acao',\n disableGlobalFilter: true,\n width: 60,\n },\n ],\n []\n );\n\n const dadosTabela = (pagamentos) => {\n moment.locale('pt-br');\n return pagamentos.map((pagamento) => ({\n data: moment(pagamento.createdAt).format('DD/MM/YYYY HH:mm'),\n certificadoTitulo: pagamento.certificado?.titulo,\n valor: `R$ ${pagamento.valor},00`,\n forma_pagamento: (\n <img\n className=\"payment__credit-card_img\"\n src={imagensPagamento[pagamento.forma_pagamento]}\n alt=\"visa\"\n />\n ),\n status: (\n <Badge className={`badge--${pagamento.status}`}>\n {pagamento.status}\n </Badge>\n ),\n acao: (\n <Link\n color=\"primary\"\n className=\"btn btn-outline-secondary btn-sm list__table-btn-action mb-0 px-2\"\n to={`/pagamento/${pagamento._id}`}\n >\n <EyeIcon /> Ver detalhes\n </Link>\n ),\n }));\n };\n\n useEffect(() => {\n dispatch(fetchPagamentosAluno());\n }, [dispatch]);\n\n return (\n <Card>\n {isFetching && <Spinner className=\"loading-spinner\" />}\n {pagamentos && pagamentos.length > 0 && !isFetching && (\n <ReactTableBase\n key={'common'}\n columns={colunas}\n data={dadosTabela(pagamentos)}\n tableConfig={{\n isEditable: false,\n isResizable: false,\n isSortable: false,\n withDragAndDrop: false,\n withPagination: true,\n withSearchEngine: false,\n manualPageSize: [10, 20, 30, 40],\n placeholder: 'Search by First name...',\n }}\n />\n )}\n {pagamentos && pagamentos.length === 0 && !isFetching && (\n <div className=\"text-center my-5\">\n <p>\n <TimerSandEmptyIcon className=\"icon-confirmacao--awaiting\" />\n <h4>Nada aqui por enquanto...</h4>\n </p>\n </div>\n )}\n </Card>\n );\n};\n\nexport default ListaPagamentos;\n","import React from 'react';\nimport { Col, Container, Row } from 'reactstrap';\nimport ListaPagamentos from './components/ListaPagamentos';\n\nconst Pagamentos = (props) => (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Pagamentos</h1>\n <h3 className=\"page-subhead subhead\">\n Verifique a situação de seus pagamentos por{' '}\n <strong>CERTIFICADOS</strong>. Os pagamentos das mensalidades do\n Nerdflix ficam disponÃveis no PAINEL da plataforma.\n </h3>\n </Col>\n </Row>\n <Row>\n <Col xl={9}>\n <ListaPagamentos props={props} />\n </Col>\n </Row>\n </Container>\n);\n\nexport default Pagamentos;\n","import React, { Fragment, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Col, Row, Button } from 'reactstrap';\nimport { fetchInscricao } from '../../../redux/actions/inscricoesActions';\nimport { useDispatch, useSelector } from 'react-redux';\n\nconst ResultadoFinal = (props) => {\n const dispatch = useDispatch();\n const inscricaoAtual = useSelector((state) => state.inscricoes.inscricao);\n const { tentativas, aprovado, inscricao } = props;\n useEffect(() => {\n dispatch(fetchInscricao(inscricao));\n }, [dispatch]);\n\n return (\n <Fragment>\n <h3 className=\"bold-text\">Resultado</h3>\n <hr />\n {aprovado.value === 'concluÃdo' ? (\n <>\n <Row className=\"justify-content-center\">\n <h4 className=\"typography-message mb-4\">\n Parabéns, você passou no teste com aprovação de {aprovado.nota}%\n !!\n </h4>\n </Row>\n <Row className=\"img-message-quiz justify-content-center mb-5\">\n <img\n src={process.env.PUBLIC_URL + '/img/quizMessages/comemoracao.png'}\n alt=\"Aprovado\"\n ></img>\n </Row>\n <Row>\n <Col md={6}>\n <Link to=\"/home\">\n <Button\n className=\"mr-5\"\n style={{ width: '50%' }}\n color=\"danger\"\n >\n Sair\n </Button>\n </Link>\n </Col>\n <Col md={6}>\n <Row className=\"justify-content-end mr-1\">\n <Link to={`/certificado/${inscricao}`}>\n <Button\n color=\"primary\"\n style={{ width: '100%' }}\n onClick={() => props.init()}\n >\n Emitir Certificado\n </Button>\n </Link>\n </Row>\n </Col>\n </Row>\n </>\n ) : (\n <>\n <Row className=\"justify-content-center\">\n <h4 className=\"typography-message mb-4\">\n Sinto muito, você não passou no teste com a percentual de{' '}\n {aprovado.nota}% !\n </h4>\n </Row>\n <Row className=\"img-message-quiz justify-content-center mb-5\">\n <img\n src={process.env.PUBLIC_URL + '/img/quizMessages/fail.png'}\n alt=\"Reprovado\"\n ></img>\n </Row>\n <Row>\n {inscricaoAtual &&\n inscricaoAtual.tentativas &&\n inscricaoAtual.tentativas.length >= tentativas ? (\n <Col md={12}>\n <Link to=\"/home\">\n <Button color=\"danger\" style={{ width: '100%' }}>\n Sair\n </Button>\n </Link>\n </Col>\n ) : (\n <>\n <Col md={6}>\n <Link to=\"/home\">\n <Button\n className=\"mr-5\"\n style={{ width: '100%' }}\n color=\"danger\"\n >\n Sair\n </Button>\n </Link>\n </Col>\n <Col md={6}>\n <Row className=\"justify-content-center\">\n <Button\n color=\"warning\"\n style={{ width: '100%' }}\n onClick={() => props.init()}\n >\n Tentar Novamente\n </Button>\n </Row>\n </Col>\n </>\n )}\n </Row>\n </>\n )}\n </Fragment>\n );\n};\n\nexport default ResultadoFinal;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Col, Row, Button, ButtonGroup } from 'reactstrap';\nimport CommentQuestionOutlineIcon from 'mdi-react/CommentQuestionOutlineIcon';\nimport ResultadoFinal from './ResultadoFinal';\nimport { enviarResultadoTeste } from '../../../redux/actions/inscricoesActions';\nimport { useTimer } from 'react-timer-hook';\n\nconst QuizStart = (props) => {\n const dispatch = useDispatch();\n const { certificado, inscricaoAtual } = props;\n const [step, setStep] = useState(0);\n const [questoes, setQuestoes] = useState([]);\n const [finalizado, setFinalizado] = useState(false);\n const [aprovado, setAprovado] = useState({ value: undefined, nota: 0 });\n const { seconds, minutes, pause, restart } = useTimer({\n onExpire: () => finalizar(),\n });\n\n useEffect(() => {\n if (certificado.teste) {\n randomicoTeste();\n const tempo = certificado.tempo_prova * 60;\n const time = new Date();\n time.setSeconds(time.getSeconds() + tempo);\n restart(time);\n pause();\n }\n }, [certificado]);\n\n function init() {\n const tempo = certificado.tempo_prova * 60;\n const time = new Date();\n time.setSeconds(time.getSeconds() + tempo);\n\n setStep(0);\n randomicoTeste();\n setFinalizado(false);\n restart(time);\n pause();\n }\n\n function randomicoTeste() {\n if (certificado.teste) {\n let questions = certificado.teste\n .map((value) => ({ value, sort: Math.random() }))\n .sort((a, b) => a.sort - b.sort)\n .map(({ value }) => value);\n\n for (let indice in questions) {\n const respostas = questions[indice]['respostas']\n .map((value) => ({ value, sort: Math.random() }))\n .sort((a, b) => a.sort - b.sort)\n .map(({ value }) => value);\n\n questions[indice]['respostas'] = respostas;\n }\n setQuestoes(questions);\n }\n }\n\n function definirResposta(item) {\n let questoesAtuais = JSON.parse(JSON.stringify(questoes));\n questoesAtuais[step - 1]['respostaEscolhida'] = item;\n setQuestoes(questoesAtuais);\n }\n\n function finalizar() {\n setFinalizado(true);\n props.setShowResult(true);\n let acertos = 0;\n let questoesIds = [];\n\n for (let indice in questoes) {\n const questao = {\n questaoId: questoes[indice]['numero'],\n respostaId: questoes[indice]['respostaEscolhida']\n ? questoes[indice]['respostaEscolhida']\n : null,\n };\n questoesIds.push(questao);\n\n acertos =\n questoes[indice]['respostaEscolhida'] &&\n questoes[indice]['respostaEscolhida'] ===\n questoes[indice]['resposta_correta']\n ? acertos + 1\n : acertos;\n }\n\n const indiceAprovacao = (acertos * 100) / questoes.length;\n\n let tentativa = {};\n tentativa.data = new Date();\n tentativa.aprovado = false;\n tentativa.percentual = indiceAprovacao.toLocaleString('pt-BR', {\n style: 'decimal',\n maximumFractionDigits: 2,\n });\n tentativa.respostas = questoesIds;\n\n let status = 'em execução';\n if (indiceAprovacao >= certificado.nota_aprovacao) {\n status = 'concluÃdo';\n tentativa.aprovado = true;\n } else if (\n inscricaoAtual &&\n certificado.tentativas === inscricaoAtual.tentativas.length + 1\n ) {\n status = 'falhou';\n }\n\n setAprovado({\n value: status,\n nota: indiceAprovacao.toLocaleString('pt-BR', {\n style: 'decimal',\n maximumFractionDigits: 2,\n }),\n });\n dispatch(enviarResultadoTeste(props.inscricaoId, { tentativa, status }));\n }\n\n return (\n <Fragment>\n {!finalizado ? (\n <div className=\"Content\">\n <div className=\"typography--inline\">\n <Col md={12}>\n <Row className=\"justify-content-end\">\n <div style={{ fontSize: '20px' }}>\n <h3 className=\"subhead\">\n {String(minutes).length === 1\n ? `${minutes}0:`\n : `${minutes}:`}\n {String(seconds).length === 1\n ? `${seconds}0`\n : `${seconds}`}\n </h3>\n <hr />\n </div>\n </Row>\n </Col>\n <Col md={8}>\n <h2>{certificado.titulo}</h2>\n </Col>\n <Col>\n <Row className=\"justify-content-end\">\n <h2 className=\"subhead\">\n (\n {certificado.teste\n ? step === 0\n ? certificado.teste.length\n : `${step}/${certificado.teste.length}`\n : ''}\n )\n </h2>\n </Row>\n </Col>\n </div>\n <hr />\n {step === 0 ? (\n <>\n <h4 className=\"subhead typography-message\">\n {certificado.descricao}\n </h4>\n <Row className=\"justify-content-center mt-4\">\n <Col md={6}>\n <ButtonGroup className=\"btn-group--justified\" dir=\"ltr\">\n <Button\n color=\"success\"\n onClick={() => {\n setStep(1);\n const tempo = certificado.tempo_prova * 60;\n const time = new Date();\n time.setSeconds(time.getSeconds() + tempo);\n restart(time);\n }}\n >\n Iniciar\n </Button>\n </ButtonGroup>\n </Col>\n </Row>\n </>\n ) : (\n <Row>\n <Col md={12}>\n <Row>\n <h3 className=\"bold-text mb-4\">\n <CommentQuestionOutlineIcon className=\"mr-2 ml-4 mt-1\" />\n {questoes[step - 1].descricao}\n </h3>\n </Row>\n </Col>\n <Col md={12} className=\"ml-4 mb-4\">\n {questoes[step - 1].respostas.map((item, index) => (\n <Row key={index}>\n <label>\n <input\n id={index}\n type=\"radio\"\n className=\"mr-2\"\n checked={\n questoes[step - 1]['respostaEscolhida'] &&\n questoes[step - 1]['respostaEscolhida'] ===\n item.numero\n ? true\n : false\n }\n value={item.numero}\n onChange={() => definirResposta(item.numero)}\n />\n <span id={index} className=\"h6\">\n {item.descricao}\n </span>\n </label>\n </Row>\n ))}\n </Col>\n <Col md={12}>\n <Row>\n <Col md={6}>\n <Button\n outline\n onClick={() => setStep(step - 1)}\n disabled={step === 1 ? true : false}\n >\n Voltar\n </Button>\n </Col>\n <Col md={6}>\n {step !== certificado.teste.length ? (\n <Row className=\"justify-content-end mr-1\">\n <Button\n onClick={() => setStep(step + 1)}\n color=\"primary\"\n >\n Próximo\n </Button>\n </Row>\n ) : (\n <Row className=\"justify-content-end mr-1\">\n <Button color=\"danger\" onClick={() => finalizar()}>\n Finalizar\n </Button>\n </Row>\n )}\n </Col>\n </Row>\n </Col>\n </Row>\n )}\n </div>\n ) : (\n <div className=\"testeFinalizado\" hidden={!finalizado}>\n <ResultadoFinal\n aprovado={aprovado}\n tentativas={certificado.tentativas}\n init={init}\n inscricao={props.inscricaoId}\n />\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default QuizStart;\n","import React, { useEffect, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport { Col, Container, Row, Card, CardBody } from 'reactstrap';\nimport QuizStart from './components/QuizStart';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchInscricao } from '../../redux/actions/inscricoesActions';\nimport { fetchCertificado } from '../../redux/actions/certificadosActions';\n\nconst Quiz = (props) => {\n const dispatch = useDispatch();\n const inscricaoAtual = useSelector((state) => state.inscricoes.inscricao);\n const certificado = useSelector((state) => state.certificados.certificado);\n const [permitir, setPermitir] = useState(false);\n const [showResult, setShowResult] = useState(false);\n const { id } = props.match.params;\n const location = useLocation();\n const inscricaoId =\n location && location.state ? location.state.inscricaoId : undefined;\n\n useEffect(() => {\n if (\n (inscricaoAtual && inscricaoAtual.status === 'inscrito') ||\n inscricaoAtual.status === 'em execução'\n ) {\n setPermitir(true);\n }\n }, [inscricaoAtual]);\n\n useEffect(() => {\n dispatch(fetchInscricao(inscricaoId));\n dispatch(fetchCertificado(id));\n }, [dispatch, id, inscricaoId]);\n\n return (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Teste</h1>\n </Col>\n </Row>\n <Row>\n <Col md={12} lg={8}>\n <Card>\n <CardBody>\n {!permitir && !showResult ? (\n <>\n <h4 className=\"bold-text\">Acesso Negado</h4>\n <p className=\"typography-message\">\n Você não pode mais fazer este teste!\n </p>\n </>\n ) : (\n <QuizStart\n inscricaoId={inscricaoId}\n certificado={certificado}\n inscricaoAtual={inscricaoAtual}\n setShowResult={setShowResult}\n />\n )}\n </CardBody>\n </Card>\n </Col>\n </Row>\n </Container>\n );\n};\n\nexport default Quiz;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Badge, Card, CardBody, Col, Spinner, Table } from 'reactstrap';\nimport { fetchInscricao } from '../../../redux/actions/inscricoesActions';\n\nconst DetalheInscricao = ({ props }) => {\n const dispatch = useDispatch();\n const inscricao = useSelector((state) => state.inscricoes.inscricao);\n const isFetching = useSelector((state) => state.inscricoes.isFetching);\n const { id } = props.match.params;\n\n useEffect(() => {\n dispatch(fetchInscricao(id));\n }, [dispatch, id]);\n\n return (\n <Col md={12} lg={12}>\n <Card>\n {isFetching && <Spinner className=\"loading-spinner\" />}\n {inscricao && !isFetching && (\n <CardBody className=\"invoice\">\n <div className=\"invoice__head\">\n <div className=\"invoice__head-left\">\n <div className=\"invoice__logo\" />\n <p>Advanced Digital - Nerdflix</p>\n <p>QS 01 RUA 210, LOTE 40, Sala 214</p>\n <p>Torre A - Taguatinga Shopping,</p>\n <p>BrasÃlia - DF,</p>\n <p>71950-904</p>\n <p>(61) 99904-9526</p>\n </div>\n <div className=\"invoice__head-right\">\n <h4>Inscrição #{inscricao?._id}</h4>\n <p>\n <Badge color=\"success\">{inscricao?.pagamento?.status}</Badge>\n </p>\n <p className=\"invoice__date\">{inscricao?.createdAt}</p>\n <p>{inscricao?.aluno?.name}</p>\n <p>{inscricao?.aluno?.email}</p>\n </div>\n </div>\n <Table className=\"table--bordered\" responsive>\n <thead>\n <tr>\n <th>Certificado</th>\n <th>Carga horária</th>\n <th>Nota de aprovação</th>\n <th>Tempo de prova</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{inscricao?.certificado?.titulo}</td>\n <td>{inscricao?.certificado?.carga_horaria}hs</td>\n <td>{inscricao?.certificado?.nota_aprovacao}%</td>\n <td>{inscricao?.certificado?.tempo_prova}min.</td>\n </tr>\n </tbody>\n </Table>\n <div className=\"invoice__total\">\n <p className=\"invoice__grand-total\">\n Total: R${inscricao?.pagamento?.valor}\n </p>\n </div>\n </CardBody>\n )}\n </Card>\n </Col>\n );\n};\n\nexport default DetalheInscricao;\n","import React from 'react';\nimport { Col, Container, Row } from 'reactstrap';\nimport DetalheInscricao from './components/DetalheInscricao';\n\nconst SituacaoInscricao = (props) => (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Detalhes da Inscrição</h1>\n <h3 className=\"page-subhead subhead\">\n Verifique as situação da sua inscrição e seus pagamentos.\n </h3>\n </Col>\n </Row>\n <Row>\n <Col md={8}>\n <DetalheInscricao props={props} />\n </Col>\n </Row>\n </Container>\n);\n\nexport default SituacaoInscricao;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Card, CardBody, Col, Container, Row, Spinner } from 'reactstrap';\nimport { fetchInscricao } from '../../../redux/actions/inscricoesActions';\n\nconst DetalheInscricao = ({ props }) => {\n const dispatch = useDispatch();\n const { id } = props.match.params;\n const inscricao = useSelector((state) => state.inscricoes.inscricao);\n const { certificado } = inscricao;\n const isFetching = useSelector((state) => state.inscricoes.isFetching);\n\n useEffect(() => {\n dispatch(fetchInscricao(id));\n }, [dispatch, id]);\n\n return (\n <Container className=\"container-lateral\">\n <Card>\n <CardBody>\n <Row>\n {isFetching && <Spinner className=\"loading-spinner\" />}\n {certificado && (\n <Col md={12}>\n <h5 className=\"bold-text text-uppercase\">Aluno</h5>\n <p>{inscricao?.aluno?.name}</p>\n <h5 className=\"bold-text text-uppercase mt-2\">Certificado</h5>\n <p className=\"bold-text\">{certificado?.titulo}</p>\n <p>{certificado?.descricao}</p>\n <ul className=\"list list--icon list--icon-green mt-2\">\n <li>\n <p>\n <span className=\"lnr lnr-clock\" />\n Tempo de prova: {certificado?.tempo_prova} minutos\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-graduation-hat\" />\n Carga Horária: {certificado?.carga_horaria} horas\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-checkmark-circle\" />\n Nota para aprovação: {certificado?.nota_aprovacao}%\n </p>\n </li>\n <li>\n <p>\n <span className=\"lnr lnr-bubble\" />\n Professor: {certificado?.professor?.name}\n </p>\n </li>\n </ul>\n </Col>\n )}\n </Row>\n </CardBody>\n </Card>\n </Container>\n );\n};\n\nexport default DetalheInscricao;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Card, CardBody, Col, Row } from 'reactstrap';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { Link } from 'react-router-dom';\nimport { fetchPdfCertificado } from '../../../redux/actions/inscricoesActions';\nimport DetalheInscricao from '../../Comuns/DetalheInscricao';\nimport DownloadIcon from 'mdi-react/DownloadIcon';\nimport ArrowLeftIcon from 'mdi-react/ArrowLeftIcon';\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nconst CertificadoGerado = ({ props }) => {\n const dispatch = useDispatch();\n const { id } = props.match.params;\n const pdfCertificado = useSelector(\n (state) => state.inscricoes.pdfCertificado\n );\n const isFetching = useSelector((state) => state.inscricoes.isFetching);\n\n useEffect(() => {\n dispatch(fetchPdfCertificado(id));\n }, [dispatch, id]);\n\n return (\n <Row>\n <Col lg={{ span: 8, order: 1 }} md={8} xs={{ span: 12, order: 2 }}>\n <Card>\n <CardBody>\n {!isFetching && (\n <Document\n file={`data:application/pdf;base64,${pdfCertificado?.pdf}`}\n >\n <Page pageNumber={1} />\n </Document>\n )}\n </CardBody>\n </Card>\n </Col>\n <Col\n lg={{ span: 4, order: 2 }}\n md={4}\n xs={{ span: 12, order: 1 }}\n className=\"mb-4\"\n >\n <DetalheInscricao props={props} />\n <Row className=\"justify-content-center mt-3\">\n <a\n download={`certificado-nerdflix-${id}`}\n className=\"btn btn-primary px-5\"\n href={`data:application/pdf;base64,${pdfCertificado?.pdf}`}\n >\n <DownloadIcon className=\"mr-2\" />\n BAIXAR\n </a>\n <Link className=\"btn btn-secondary px-5\" to=\"/\">\n <ArrowLeftIcon className=\"mr-2\" /> VOLTAR\n </Link>\n </Row>\n </Col>\n </Row>\n );\n};\n\nexport default CertificadoGerado;\n","import React from 'react';\nimport { Col, Row, Container } from 'reactstrap';\nimport CertificadoGerado from './Components/Certificado';\n\nconst Certificado = (props) => {\n return (\n <Container>\n <Row>\n <Col md={12}>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Emitir Certificado</h1>\n </Col>\n </Row>\n </Col>\n </Row>\n\n <CertificadoGerado props={props} />\n </Container>\n );\n};\n\nexport default Certificado;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Card, CardBody, Col, Row, Spinner } from 'reactstrap';\nimport CheckCircleOutlineIcon from 'mdi-react/CheckCircleOutlineIcon';\nimport TimerSandEmptyIcon from 'mdi-react/TimerSandEmptyIcon';\nimport CancelIcon from 'mdi-react/CancelIcon';\nimport CloseCircleIcon from 'mdi-react/CloseCircleIcon';\nimport { fetchPagamento } from '../../../redux/actions/pagamentosActions';\n\nconst DetalhePagamento = ({ props }) => {\n const dispatch = useDispatch();\n const pagamento = useSelector((state) => state.pagamentos.pagamento);\n const isFetching = useSelector((state) => state.pagamentos.isFetching);\n const { id } = props.match.params;\n\n useEffect(() => {\n dispatch(fetchPagamento(id));\n }, [dispatch, id]);\n\n return (\n <Col md={12} lg={12}>\n <Card>\n {isFetching && <Spinner className=\"loading-spinner\" />}\n {pagamento &&\n !isFetching &&\n (pagamento?.status === 'Pago' ? (\n <CardBody className=\"cardbody-confirmacao\">\n <CheckCircleOutlineIcon className=\"icon-confirmacao--success\" />\n <h4>Parabéns, sua inscrição foi confirmada!</h4>\n <p>\n Se já estiver preparado para o teste, faça agora mesmo. Caso\n ainda precise estudar alguns pontos, não se preocupe. Você pode\n fazer o teste quando quiser, mas não se esqueça que são 2\n tentativas!\n </p>\n <Row className=\"buttontoolbar-confirmacao\">\n <Link className=\"btn btn-primary\" to={`/home`}>\n Fazer Teste\n </Link>\n </Row>\n </CardBody>\n ) : pagamento?.status === 'Aguardando' ? (\n <CardBody className=\"cardbody-confirmacao\">\n <TimerSandEmptyIcon className=\"icon-confirmacao--awaiting\" />\n <h4>Você está quase lá. Estamos aguardando seu pagamento...</h4>\n <p>Emita o boleto bancário utilizando o botão abaixo.</p>\n <p>\n Caso já tenha pago o seu boleto, basta aguardar a notificação\n pelo banco. Este processo pode levar até 72hrs.\n </p>\n <p>\n Em caso de dúvidas entre em contato:{' '}\n <a href=\"mailto:atendimento@paulogentil.com\">\n atendimento@paulogentil.com\n </a>\n .\n </p>\n <Row className=\"buttontoolbar-confirmacao\">\n <a\n download={`boleto-nerdflix-${pagamento._id}`}\n className=\"btn btn-primary\"\n href={`data:application/pdf;base64,${pagamento.log.pdfBoleto}`}\n >\n Emitir Boleto\n </a>\n </Row>\n </CardBody>\n ) : pagamento?.status === 'Pendente' ? (\n <CardBody className=\"cardbody-confirmacao\">\n <CancelIcon className=\"icon-confirmacao--pending\" />\n <h4>\n A transação de pagamento foi inciada, mas não foi concluÃda.\n </h4>\n <p>Repita o procedimento para continuar.</p>\n <p>\n Em caso de dúvidas entre em contato:{' '}\n <a href=\"mailto:atendimento@paulogentil.com\">\n atendimento@paulogentil.com\n </a>\n .\n </p>\n <Row className=\"buttontoolbar-confirmacao\">\n <Link className=\"btn btn-primary\" to=\"/home\">\n Voltar\n </Link>\n </Row>\n </CardBody>\n ) : pagamento?.status === 'Falhou' ? (\n <CardBody className=\"cardbody-confirmacao\">\n <CloseCircleIcon className=\"icon-confirmacao--fail\" />\n <h4>A transação de pagamento falhou.</h4>\n <p>Detalhe do erro: {JSON.stringify(pagamento.log)}.</p>\n <p>Realize um novo pagamento para continuar.</p>\n <p>\n Em caso de dúvidas entre em contato:{' '}\n <a href=\"mailto:atendimento@paulogentil.com\">\n atendimento@paulogentil.com\n </a>\n .\n </p>\n <Row className=\"buttontoolbar-confirmacao\">\n <Link className=\"btn btn-primary\" to=\"/home\">\n Voltar\n </Link>\n </Row>\n </CardBody>\n ) : (\n ''\n ))}\n </Card>\n </Col>\n );\n};\n\nexport default DetalhePagamento;\n","import React from 'react';\nimport { Col, Container, Row } from 'reactstrap';\nimport SituacaoPagamentoInscricao from './components/DetalhePagamento';\n\nconst SituacaoPagamento = (props) => (\n <Container>\n <Row>\n <Col md={12}>\n <h1 className=\"page-title\">Situação do Pagamento</h1>\n </Col>\n </Row>\n <Row>\n <Col md={12}>\n <SituacaoPagamentoInscricao props={props} />\n </Col>\n </Row>\n </Container>\n);\n\nexport default SituacaoPagamento;\n","import React from 'react';\nimport { Col, Row } from 'reactstrap';\n\nconst Footer = () => (\n <footer className=\"footer\">\n <Row className=\"mx-1 pt-2\">\n <Col md={3} lg={3} xl={3}>\n <p className=\"footer-text-left\">© Nerdflix</p>\n <p className=\"footer-text-left\">\n Designed by{' '}\n <a\n href=\"https://www.advanced-digital.com.br/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Advanced Digital\n </a>\n </p>\n </Col>\n\n <Col md={6} lg={6} xl={6} className=\"mx-auto mb-4\">\n <a\n className=\"footer__nav-link py-2\"\n href=\"https://nerdflix.io/pages/termos-de-uso\"\n >\n Termos de Uso\n </a>\n <a\n className=\"footer__nav-link\"\n href=\"https://nerdflix.io/pages/politica-de-privacidade\"\n >\n PolÃtica de privacidade\n </a>\n <a\n className=\"footer__nav-link\"\n href=\"https://nerdflix.io/pages/politica-de-cancelamento\"\n >\n PolÃtica de Cancelamento\n </a>\n <a\n className=\"footer__nav-link\"\n href=\"https://nerdflix.io/pages/central-de-ajuda\"\n >\n Central de Ajuda\n </a>\n </Col>\n\n <Col md={3} lg={3} xl={3}></Col>\n </Row>\n </footer>\n);\n\nexport default Footer;\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport Layout from '../Layout/index';\nimport Home from '../Home/index';\nimport MainWrapper from './MainWrapper';\nimport LogIn from '../LogIn/index';\nimport LogInAluno from '../LogInAluno/index';\nimport Inscricao from '../Inscricao';\nimport Pagamentos from '../Pagamentos';\nimport Quiz from '../Quiz/index';\nimport SituacaoInscricao from '../SituacaoInscricao';\nimport Viewer from '../Certificado';\nimport SituacaoPagamento from '../SituacaoPagamento';\nimport Footer from '../Layout/footer/Footer';\n\nconst wrappedRoutes = () => (\n <div>\n <Layout />\n <div className=\"container__wrap\">\n <Route\n exact\n path=\"/acesso/:emailAluno/:idUscreen\"\n component={LogInAluno}\n />\n <PrivateRoute exact path=\"/\" component={Home} />\n <PrivateRoute exact path=\"/home\" component={Home} />\n <PrivateRoute exact path=\"/inscricao/:id\" component={Inscricao} />\n <PrivateRoute exact path=\"/quiz/:id\" component={Quiz} />\n <Route exact path=\"/certificado/:id\" component={Viewer} />\n <PrivateRoute\n exact\n path=\"/situacao-inscricao/:id\"\n component={SituacaoInscricao}\n />\n <PrivateRoute exact path=\"/pagamento/:id\" component={SituacaoPagamento} />\n <PrivateRoute exact path=\"/pagamentos\" component={Pagamentos} />\n </div>\n <Footer />\n </div>\n);\n\nconst Router = () => (\n <MainWrapper>\n <main>\n <Switch>\n <Route exact path=\"/log_in\" component={LogIn} />\n <Route path=\"/\" component={wrappedRoutes} />\n </Switch>\n </main>\n </MainWrapper>\n);\n\nexport default Router;\n","import { createAction } from 'redux-actions';\n\nexport const changeThemeToDark = createAction('CHANGE_THEME_TO_DARK');\nexport const changeThemeToLight = createAction('CHANGE_THEME_TO_LIGHT');\n","import { handleActions } from 'redux-actions';\nimport {\n changeThemeToDark,\n changeThemeToLight,\n} from '../actions/themeActions';\n\nconst defaultState = {\n className: 'theme-light',\n};\n\nexport default handleActions(\n {\n [changeThemeToDark]() {\n return { className: 'theme-dark' };\n },\n [changeThemeToLight]() {\n return { className: 'theme-light' };\n },\n },\n defaultState,\n);\n","import { handleActions } from 'redux-actions';\nimport {\n changeSidebarVisibility,\n changeMobileSidebarVisibility,\n} from '../actions/sidebarActions';\n\nconst defaultState = {\n show: false,\n collapse: false,\n};\n\nexport default handleActions(\n {\n [changeSidebarVisibility](state) {\n return { ...state, collapse: !state.collapse };\n },\n [changeMobileSidebarVisibility](state) {\n return { ...state, show: !state.show };\n },\n },\n defaultState,\n);\n","import { createAction } from 'redux-actions';\n\nexport const changeDirectionToLTR = createAction('CHANGE_DIRECTION_TO_LTR');\nexport const changeDirectionToRTL = createAction('CHANGE_DIRECTION_TO_RTL');\n","import { handleActions } from 'redux-actions';\nimport {\n changeDirectionToLTR,\n changeDirectionToRTL,\n} from '../actions/rtlActions';\n\nconst defaultState = {\n direction: 'ltr',\n};\n\nexport default handleActions(\n {\n [changeDirectionToLTR]() {\n return { direction: 'ltr' };\n },\n [changeDirectionToRTL]() {\n return { direction: 'rtl' };\n },\n },\n defaultState,\n);\n","import { handleActions } from 'redux-actions';\nimport {\n loginAlunoRequest,\n loginAlunoSuccess,\n loginAlunoError,\n setAlunoData,\n} from '../actions/alunosActions';\n\nconst defaultState = {\n auth: {},\n isFetching: false,\n error: null,\n};\n\nexport default handleActions(\n {\n [loginAlunoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [loginAlunoSuccess](state, { payload }) {\n return {\n ...state,\n auth: payload,\n isFetching: false,\n error: null,\n };\n },\n [loginAlunoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [setAlunoData](state, { payload }) {\n return {\n ...state,\n auth: payload,\n isFetching: false,\n error: null,\n };\n },\n },\n defaultState\n);\n","import { handleActions } from 'redux-actions';\nimport {\n fetchCertificadoRequest,\n fetchCertificadoSuccess,\n fetchCertificadoError,\n fetchCertificadosDisponiveisRequest,\n fetchCertificadosDisponiveisSuccess,\n fetchCertificadosDisponiveisError,\n} from '../actions/certificadosActions';\n\nconst defaultState = {\n certificado: {},\n certificados: [],\n certificadosDisponiveis: [],\n isFetching: false,\n error: null,\n};\n\nexport default handleActions(\n {\n [fetchCertificadoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchCertificadoSuccess](state, { payload }) {\n return {\n ...state,\n certificado: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchCertificadoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [fetchCertificadosDisponiveisRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchCertificadosDisponiveisSuccess](state, { payload }) {\n return {\n ...state,\n certificadosDisponiveis: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchCertificadosDisponiveisError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n },\n defaultState\n);\n","import { handleActions } from 'redux-actions';\nimport {\n validarCupomRequest,\n validarCupomSuccess,\n validarCupomError,\n} from '../actions/cuponsActions';\n\nconst defaultState = {\n cupom: {},\n isFetching: false,\n error: null,\n};\n\nexport default handleActions(\n {\n [validarCupomRequest](state) {\n return {\n ...state,\n cupom: {},\n isFetching: true,\n error: null,\n };\n },\n [validarCupomSuccess](state, { payload }) {\n return {\n ...state,\n cupom: payload,\n isFetching: false,\n error: null,\n };\n },\n [validarCupomError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n },\n defaultState\n);\n","import { handleActions } from 'redux-actions';\nimport {\n fetchInscricaoRequest,\n fetchInscricaoSuccess,\n fetchInscricaoError,\n fetchInscricoesEmAndamentoRequest,\n fetchInscricoesEmAndamentoSuccess,\n fetchInscricoesEmAndamentoError,\n fetchInscricoesConcluidasRequest,\n fetchInscricoesConcluidasSuccess,\n fetchInscricoesConcluidasError,\n novaInscricaoCartaoCreditoRequest,\n novaInscricaoCartaoCreditoSuccess,\n novaInscricaoCartaoCreditoError,\n novaInscricaoBoletoBancarioRequest,\n novaInscricaoBoletoBancarioSuccess,\n novaInscricaoBoletoBancarioError,\n novaInscricaoCupomRequest,\n novaInscricaoCupomSuccess,\n novaInscricaoCupomError,\n testeEnviadoSuccess,\n testeEnviadoError,\n fetchPdfCertificadoRequest,\n fetchPdfCertificadoSuccess,\n fetchPdfCertificadoError,\n} from '../actions/inscricoesActions';\n\nconst defaultState = {\n inscricao: {},\n inscricoesEmAndamento: [],\n inscricoesConcluidas: [],\n pdfCertificado: {},\n isFetching: false,\n isProcessing: false,\n error: null,\n};\n\nexport default handleActions(\n {\n [fetchInscricaoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchInscricaoSuccess](state, { payload }) {\n return {\n ...state,\n inscricao: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchInscricaoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [fetchInscricoesEmAndamentoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchInscricoesEmAndamentoSuccess](state, { payload }) {\n return {\n ...state,\n inscricoesEmAndamento: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchInscricoesEmAndamentoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [fetchInscricoesConcluidasRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchInscricoesConcluidasSuccess](state, { payload }) {\n return {\n ...state,\n inscricoesConcluidas: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchInscricoesConcluidasError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [novaInscricaoCartaoCreditoRequest](state) {\n return {\n ...state,\n isProcessing: true,\n error: null,\n };\n },\n [novaInscricaoCartaoCreditoSuccess](state, { payload }) {\n return {\n ...state,\n inscricao: payload,\n isProcessing: false,\n error: null,\n };\n },\n [novaInscricaoCartaoCreditoError](state, { payload }) {\n return {\n ...state,\n isProcessing: false,\n error: payload,\n };\n },\n [novaInscricaoBoletoBancarioRequest](state) {\n return {\n ...state,\n isProcessing: true,\n error: null,\n };\n },\n [novaInscricaoBoletoBancarioSuccess](state, { payload }) {\n return {\n ...state,\n inscricao: payload,\n isProcessing: false,\n error: null,\n };\n },\n [novaInscricaoBoletoBancarioError](state, { payload }) {\n return {\n ...state,\n isProcessing: false,\n error: payload,\n };\n },\n [novaInscricaoCupomRequest](state) {\n return {\n ...state,\n isProcessing: true,\n error: null,\n };\n },\n [novaInscricaoCupomSuccess](state, { payload }) {\n return {\n ...state,\n inscricao: payload,\n isProcessing: false,\n error: null,\n };\n },\n [novaInscricaoCupomError](state, { payload }) {\n return {\n ...state,\n isProcessing: false,\n error: payload,\n };\n },\n [testeEnviadoSuccess](state, { payload }) {\n return {\n ...state,\n inscricao: payload,\n isFetching: false,\n error: null,\n };\n },\n [testeEnviadoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [fetchPdfCertificadoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchPdfCertificadoSuccess](state, { payload }) {\n return {\n ...state,\n pdfCertificado: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchPdfCertificadoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n },\n defaultState\n);\n","import { handleActions } from 'redux-actions';\nimport {\n fetchPagamentoRequest,\n fetchPagamentoSuccess,\n fetchPagamentoError,\n fetchPagamentosAlunoRequest,\n fetchPagamentosAlunoSuccess,\n fetchPagamentosAlunoError,\n} from '../actions/pagamentosActions';\n\nconst defaultState = {\n pagamento: {},\n pagamentos: {},\n isFetching: false,\n error: null,\n};\n\nexport default handleActions(\n {\n [fetchPagamentoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchPagamentoSuccess](state, { payload }) {\n return {\n ...state,\n pagamento: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchPagamentoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n [fetchPagamentosAlunoRequest](state) {\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n },\n [fetchPagamentosAlunoSuccess](state, { payload }) {\n return {\n ...state,\n pagamentos: payload,\n isFetching: false,\n error: null,\n };\n },\n [fetchPagamentosAlunoError](state, { payload }) {\n return {\n ...state,\n isFetching: false,\n error: payload,\n };\n },\n },\n defaultState\n);\n","import { combineReducers, createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { reducer as reduxFormReducer } from 'redux-form';\nimport {\n sidebarReducer,\n themeReducer,\n rtlReducer,\n alunosReducer,\n certificadosReducer,\n cuponsReducer,\n inscricoesReducer,\n pagamentosReducer,\n} from '../../redux/reducers/index';\n\nconst reducer = combineReducers({\n form: reduxFormReducer, // mounted under \"form\",\n theme: themeReducer,\n sidebar: sidebarReducer,\n rtl: rtlReducer,\n alunos: alunosReducer,\n certificados: certificadosReducer,\n cupons: cuponsReducer,\n inscricoes: inscricoesReducer,\n pagamentos: pagamentosReducer,\n});\n\nconst store = createStore(reducer, applyMiddleware(thunk));\n\nexport default store;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nconst ScrollToTop = ({ children, location }) => {\n useEffect(() => {\n if (location && location.pathname) {\n window.scrollTo(0, 0);\n }\n }, [location]);\n return children;\n};\n\nScrollToTop.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string,\n }).isRequired,\n children: PropTypes.element.isRequired,\n};\n\nexport default withRouter(ScrollToTop);\n","import React, { Fragment, useEffect, useState } from 'react';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter } from 'react-router-dom';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport '../../scss/app.scss';\nimport Router from './Router';\nimport store from './store';\nimport ScrollToTop from './ScrollToTop';\n\nconst App = () => {\n const [isLoading, setIsLoading] = useState(true);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n window.addEventListener('load', () => {\n setIsLoading(false);\n setTimeout(() => setIsLoaded(true), 500);\n });\n }, []);\n\n return (\n <Provider store={store}>\n <BrowserRouter>\n <ScrollToTop>\n <Fragment>\n {!isLoaded && (\n <div className={`load${isLoading ? '' : ' loaded'}`}>\n <div className=\"load__icon-wrap\">\n <svg className=\"load__icon\">\n <path fill=\"#4ce1b6\" d=\"M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z\" />\n </svg>\n </div>\n </div>\n )}\n <div>\n <Router />\n </div>\n </Fragment>\n </ScrollToTop>\n </BrowserRouter>\n </Provider>\n );\n};\n\nexport default App;\n","/* eslint-disable no-console */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost'\n // [::1] is the IPv6 localhost address.\n || window.location.hostname === '[::1]'\n // 127.0.0.0/8 are considered localhost for IPv4.\n || window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n // eslint-disable-next-line no-use-before-define\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service '\n + 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n // eslint-disable-next-line no-use-before-define\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n // eslint-disable-next-line no-param-reassign\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all '\n + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404\n || (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './containers/App/App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}