forked from rohit/spurrin-backend
165 lines
5.4 KiB
JavaScript
165 lines
5.4 KiB
JavaScript
const express = require("express");
|
|
const router = express.Router();
|
|
const appUserController = require("../controllers/appUserController");
|
|
const authMiddleware = require("../middlewares/authMiddleware");
|
|
const db = require("../config/database"); // Database connection
|
|
|
|
// Ensure the upload middleware is properly applied
|
|
const multer = require("multer");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
// Multer Configuration (add this if missing)
|
|
const storage = multer.diskStorage({
|
|
destination: (req, file, cb) => {
|
|
const uploadPath = "uploads/id_photos/";
|
|
if (!fs.existsSync(uploadPath)) {
|
|
fs.mkdirSync(uploadPath, { recursive: true });
|
|
}
|
|
cb(null, uploadPath);
|
|
},
|
|
filename: (req, file, cb) => {
|
|
const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9);
|
|
const fileExtension = path.extname(file.originalname); // Get proper file extension
|
|
cb(null, `id_photo-${uniqueSuffix}${fileExtension}`); // Ensure proper extension
|
|
},
|
|
});
|
|
|
|
const upload = multer({
|
|
storage,
|
|
fileFilter: (req, file, cb) => {
|
|
if (file.mimetype.startsWith("image/")) {
|
|
cb(null, true);
|
|
} else {
|
|
cb(new Error("Only image files are allowed"), false);
|
|
}
|
|
},
|
|
});
|
|
|
|
router.post(
|
|
"/upload-id/:id",
|
|
authMiddleware.authenticateToken,
|
|
(req, res, next) =>
|
|
upload.single("id_photo_url")(req, res, async (err) => {
|
|
if (err instanceof multer.MulterError || err) {
|
|
console.error("Multer error:", err.message);
|
|
return res.status(400).json({ error: err.message });
|
|
}
|
|
|
|
if (!req.file) {
|
|
return res.status(400).json({ error: "No file uploaded" });
|
|
}
|
|
|
|
const userId = req.params.id;
|
|
const filePath = `/uploads/id_photos/${req.file.filename}`; // Correct file path
|
|
|
|
try {
|
|
const result = await db.query(
|
|
"UPDATE app_users SET upload_status = ?, id_photo_url = ? WHERE id = ?",
|
|
["1", filePath, userId]
|
|
);
|
|
|
|
next();
|
|
} catch (error) {
|
|
console.error("Database update error:", error.message);
|
|
return res
|
|
.status(500)
|
|
.json({ error: "Failed to update upload status" });
|
|
}
|
|
}),
|
|
appUserController.uploadIdPhoto
|
|
);
|
|
|
|
router.post("/login", appUserController.login);
|
|
|
|
router.put(
|
|
"/approve-id/:id",
|
|
authMiddleware.authenticateToken,
|
|
upload.none(), // Middleware to validate the token
|
|
appUserController.approveUserId // Controller to handle the approval logic
|
|
);
|
|
|
|
router.get(
|
|
"/hospital-users",
|
|
authMiddleware.authenticateToken, // Middleware to validate the access token
|
|
appUserController.getAppUsers // Controller to fetch app users
|
|
);
|
|
|
|
router.get(
|
|
"/hospital-users/:id",
|
|
authMiddleware.authenticateToken, // Middleware to validate the access token
|
|
appUserController.getAppUserByHospitalId // Controller to fetch app users
|
|
);
|
|
|
|
router.post("/signup", upload.single("id_photo_url"), appUserController.signup);
|
|
|
|
router.post(
|
|
"/logout",
|
|
authMiddleware.authenticateToken,
|
|
appUserController.logout
|
|
);
|
|
|
|
router.get(
|
|
"/appuser_status",
|
|
authMiddleware.authenticateToken,
|
|
appUserController.getAppUsersByHospitalCode
|
|
);
|
|
|
|
router.delete(
|
|
"/delete/:id",
|
|
authMiddleware.authenticateToken,
|
|
appUserController.deleteAppUser
|
|
);
|
|
|
|
// query title routes
|
|
router.put(
|
|
"/q-title",
|
|
authMiddleware.authenticateToken,
|
|
appUserController.updateQueryTitle
|
|
);
|
|
|
|
router.post(
|
|
"/q-title",
|
|
upload.none(), // Middleware to validate the token
|
|
authMiddleware.authenticateToken,
|
|
appUserController.getShortTitle
|
|
);
|
|
|
|
router.delete(
|
|
"/q-title",
|
|
upload.none(), // Middleware to validate the token
|
|
authMiddleware.authenticateToken,
|
|
appUserController.deleteQueryTitle
|
|
);
|
|
// change password
|
|
router.put("/change-password", upload.none(), appUserController.changePassword);
|
|
router.post("/send-otp", upload.none(), appUserController.sendOtp);
|
|
|
|
router.put("/change-pin", upload.none(), appUserController.changePinByOtp);
|
|
router.post("/send-pin-otp", upload.none(), appUserController.sendPinOtp);
|
|
|
|
// chat sessions
|
|
router.get('/chat-sessions', authMiddleware.authenticateToken, appUserController.getChatSessionsByAppUserID);
|
|
router.get('/chat/:session_id', authMiddleware.authenticateToken, appUserController.getChatForEachSession);
|
|
|
|
// delete chat sessions and chats do not delete logs make them inactive
|
|
router.put('/delete-session',upload.none() ,authMiddleware.authenticateToken, appUserController.deleteChatSessions);
|
|
router.put('/delete-chat',upload.none(), authMiddleware.authenticateToken, appUserController.clearChatbasedOnSessions);
|
|
|
|
router.post('/chat-logs-bytime', upload.none(),authMiddleware.authenticateToken, appUserController.getChatByTime);
|
|
// check email and hospital_code
|
|
router.post('/check-email-code', upload.none(), appUserController.checkEmailCode);
|
|
// get popular topics
|
|
router.get('/popular-topics',authMiddleware.authenticateToken, appUserController.getPopularTopics);
|
|
|
|
// Pin management routes
|
|
router.put('/change-pin', upload.none(), authMiddleware.authenticateToken, appUserController.changePin);
|
|
router.post('/forgot-pin', upload.none(), appUserController.forgotPin);
|
|
router.post('/verify-pin', upload.none(), appUserController.checkPin);
|
|
|
|
router.put('/update-settings', upload.none(), authMiddleware.authenticateToken, appUserController.updateSettings);
|
|
router.put('/like', upload.none(), authMiddleware.authenticateToken, appUserController.hitlike);
|
|
|
|
router.put('/flag', upload.none(), authMiddleware.authenticateToken, appUserController.hitFlag);
|
|
|
|
module.exports = router; |