{"version":3,"sources":["reportWebVitals.js","reducer/app.js","reducer/test.js","store.js","util/setupAxios.js","components/CustomHeader.js","pages/Home/HomeView.js","pages/Home/index.js","pages/Home/Home.js","pages/Login/LoginView.js","pages/Login/index.js","pages/Login/Login.js","pages/Test/TestView.js","pages/Test/index.js","pages/Test/Test.js","pages/NotFount404.js","pages/Admin/components/StudentList.js","pages/Admin/components/TestReports.js","pages/Admin/components/TestConfig.js","pages/Admin/AdminConfig.js","pages/Admin/AdminHome.js","pages/Admin/AdminLogin.js","components/LoadingPage.js","components/DefaultHoc.js","util/Routes.js","util/Constants.js","pages/index.js","index.js"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","initialState","user","JSON","parse","localStorage","getItem","logout","createAsyncThunk","a","axios","get","response","data","appSlice","createSlice","name","reducers","login","state","action","payload","setItem","stringify","extraReducers","fulfilled","success","clear","actions","testSlice","list","setTestList","configureStore","reducer","app","appReducer","test","testReducer","showMessageForResponse","msg","msgType","message","info","setupAxios","store","interceptors","use","error","dispatch","status","Promise","reject","hasInterceptor","CustomHeader","title","canGoHome","useSelector","useDispatch","history","useHistory","Header","id","to","style","fontSize","height","wrapperStyle","display","preview","src","Text","fontWeight","marginBottom","surName","email","onClick","push","color","cursor","Content","Layout","HomeView","isLoading","autoplay","dotPosition","className","size","map","val","pathname","slugify","testName","lower","locale","toString","Home","props","useState","setIsLoading","useEffect","length","finally","Footer","LoginView","form","onFinish","isRegistered","isVisibleModal","setIsVisibleModal","modalTitle","setModalTitle","modalContent","setModalContent","handleCancelModal","backgroundSize","backgroundImage","process","backgroundRepeat","backgroundPosition","bordered","span","margin","justifyContent","width","Title","level","gutter","xs","md","Item","rules","required","min","max","pattern","addonBefore","placeholder","type","prefix","MailOutlined","UserOutlined","BookOutlined","options","cities","showSearch","filterOption","input","option","label","toLocaleLowerCase","indexOf","Option","value","valuePropName","e","preventDefault","fetch","text","underline","htmlType","loading","disabled","marginLeft","resetFields","background","visible","onCancel","footer","overflow","dangerouslySetInnerHTML","__html","Login","setIsRegistered","Form","useForm","values","url","post","TestView","questions","onSubmitAnswers","showHasNoQuestionModal","solveAgainClick","showResultClick","isUserSolveBefore","isSavingResult","showResultModal","showResultModalClick","answers","setAnswers","selectionType","questionNo","repeat","maxWidth","question","headStyle","whiteSpace","Group","onChange","target","onClickQuestion","find","direction","result","index","answer","split","i","checked","join","console","log","onClickMultipleQuestion","flexDirection","padding","textAlign","closable","replace","Test","location","useLocation","setQuestions","setShowHasNoQuestionModal","setIsUserSolveBefore","testConfig","setTestConfig","setIsSavingResult","setShowResultModal","testId","params","canShowResult","canShowResultInfo","window","open","NotFount404","subTitle","extra","columns","dataIndex","filters","onFilter","record","gender","header","displayName","StudentList","userList","setUserList","datas","filename","separator","scroll","x","rowKey","dataSource","TestReports","setOptions","selectedUser","setSelectedUser","userTest","setUserTest","render","optionFilterProp","Select","TestConfig","setCanShowResult","setCanShowResultInfo","key","component","Sider","AdminHome","componentKey","setComponentKey","setComponent","collapsed","setCollapsed","adminComponent","AdminConfig","minHeight","theme","collapsible","onCollapse","defaultSelectedKeys","mode","parseInt","icon","TeamOutlined","PieChartOutlined","SettingOutlined","AdminLogin","autoComplete","Password","LoadingPage","position","top","left","marginRight","transform","DefaultHoc","Component","React","forwardRef","ref","children","publicRoutes","routes","filter","userType","path","matchPath","exact","App","ReactDOM","document","getElementById"],"mappings":"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","file":"static/js/main.c2ad84fb.chunk.js","sourcesContent":["const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport axios from \"axios\";\r\n\r\nconst initialState = {\r\n user: JSON.parse(localStorage.getItem(\"user\")) || null,\r\n};\r\n\r\nexport const logout = createAsyncThunk(\"app/logout\", async () => {\r\n const response = await axios.get(\"/api/logout\");\r\n return response.data;\r\n});\r\n\r\nexport const appSlice = createSlice({\r\n name: \"app\",\r\n initialState,\r\n reducers: {\r\n login: (state, action) => {\r\n state.user = action.payload.user;\r\n localStorage.setItem(\"user\", JSON.stringify(action.payload.user));\r\n },\r\n },\r\n extraReducers: {\r\n [logout.fulfilled]: (state, action) => {\r\n if (action.payload.success) {\r\n state.user = null;\r\n localStorage.clear();\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { login } = appSlice.actions;\r\n\r\nexport default appSlice.reducer;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nconst initialState = {\r\n list: [],\r\n};\r\n\r\nexport const testSlice = createSlice({\r\n name: \"test\",\r\n initialState,\r\n reducers: {\r\n setTestList: (state, action) => {\r\n state.list = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { setTestList } = testSlice.actions;\r\n\r\nexport default testSlice.reducer;\r\n","import { configureStore } from \"@reduxjs/toolkit\";\r\nimport appReducer from \"./reducer/app\";\r\nimport testReducer from \"./reducer/test\";\r\n\r\nexport default configureStore({\r\n reducer: {\r\n app: appReducer,\r\n test: testReducer,\r\n },\r\n});\r\n","import axios from \"axios\";\r\nimport { logout } from \"../reducer/app\";\r\nimport message from \"antd/lib/message\";\r\n\r\nconst showMessageForResponse = (response) => {\r\n if (response.msg) {\r\n if (response.msgType) {\r\n message[response.msgType](response.msg);\r\n } else {\r\n message.info(response.msg);\r\n }\r\n return response;\r\n }\r\n};\r\n\r\nconst setupAxios = (store) => {\r\n axios.interceptors.response.use(\r\n (response) => {\r\n if (\r\n response.data.error === \"Login required\" ||\r\n response.data.error === \"Session timeout\"\r\n ) {\r\n store.dispatch(logout());\r\n }\r\n showMessageForResponse(response.data);\r\n return response;\r\n },\r\n (error) => {\r\n if (error.response.status === 403) {\r\n store.dispatch(logout());\r\n }\r\n Promise.reject(error);\r\n showMessageForResponse(error.response);\r\n return error.response;\r\n }\r\n );\r\n axios.hasInterceptor = true;\r\n};\r\n\r\nexport default setupAxios;\r\n","import React from \"react\";\r\nimport { Layout, Typography, Tooltip, Image } from \"antd\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { LogoutOutlined, HomeOutlined } from \"@ant-design/icons/lib/icons\";\r\nimport { logout } from \"../reducer/app\";\r\n\r\nconst CustomHeader = ({ title, canGoHome }) => {\r\n const app = useSelector((state) => state.app);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const onClickLogout = () => {\r\n dispatch(logout());\r\n history.push(\"/\");\r\n };\r\n\r\n return (\r\n \r\n
\r\n {canGoHome ? (\r\n \r\n
\r\n \r\n Ana Sayfa\r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {title && {title}}\r\n
\r\n
\r\n
\r\n \r\n {app.user?.name} {app.user?.surName}\r\n \r\n {app.user?.email}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CustomHeader;\r\n","import React from \"react\";\r\nimport { Carousel, Layout, Spin } from \"antd\";\r\nimport CustomHeader from \"../../components/CustomHeader\";\r\nimport { Link } from \"react-router-dom\";\r\nimport slugify from \"slugify\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst HomeView = ({ isLoading, test }) => {\r\n return (\r\n \r\n \r\n Test\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {isLoading && }\r\n
\r\n
\r\n
\r\n {test.list.map((val) => (\r\n \r\n {val.testName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default HomeView;\r\n","import Home from \"./Home\";\r\n\r\nexport default Home;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport HomeView from \"./HomeView\";\r\nimport \"./style.css\";\r\nimport axios from \"axios\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { setTestList } from \"../../reducer/test\";\r\n\r\nconst Home = (props) => {\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const test = useSelector((state) => state.test);\r\n const app = useSelector((state) => state.app);\r\n\r\n useEffect(() => {\r\n if (test.list.length === 0 && app.user) {\r\n setIsLoading(true);\r\n axios\r\n .get(\"/api/test/list\")\r\n .then((response) => {\r\n if (response.data.success) {\r\n dispatch(setTestList(response.data.data));\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, []);\r\n\r\n return ;\r\n};\r\n\r\nexport default Home;\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Col,\r\n Input,\r\n Layout,\r\n Row,\r\n Button,\r\n Select,\r\n Image,\r\n Card,\r\n Form,\r\n Typography,\r\n Checkbox,\r\n Modal,\r\n} from \"antd\";\r\nimport { UserOutlined, MailOutlined, BookOutlined } from \"@ant-design/icons\";\r\nimport cities from \"./../../util/cities.json\";\r\nimport \"./style.css\";\r\n\r\nconst { Content, Footer } = Layout;\r\n\r\nconst LoginView = ({ form, onFinish, isRegistered, isLoading }) => {\r\n const [isVisibleModal, setIsVisibleModal] = useState(false);\r\n const [modalTitle, setModalTitle] = useState(\"\");\r\n const [modalContent, setModalContent] = useState(\"\");\r\n\r\n const handleCancelModal = () => {\r\n setIsVisibleModal(false);\r\n setModalTitle(\"\");\r\n };\r\n\r\n const kvkkTextClick = (e) => {\r\n e.preventDefault();\r\n fetch(`${process.env.PUBLIC_URL}/assets/templates/kvkk.html`)\r\n .then((data) => data.text())\r\n .then((response) => setModalContent(response))\r\n .finally(() => {\r\n setIsVisibleModal(true);\r\n setModalTitle(\"KVKK Metni\");\r\n });\r\n };\r\n\r\n const commercialCommunicationClick = (e) => {\r\n e.preventDefault();\r\n fetch(\r\n `${process.env.PUBLIC_URL}/assets/templates/commercialCommunication.html`\r\n )\r\n .then((data) => data.text())\r\n .then((response) => setModalContent(response))\r\n .finally(() => {\r\n setIsVisibleModal(true);\r\n setModalTitle(\"Ticari İletişim İzni\");\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n PDR TEST SİSTEMİ\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n {!isRegistered && (\r\n <>\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n option.label\r\n .toLocaleLowerCase(\"tr-TR\")\r\n .indexOf(input.toLocaleLowerCase(\"tr-TR\")) >= 0\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Erkek\r\n Kız\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n KVKK Metni\r\n \r\n 'ni onaylıyorum.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ticari İletişim İzni\r\n \r\n 'ni onaylıyorum.\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {isRegistered ? \"Giriş Yap\" : \"Kayıt Ol\"}\r\n \r\n {!isRegistered && (\r\n form.resetFields()}\r\n >\r\n Sıfırla\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n PDR ©2021 Created by Akbim\r\n
\r\n
\r\n\r\n \r\n Kapat\r\n ,\r\n ]}\r\n >\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoginView;\r\n","import Login from \"./Login\";\r\n\r\nexport default Login;\r\n","import React, { useState } from \"react\";\r\nimport LoginView from \"./LoginView\";\r\nimport { Form } from \"antd\";\r\nimport axios from \"axios\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { login } from \"../../reducer/app\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst Login = (props) => {\r\n const [isRegistered, setIsRegistered] = useState(true);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const history = useHistory();\r\n const [form] = Form.useForm();\r\n const dispatch = useDispatch();\r\n\r\n const onFinish = (values) => {\r\n const url = isRegistered ? \"/api/auth/login\" : \"/api/auth/register\";\r\n\r\n setIsLoading(true);\r\n axios\r\n .post(url, values)\r\n .then((response) => {\r\n if (!response.data?.data?.user) {\r\n setIsRegistered(false);\r\n }\r\n\r\n if (response.data?.data?.user) {\r\n dispatch(login({ user: response.data.data.user }));\r\n history.push(\"/ana-sayfa\");\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Card,\r\n Radio,\r\n Layout,\r\n Space,\r\n Button,\r\n Spin,\r\n Modal,\r\n Checkbox,\r\n Typography, Divider\r\n} from \"antd\";\r\nimport CustomHeader from \"../../components/CustomHeader\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Text from \"antd/es/typography/Text\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst TestView = ({\r\n title,\r\n questions,\r\n onSubmitAnswers,\r\n isLoading,\r\n showHasNoQuestionModal,\r\n solveAgainClick,\r\n showResultClick,\r\n isUserSolveBefore,\r\n isSavingResult,\r\n showResultModal,\r\n showResultModalClick,\r\n}) => {\r\n const [answers, setAnswers] = useState([]);\r\n const history = useHistory();\r\n\r\n const onClickQuestion = (questionNo, e) => {\r\n setAnswers(\r\n answers.map((val) => {\r\n if (val.questionNo === questionNo) {\r\n return { ...val, value: e.target.value };\r\n }\r\n return val;\r\n })\r\n );\r\n };\r\n\r\n const onClickMultipleQuestion = (questionNo, e, index) => {\r\n setAnswers(\r\n answers.map((val) => {\r\n if (val.questionNo === questionNo) {\r\n const answer = val.value\r\n .split(\"\")\r\n .map((option, i) => {\r\n if (i === index) {\r\n return e.target.checked ? e.target.value : \" \";\r\n }\r\n return option;\r\n })\r\n .join(\"\");\r\n console.log(answer);\r\n return { ...val, value: answer };\r\n }\r\n return val;\r\n })\r\n );\r\n };\r\n\r\n const QuestionValue = (questionNo) => {\r\n return answers.find((val) => val.questionNo === questionNo)\r\n ? answers.find((val) => val.questionNo === questionNo).value\r\n : null;\r\n };\r\n\r\n const onClickSendAnswer = () => {\r\n onSubmitAnswers(answers);\r\n };\r\n\r\n useEffect(() => {\r\n setAnswers(\r\n questions.map((val) => {\r\n if (val.selectionType === 1) {\r\n return {\r\n questionNo: val.questionNo,\r\n value: \" \".repeat(val.options.length),\r\n };\r\n }\r\n return { questionNo: val.questionNo, value: null };\r\n })\r\n );\r\n }, [questions]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {isLoading && }\r\n {!isUserSolveBefore && (\r\n
\r\n {questions.map((question) => (\r\n \r\n \r\n {`${question.questionNo} - ${question.question}`}\r\n \r\n \r\n {question.selectionType === 0 && (\r\n onClickQuestion(question.questionNo, e)}\r\n value={QuestionValue(question.questionNo)}\r\n >\r\n \r\n {question.options.map((option) => (\r\n \r\n {option.option}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n\r\n {question.selectionType === 1 && (\r\n \r\n {question.options.map((option, index) => (\r\n \r\n onClickMultipleQuestion(\r\n question.questionNo,\r\n e,\r\n index\r\n )\r\n }\r\n key={index.toString()}\r\n disabled={isSavingResult}\r\n >\r\n {option.option}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n ))}\r\n {questions.length > 0 && (\r\n \r\n Gönder\r\n \r\n )}\r\n
\r\n )}\r\n\r\n {isUserSolveBefore && (\r\n \r\n

\r\n {title} anketini daha önceden çözmüşsünüz.\r\n

\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n {\r\n history.replace(\"/ana-sayfa\");\r\n }}\r\n >\r\n Ana Sayfa\r\n ,\r\n ]}\r\n >\r\n

Bu ankete soru girilmemiş.

\r\n \r\n {\r\n history.replace(\"/ana-sayfa\");\r\n }}\r\n >\r\n Ana sayfaya git\r\n ,\r\n ,\r\n ]}\r\n >\r\n

Anket sonucunu görüntülemek istiyor musunuz.

\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TestView;\r\n","import Test from \"./Test\";\r\n\r\nexport default Test;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport TestView from \"./TestView\";\r\nimport axios from \"axios\";\r\nimport message from \"antd/lib/message\";\r\n\r\nconst Test = (props) => {\r\n let location = useLocation();\r\n const [questions, setQuestions] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [showHasNoQuestionModal, setShowHasNoQuestionModal] = useState(false);\r\n const [isUserSolveBefore, setIsUserSolveBefore] = useState(false);\r\n const [testConfig, setTestConfig] = useState(false);\r\n const [isSavingResult, setIsSavingResult] = useState(false);\r\n const [showResultModal, setShowResultModal] = useState(false);\r\n\r\n const testId = location.state && location.state.id;\r\n const history = useHistory();\r\n\r\n const onSubmitAnswers = (data) => {\r\n if (data.find((val) => val.value === null)) {\r\n message.info(\"Tüm soruları cevaplayınız.\");\r\n } else {\r\n const answers = data.map((val) => val.value).join(\"\");\r\n setIsSavingResult(true);\r\n axios\r\n .post(\"/api/test/saveAnswers\", { answers, testId })\r\n .then((response) => {\r\n if (response.data.success) {\r\n setShowResultModal(true);\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n setIsSavingResult(false);\r\n });\r\n }\r\n };\r\n\r\n const solveAgainClick = () => {\r\n setIsUserSolveBefore(false);\r\n };\r\n\r\n const showResultClick = () => {\r\n if (testConfig?.canShowResult === 0) {\r\n message.info(\r\n testConfig.canShowResultInfo === \"\"\r\n ? \"Test sonucu yönetici tarafından kapatılmış.\"\r\n : testConfig.canShowResultInfo\r\n );\r\n } else {\r\n axios.get(`/api/test/getReportLink?testId=${testId}`).then((response) => {\r\n if (response.data.success) {\r\n window.open(response.data.result, \"_blank\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n const showResultModalClick = () => {\r\n if (testConfig?.canShowResult === 0) {\r\n message.info(\r\n testConfig.canShowResultInfo === \"\"\r\n ? \"Test sonucu yönetici tarafından kapatılmış.\"\r\n : testConfig.canShowResultInfo\r\n );\r\n } else {\r\n axios.get(`/api/test/getReportLink?testId=${testId}`).then((response) => {\r\n if (response.data.success) {\r\n history.replace(\"/ana-sayfa\");\r\n window.open(response.data.result, \"_blank\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n setQuestions([]);\r\n axios\r\n .get(\"/api/test/questions\", { params: { testId } })\r\n .then((response) => {\r\n if (response.data.success) {\r\n if (response.data.data.questions.length === 0) {\r\n setShowHasNoQuestionModal(true);\r\n }\r\n setQuestions(response.data.data.questions);\r\n setTestConfig(response.data.data.testConfig);\r\n setIsUserSolveBefore(response.data.data.isUserSolveBefore);\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, [testId]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Test;\r\n","import React from \"react\";\r\nimport { Button, Result } from \"antd\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst NotFount404 = (props) => {\r\n const history = useHistory();\r\n\r\n return (\r\n history.replace(\"/\")}>\r\n Ana Sayfa\r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default NotFount404;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Card, Table } from \"antd\";\r\nimport axios from \"axios\";\r\nimport CsvDownloader from \"react-csv-downloader\";\r\n\r\nconst columns = [\r\n {\r\n title: \"Ad\",\r\n dataIndex: \"name\",\r\n },\r\n {\r\n title: \"Soyad\",\r\n dataIndex: \"surName\",\r\n },\r\n {\r\n title: \"Cinsiyet\",\r\n dataIndex: \"gender\",\r\n filters: [\r\n { text: \"Erkek\", value: \"E\" },\r\n { text: \"Kadın\", value: \"K\" },\r\n ],\r\n onFilter: (value, record) => record.gender.indexOf(value) === 0,\r\n },\r\n {\r\n title: \"Telefon\",\r\n dataIndex: \"phone\",\r\n },\r\n {\r\n dataIndex: \"school\",\r\n title: \"Okul\",\r\n },\r\n {\r\n title: \"Email\",\r\n dataIndex: \"email\",\r\n },\r\n];\r\n\r\nconst header = [\r\n {\r\n id: \"name\",\r\n displayName: \"Ad\",\r\n },\r\n {\r\n id: \"surName\",\r\n displayName: \"Soyad\",\r\n },\r\n {\r\n id: \"gender\",\r\n displayName: \"Cinsiyet\",\r\n },\r\n {\r\n id: \"phone\",\r\n displayName: \"Telefon\",\r\n },\r\n {\r\n id: \"school\",\r\n displayName: \"Okul\",\r\n },\r\n {\r\n id: \"email\",\r\n displayName: \"Email\",\r\n },\r\n];\r\n\r\nconst StudentList = (props) => {\r\n const [userList, setUserList] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n axios\r\n .get(\"/api/admin/userList\")\r\n .then((response) => {\r\n if (response.data.success) {\r\n setUserList(response.data.data);\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {userList.length > 0 && (\r\n \r\n \r\n \r\n )}\r\n user.id}\r\n dataSource={userList}\r\n loading={isLoading}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default StudentList;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Card, Divider, Select, Table } from \"antd\";\r\nimport axios from \"axios\";\r\nimport Text from \"antd/es/typography/Text\";\r\n\r\nconst TestReports = (props) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [options, setOptions] = useState([]);\r\n const [selectedUser, setSelectedUser] = useState(null);\r\n const [userTest, setUserTest] = useState([]);\r\n\r\n const onClickReport = (data) => {\r\n axios\r\n .get(`/api/admin/getReportLink?testId=${data.id}&userId=${selectedUser}`)\r\n .then((response) => {\r\n if (response.data.success) {\r\n window.open(response.data.data, \"_blank\");\r\n }\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n title: \"Test\",\r\n dataIndex: \"testName\",\r\n },\r\n {\r\n title: \"Raporla\",\r\n dataIndex: \"id\",\r\n render: (text, record) => (\r\n \r\n ),\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n axios\r\n .get(\"/api/admin/userList\")\r\n .then((response) => {\r\n if (response.data.success) {\r\n setOptions(\r\n response.data.data.map((val) => ({\r\n value: val.id,\r\n label: `${val.name} ${val.surName}`,\r\n }))\r\n );\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedUser) {\r\n setIsLoading(true);\r\n axios\r\n .get(`/api/admin/studentTestList?userId=${selectedUser}`)\r\n .then((response) => {\r\n if (response.data.success) {\r\n setUserTest(response.data.data);\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [selectedUser]);\r\n\r\n return (\r\n \r\n \r\n option.label.toLocaleLowerCase().indexOf(input.toLocaleLowerCase()) >=\r\n 0\r\n }\r\n />\r\n \r\n {userTest.length === 0 ? (\r\n Kullanıcının cevaplamış olduğu test bulunmamaktadır.\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TestReports;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Card, Typography, Select, Input } from \"antd\";\r\nimport axios from \"axios\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst TestConfig = () => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [canShowResult, setCanShowResult] = useState(false);\r\n const [canShowResultInfo, setCanShowResultInfo] = useState(\"\");\r\n\r\n const onClickSave = () => {\r\n setIsLoading(true);\r\n axios\r\n .post(\"/api/admin/setTestConfig\", { canShowResult, canShowResultInfo })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n axios\r\n .get(\"/api/admin/testConfig\")\r\n .then((response) => {\r\n if (response.data.success) {\r\n setCanShowResult(response.data.data.canShowResult.toString());\r\n setCanShowResultInfo(response.data.data.canShowResultInfo);\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n \r\n Öğrenci sonuçları görebilir mi\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {canShowResult === \"0\" && (\r\n
\r\n \r\n Sonuç metni\r\n \r\n setCanShowResultInfo(e.target.value)}\r\n />\r\n
\r\n )}\r\n \r\n Kaydet\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default TestConfig;\r\n","import StudentList from \"./components/StudentList\";\r\nimport TestReports from \"./components/TestReports\";\r\nimport TestConfig from \"./components/TestConfig\";\r\n\r\nexport default [\r\n {\r\n key: 1,\r\n component: ,\r\n },\r\n {\r\n key: 2,\r\n component: ,\r\n },\r\n {\r\n key: 3,\r\n component: ,\r\n },\r\n];\r\n","import React, { useEffect, useState } from \"react\";\r\nimport AdminConfig from \"./AdminConfig\";\r\nimport CustomHeader from \"../../components/CustomHeader\";\r\nimport { Layout, Menu } from \"antd\";\r\nimport {\r\n TeamOutlined,\r\n PieChartOutlined,\r\n SettingOutlined,\r\n} from \"@ant-design/icons\";\r\n\r\nconst { Content, Sider } = Layout;\r\n\r\nconst AdminHome = () => {\r\n const [componentKey, setComponentKey] = useState(1);\r\n const [component, setComponent] = useState(false);\r\n const [collapsed, setCollapsed] = useState(false);\r\n\r\n const onCollapse = () => {\r\n setCollapsed(!collapsed);\r\n };\r\n\r\n const onClickMenu = (e) => {\r\n setComponentKey(parseInt(e.key, 10));\r\n };\r\n\r\n useEffect(() => {\r\n const adminComponent = AdminConfig.find((val) => val.key === componentKey);\r\n if (adminComponent) {\r\n setComponent(adminComponent.component);\r\n }\r\n }, [componentKey]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }>\r\n Öğrenci Listesi\r\n \r\n }>\r\n Test Raporları\r\n \r\n }>\r\n Test Ayarları\r\n \r\n \r\n \r\n {component}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AdminHome;\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Layout,\r\n Card,\r\n Col,\r\n Image,\r\n Typography,\r\n} from \"antd\";\r\nimport axios from \"axios\";\r\nimport { login } from \"../../reducer/app\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst { Content, Footer } = Layout;\r\n\r\nconst AdminLogin = () => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const onFinish = (values) => {\r\n setIsLoading(true);\r\n axios\r\n .post(\"/api/auth/login\", values)\r\n .then((response) => {\r\n if (response?.data?.data?.user) {\r\n dispatch(login({ user: response.data.data.user }));\r\n history.push(\"/admin/ana-sayfa\");\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const onFinishFailed = (errorInfo) => {\r\n console.log(\"Failed:\", errorInfo);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n PDR TEST SİSTEMİ ADMİN\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Giriş Yap\r\n \r\n \r\n \r\n \r\n
\r\n PDR ©2021 Created by Akbim\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AdminLogin;\r\n","import React from \"react\";\r\nimport { Layout, Spin } from \"antd\";\r\n\r\nconst LoadingPage = (props) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default LoadingPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { login, logout } from \"../reducer/app\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport LoadingPage from \"./LoadingPage\";\r\nimport { useHistory, useLocation, matchPath } from \"react-router-dom\";\r\nimport routes from \"../util/Routes\";\r\n\r\nconst DefaultHoc = (Component) => {\r\n return React.forwardRef(({ children, ...props }, ref) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const user = localStorage.getItem(\"user\");\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n const publicRoutes = routes\r\n .filter((val) => !val.userType)\r\n .find((val) => val.path === location.pathname);\r\n if (!user && !publicRoutes) {\r\n setIsLoading(true);\r\n axios\r\n .get(\"/api/auth/checkSession\")\r\n .then((response) => {\r\n if (response.data.success) {\r\n const user = response.data.data.user;\r\n const isUserRoute = routes.filter(\r\n (val) =>\r\n val.userType === user.userType &&\r\n matchPath(location.pathname, {\r\n path: val.path,\r\n })\r\n );\r\n if (isUserRoute) {\r\n dispatch(login({ user }));\r\n }\r\n } else {\r\n history.push(\"/\");\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [user]);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n });\r\n};\r\n\r\nexport default DefaultHoc;\r\n","import {\r\n Home,\r\n Test,\r\n NotFount404,\r\n AdminHome,\r\n Login,\r\n AdminLogin,\r\n} from \"../pages\";\r\nimport DefaultHoc from \"../components/DefaultHoc\";\r\nimport { USER_TYPE_ADMIN, USER_TYPE_STUDENT } from \"./Constants\";\r\n\r\nconst routes = [\r\n {\r\n exact: true,\r\n path: \"/admin\",\r\n component: DefaultHoc(AdminLogin),\r\n },\r\n {\r\n path: \"/test/:name\",\r\n component: DefaultHoc(Test),\r\n userType: USER_TYPE_STUDENT,\r\n },\r\n {\r\n exact: true,\r\n path: \"/ana-sayfa\",\r\n component: DefaultHoc(Home),\r\n userType: USER_TYPE_STUDENT,\r\n },\r\n {\r\n exact: true,\r\n path: \"/admin/ana-sayfa\",\r\n component: DefaultHoc(AdminHome),\r\n userType: USER_TYPE_ADMIN,\r\n },\r\n {\r\n exact: true,\r\n path: \"/\",\r\n component: DefaultHoc(Login),\r\n },\r\n {\r\n path: \"*\",\r\n component: DefaultHoc(NotFount404),\r\n },\r\n];\r\n\r\nexport default routes;\r\n","const USER_TYPE_STUDENT = 1;\r\nconst USER_TYPE_ADMIN = 2;\r\n\r\nexport { USER_TYPE_ADMIN, USER_TYPE_STUDENT };\r\n","import React from \"react\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\nimport Home from \"./Home\";\r\nimport Login from \"./Login\";\r\nimport Test from \"./Test\";\r\nimport NotFount404 from \"./NotFount404\";\r\nimport { AdminLogin, AdminHome } from \"./Admin\";\r\nimport routes from \"../util/Routes\";\r\n\r\nconst App = () => {\r\n return (\r\n \r\n \r\n {routes.map((val) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport { Home, Login, Test, App, NotFount404, AdminHome, AdminLogin };\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport \"antd/dist/antd.css\";\r\nimport \"./assets/style/antdextra.css\";\r\nimport \"./assets/style/App.css\";\r\nimport { Provider } from \"react-redux\";\r\nimport store from \"./store\";\r\nimport setupAxios from \"./util/setupAxios\";\r\nimport { App } from \"./pages\";\r\n\r\nsetupAxios(store);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}