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

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

@@ -1,9 +1,9 @@
1 1
 import React from 'react'
2 2
 import { Service } from '../../Utils/HTTP'
3 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 5
 import { useSelector } from 'react-redux';
6
-import { useParams } from 'react-router-dom'
6
+import { useParams, useNavigate } from 'react-router-dom'
7 7
 import toast, { Toaster } from 'react-hot-toast';
8 8
 
9 9
 
@@ -22,11 +22,14 @@ export function Cleaver() {
22 22
   let { id } = useParams();
23 23
   const auth = useSelector((state) => state.token.token);
24 24
   const cleaver = useSelector((state) => state.cleaver);
25
+  const role = useSelector((state) => state.user.role);
26
+  let navigate = useNavigate()
25 27
 
26 28
   const [totalRespondidas, setRespondidas] = React.useState([]);
27 29
   const [totalPreguntas, setPreguntas] = React.useState([]);
28 30
   const [current, setCurrent] = React.useState(0);
29 31
   const [progress, setProgress] = React.useState(0);
32
+  const [open, setOpen] = React.useState(false);
30 33
 
31 34
   const BadQuestion = () => toast.error("Escoge una respuesta en cada columna") 
32 35
   //toast("Escoge una respuesta en cada columna",{ icon : '⚠️' });
@@ -48,7 +51,43 @@ export function Cleaver() {
48 51
   }, [id,auth]);
49 52
 
50 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 93
   const handleAddQuestion = () => {
@@ -138,9 +177,14 @@ export function Cleaver() {
138 177
           )
139 178
       
140 179
       }
141
-
142 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 188
     </div>
145 189
     </div>
146 190
   )