const express = require('express'); const router = express.Router(); const resourceController = require('../controllers/resourceController'); const scraperController = require('../controllers/scraperController'); const geocodingController = require('../controllers/geocodingController'); const routingController = require('../controllers/routingController'); const updateRequestController = require('../controllers/updateRequestController'); const adminAuth = require('../middleware/adminAuth'); // Resource endpoints router.get('/resources', resourceController.getResources); router.get('/resources/search', resourceController.searchResources); router.get('/resources/nearby', resourceController.getNearbyResources); router.get('/resources/map', resourceController.getAllResourcesForMap); router.get('/resources/:id', resourceController.getResourceById); // Filter options router.get('/cities', resourceController.getCities); router.get('/types', resourceController.getTypes); // Stats router.get('/stats', resourceController.getStats); // Admin/scraper endpoints router.post('/scrape', scraperController.triggerScrape); router.get('/scrape/status', scraperController.getScrapeStatus); router.get('/scrape/logs', scraperController.getScrapeLogs); // Geocoding endpoints router.get('/geocode', geocodingController.geocodeAddress); router.get('/geocode/reverse', geocodingController.reverseGeocode); router.post('/admin/resources/:id/regeocode', adminAuth, geocodingController.regeocodeResource); // Routing/Directions endpoints router.get('/directions', routingController.getDirections); // Update request endpoints (public) router.post('/resources/:id/update-request', updateRequestController.submitUpdateRequest); // Listing submission endpoint (public) router.post('/listings/submit', updateRequestController.submitListingSubmission); // Admin endpoints (protected) router.post('/admin/auth', updateRequestController.validateAuth); router.get('/admin/update-requests', adminAuth, updateRequestController.getUpdateRequests); router.get('/admin/update-requests/counts', adminAuth, updateRequestController.getRequestCounts); router.post('/admin/update-requests/:id/approve', adminAuth, updateRequestController.approveRequest); router.post('/admin/update-requests/:id/reject', adminAuth, updateRequestController.rejectRequest); // Listing submissions admin endpoints (protected) router.get('/admin/listing-submissions', adminAuth, updateRequestController.getListingSubmissions); router.get('/admin/listing-submissions/counts', adminAuth, updateRequestController.getListingSubmissionCounts); router.post('/admin/listing-submissions/:id/approve', adminAuth, updateRequestController.approveListingSubmission); router.post('/admin/listing-submissions/:id/reject', adminAuth, updateRequestController.rejectListingSubmission); module.exports = router;