diff --git a/backend/controllers/adminController.js b/backend/controllers/adminController.js index ef8a1ae652e554ddea11fcfd89b37a260e6fc5df..1a50f9aa2fcb8c46c15eaa2f63414dea921468e0 100644 --- a/backend/controllers/adminController.js +++ b/backend/controllers/adminController.js @@ -1,3 +1,4 @@ +// import { addDoctorService } from '../services/adminService.js'; // Import the service import validator from "validator"; import bcrypt from "bcrypt"; import doctorModel from '../models/doctorModel.js'; @@ -5,7 +6,11 @@ import doctorModel from '../models/doctorModel.js'; // function to add doctor in the database const addDoctor = async (req, res) => { try { + + const { name, email, password, speciality, degree, experience, about, fees, address } = req.body; + console.log(req.body) + if (!name || !email || !password || !speciality || !degree || !experience || !about || !fees || !address) { @@ -26,7 +31,7 @@ const addDoctor = async (req, res) => { const salt = await bcrypt.genSalt(5); // the more no. round the more time it will take const hashedPassword = await bcrypt.hash(password, salt) - //save the data to database + //save the data to database this has to have its own file called adminService const doctorData = { name, @@ -45,6 +50,12 @@ const addDoctor = async (req, res) => { await newDoctor.save() res.json({ success: true, message: 'Doctor Added' }) + // // Call the service function to handle doctor creation + // const response = await addDoctorService({ name, email, password, speciality, degree, experience, about, fees, address }); + + // res.json(response); // Send the response from the service + + } catch (error) { console.log(error); res.status(500).json({ success: false, message: error.message }); diff --git a/backend/routes/adminRoute.js b/backend/routes/adminRoute.js index 7fe984444ba156aec3bad901bc83a74141025260..35edfcd54f547eaec4351aedfedd446affa7849e 100644 --- a/backend/routes/adminRoute.js +++ b/backend/routes/adminRoute.js @@ -1,10 +1,12 @@ import express from 'express'; import { addDoctor } from '../controllers/adminController.js'; - +// Create a new router instance for handling admin-related routes const adminRouter = express.Router(); -adminRouter.post('/add-doctor',addDoctor); + +// This handles POST requests to the endpoint: http://localhost:3000/api/v1/admin/add-doctor +adminRouter.post('/add-doctor', addDoctor); export default adminRouter; diff --git a/backend/server.js b/backend/server.js index 87056f46203433541d1a61155b269cb925c9e421..7642fda520dafea76ff5c9a05b5bd1664f9eb4e9 100644 --- a/backend/server.js +++ b/backend/server.js @@ -14,12 +14,15 @@ connectDB(); // middlewares +// Middleware to parse JSON request bodies app.use(express.json()); app.use(cors()); -//api endpoints use localhost:3000/api/v1/add-doctor -app.use("/api/v1/admin",adminRouter) +// Define API endpoints using base URL: http://localhost:3000/api/v1/admin +// This means all routes inside `adminRouter` will be prefixed with `/api/v1/admin` +app.use("/api/v1/admin", adminRouter); + diff --git a/backend/services/adminService.js b/backend/services/adminService.js new file mode 100644 index 0000000000000000000000000000000000000000..67f831c3c1283238b9407e9304aa5a9364b9f618 --- /dev/null +++ b/backend/services/adminService.js @@ -0,0 +1,39 @@ +import doctorModel from '../models/doctorModel.js'; +import bcrypt from "bcrypt"; + + + +//function to for service layer +const addDoctorService = async ({ name, email, password, speciality, degree, experience, about, fees, address }) => { + try { + + // hashing user password + const salt = await bcrypt.genSalt(5); // the more rounds, the more time it will take + const hashedPassword = await bcrypt.hash(password, salt); + + // Save the data to database + const doctorData = { + name, + email, + password: hashedPassword, + speciality, + degree, + experience, + about, + fees, + address, + date: Date.now(), + }; + + const newDoctor = new doctorModel(doctorData); + await newDoctor.save(); + + return { success: true, message: 'Doctor Added' }; + + } catch (error) { + console.log(error); + return { success: false, message: error.message }; + } +}; + +export { addDoctorService }; \ No newline at end of file