-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #88 from tauanesales/release/0.16.0
Release/0.16.0
- Loading branch information
Showing
7 changed files
with
298 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
import reviewService from "../services/review.service.js"; | ||
import jwt from'jsonwebtoken'; | ||
import bcrypt from 'bcrypt'; | ||
|
||
const createReview = async (req, res) => { | ||
try { | ||
const {rating} = req.body; | ||
const {TouristAttractionId} = req.params; | ||
|
||
if (!rating) { | ||
return res.status(400).json({ error: "Please provide rating" }); | ||
|
||
} | ||
let token = req.headers.authorization; | ||
token = token.replace('Bearer ', ''); | ||
const decoded = jwt.verify(token, process.env.SECRET_JWT_KEY); | ||
const userId = decoded.id; | ||
|
||
const reviewData = { userId, TouristAttractionId, rating }; | ||
const review = await reviewService.createReview(reviewData); | ||
|
||
res.status(201).json(review); | ||
} catch (error) { | ||
return res.status(500).json({ error: error.message }); | ||
} | ||
}; | ||
|
||
const getUserReviews = async (req, res) => { | ||
try { | ||
let token = req.headers.authorization; | ||
token = token.replace('Bearer ', ''); | ||
const decoded = jwt.verify(token, process.env.SECRET_JWT_KEY); | ||
const userId = decoded.id; | ||
|
||
const reviews = await reviewService.getUserReviews(userId); | ||
res.status(200).json(reviews); | ||
} catch (error) { | ||
return res.status(500).json({ error: error.message }); | ||
} | ||
}; | ||
|
||
const deleteReview = async (req, res) => { | ||
try { | ||
const { reviewId } = req.params; | ||
const review = await reviewService.deleteReview(reviewId); | ||
|
||
if (!review) { | ||
return res.status(404).json({ error: "Review not found" }); | ||
} | ||
|
||
res.status(200).json({ message: "Review deleted successfully" }); | ||
} catch (error) { | ||
return res.status(500).json({ error: error.message }); | ||
} | ||
}; | ||
|
||
|
||
export default { createReview, getUserReviews, deleteReview }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import mongoose from 'mongoose'; | ||
|
||
const ReviewSchema = new mongoose.Schema({ | ||
userId: { | ||
type: String, | ||
ref: 'User', | ||
required: true | ||
}, | ||
TouristAttractionId: { | ||
type: String, | ||
ref: 'TouristAttraction', | ||
required: true | ||
}, | ||
rating: { | ||
type: Number, | ||
required: true, | ||
min: 1, | ||
max: 5 | ||
}, | ||
|
||
}); | ||
|
||
const Review = mongoose.model("Review", ReviewSchema); | ||
export default Review; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import express from 'express'; | ||
import reviewController from '../controller/review.controller.js'; | ||
import { validToken } from "../middlewares/jwt.token.middleware.js"; | ||
|
||
const route = express.Router(); | ||
|
||
route.post('/:TouristAttractionId', validToken, reviewController.createReview); | ||
|
||
route.get('/user', validToken, reviewController.getUserReviews); | ||
|
||
route.delete('/:reviewId', validToken, reviewController.deleteReview); | ||
|
||
// route.get('/tourist-attraction/:TouristAttractionId', reviewController.getReviewsByTouristAttractionId); | ||
|
||
export default route; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import Review from "../models/Review.js"; | ||
|
||
const createReview = (reviewData) => Review.create(reviewData); | ||
|
||
const getReviewsByTouristAttractionId = (TouristAttractionId) => | ||
Review.find({ TouristAttractionId }); | ||
|
||
const getUserReviews = (userId) => Review.find({ userId }); | ||
|
||
const deleteReview = (reviewId) => Review.findByIdAndDelete(reviewId); | ||
|
||
export default { | ||
createReview, | ||
getReviewsByTouristAttractionId, | ||
getUserReviews, | ||
deleteReview, | ||
}; |