diff --git a/app.js b/app.js index ffcfaee..2b05bf2 100644 --- a/app.js +++ b/app.js @@ -7,6 +7,7 @@ const paymentRoute = require('./routes/payment') ; const courseRoute = require('./routes/course') ; const adminRoute = require('./routes/admin') ; const couponRoute = require('./routes/Coupon') ; +const queryRoute = require('./routes/query') ; const port=process.env.PORT || 5000; const cors = require('cors') ; @@ -87,7 +88,9 @@ app.use(courseRoute) ; app.use(adminRoute) ; -app.use(couponRoute) ; +app.use(couponRoute) ; + +app.use(queryRoute) ; mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:false}). then(result => { diff --git a/controllers/auth.js b/controllers/auth.js index 645d127..d61d12d 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -66,11 +66,18 @@ module.exports.postSignin = async (req , res , next) => { if(isMatched) { const token = jwt.sign({_id:user._id},JWT_secret) + if(!user.numLoggedIn) + { + user.numLoggedIn = 0 ; + } + user.numLoggedIn = user.numLoggedIn + 1 ; res.json( { - token:token + token:token , + isAdmin : user.isAdmin } ) + await user.save() ; } else { diff --git a/controllers/course.js b/controllers/course.js index a758911..9840e17 100644 --- a/controllers/course.js +++ b/controllers/course.js @@ -1,5 +1,6 @@ const Course = require('../models/Course') ; const CourseType = require('../models/CourseType') ; +const User = require('../models/User') ; module.exports.postAddCourse = async (req , res , next) => { try @@ -169,4 +170,30 @@ module.exports.getFromRoute = async (req , res , next) => { error : "error" }) } +} + +module.exports.addClick = async (req , res , next) => { + try + { + const route = req.body.route ; + const userId = req.user._id ; + let user = await User.findById(userId) ; + let clicked = {...user.clicked} ; + if(!clicked[route]) + { + clicked[route] = 0 ; + } + clicked[route] = clicked[route] + 1 ; + user.clicked = clicked ; + await user.save() ; + res.json({ + data : "added click" + }) ; + } + catch(err) + { + res.json({ + error : err + }) + } } \ No newline at end of file diff --git a/controllers/query.js b/controllers/query.js new file mode 100644 index 0000000..c4eca85 --- /dev/null +++ b/controllers/query.js @@ -0,0 +1,91 @@ +const Query = require('../models/query') ; + +module.exports.addQuery = async (req , res , next)=> { + try + { + let firstName = req.body.firstName || " " ; + let lastName = req.body.lastName || " " ; + let email = req.body.email ; + let query = req.body.query || " " ; + let other = req.body.other || false ; + let queryModel = await Query.findOne({email:email , query:query}) ; + if(queryModel) + { + if(!queryModel.numAsked) + { + queryModel.numAsked = 0 ; + } + + queryModel.numAsked = queryModel.numAsked + 1 ; + await queryModel.save() ; + } + else + { + queryModel = new Query ({ + firstName : firstName , + lastName : lastName , + email : email, + query : query , + numAsked : 1 , + other : other + }) ; + await queryModel.save() ; + } + res.json({ + message : "Saved Query" + }) ; + + } + catch(err) + { + res.json({ + error : err + }) ; + } +} + +module.exports.getQueries = async (req , res , next) => { + try + { + const queries = await Query.find() ; + res.json({ + queries : queries + }) + } + catch(err) + { + res.json({ + error : err + }) + } +} + +module.exports.getOtherQueries = async (req , res , next) => { + try{ + const queries = await Query.find({other : true}) ; + res.json({ + queries : queries + }) + } + catch(err){ + res.json({ + error : err + }) + } +} + +module.exports.getTypeQueries = async (req , res , next) => { + try{ + const type = req.body.type ; + const queries = await Query.find({type:type}) ; + res.json({ + queries : queries + }) + } + catch(err) + { + res.json({ + error:err + }) + } +} \ No newline at end of file diff --git a/models/User.js b/models/User.js index 205349f..d454439 100644 --- a/models/User.js +++ b/models/User.js @@ -27,6 +27,12 @@ const userSchema = new Schema({ } , isAdmin : { type : Boolean + } , + numLoggedIn : { + type : Number + } , + clicked : { + type : Object } //need to add isAdmin }) ; diff --git a/models/query.js b/models/query.js new file mode 100644 index 0000000..03cceaa --- /dev/null +++ b/models/query.js @@ -0,0 +1,32 @@ +const mongoose = require('mongoose') ; + +const Schema = mongoose.Schema ; + +const querySchema = new Schema({ + firstName : { + type :String , + required : true + } , + lastName : { + type:String , + required: true + } , + email : { + type:String , + required: true + } , + query : { + type:String , + required : true + } , + numAsked : { + type:Number , + required : true + } , + other : { + type : Boolean , + require : true + } +}) ; + +module.exports = mongoose.model('Query' , querySchema) ; \ No newline at end of file diff --git a/routes/course.js b/routes/course.js index bd8dc15..f763e05 100644 --- a/routes/course.js +++ b/routes/course.js @@ -21,4 +21,6 @@ router.post('/getMeetSchedule' ,isAuth , courseController.getMeetSchedule) ; router.get('/getFromRoute' , courseController.getFromRoute) ; +router.post('/addClick' , isAuth , courseController.addClick) ; + module.exports = router ; \ No newline at end of file diff --git a/routes/query.js b/routes/query.js new file mode 100644 index 0000000..9ad8e51 --- /dev/null +++ b/routes/query.js @@ -0,0 +1,15 @@ +const express = require('express') ; + +const queryController = require('../controllers/query') ; + +const router = express.Router() ; + +router.post('/addQuery' , queryController.addQuery) ; + +router.get('/getAllQueries' , queryController.getQueries) ; + +router.get('/getOtherQueries' , queryController.getOtherQueries) ; + +router.post('/getTypeQueries' , queryController.getTypeQueries) ; + +module.exports = router ; \ No newline at end of file