diff --git a/src/index.js b/src/index.js index bb8da38..56884e0 100644 --- a/src/index.js +++ b/src/index.js @@ -27,6 +27,7 @@ raw.use(bodyParser.raw({ type: '*/*' })); // Attach API routes import testRouter from './routes/test'; import userRouter from './routes/user'; +import reviewRouter from './routes/review'; import sessionRouter from './routes/session'; import tutorRouter from './routes/tutor'; import stripeRouter from './routes/stripe'; @@ -40,6 +41,7 @@ app.use('/raw', raw); // processed routes. root.use('/test', testRouter); root.use('/user', userRouter); +root.use('/user', reviewRouter); root.use('/session', sessionRouter); root.use('/tutor', tutorRouter); root.use('/stripe', stripeRouter); diff --git a/src/routes/review.js b/src/routes/review.js new file mode 100644 index 0000000..5fa664d --- /dev/null +++ b/src/routes/review.js @@ -0,0 +1,44 @@ +import { Router } from 'express'; +import User from '../models/User'; +import Review from '../models/Review'; + +const router = Router(); + +router.get('/', (req, res) => { + Promise.all([ + Review.find({ tutor: req.user._id }), + Review.find({ learner: req.user._id }), + ]) + .then(([reviewTutor, reviewLearner]) => + res.json({ reviewTutor, reviewLearner })) + .catch(err => res.status(400).json({ err, message: 'Could not find reviews.' })); +}); + +router.post('/', (req, res) => { + const learner = req.user; + User.findOne({ _id: req.body.tutor, isTutor: true }) + .then(tutor => new Review({ + tutor: tutor._id, + learner: learner._id, + $push: {userRating: { + reviewedName: req.body.sender, + reviewerFullname: learner.fullname, + userRating: req.body.clickedValue, + userReview: req.body.review + }, + ratingNumber: req.body.clickedValue + }, + $inc: {ratingSum: req.body.clickedValue} + }, + })) + .then(review => review.save()) + .then(review => res.json({ review, message: 'Your review has been added.' })) + .catch(err => res.status(400).json({ err, message: 'Tutor does not exist.' })) + ; +}); + + +export default router; + + +