Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions server/Connection/dbconnection.js
Original file line number Diff line number Diff line change
@@ -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;

4 changes: 3 additions & 1 deletion server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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");
Expand All @@ -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}`);
Expand Down
48 changes: 47 additions & 1 deletion server/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
90 changes: 90 additions & 0 deletions server/routes/UserProfile.js
Original file line number Diff line number Diff line change
@@ -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: "[email protected]",
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;