{"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\">&nbsp;</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":""}