diff --git a/Backend/Controllers/meeting.controller.js b/Backend/Controllers/crop.controller.js similarity index 100% rename from Backend/Controllers/meeting.controller.js rename to Backend/Controllers/crop.controller.js diff --git a/Backend/Routes/meeting.routes.js b/Backend/Controllers/farm.controller.js similarity index 100% rename from Backend/Routes/meeting.routes.js rename to Backend/Controllers/farm.controller.js diff --git a/Backend/Controllers/finance.controller.js b/Backend/Controllers/finance.controller.js new file mode 100644 index 0000000..e69de29 diff --git a/Backend/Controllers/task.controller.js b/Backend/Controllers/task.controller.js new file mode 100644 index 0000000..e69de29 diff --git a/Backend/Models/crop.model.js b/Backend/Models/crop.model.js new file mode 100644 index 0000000..b89c83e --- /dev/null +++ b/Backend/Models/crop.model.js @@ -0,0 +1,21 @@ +const mongoose = require("mongoose"); + +const cropSchema = new mongoose.Schema( + { + name: { type: String, required: true }, + farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true }, + plantedDate: { type: Date, required: true, default: Date.now() }, + harvestDate: { type: Date }, + growthStage: { + type: String, + enum: ["Planted", "Growing", "Ready to Harvest"], + default: "Planted", + }, + healthStatus: { type: String, default: "Healthy" }, + }, + { timestamps: true } +); + +const Crop = mongoose.model("Crop", cropSchema); + +module.exports = Crop; diff --git a/Backend/Models/farm.model.js b/Backend/Models/farm.model.js new file mode 100644 index 0000000..7e7b663 --- /dev/null +++ b/Backend/Models/farm.model.js @@ -0,0 +1,36 @@ +const mongoose = require("mongoose"); + +const farmSchema = new mongoose.Schema( + { + name: { type: String, required: true }, + location: { type: String, required: true }, + owner: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + required: true, + }, + waterContent: { type: String, required: true }, + soilType: { type: String, required: true }, + fertilizer: [ + { + name: { type: String }, + quantity: { type: Number }, + addedAt: { type: Date, default: Date.now }, + }, + ], + pestisides: [ + { + name: { type: String }, + quantity: { type: Number }, + addedAt: { type: Date, default: Date.now }, + }, + ], + crops: [{ type: mongoose.Schema.Types.ObjectId, ref: "Crop" }], + finances: { type: mongoose.Schema.Types.ObjectId, ref: "Finance" }, + }, + { timestamps: true } +); + +const Farm = mongoose.model("Farm", farmSchema); + +module.exports = Farm; diff --git a/Backend/Models/finance.model.js b/Backend/Models/finance.model.js new file mode 100644 index 0000000..06066d0 --- /dev/null +++ b/Backend/Models/finance.model.js @@ -0,0 +1,21 @@ +const mongoose = require("mongoose"); +const financeSchema = new mongoose.Schema( + { + farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true }, + transactions: [ + { + type: { type: String, enum: ["Expense", "Revenue"], required: true }, + amount: { type: Number, required: true }, + description: { type: String }, + date: { type: Date, default: Date.now }, + }, + ], + totalExpenses: { type: Number, default: 0 }, + totalRevenue: { type: Number, default: 0 }, + }, + { timestamps: true } +); + +const Finance = mongoose.model("Finance", financeSchema); + +module.exports = Finance; diff --git a/Backend/Models/meeting.model.js b/Backend/Models/meeting.model.js deleted file mode 100644 index 66ac00e..0000000 --- a/Backend/Models/meeting.model.js +++ /dev/null @@ -1,51 +0,0 @@ -const mongoose = require("mongoose"); - -const meetingSchema = new mongoose.Schema( - { - meetingDate: { - type: Date, - required: true, - }, - meetingTime: { - type: String, - required: true, - }, - mentorName: { - type: String, - required: true, - }, - mentiName: { - type: String, - required: true, - }, - mentorId: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - required: true, - }, - mentiId: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - required: true, - }, - status: { - type: String, - default: "Pending", - }, - amount: { - type: Number, - required: true, - }, - paymentStatus: { - type: "Status", - default: "Pending", - }, - }, - { - timestamps: true, - } -); - -const Meeting = mongoose.model("Meeting", meetingSchema); - -module.exports = Meeting; diff --git a/Backend/Models/task.model.js b/Backend/Models/task.model.js new file mode 100644 index 0000000..784b548 --- /dev/null +++ b/Backend/Models/task.model.js @@ -0,0 +1,31 @@ +const mongoose = require("mongoose"); + +const taskSchema = new mongoose.Schema( + { + farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true }, + crop: { type: mongoose.Schema.Types.ObjectId, ref: "Crop" }, + taskType: { + type: String, + enum: [ + "Sowing", + "Watering", + "Fertilization", + "Pest Control", + "Harvesting", + ], + required: true, + }, + description: { type: String }, + assignedDate: { type: Date, required: true, default: Date.now }, + status: { + type: String, + enum: ["Pending", "Completed"], + default: "Pending", + }, + }, + { timestamps: true } +); + +const Task = mongoose.model("Task", taskSchema); + +module.exports = Task; diff --git a/Backend/Models/user.model.js b/Backend/Models/user.model.js index 0d662f7..2e66b40 100644 --- a/Backend/Models/user.model.js +++ b/Backend/Models/user.model.js @@ -11,21 +11,9 @@ const userSchema = new mongoose.Schema( maxLength: [30, "Please Enter the valid name"], minLength: [2, "Name should have more than 5 characters"], }, - - skills: [ - { - type: String, - }, - ], - uniqueRole: { - type: String, - }, country: { type: String, }, - description: { - type: String, - }, email: { type: String, required: true, @@ -41,23 +29,9 @@ const userSchema = new mongoose.Schema( type: String, default: "/images/profile.jpeg", }, - role: { - type: String, - default: "user", - }, - mainInterest: [ - { - type: String, - }, - ], - documents: [ - { - type: String, - }, - ], - meettingFees: { - type: Number, - }, + role: { type: String, enum: ["farmer", "admin"], default: "farmer" }, + farms: [{ type: mongoose.Schema.Types.ObjectId, ref: "Farm" }], + resetPasswordToken: String, resetPasswordExpiry: Date, }, diff --git a/Backend/app.js b/Backend/app.js index 95a7166..4846a34 100644 --- a/Backend/app.js +++ b/Backend/app.js @@ -19,16 +19,6 @@ const corsOptions = { credentials: true, }; -const server = createServer(app); - -const io = new Server(server, { - cors: { - origin: process.env.FRONTEND_URI, - methods: ["GET", "PUT", "POST", "PATCH", "DELETE"], - credentials: true, - }, -}); - app.use(cors(corsOptions)); app.use(express.json({ limit: "16kb" })); app.use(express.urlencoded({ extended: true, limit: "16kb" })); @@ -41,46 +31,4 @@ app.get("/", (req, res) => { app.use("/api/v1", userRoute); -const emailToSocketIdMap = new Map(); -const socketidToEmailMap = new Map(); - -io.on("connection", (socket) => { - // console.log(`Socket Connected`, socket.id); - socket.on("room:join", (data) => { - const { email, room } = data; - emailToSocketIdMap.set(email, socket.id); - socketidToEmailMap.set(socket.id, email); - io.to(room).emit("user:joined", { email, id: socket.id }); - socket.join(room); - io.to(socket.id).emit("room:join", data); - }); - - socket.on("message", ({ message, room }) => { - // console.log(message); - // console.log("Message is : ", message, "Room is : ", room); - //for sending the message all the users that are connected < --- > io.emit("receive-message", message); - //for sending the message for all the user except us <----> socket.broadcast.emit("receive-message", message); - socket.join(room); - io.to(room).emit("receive-message", message); // For sending the message for perticular room or user - }); - - socket.on("user:call", ({ to, offer }) => { - io.to(to).emit("incomming:call", { from: socket.id, offer }); - }); - - socket.on("call:accepted", ({ to, ans }) => { - io.to(to).emit("call:accepted", { from: socket.id, ans }); - }); - - socket.on("peer:nego:needed", ({ to, offer }) => { - //console.log("peer:nego:needed", offer); - io.to(to).emit("peer:nego:needed", { from: socket.id, offer }); - }); - - socket.on("peer:nego:done", ({ to, ans }) => { - // console.log("peer:nego:done", ans); - io.to(to).emit("peer:nego:final", { from: socket.id, ans }); - }); -}); - -module.exports = server; +module.exports = app; diff --git a/Backend/index.js b/Backend/index.js index dd34608..9d577f8 100644 --- a/Backend/index.js +++ b/Backend/index.js @@ -2,6 +2,7 @@ const server = require("./app.js"); const dotenv = require("dotenv"); const cloudinary = require("cloudinary").v2; const DB_connect = require("./Database/DB_connect.js"); +const app = require("./app.js"); // dotenv Configuration dotenv.config({ @@ -17,7 +18,7 @@ cloudinary.config({ DB_connect(); // Listening the port -server.listen(process.env.PORT, () => { +app.listen(process.env.PORT, () => { console.log("Server is Running on ", process.env.PORT); console.log("Frontend URI : ", process.env.FRONTEND_URI); }); diff --git a/Backend/vercel.json b/Backend/vercel.json deleted file mode 100644 index 1f7efcc..0000000 --- a/Backend/vercel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "version": 2, - "builds": [ - { - "src": "index.js", - "use": "@vercel/node" - } - ], - "routes": [ - { - "src": "/api/v1/(.*)", - "dest": "index.js" - }, - { - "src": "/(.*)", - "dest": "index.js" - } - ] -}