134 lines
3.0 KiB
JavaScript
134 lines
3.0 KiB
JavaScript
const db = require("../utils/database");
|
|
|
|
exports.getreview = async (req, res) => {
|
|
const { id } = req.params;
|
|
console.log("Received Product ID:", id);
|
|
|
|
try {
|
|
const [data] = await db.execute(
|
|
`
|
|
SELECT
|
|
R.ReviewID,
|
|
R.UserID,
|
|
R.ProductID,
|
|
R.Comment,
|
|
R.Rating,
|
|
R.Date AS ReviewDate,
|
|
U.Name AS ReviewerName,
|
|
P.Name AS ProductName
|
|
FROM Review R
|
|
JOIN User U ON R.UserID = U.UserID
|
|
JOIN Product P ON R.ProductID = P.ProductID
|
|
WHERE R.ProductID = ?
|
|
|
|
UNION
|
|
|
|
SELECT
|
|
R.ReviewID,
|
|
R.UserID,
|
|
R.ProductID,
|
|
R.Comment,
|
|
R.Rating,
|
|
R.Date AS ReviewDate,
|
|
U.Name AS ReviewerName,
|
|
P.Name AS ProductName
|
|
FROM Review R
|
|
JOIN User U ON R.UserID = U.UserID
|
|
JOIN Product P ON R.ProductID = P.ProductID
|
|
WHERE P.UserID = (
|
|
SELECT UserID
|
|
FROM Product
|
|
WHERE ProductID = ?
|
|
)
|
|
AND R.UserID != P.UserID;
|
|
`,
|
|
[id, id],
|
|
);
|
|
|
|
// Log raw data for debugging
|
|
console.log("Raw Database Result:", data);
|
|
|
|
console.log(data);
|
|
res.json({
|
|
success: true,
|
|
message: "Products fetched successfully",
|
|
data,
|
|
});
|
|
} catch (error) {
|
|
console.error("Full Error Details:", error);
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: "Database error occurred",
|
|
error: error.message,
|
|
});
|
|
}
|
|
};
|
|
|
|
// Add this to your existing controller file
|
|
exports.submitReview = async (req, res) => {
|
|
const { productId, userId, rating, comment } = req.body;
|
|
|
|
// Validate required fields
|
|
if (!productId || !userId || !rating || !comment) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: "Missing required fields",
|
|
});
|
|
}
|
|
|
|
// Validate rating is between 1 and 5
|
|
if (rating < 1 || rating > 5) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: "Rating must be between 1 and 5",
|
|
});
|
|
}
|
|
|
|
try {
|
|
// Insert the review into the database
|
|
const [result] = await db.execute(
|
|
`
|
|
INSERT INTO Review (
|
|
ProductID,
|
|
UserID,
|
|
Rating,
|
|
Comment
|
|
) VALUES (?, ?, ?, ?)
|
|
`,
|
|
[productId, userId, rating, comment],
|
|
);
|
|
|
|
// Get the inserted review id
|
|
const reviewId = result.insertId;
|
|
|
|
// Fetch the newly created review to return to client
|
|
const [newReview] = await db.execute(
|
|
`
|
|
SELECT
|
|
ReviewID as id,
|
|
ProductID,
|
|
UserID,
|
|
Rating,
|
|
Comment,
|
|
Date as ReviewDate
|
|
FROM Review
|
|
WHERE ReviewID = ?
|
|
`,
|
|
[reviewId],
|
|
);
|
|
|
|
res.status(201).json({
|
|
success: false,
|
|
message: "Review submitted successfully",
|
|
data: newReview[0],
|
|
});
|
|
} catch (error) {
|
|
console.error("Error submitting review:", error);
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: "Database error occurred",
|
|
error: error.message,
|
|
});
|
|
}
|
|
};
|