diff --git a/app.js b/app.js index 698cbb3..02010b0 100644 --- a/app.js +++ b/app.js @@ -27,6 +27,7 @@ const approvePlaces = require('./routes/admin-approve-places'); const rejectPlaces = require('./routes/admin-api-reject'); const getModerator = require('./routes/get-moderator'); const adminApi = require('./routes/admin-api'); +const adminReports = require('./routes/admin-reports'); const auth = require('./middlewares/auth'); const adminAuth = require('./middlewares/admin-auth'); @@ -63,7 +64,7 @@ app.use('/admin/api', adminAuth, approvePlaces); app.use('/admin/api', adminAuth, rejectPlaces); app.use('/admin/api', adminAuth, getModerator); app.use('/admin/api', adminAuth, adminApi); - +app.use('/admin/api', adminAuth, adminReports); app.use((req, res, next) => { next(createError(404)); diff --git a/controllers/admin-places-report.js b/controllers/admin-places-report.js new file mode 100644 index 0000000..3339bcf --- /dev/null +++ b/controllers/admin-places-report.js @@ -0,0 +1,41 @@ +const { reportModel, getAllReports } = require('../models/reports.model'); +const tokenservice = require('../services/token-service'); +const { places } = require('../models/places.model'); +const { jwtConf } = require('../config/config'); +const sequelize = require('../config/postgre'); +const userModel = require('../models/user.model'); +const tokenService = new tokenservice(jwtConf); + +exports.getAllReports = async (req, res) => { + try { + const reports = await getAllReports(); + + const userIds = reports.map((elem) => { + return elem.userId; + }); + + const placesReportIds = reports.map((elem) => { + return elem.placeId; + }); + + const usersList = await sequelize.query('SELECT email, id FROM users WHERE id IN ' + '(' + userIds + ')'); + const ReportPlaces = await places.find({ _id: placesReportIds }); + + const result = []; + + reports.map((reportItem) => { + usersList[0].find((user) => { + ReportPlaces.find((place) => { + if(+reportItem.userId === +user.id && reportItem.placeId.toString() === place._id.toString()){ + result.push({ createdBy: user.email, placeName: place.name, reportComment: reportItem.comment, createdAt: reportItem.createdAt, solved: reportItem.isSolved }); + } + }) + }) + }) + + + res.status(200).send(result); + } catch (error) { + res.status(404).send({ message: '404 Not found' }); + } +}; \ No newline at end of file diff --git a/controllers/reports-controller.js b/controllers/reports-controller.js index 1f50dfd..a606872 100644 --- a/controllers/reports-controller.js +++ b/controllers/reports-controller.js @@ -1,24 +1,13 @@ -const reportsModel = require('../models/reports.model'); +const { reportModel, getAllReports } = require('../models/reports.model'); const tokenservice = require('../services/token-service'); const placeModel = require('../models/places.model'); const { jwtConf } = require('../config/config'); const tokenService = new tokenservice(jwtConf); -exports.getAllReports = (req, res) => { - reviewsModel - .find({}) - .then(data => { - res.status(200).send(data); - }) - .catch(() => { - res.status(404).send({ message: '404 Not found' }); - }); -}; - exports.getReportsById = async (req, res) => { try { const { reportId } = req.params; - const reportById = await reportsModel.find({ placeId: reportId }); + const reportById = await reportModel.find({ placeId: reportId }); res.status(200).send(reportById); } catch (err) { res.status(404).send({ message: 'Not found' }); @@ -35,7 +24,7 @@ exports.postReport = async (req, res) => { const userId = await tokenService.verify(userJwt); - await reportsModel.create({ + await reportModel.create({ placeId: placeId, userId: userId, comment: report, diff --git a/models/reports.model.js b/models/reports.model.js index d0e0c29..1a126a9 100644 --- a/models/reports.model.js +++ b/models/reports.model.js @@ -32,4 +32,13 @@ const reportsModel = new Schema({ } }); -module.exports = model("reports", reportsModel); +const reportModel = model("reports", reportsModel); + +const getAllReports = async () => { + return await reportModel.find({}); +} + +module.exports = { + reportModel, + getAllReports +} diff --git a/routes/admin-reports.js b/routes/admin-reports.js new file mode 100644 index 0000000..fd76015 --- /dev/null +++ b/routes/admin-reports.js @@ -0,0 +1,9 @@ +const express = require('express'); + +const router = express.Router(); + +const { getAllReports } = require('../controllers/admin-places-report'); + +router.get('/reports', getAllReports); + +module.exports = router; diff --git a/routes/reports.js b/routes/reports.js index fea4c31..ef25097 100644 --- a/routes/reports.js +++ b/routes/reports.js @@ -7,4 +7,5 @@ const { reportPost } = require('../validation/report-validation'); const { postReport } = require('../controllers/reports-controller'); router.post('/reports', valid(reportPost), postReport); + module.exports = router;