Browse Source

save responses in cleaver exam

amenpunk 2 years ago
parent
commit
11520d12ba
2 changed files with 50 additions and 9 deletions
  1. 1 4
      src/Pages/Prueba.jsx
  2. 49 5
      src/Pages/Pruebas/Cleaver.jsx

+ 1 - 4
src/Pages/Prueba.jsx

12
 export function Prueba() {
12
 export function Prueba() {
13
 
13
 
14
   let { id } = useParams();
14
   let { id } = useParams();
15
-  // let token = useMemo(() => auth.getToken(), [auth])
16
   let auth = useSelector((state) => state.token.token)
15
   let auth = useSelector((state) => state.token.token)
17
   let profile = useSelector((state) => state.user)
16
   let profile = useSelector((state) => state.user)
18
   let dispatch = useDispatch();
17
   let dispatch = useDispatch();
19
   let [data, setData] = useState({});
18
   let [data, setData] = useState({});
20
 
19
 
21
-  console.log("PROFILE: ", profile)
22
-
23
   useState(() => {
20
   useState(() => {
24
     let rest = new Service(`/prueba/findid/${id}`)
21
     let rest = new Service(`/prueba/findid/${id}`)
25
     rest.get(auth.token)
22
     rest.get(auth.token)
50
     rest.postQuery(body, auth.token)
47
     rest.postQuery(body, auth.token)
51
       .then(({ data: resp }) => {
48
       .then(({ data: resp }) => {
52
         let { id: assingid } = resp
49
         let { id: assingid } = resp
53
-        toast.success("Asignación creada: ", assingid)
50
+        toast.success("Asignación creada ", assingid)
54
         dispatch(setRole({ assingid }))
51
         dispatch(setRole({ assingid }))
55
       })
52
       })
56
       .catch(() => {
53
       .catch(() => {

+ 49 - 5
src/Pages/Pruebas/Cleaver.jsx

1
 import React from 'react'
1
 import React from 'react'
2
 import { Service } from '../../Utils/HTTP'
2
 import { Service } from '../../Utils/HTTP'
3
 import { Question } from '../../Components/Test/Cleaver/Question.jsx'
3
 import { Question } from '../../Components/Test/Cleaver/Question.jsx'
4
-import { Box,Button, LinearProgress  } from '@mui/material'
4
+import { Box,Button, LinearProgress, Backdrop, CircularProgress, } from '@mui/material'
5
 import { useSelector } from 'react-redux';
5
 import { useSelector } from 'react-redux';
6
-import { useParams } from 'react-router-dom'
6
+import { useParams, useNavigate } from 'react-router-dom'
7
 import toast, { Toaster } from 'react-hot-toast';
7
 import toast, { Toaster } from 'react-hot-toast';
8
 
8
 
9
 
9
 
22
   let { id } = useParams();
22
   let { id } = useParams();
23
   const auth = useSelector((state) => state.token.token);
23
   const auth = useSelector((state) => state.token.token);
24
   const cleaver = useSelector((state) => state.cleaver);
24
   const cleaver = useSelector((state) => state.cleaver);
25
+  const role = useSelector((state) => state.user.role);
26
+  let navigate = useNavigate()
25
 
27
 
26
   const [totalRespondidas, setRespondidas] = React.useState([]);
28
   const [totalRespondidas, setRespondidas] = React.useState([]);
27
   const [totalPreguntas, setPreguntas] = React.useState([]);
29
   const [totalPreguntas, setPreguntas] = React.useState([]);
28
   const [current, setCurrent] = React.useState(0);
30
   const [current, setCurrent] = React.useState(0);
29
   const [progress, setProgress] = React.useState(0);
31
   const [progress, setProgress] = React.useState(0);
32
+  const [open, setOpen] = React.useState(false);
30
 
33
 
31
   const BadQuestion = () => toast.error("Escoge una respuesta en cada columna") 
34
   const BadQuestion = () => toast.error("Escoge una respuesta en cada columna") 
32
   //toast("Escoge una respuesta en cada columna",{ icon : '⚠️' });
35
   //toast("Escoge una respuesta en cada columna",{ icon : '⚠️' });
48
   }, [id,auth]);
51
   }, [id,auth]);
49
 
52
 
50
   const saveRespones = () => {
53
   const saveRespones = () => {
51
-    console.log("guardando las respuestas")
54
+
55
+    setOpen(true)
56
+
57
+    let { responses: userResp } = cleaver;
58
+    let mapResponses = totalRespondidas.map( resp => {
59
+      let { respuestas : posibles, id } = resp;
60
+      console.log(resp.id,posibles)
61
+      let opciones_multiples = posibles.map( quiz => {
62
+        let body = {
63
+          "respuestaid": resp.id,
64
+          "asignacionid":role.assingid,
65
+          "anotacion1": parseInt( userResp[id].A ) === parseInt(quiz.id) ? 1: 0, // + = A
66
+          "anotacion2":parseInt( userResp[id].B ) === parseInt(quiz.id) ? 1: 0,  // - = B
67
+          "anotacion3":0
68
+        }
69
+        return body;
70
+      })
71
+      return opciones_multiples;
72
+    })
73
+
74
+    let body = []
75
+    mapResponses.forEach( arr =>  arr.forEach(r => body.push(r)));
76
+
77
+    let rest = new Service('/prueba/addrespuestas/opcionmultiple')
78
+    rest.postQuery(body, auth.token)
79
+      .then(() => {
80
+        // console.log("DATA: ", data)
81
+        toast.success("Tu examen ha sido guardado")
82
+        setOpen(false)
83
+        setTimeout(() => navigate("/user/home"), 1000)
84
+
85
+      })
86
+      .catch(e => {
87
+        toast.error("Error al guardar el examen")
88
+        setOpen(false)
89
+      })
90
+
52
   }
91
   }
53
 
92
 
54
   const handleAddQuestion = () => {
93
   const handleAddQuestion = () => {
138
           )
177
           )
139
       
178
       
140
       }
179
       }
141
-
142
       <Toaster position="bottom-right" />
180
       <Toaster position="bottom-right" />
143
-
181
+      <Backdrop
182
+        sx={{ color: '#fd4b4b', zIndex: (theme) => theme.zIndex.drawer + 1 }}
183
+        open={open}
184
+        // onClick={()}
185
+      >
186
+        <CircularProgress color="inherit" />
187
+      </Backdrop>
144
     </div>
188
     </div>
145
     </div>
189
     </div>
146
   )
190
   )