kazan-explore changes
This commit is contained in:
		
							parent
							
								
									298a82e0ae
								
							
						
					
					
						commit
						233192ba01
					
				@ -1,3 +1,3 @@
 | 
				
			|||||||
exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
 | 
					exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.TOKEN_KEY = "KAZAN_EXPLORE_TOP_SECRET_TOKEN_KEY"
 | 
					exports.TOKEN_KEY = "kazan-explore_top_secret_key_hbfhqf9jq9prg"
 | 
				
			||||||
@ -1,44 +1,9 @@
 | 
				
			|||||||
const router = require('express').Router();
 | 
					const router = require('express').Router();
 | 
				
			||||||
 | 
					const { expressjwt } = require('express-jwt')
 | 
				
			||||||
 | 
					const axios = require('axios');
 | 
				
			||||||
 | 
					const jwt = require('jsonwebtoken')
 | 
				
			||||||
const { ResultsModel } = require('./model/results')
 | 
					const { ResultsModel } = require('./model/results')
 | 
				
			||||||
 | 
					const { TOKEN_KEY } = require('./const')
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
router.get('/getQuizResults/:userId', async (request, response) => {
 | 
					 | 
				
			||||||
    const { userId } = request.params;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
        const results = await ResultsModel.findOne({ userId : userId }).exec();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!results) {
 | 
					 | 
				
			||||||
            return response.status(404).send({ message: 'Quiz results not found' });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        response.send(results.items);
 | 
					 | 
				
			||||||
    } catch (error) {
 | 
					 | 
				
			||||||
        response.status(500).send({ message: 'An error occurred while fetching quiz results' });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
router.post('/addQuizResult', async (request, response) => {
 | 
					 | 
				
			||||||
    const { userId, quizId, result } = request.body;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!userId || !quizId || !result) {
 | 
					 | 
				
			||||||
        return response.status(400).send({ message: 'Invalid input data' });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
        let userResults = await ResultsModel.findOne({ userId : userId }).exec();
 | 
					 | 
				
			||||||
        if (!userResults) {
 | 
					 | 
				
			||||||
            userResults = new ResultsModel({ userId, items: [] });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        userResults.items.push({ quizId, result });
 | 
					 | 
				
			||||||
        await userResults.save();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        response.status(200).send({ message: 'Quiz result added successfully', data: userResults });
 | 
					 | 
				
			||||||
    } catch (error) {
 | 
					 | 
				
			||||||
        response.status(500).send({ message: 'An error occurred while adding quiz result' });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// First page
 | 
					// First page
 | 
				
			||||||
router.get('/getInfoAboutKazan', (request, response) => {
 | 
					router.get('/getInfoAboutKazan', (request, response) => {
 | 
				
			||||||
@ -247,4 +212,89 @@ router.post('/registration', async (request, response) => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.post('/signin', async (req, res) => {
 | 
				
			||||||
 | 
					    const { user } = req.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!user || !user.token) {
 | 
				
			||||||
 | 
					        return res.status(404).json({error : "No user found"});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const valRes = await axios.get('https://antd-table-v2-backend.onrender.com/api/auth/check',
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            headers: {
 | 
				
			||||||
 | 
					                'authorization': `Bearer ${user.token}`
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (valRes.status !== 200) {
 | 
				
			||||||
 | 
					        return res.status(401).json({error : "User authorization error"});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const accessToken = jwt.sign({
 | 
				
			||||||
 | 
					        ...JSON.parse(JSON.stringify(user._id)),
 | 
				
			||||||
 | 
					    }, TOKEN_KEY, {
 | 
				
			||||||
 | 
					        expiresIn: '12h'
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    user.token = accessToken;
 | 
				
			||||||
 | 
					    res.json(user)
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.use(
 | 
				
			||||||
 | 
					    expressjwt({
 | 
				
			||||||
 | 
					        secret: TOKEN_KEY,
 | 
				
			||||||
 | 
					        algorithms: ['HS256'],
 | 
				
			||||||
 | 
					        getToken: function fromHeaderOrQuerystring(req) {
 | 
				
			||||||
 | 
					            if (req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer")
 | 
				
			||||||
 | 
					                return req.headers.authorization.split(" ")[1];
 | 
				
			||||||
 | 
					            else if (req.query && req.query.token)
 | 
				
			||||||
 | 
					                return req.query.token;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.get('/getQuizResults/:userId', async (request, response) => {
 | 
				
			||||||
 | 
					    const { userId } = request.params;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const results = await ResultsModel.findOne({ userId: userId }).exec();
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        if (!results)
 | 
				
			||||||
 | 
					            return response.status(404).send({ message: 'Quiz results not found' });
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        response.send(results.items);
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        response.status(500).send({ message: 'An error occurred while fetching quiz results' });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.post('/addQuizResult', async (request, response) => {
 | 
				
			||||||
 | 
					    const { userId, quizId, result } = request.body;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (!userId || !quizId || !result)
 | 
				
			||||||
 | 
					        return response.status(400).send({ message: 'Invalid input data' });
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        let userResults = await ResultsModel.findOne({ userId: userId }).exec();
 | 
				
			||||||
 | 
					        if (!userResults) {
 | 
				
			||||||
 | 
					            userResults = new ResultsModel({ userId, items: [] });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const itemToOverride = userResults.items.find(item => item.quizId === quizId)
 | 
				
			||||||
 | 
					        if (!itemToOverride) {
 | 
				
			||||||
 | 
					            userResults.items.push({ quizId, result });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            itemToOverride.result = result;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        await userResults.save();
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        response.status(200).send({ message: 'Quiz result added successfully' });
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        response.status(500).send({ message: 'An error occurred while adding quiz result' });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = router;
 | 
					module.exports = router;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user