From a5a646f3dafd31d6466710f5a07984c8d49d3ab1 Mon Sep 17 00:00:00 2001 From: AF7626 <af7626@student.jamk.fi> Date: Wed, 12 Feb 2025 10:53:17 +0200 Subject: [PATCH] add service folder will not use it at the moment --- backend/controllers/adminController.js | 13 ++++++++- backend/routes/adminRoute.js | 6 ++-- backend/server.js | 7 +++-- backend/services/adminService.js | 39 ++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 backend/services/adminService.js diff --git a/backend/controllers/adminController.js b/backend/controllers/adminController.js index ef8a1ae..1a50f9a 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 7fe9844..35edfcd 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 87056f4..7642fda 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 0000000..67f831c --- /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 -- GitLab