diff --git a/server/Connection/dbconnection.js b/server/Connection/dbconnection.js index 30d87e1..e4fa1f5 100644 --- a/server/Connection/dbconnection.js +++ b/server/Connection/dbconnection.js @@ -1,12 +1,19 @@ +// server/Connection/dbconnection.js const mongoose = require("mongoose"); +require("dotenv").config(); -exports.connect = () => { - mongoose - .connect(process.env.MONGODBURL) - .then(() => console.log("Db connected")) - .catch((error) => { - console.log("connection fialed"); - console.log(error); - process.exit(1); +const connectDB = async () => { + try { + await mongoose.connect(process.env.MONGO_URI, { + useNewUrlParser: true, + useUnifiedTopology: true, }); + console.log("MongoDB connected successfully."); + } catch (error) { + console.error("MongoDB connection failed:", error.message); + process.exit(1); + } }; + +module.exports = connectDB; + diff --git a/server/index.js b/server/index.js index 6b6c1d8..56c11e1 100644 --- a/server/index.js +++ b/server/index.js @@ -4,9 +4,11 @@ const cookieParser = require("cookie-parser"); const cors = require("cors"); const express = require("express"); const database = require("./Connection/dbconnection"); +database(); const mongoose = require("mongoose"); const dotenv = require("dotenv"); dotenv.config(); +const userRoutes = require("./routes/UserProfile"); const AuthRoutes = require("./routes/AuthRoutes"); const BlogRoutes = require("./routes/BlogRoutes"); @@ -27,7 +29,6 @@ app.use( app.use(express.json()); app.use(express.urlencoded({ extended: true })); -database.connect(); app.get("/", (req, res) => { res.send("Hello World"); @@ -38,6 +39,7 @@ app.use("/api/blog", BlogRoutes); app.use("/api/payment", paymnet); app.use("/api/order", OrderRoutes); app.use("/api/plants", PlantsRoute); +app.use('/api/User',userRoutes); app.listen(process.env.PORT || 3000, () => { console.log(`Server is running on port ${process.env.PORT || 3000}`); diff --git a/server/models/user.js b/server/models/user.js index 26719f0..83ee616 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -53,6 +53,52 @@ location: { ref: "Plant", }, ], + + +lastLogin:{ + type:Date, + default:Date.now, +}, + +pastPurchase: [{ + productId: { + type: mongoose.Schema.Types.ObjectId, + ref: "Product", + required: true, + }, + + purchaseDate: { + type: Date, + default: Date.now, + }, + + quantity: { + type: Number, + default: 1, + }, + + price: { + type: Number, + required: true, + }, + + recentItemsViewed: [{ + plantId: { + type: mongoose.Schema.Types.ObjectId, + ref: "Plant", + required: true, + }, + + viewedAt: { + type: Date, + default: Date.now, + }, + }], +}], +}, +{ + timestamps: true }); -exports.User = mongoose.model("User", userSchema); +const User = mongoose.model("User", userSchema); +module.exports = User; \ No newline at end of file diff --git a/server/routes/UserProfile.js b/server/routes/UserProfile.js new file mode 100644 index 0000000..84aea2d --- /dev/null +++ b/server/routes/UserProfile.js @@ -0,0 +1,90 @@ +const express= require("express"); +const router= express.Router(); +const User = require('../models/user'); +const Plant = require('../models/Plant.model'); + +//dummy monodb data for testing +//for storing user data +// also storing users last login time, last updated + +router.post('/create-dummy', async (req, res) => { + try { + const dummyUser = new User({ + username: "testuser", + email: "test@example.com", + password: "password123" + }); + + const savedUser = await dummyUser.save(); + res.status(201).json({ message: "Dummy user created", user: savedUser }); + } catch (error) { + console.error("Error creating dummy user:", error); + res.status(500).json({ message: "Error creating dummy user", error: error.message }); + } +}); + +//Saving records of users plantId, quantity, price + +router.post('/:userId/purchase', async (req, res) => { + try { + console.log('Incoming purchase request for user:', req.params.userId); + console.log('Request body:', req.body); + + const user = await User.findById(req.params.userId); + + if (!user) { + console.log('User not found'); + return res.status(404).json({ message: 'User not found' }); + } + + const { plantId, quantity, price } = req.body; + console.log('Purchase data:', { plantId, quantity, price }); + + if (!user.pastPurchases) { + user.pastPurchases = []; + } + + user.pastPurchases.push({ plantId, quantity, price }); + await user.save(); + + res.json({ message: 'Purchase added successfully', pastPurchases: user.pastPurchases }); + } catch (error) { + console.error('Error adding purchase:', error); + res.status(500).json({ message: 'Server Error' }); + } +}); + +//saving records of users past viewed PLANTS + +router.put('/:userId/viewed-item', async (req, res) => { + console.log("PUT /:userId/viewed-item called"); + + try { + const user = await User.findById(req.params.userId); + const { plantId } = req.body; + + if (!user) { + return res.status(404).json({ message: 'User not found' }); + } + + + if (!user.recentItemsViewed) { + user.recentItemsViewed = []; + } + + user.recentItemsViewed.push({ plantId }); + + await user.save(); + + res.json({ + message: 'Viewed item added successfully', + plantsViewed: user.recentItemsViewed + }); + + } catch (error) { + console.error('Error adding viewed item:', error); + res.status(500).json({ message: 'Server Error' }); + } +}); + +module.exports = router;