From 5c2261c239f952ddd0f35193b632850fbaf24de7 Mon Sep 17 00:00:00 2001 From: raj Date: Thu, 23 Mar 2023 06:35:13 +0000 Subject: [PATCH 01/34] Commit message --- .gitignore | 2 ++ src/controllers/tankscontroller.js | 0 2 files changed, 2 insertions(+) create mode 100644 .gitignore create mode 100644 src/controllers/tankscontroller.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4e5ae94d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +src/api-docs/api.html +src/config/swagger.js diff --git a/src/controllers/tankscontroller.js b/src/controllers/tankscontroller.js new file mode 100644 index 00000000..e69de29b From 03c82fcc316e8747a78c2e5f96ead9a877c059c1 Mon Sep 17 00:00:00 2001 From: raj Date: Thu, 23 Mar 2023 08:41:53 +0000 Subject: [PATCH 02/34] Merge changes from remote master branch --- watermanagement-backend | 1 + 1 file changed, 1 insertion(+) create mode 160000 watermanagement-backend diff --git a/watermanagement-backend b/watermanagement-backend new file mode 160000 index 00000000..0f11d82f --- /dev/null +++ b/watermanagement-backend @@ -0,0 +1 @@ +Subproject commit 0f11d82f3692b53f67a15af4ad516bf0a1240d70 From e26b2fee31fa7f3ff20368fccf93aa0c7c07551a Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Thu, 23 Mar 2023 15:23:32 +0530 Subject: [PATCH 03/34] connected status list --- src/controllers/tankersController.js | 26 +++++++++++++++++ src/models/tankers.js | 2 +- src/routes/tankersRoute.js | 42 +++++++++++++++++++++++++++- 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 43f7fc00..cc272a9f 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -1,4 +1,5 @@ const { Tanker, Tankerbooking,Bore,GovtPipeLine } = require('../models/tankers') +const { FriendRequest } = require('../models/supplier') const { User,Counter, generateBookingId,resetCounter,generateCustomerId } = require('../models/User') @@ -461,3 +462,28 @@ exports.status = async (req, reply) => { } }; +exports.connectionStatus = async (req, reply) => { + try { + // query the database to check if the customer and supplier are connected + const isConnected = await FriendRequest.findOne({ customerId: req.query.customerId }) + .populate('supplier', null, { supplierId: req.query.supplierId }) + .exec() + .then(customer => customer.supplier !== null); + + console.log("isconne..", isConnected) + + if (isConnected) { + // if customer and supplier are connected, return list of tankers + const tankers = await Tanker.find({ status : 'connected'}).exec(); + console.log("tankers..", tankers) + reply.send({ tankers }); + } else { + // if customer and supplier are not connected, return error + reply.status(403).send({ error: 'Forbidden' });8 + } + //res.send({ tankers }); + } catch (err) { + console.error(err); + reply.status(500).send({ error: 'Internal server error' }); + } +} \ No newline at end of file diff --git a/src/models/tankers.js b/src/models/tankers.js index 6c0b6c9f..58954b48 100644 --- a/src/models/tankers.js +++ b/src/models/tankers.js @@ -24,7 +24,7 @@ const tankersSchema = new mongoose.Schema({ type: [String], default: [] }, - status: { type: String} + status: { type: String, default: 'disconnected'} }); diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index c0ca27db..06c51de2 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -54,7 +54,7 @@ module.exports = function (fastify, opts, next) { }, capacity: { type: "string"}, price: {type : "string"}, - status: {type: "string"} + // status: {type: "string"} }, }, @@ -568,6 +568,46 @@ module.exports = function (fastify, opts, next) { preHandler: fastify.auth([fastify.authenticate]), handler: tankersController.status, }); + + + fastify.route({ + method: 'GET', + url: '/connection-status', + schema: { + tags: ["Supplier"], + description: "This is for Get Tank Data for status connected or not", + summary: "This is for to Get Tank Data for status connected or not", + querystring: { + type: 'object', + properties: { + customerId: { type: 'string' }, + supplierId: { type: 'string' } + }, + required: ['customerId', 'supplierId'] + }, + // response: { + // 200: { + // type: 'object', + // properties: { + // isConnected: { type: 'boolean' } + // } + // }, + // 500: { + // type: 'object', + // properties: { + // error: { type: 'string' } + // } + // } + // } + security: [ + { + basicAuth: [], + }, + ], + }, + handler: tankersController.connectionStatus + }); + next(); } From 3bd6b0e953e0ce74769ba8a15deba46f932b17ff Mon Sep 17 00:00:00 2001 From: raj Date: Fri, 24 Mar 2023 05:01:06 +0000 Subject: [PATCH 04/34] updating tankers --- src/tankers.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/tankers.js diff --git a/src/tankers.js b/src/tankers.js new file mode 100644 index 00000000..e69de29b From f9ce6aa9bec59a8a77093eb1414b3cc955c7d70d Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 11:00:13 +0530 Subject: [PATCH 05/34] connection-status --- src/controllers/tankersController.js | 27 ++++++++++++++++++++++++++- src/controllers/tanksController.js | 4 ++-- src/routes/tankersRoute.js | 25 ++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 54c1c2c0..3023aa07 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -1,7 +1,7 @@ const { Tanker, Tankerbooking,Bore,GovtPipeLine } = require('../models/tankers') const { User,Counter, generateBookingId,resetCounter,generateCustomerId } = require('../models/User') - +const { FriendRequest } = require('../models/supplier') //const User = require("../models/User"); const boom = require("boom"); @@ -527,3 +527,28 @@ exports.status = async (req, reply) => { } }; +exports.connectionStatus = async (req, reply) => { + try { + // query the database to check if the customer and supplier are connected + const isConnected = await User.findOne({ customerId: req.query.customerId }) + .populate('supplier', null, { supplierId: req.query.supplierId }) + .exec() + .then(customer => customer.supplier !== null); + + console.log("isconne..", isConnected) + + if (isConnected) { + // if customer and supplier are connected, return list of tankers + const tankers = await Tanker.find({ }).exec(); + console.log("tankers..", tankers) + reply.send({ tankers }); + } else { + // if customer and supplier are not connected, return error + reply.status(403).send({ error: 'Forbidden' }); + } + //res.send({ tankers }); + } catch (err) { + console.error(err); + reply.status(500).send({ error: 'Internal server error' }); + } +} \ No newline at end of file diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index b3015698..4c7a7fcf 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6,7 +6,7 @@ const boom = require("boom"); const fastify = require("fastify")({ logger: true, }); -const tanksController = require("./tanksController") +// const tanksController = require("./tanksController") @@ -510,4 +510,4 @@ exports.consumption = async (req, reply) => { } catch (err) { throw boom.boomify(err); } -}; +}; \ No newline at end of file diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index b4ca6de0..599cbc02 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -583,7 +583,30 @@ module.exports = function (fastify, opts, next) { }); - + fastify.route({ + method: 'GET', + url: '/connection-status', + schema: { + tags: ["Supplier"], + description: "This is for Get Tank Data for status connected or not", + summary: "This is for to Get Tank Data for status connected or not", + querystring: { + type: 'object', + properties: { + customerId: { type: 'string' }, + //supplierId: { type: 'string' } + }, + required: ['customerId'] + }, + security: [ + { + basicAuth: [], + }, + ], + }, + handler: tankersController.connectionStatus + }); + next(); } From ab270bcc91a5781d8c3c4d8c8c05849120b4e08d Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 01:44:16 -0400 Subject: [PATCH 06/34] fetching active delivery boys for a particular supplier --- src/controllers/supplierOrderController.js | 19 ++++++++++++++++- src/controllers/tankscontroller.js | 0 src/models/supplier.js | 3 ++- src/routes/supplierOrdersRoutes.js | 24 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) delete mode 100644 src/controllers/tankscontroller.js diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index e0a26b66..557ee357 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -109,4 +109,21 @@ exports.orderNow = async (req, reply) => { } catch (err) { throw boom.boomify(err); } - }; \ No newline at end of file + }; + + exports.getactiveDeliveryboys = async (req, reply) => { + try { + await DeliveryBoy.find({supplierId: req.params.supplierId,status:"active"}) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } + }; + \ No newline at end of file diff --git a/src/controllers/tankscontroller.js b/src/controllers/tankscontroller.js deleted file mode 100644 index e69de29b..00000000 diff --git a/src/models/supplier.js b/src/models/supplier.js index b0cbd46a..db30c156 100644 --- a/src/models/supplier.js +++ b/src/models/supplier.js @@ -101,6 +101,7 @@ const supplierSchema = new mongoose.Schema( }); const deliveryBoySchema = new mongoose.Schema({ + supplierId:{ type: String, default: null }, name: { type: String, default: null }, phone: { type: String, default: null,unique:true }, alternativeContactNumber : { type : String,default: null }, @@ -109,7 +110,7 @@ const supplierSchema = new mongoose.Schema( state: { type: String, default: null }, zip: { type: String, default: null }, timestamp: { type: Date, default: Date.now }, - status: { type: String, default: "active" }, + status: { type: String, default: "Inactive" }, }); diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index 54867d71..70872e52 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -103,6 +103,30 @@ module.exports = function (fastify, opts, next) { handler: supplierOrderController.addDeliveryboy, }); + fastify.get("/api/getActiveDeliveryboys/:supplierId", { + schema: { + tags: ["Supplier"], + description: "This is for Get avtive delivery boys Data", + summary: "This is for to Get avtive delivery boys Data", + params: { + required: ["supplierId"], + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: supplierOrderController.getactiveDeliveryboys, + }); next(); From 68a6786a2ef3c4b690298ebbc7ccb00102116511 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 01:45:19 -0400 Subject: [PATCH 07/34] fetching active delivery boys for a particular supplier --- src/controllers/supplierOrderController.js | 1 + src/models/supplier.js | 1 + src/routes/supplierOrdersRoutes.js | 1 + 3 files changed, 3 insertions(+) diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index 557ee357..8d45dfda 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -101,6 +101,7 @@ exports.orderNow = async (req, reply) => { } } + const insertedagent = await agent.save(); return insertedagent; diff --git a/src/models/supplier.js b/src/models/supplier.js index db30c156..e52d28b0 100644 --- a/src/models/supplier.js +++ b/src/models/supplier.js @@ -99,6 +99,7 @@ const supplierSchema = new mongoose.Schema( status: { type: String, default: "pending" }, timestamp: { type: Date, default: Date.now } }); + const deliveryBoySchema = new mongoose.Schema({ supplierId:{ type: String, default: null }, diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index 70872e52..118017e4 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -129,6 +129,7 @@ module.exports = function (fastify, opts, next) { }); + next(); } From abee47ecd444fb46f192e6e790d30d5d1852a16e Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 02:09:16 -0400 Subject: [PATCH 08/34] made changes for sending otp to supplier --- src/controllers/userController.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/controllers/userController.js b/src/controllers/userController.js index f2b00277..95e10cc8 100644 --- a/src/controllers/userController.js +++ b/src/controllers/userController.js @@ -11,6 +11,7 @@ const libphonenumberjs = require("libphonenumber-js"); const boom = require("boom"); // Get Data Models +const { Supplier, generateSupplierId, FriendRequest,DeliveryBoy} = require("../models/supplier") const { User,Counter, generateBookingId,resetCounter,generateCustomerId,ProfilePicture} = require('../models/User') //const User = require("../models/User"); @@ -400,7 +401,15 @@ exports.sendSms = async (request, reply) => { const mobile = request.body.mobileNumbers//'8341426949'; const message = `Welcome to Arminta !!! your OTP is ${code} please use it for login.`//`Welcome to Arminta !!! your OTP is ${code} please use it for login.`; - await User.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) + const user = await User.findOne({phone: mobile}) + const supplier = await Supplier.findOne({phone: mobile}) + if(user){ + await User.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) + } + if(supplier){ + await Supplier.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) + } + const apiUrl = `https://smslogin.co/v3/api.php?username=${username}&apikey=${apiKey}&senderid=${senderId}&mobile=${mobile}&message=${encodeURIComponent(message)}`; const options = { From 1b0fc4072c7bd7d195e237323407b128d7f00c82 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 03:00:34 -0400 Subject: [PATCH 09/34] made changes for sending otp to supplier --- src/controllers/supplierOrderController.js | 62 +++++++++++++++++++++- src/routes/supplierOrdersRoutes.js | 26 +++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index 8d45dfda..c2a6438c 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -101,7 +101,7 @@ exports.orderNow = async (req, reply) => { } } - + const insertedagent = await agent.save(); return insertedagent; @@ -127,4 +127,64 @@ exports.orderNow = async (req, reply) => { throw boom.boomify(err); } }; + + +exports.verifyPhone = async (req, reply) => { + console.log("-------------------------------------------------"); + try { + phone = req.body.phone; + phoneVerificationCode = req.body.phoneVerificationCode; + + // check if user exists in the system. If user exists , display message that + // username is not available + console.log( + "this is the phone and verification code", + phone, + phoneVerificationCode + ); + userExists = await Supplier.findOne({ + phone: phone, + phoneVerified: false, + phoneVerificationCode: phoneVerificationCode, + }); + console.log(userExists); + if (userExists) { + // update the phoneVerified flag to true. + const filter = { + phone: phone, + phoneVerificationCode: phoneVerificationCode, + }; + const update = { phoneVerified: true }; + const doc = await Supplier.findOneAndUpdate(filter, update); + updatedUser = await Supplier.findOne({ phone: phone }); + + if (updatedUser.phoneVerified) { + reply.send('{"armintatankdata":{"error":false,"verified": true}}'); + } else { + error = { + armintatankdata: { + error: true, + code: 10005, + message: "10005 - Verification code entered cannot be validated.", + }, + }; + req.body.regError = error; + reply.send(error); + } + } else { + error = { + armintatankdata: { + error: true, + code: 10005, + message: "10005 - Verification code entered cannot be validated.", + }, + }; + req.body.regError = error; + reply.send(error); + } + } catch (err) { + throw boom.boomify(err); + } +}; + \ No newline at end of file diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index 118017e4..2bc076b5 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -128,6 +128,32 @@ module.exports = function (fastify, opts, next) { handler: supplierOrderController.getactiveDeliveryboys, }); + + fastify.route({ + method: "POST", + url: "/api/phoneverify", + schema: { + tags: ["Supplier-Data"], + description: "This is for verify supplier Phone", + summary: "This is to Verify supplier Phone.", + body: { + type: "object", + required: ["phone"], + properties: { + phoneVerificationCode: { type: "string" }, + phone: { type: "string" }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + // preHandler: fastify.auth([fastify.authenticate]), + handler: supplierOrderController.verifyPhone, + }); + next(); From 616b883824a6a4500d876c9600ce522db134fccc Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 15:44:47 +0530 Subject: [PATCH 10/34] price convert to array --- src/models/tankers.js | 10 +++++----- src/routes/tankersRoute.js | 7 ++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/models/tankers.js b/src/models/tankers.js index 81e8e02b..af9dfe42 100644 --- a/src/models/tankers.js +++ b/src/models/tankers.js @@ -21,11 +21,11 @@ const tankersSchema = new mongoose.Schema({ supplier_address: { type: String, default: null }, supplier_name : { type: String, default: null }, - price: { - type: [String], - default: [] - }, - status: { type: String}, + // price: { + // type: [String], + // default: [] + // }, + }); diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index aea3b9f2..39abb553 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -53,7 +53,7 @@ module.exports = function (fastify, opts, next) { }, }, capacity: { type: "string"}, - price: {type : "string"}, + // price: {type : "string"}, // status: {type: "string"} @@ -591,8 +591,8 @@ module.exports = function (fastify, opts, next) { url: '/connection-status', schema: { tags: ["Supplier"], - description: "This is for Get Tank Data for status connected or not", - summary: "This is for to Get Tank Data for status connected or not", + description: "This is for Get Tankers Data for status connected or not", + summary: "This is for to Get Tankers Data for status connected or not", querystring: { type: 'object', properties: { @@ -607,6 +607,7 @@ module.exports = function (fastify, opts, next) { }, ], }, + handler: tankersController.connectionStatus }); From 1c9fc20e5f077e8a7e203fed1f7aec79392c9871 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 06:49:38 -0400 Subject: [PATCH 11/34] made changes for sending otp to supplier --- src/controllers/tankersController.js | 22 +++++++++++++++++++++- src/routes/supplierOrdersRoutes.js | 2 +- src/routes/tankersRoute.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 3023aa07..623a8cdb 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -551,4 +551,24 @@ exports.connectionStatus = async (req, reply) => { console.error(err); reply.status(500).send({ error: 'Internal server error' }); } -} \ No newline at end of file +} + + + + + +exports.connectstatus = async (req, reply) => { + try { + const customerId = req.params.customerId; + const supplierId = req.query.supplierId; + const receiverId = mongoose.Types.ObjectId(supplierId); + const data = await FriendRequest.findOne({ sender: customerId, receiver: receiverId }); + let connection_status = "not requested"; + if (data) { + connection_status = data.status; + } + reply.send({ status_code: 200, customerId: customerId, supplierId: supplierId, status: connection_status }); + } catch (err) { + throw boom.boomify(err); + } +}; diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index 2bc076b5..3b787d73 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -105,7 +105,7 @@ module.exports = function (fastify, opts, next) { fastify.get("/api/getActiveDeliveryboys/:supplierId", { schema: { - tags: ["Supplier"], + tags: ["Supplier-Data"], description: "This is for Get avtive delivery boys Data", summary: "This is for to Get avtive delivery boys Data", params: { diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index aea3b9f2..fb7c823e 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -610,6 +610,34 @@ module.exports = function (fastify, opts, next) { handler: tankersController.connectionStatus }); + fastify.get("/api/getConnectStatus/:customerId", { + schema: { + tags: ["Supplier"], + description: "This is to get connect status", + summary: "This is to get connect status", + params: { + required: ["customerId"], + type: "object", + properties: { + customerId: { + type: "string", + description: "customerId", + }, + }, + }, + querystring: { + supplierId: {type: 'string'} + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: tankersController.connectstatus, + }); + next(); } From e7cdd263cebb6d568b7f9f29520391207d4d512b Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 16:30:12 +0530 Subject: [PATCH 12/34] friend-request --- src/handlers/friendRequestHandler.js | 43 +++++++++++++++++----------- src/models/supplier.js | 4 +-- src/routes/friendRequestRoute.js | 8 +++--- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/handlers/friendRequestHandler.js b/src/handlers/friendRequestHandler.js index 3c09331b..916395f0 100644 --- a/src/handlers/friendRequestHandler.js +++ b/src/handlers/friendRequestHandler.js @@ -14,28 +14,35 @@ exports.friendRequest = async (request, reply) => { const { senderId, receiverId } = request.body; // Check if the sender and receiver exist in the database - const sender = await User.findById(senderId); - const receiver = await Supplier.findById(receiverId); - console.log("sender" , sender) - console.log("receiver" , receiver) + // const sender = await User.findById(senderId); + // const receiver = await Supplier.findById(receiverId); + // console.log("sender" , sender) + // console.log("receiver" , receiver) + const sender = await User.findOne(senderId); + const receiver = await Supplier.findOne(receiverId); + console.log("sender" , sender.customerId) + console.log("receiver" , receiver.supplierId) if (!sender || !receiver) { throw new Error('Sender or receiver not found'); } // Check if a friend request already exists between the two users - const existingRequest = await FriendRequest.findOne({ sender: senderId, receiver: receiverId }); + // const existingRequest = await FriendRequest.findOne({ sender: senderId, receiver: receiverId }); + const existingRequest = await FriendRequest.findOne({ customerId: sender.customerId, supplierId: receiver.supplierId}); + + console.log(existingRequest, " .. exist") if (existingRequest) { throw new Error('Friend request already sent'); } - - // Create a new friend request - const friendRequest = new FriendRequest({ - sender: senderId, - receiver: receiverId - }); + const friendRequest = new FriendRequest({ customerId: sender.customerId, supplierId: receiver.supplierId}); + // // Create a new friend request + // const friendRequest = new FriendRequest({ + // sender: senderId, + // receiver: receiverId + // }); await friendRequest.save(); console.log("friendRequest", friendRequest) @@ -49,10 +56,11 @@ exports.friendRequest = async (request, reply) => { // Handle friend request acceptance exports.friendRequestAccept = async (request, reply) => { try { - const {friendRequestId} = request.body; - + //const {friendRequestId} = request.body; + const {supplierId} = request.body; // Update the friend request status to 'accepted' - const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'accepted' }); + // const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'accepted' }); + const friendRequest = await FriendRequest.findOneAndUpdate({supplierId}, { status: 'accepted' }); console.log("friendRequest....---", friendRequest) @@ -70,10 +78,11 @@ exports.friendRequestAccept = async (request, reply) => { // Handle friend request rejection exports.friendRequestReject = async (request, reply) => { try { - const {friendRequestId} = request.body; - + //const {friendRequestId} = request.body; + const {supplierId} = request.body; // Update the friend request status to 'rejected' - const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'rejected' }); + // const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'rejected' }); + const friendRequest = await FriendRequest.findOneAndUpdate({supplierId}, { status: 'rejected' }); console.log("friendRequest....---", friendRequest) diff --git a/src/models/supplier.js b/src/models/supplier.js index e52d28b0..45bb9eaf 100644 --- a/src/models/supplier.js +++ b/src/models/supplier.js @@ -94,8 +94,8 @@ const supplierSchema = new mongoose.Schema( // }) const friendRequestSchema = new mongoose.Schema({ - sender: { type: mongoose.Schema.Types.ObjectId, ref: 'user' }, - receiver: { type: mongoose.Schema.Types.ObjectId, ref: 'supplier' }, + customerId: { type: String, default: null }, + supplierId: { type: String, default: null }, status: { type: String, default: "pending" }, timestamp: { type: Date, default: Date.now } }); diff --git a/src/routes/friendRequestRoute.js b/src/routes/friendRequestRoute.js index b92a2455..ec45ad4f 100644 --- a/src/routes/friendRequestRoute.js +++ b/src/routes/friendRequestRoute.js @@ -16,8 +16,8 @@ module.exports = function (fastify, opts, next) { type: "object", //required: ["customerId"], properties: { - senderId: { type: "string" }, - receiverId : { type : "string"} + customerId: { type: "string" }, + supplierId : { type : "string"} }, }, security: [ @@ -40,7 +40,7 @@ module.exports = function (fastify, opts, next) { body: { type: "object", properties: { - friendRequestId: { type: "string" }, + supplierId: { type: "string" } }, }, @@ -63,7 +63,7 @@ module.exports = function (fastify, opts, next) { body: { type: "object", properties: { - friendRequestId: { type: "string" }, + supplierId: { type: "string" }, }, }, From 74f38478c30418acec058b57b832be074274282f Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 07:04:48 -0400 Subject: [PATCH 13/34] test --- src/models/tankers.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/models/tankers.js b/src/models/tankers.js index af9dfe42..6bd1ac34 100644 --- a/src/models/tankers.js +++ b/src/models/tankers.js @@ -78,6 +78,7 @@ const GovtPipeLineSchema = new mongoose.Schema({ + const Tanker = mongoose.model("Tanker", tankersSchema); const Tankerbooking = mongoose.model("Tankerbooking", tankersbookingSchema); const Bore = mongoose.model("Bore", boreSchema); From 2383d245d2f3f0287e47ab9ff8456066f09622ac Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 24 Mar 2023 07:30:57 -0400 Subject: [PATCH 14/34] connect status checking --- src/controllers/tankersController.js | 8 +++++--- src/routes/tankersRoute.js | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 623a8cdb..23d1ee52 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -556,13 +556,13 @@ exports.connectionStatus = async (req, reply) => { - exports.connectstatus = async (req, reply) => { try { const customerId = req.params.customerId; const supplierId = req.query.supplierId; - const receiverId = mongoose.Types.ObjectId(supplierId); - const data = await FriendRequest.findOne({ sender: customerId, receiver: receiverId }); + console.log(req.params.customerId) + console.log(req.query.supplierId) + const data = await FriendRequest.findOne({ customerId: customerId, supplierId: supplierId }); let connection_status = "not requested"; if (data) { connection_status = data.status; @@ -572,3 +572,5 @@ exports.connectstatus = async (req, reply) => { throw boom.boomify(err); } }; + + diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 76455ca4..ddb322cd 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -629,6 +629,7 @@ module.exports = function (fastify, opts, next) { querystring: { supplierId: {type: 'string'} }, + security: [ { basicAuth: [], From 886e13b1226ab482a7e5153786c43e8b0832386d Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 17:06:10 +0530 Subject: [PATCH 15/34] update current supplier --- src/controllers/supplierController.js | 63 ++++++++++++++++++++++++++- src/routes/supplierRoute.js | 51 ++++++++++++++++++++++ 2 files changed, 112 insertions(+), 2 deletions(-) diff --git a/src/controllers/supplierController.js b/src/controllers/supplierController.js index 00926c5d..7cf9437e 100644 --- a/src/controllers/supplierController.js +++ b/src/controllers/supplierController.js @@ -87,7 +87,7 @@ exports.loginSupplier = async (req) => { //password is not at the top level in the collection. supplierpass = req.body.password; - // If fields are sent via form encoding , capture the fields and assign them to the user Object. + // If fields are sent via form encoding , capture the fields and assign them to the supplier Object. checkFormEncoding = isSupplierFormUrlEncoded(req); if (checkFormEncoding.isSupplierFormUrlEncoded) { @@ -147,4 +147,63 @@ exports.loginSupplier = async (req) => { } catch (err) { throw boom.boomify(err); } - }; \ No newline at end of file + }; + + exports.editCuurentSupplierInfo = async (req, reply) => { + try { + const { supplierId } = req.params; + const supplierInfo = await Supplier.findOne({ supplierId: supplierId.toString() }); + const updateData = req.body; + + if (updateData.firstName) supplierInfo.profile.firstName = updateData.firstName; + if (updateData.lastName) supplierInfo.profile.lastName = updateData.lastName; + if (updateData.suppliername) supplierInfo.suppliername = updateData.suppliername; + if (updateData.phone) supplierInfo.profile.contactNumber = updateData.phone; + if (updateData.office_address) supplierInfo.profile.office_address = updateData.office_address; + if (updateData.alternativeContactNumber) supplierInfo.profile.alternativeContactNumber = updateData.alternativeContactNumber; + if (updateData.city) supplierInfo.profile.city = updateData.city; + if (updateData.state) supplierInfo.profile.state = updateData.state; + if (updateData.country) supplierInfo.profile.country = updateData.country; + if (updateData.zip) supplierInfo.profile.zip = updateData.zip; + if (updateData.phone) supplierInfo.phone = updateData.phone; + if (updateData.emails) supplierInfo.emails = updateData.emails; + console.log(supplierInfo.emails[0].email) + if (updateData.role) supplierInfo.profile.role = updateData.role; + + if (updateData.phone) { + const phoneNumber = updateData.phone //libphonenumberjs.parsePhoneNumber(updateData.phone); + if (phoneNumber) { + // access returned collection + if (!phoneNumber) { //if (!phoneNumber.isValid()) { + error = { + armintatankdata: { + error: true, + code: 10002, + message: + "10002 - Phone # " + + updateData.phone + + " is not a valid phone number", + }, + }; + req.body.regError = error; + reply.status(406).send(error); + } + } + } + + if (supplierInfo.phone == updateData.phone) { + console.log("IF++++++++++++++="); + supplierInfo.phone = updateData.phone; + supplierInfo.phoneVerified = true; + } else { + console.log("Ilse++++++++++++++="); + supplierInfo.phone = updateData.phone; + supplierInfo.phoneVerified = false; + } + const supplier = await supplierInfo.save(); + return supplier; + } catch (err) { + throw boom.boomify(err); + } + }; + \ No newline at end of file diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 7cc3cf04..9e363a8c 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -189,6 +189,57 @@ module.exports = function (fastify, opts, next) { }); + fastify.route({ + method: "PUT", + url: "/api/update/currentSupplier/:supplierId", + schema: { + tags: ["Supplier-Data"], + summary: "This is for update current supplier", + description: "This is for update current supplier", + params: { + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + body: { + type: "object", + properties: { + phone: { type: "string" }, + firstName: { type: "string" }, + lastName: { type: "string" }, + suppliername: { type: "string" }, + emails: { + type: "array", + maxItems: 2, + items: { + type: "object", + properties: { + email: { type: "string", default: null }, + }, + }, + }, + office_address: { type: "string" }, + alternativeContactNumber: { type: "string" }, + city: { type: "string" }, + state: { type: "string" }, + country: { type: "string" }, + zip: { type: "string" }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: [fastify.auth([fastify.authenticate])], + handler: supplierController.editCuurentSupplierInfo, + }); + next(); } From 94af513b6ee823d3fccb2c0e1bae238cd7f0752b Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 17:51:50 +0530 Subject: [PATCH 16/34] latitude and longitude --- src/controllers/supplierController.js | 8 +++++++- src/handlers/supplierHandler.js | 4 ++++ src/models/supplier.js | 25 +++++++++++++++---------- src/routes/supplierRoute.js | 2 ++ 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/controllers/supplierController.js b/src/controllers/supplierController.js index 7cf9437e..017328d3 100644 --- a/src/controllers/supplierController.js +++ b/src/controllers/supplierController.js @@ -80,6 +80,8 @@ exports.loginSupplier = async (req) => { office_adress: req.body.office_adress, zip: req.body.zip, }, + latitude: req.body.latitude, + longitude: req.body.longitude }; var supplier = new Supplier(s_data); @@ -102,6 +104,8 @@ exports.loginSupplier = async (req) => { supplier.supplierId = suppliertobeInserted.supplier_id; supplier.office_adress = suppliertobeInserted.office_adress; supplier.alternativeContactNumber = suppliertobeInserted.alternativeContactNumber; + supplier.latitude = suppliertobeInserted.latitude; + supplier.longitude = suppliertobeInserted.longitude; } @@ -120,7 +124,7 @@ exports.loginSupplier = async (req) => { role = ["supplier"]; supplier.profile.role = role; } - + insertedSupplier = await supplier.save(); console.log(insertedSupplier); if (insertedSupplier) { @@ -137,6 +141,8 @@ exports.loginSupplier = async (req) => { }, ], profile: insertedSupplier.profile, + latitude: insertedSupplier.latitude, + longitude: insertedSupplier.longitude }, status_code: 200, }; diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 7b36943a..569d1f0e 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -192,6 +192,8 @@ exports.loginSupplier = async(request, reply) =>{ office_address: loginObject.supplier.profile.office_address, phoneVerified: loginObject.supplier.phoneVerified, oneTimePasswordSetFlag: loginObject.supplier.oneTimePasswordSetFlag, + latitude: loginObject.supplier.latitude, + longitude: loginObject.supplier.longitude, type: loginObject.supplier.profile.role, typeasobj: stringToJsonObject, }, @@ -210,6 +212,8 @@ exports.loginSupplier = async(request, reply) =>{ office_address: loginObject.supplier.profile.office_address, phoneVerified: loginObject.supplier.phoneVerified, oneTimePasswordSetFlag: loginObject.supplier.oneTimePasswordSetFlag, + latitude: loginObject.supplier.latitude, + longitude: loginObject.supplier.longitude, type: loginObject.supplier.profile.role, typeasobj: stringToJsonObject, }, diff --git a/src/models/supplier.js b/src/models/supplier.js index 45bb9eaf..33adfa27 100644 --- a/src/models/supplier.js +++ b/src/models/supplier.js @@ -48,17 +48,22 @@ const supplierSchema = new mongoose.Schema( default: 'pending' }, - currentGPS: { - // It's important to define type within type field, because - // mongoose use "type" to identify field's object type. - - gpsType: { type: String, default: "Point" }, - // Default value is needed. Mongoose pass an empty array to - // array type by default, but it will fail MongoDB's pre-save - // validation. - coordinates: { type: [Number], default: [0, 0] }, - }, + // currentGPS: { + // // It's important to define type within type field, because + // // mongoose use "type" to identify field's object type. + // gpsType: { type: String, default: "Point" }, + // // Default value is needed. Mongoose pass an empty array to + // // array type by default, but it will fail MongoDB's pre-save + // // validation. + // coordinates: { type: [Number], default: [0, 0] }, + // }, + // location: { + // type: { type: String }, + // coordinates: [Number] + // }, + longitude: { type : Number}, + latitude: {type: Number}, isActive: Boolean, tenantId: ObjectId, createdAt: { diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 9e363a8c..9f4f92ed 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -93,6 +93,8 @@ module.exports = function (fastify, opts, next) { state: { type: "string", default: null }, zip: { type: "string", default: null }, country: { type: "string", default: null }, + latitude: { type: 'number' }, + longitude: { type: 'number'} }, }, security: [ From 97994a556f135b344e73166d2a8b31f9f40cd175 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Mon, 27 Mar 2023 10:50:31 +0530 Subject: [PATCH 17/34] connection-request issue --- src/handlers/friendRequestHandler.js | 9 ++++++--- src/models/User.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/handlers/friendRequestHandler.js b/src/handlers/friendRequestHandler.js index 916395f0..b0cb7621 100644 --- a/src/handlers/friendRequestHandler.js +++ b/src/handlers/friendRequestHandler.js @@ -11,7 +11,10 @@ const fastify = require("fastify")({ // Handle friend request creation exports.friendRequest = async (request, reply) => { try { - const { senderId, receiverId } = request.body; + // const { senderId, receiverId } = request.body; + + const customerId = request.body.customerId; + const supplierId = request.body.supplierId; // Check if the sender and receiver exist in the database // const sender = await User.findById(senderId); @@ -19,8 +22,8 @@ exports.friendRequest = async (request, reply) => { // console.log("sender" , sender) // console.log("receiver" , receiver) - const sender = await User.findOne(senderId); - const receiver = await Supplier.findOne(receiverId); + const sender = await User.findOne({ customerId : customerId}); + const receiver = await Supplier.findOne({ supplierId : supplierId}); console.log("sender" , sender.customerId) console.log("receiver" , receiver.supplierId) diff --git a/src/models/User.js b/src/models/User.js index ea410169..9bc02448 100644 --- a/src/models/User.js +++ b/src/models/User.js @@ -46,7 +46,7 @@ const userSchema = new mongoose.Schema( username: { type: String }, phone: { type: String, unique: true, trim: true }, address: String, - customerId: String, + customerId: { type: String }, buildingName: String, inchargeName: String, phoneVerified: { type: Boolean, default: false }, From e71b3d7eba54264af392f82b1d55501ae813dc1c Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 27 Mar 2023 02:13:18 -0400 Subject: [PATCH 18/34] changes in getting active delivery boys --- src/controllers/supplierOrderController.js | 8 ++------ src/routes/supplierOrdersRoutes.js | 1 + 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index c2a6438c..679f8ffa 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -9,8 +9,6 @@ const fastify = require("fastify")({ const { Tanker, Tankerbooking,Bore,GovtPipeLine } = require('../models/tankers') - - exports.orderNow = async (req, reply) => { try { @@ -33,7 +31,6 @@ exports.orderNow = async (req, reply) => { booking_info.delivery_agent_alternative_mobile = agent_alternative_mobile booking_info.price = price - } else { booking_info.orderStatus = "rejected" @@ -61,8 +58,6 @@ exports.orderNow = async (req, reply) => { // const userInfo = await User.findOne({ username: username.toString() }); // const updateData = req.body; - - // console.log("This is the reply in the handler after the validations", reply); deliveryData = { supplierId: supplierId, @@ -73,7 +68,7 @@ exports.orderNow = async (req, reply) => { city:req.body.city, state:req.body.state, zip:req.body.zip, - + status:req.body.status, }; var agent_mobile = req.body.phone @@ -98,6 +93,7 @@ exports.orderNow = async (req, reply) => { agent.city = usertobeInserted.city agent.state = usertobeInserted.state agent.zip = usertobeInserted.zip + agent.status = usertobeInserted.status } } diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index 3b787d73..a8697e4f 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -87,6 +87,7 @@ module.exports = function (fastify, opts, next) { status: { type: "string" }, }, + }, security: [ { From 062ddaed4ad0c5780706cbc119b85b0ee5e0a674 Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 27 Mar 2023 02:29:00 -0400 Subject: [PATCH 19/34] changes in getting active delivery boys --- src/controllers/supplierOrderController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index 679f8ffa..74110413 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -175,6 +175,7 @@ exports.verifyPhone = async (req, reply) => { message: "10005 - Verification code entered cannot be validated.", }, }; + req.body.regError = error; reply.send(error); } From e3490c5424f901d0730ad77bb6b49b67ac40b9cb Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 27 Mar 2023 03:39:39 -0400 Subject: [PATCH 20/34] once the connect request is sent it will not show in connection request --- src/handlers/supplierHandler.js | 28 +++++++++++++++++++++++++++- src/routes/supplierRoute.js | 12 +++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 569d1f0e..8615f467 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -1,5 +1,6 @@ //Get the data models const { Supplier } = require('../models/supplier'); +const { FriendRequest } = require('../models/supplier') const { ProfilePicture } = require('../models/User') const supplierController = require("../controllers/supplierController"); const customJwtAuth = require("../customAuthJwt"); @@ -537,7 +538,7 @@ exports.getCurrentSupplier = async (req, reply) => { } }; // Get all users -exports.getSuppliers = async (req, reply) => { +exports.getSuppliers1 = async (req, reply) => { const limit = parseInt(req.query.limit) || 100; const page = parseInt(req.query.page) || 1; const startindex = (page - 1) * limit; @@ -558,6 +559,31 @@ exports.getSuppliers = async (req, reply) => { } }; +exports.getSuppliers = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const customerId = req.params.customerId; // Assuming you have already authenticated the user and stored their ID in the request object + try { + const friendRequests = await FriendRequest.find({ customerId }); + const supplierIdsToExclude = friendRequests.map((request) => request.supplierId); + await Supplier.find({ supplierId: { $nin: supplierIdsToExclude } }) + .limit(limit) + .skip(startindex) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; + + // Get single user by ID exports.getSingleSupplier = async (req, reply) => { try { diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 9f4f92ed..2a5cd4d6 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -7,11 +7,21 @@ const validationHandler = require("../handlers/supplierHandler"); module.exports = function (fastify, opts, next) { - fastify.get("/api/suppliers", { + fastify.get("/api/suppliers/:customerId", { schema: { tags: ["Supplier-Data"], description: "This is for Get All Suppliers", summary: "This is for to Get All Suppliers", + params: { + type: "object", + properties: { + customerId: { + type: "string", + description: "customerId", + }, + }, + }, + security: [ { basicAuth: [], From cb9fb519eaa2fd5ce4e052bb1617d6448c5270a0 Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 27 Mar 2023 04:31:42 -0400 Subject: [PATCH 21/34] getting connected suppliers --- src/handlers/supplierHandler.js | 62 ++++++++++++++++++++++++--------- src/routes/supplierRoute.js | 27 ++++++++++++++ 2 files changed, 72 insertions(+), 17 deletions(-) diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 8615f467..568d6e1f 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -537,13 +537,37 @@ exports.getCurrentSupplier = async (req, reply) => { throw boom.boomify(err); } }; -// Get all users -exports.getSuppliers1 = async (req, reply) => { +// Get all suppliers +// exports.getSuppliers = async (req, reply) => { +// const limit = parseInt(req.query.limit) || 100; +// const page = parseInt(req.query.page) || 1; +// const startindex = (page - 1) * limit; +// try { +// await Supplier.find() +// .limit(limit) +// .skip(startindex) +// .exec() +// .then((docs) => { +// reply.send({ status_code: 200, data: docs, count: docs.length }); +// }) +// .catch((err) => { +// console.log(err); +// reply.send({ error: err }); +// }); +// } catch (err) { +// throw boom.boomify(err); +// } +// }; + +exports.getSuppliers = async (req, reply) => { const limit = parseInt(req.query.limit) || 100; const page = parseInt(req.query.page) || 1; const startindex = (page - 1) * limit; + const customerId = req.params.customerId; // Assuming you have already authenticated the user and stored their ID in the request object try { - await Supplier.find() + const friendRequests = await FriendRequest.find({ customerId }); + const supplierIdsToExclude = friendRequests.map((request) => request.supplierId); + await Supplier.find({ supplierId: { $nin: supplierIdsToExclude } }) .limit(limit) .skip(startindex) .exec() @@ -559,15 +583,29 @@ exports.getSuppliers1 = async (req, reply) => { } }; -exports.getSuppliers = async (req, reply) => { + +// Get single user by ID +exports.getSingleSupplier = async (req, reply) => { + try { + const supplierId = req.params.supplierId; + const supplier = await Supplier.findOne({ supplierId: supplierId }); + return supplier; + } catch (err) { + throw boom.boomify(err); + } +}; + +exports.getConnectedSuppliers = async (req, reply) => { const limit = parseInt(req.query.limit) || 100; const page = parseInt(req.query.page) || 1; const startindex = (page - 1) * limit; const customerId = req.params.customerId; // Assuming you have already authenticated the user and stored their ID in the request object + console.log(customerId,"HI") try { - const friendRequests = await FriendRequest.find({ customerId }); - const supplierIdsToExclude = friendRequests.map((request) => request.supplierId); - await Supplier.find({ supplierId: { $nin: supplierIdsToExclude } }) + const friendRequests = await FriendRequest.find({ customerId, status: "accepted" }); + console.log(friendRequests,customerId) + const supplierIdsToInclude = friendRequests.map((request) => request.supplierId); + await Supplier.find({ supplierId: { $in: supplierIdsToInclude } }) .limit(limit) .skip(startindex) .exec() @@ -584,13 +622,3 @@ exports.getSuppliers = async (req, reply) => { }; -// Get single user by ID -exports.getSingleSupplier = async (req, reply) => { - try { - const supplierId = req.params.supplierId; - const supplier = await Supplier.findOne({ supplierId: supplierId }); - return supplier; - } catch (err) { - throw boom.boomify(err); - } -}; diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 2a5cd4d6..986fff0c 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -31,6 +31,33 @@ module.exports = function (fastify, opts, next) { handler: validationHandler.getSuppliers, }); + + fastify.get("/api/connectedSuppliers/:customerId", { + schema: { + tags: ["Supplier-Data"], + description: "This is for Get All connected Suppliers", + summary: "This is for to Get All connected Suppliers", + params: { + type: "object", + properties: { + customerId: { + type: "string", + description: "customerId", + }, + }, + }, + + security: [ + { + basicAuth: [], + }, + ], + }, + handler: validationHandler.getConnectedSuppliers, + }); + + + fastify.post("/api/supplierlogin", { schema: { description: "This is for Login Supplier", From 2f1b03c0862a8882973cb81947bcabae6ebbb79a Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Mon, 27 Mar 2023 14:19:31 +0530 Subject: [PATCH 22/34] update tanker schema changes --- src/routes/tankersRoute.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index ddb322cd..8a539ada 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -98,10 +98,12 @@ module.exports = function (fastify, opts, next) { }, body: { type: "object", - // required: ['phone'], properties: { - tankerName: { type: "string", default: null }, - phoneNumber: { type: "string", default: null }, + supplier_name: { type: "string" }, + supplier_address:{ type: "string" }, + tankerName: { type: "string" }, + phoneNumber: { type: "string"}, + alternative_phoneNumber: { type: "string"}, typeofwater: { type: "array", maxItems: 2500, @@ -112,18 +114,20 @@ module.exports = function (fastify, opts, next) { }, }, }, - - capacity: { - type: "array", + + price: { + type: "array", maxItems: 2500, items: { type: "object", properties: { - capacity: { type: "string", default: null }, - }, - }, + price: { type: "string", default: null }, + }, + }, }, - + capacity: { type: "string"}, + + }, }, security: [ From 45cb3ecf8a9acbd96fecccab7e83d301a1f228a2 Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 27 Mar 2023 05:03:13 -0400 Subject: [PATCH 23/34] pending/rejected connection --- src/controllers/tankersController.js | 7 ++++++ src/handlers/supplierHandler.js | 32 ++++++++++++++++++++++++++-- src/routes/supplierRoute.js | 25 ++++++++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 23d1ee52..87a0e381 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -557,9 +557,16 @@ exports.connectionStatus = async (req, reply) => { exports.connectstatus = async (req, reply) => { + + + + + + try { const customerId = req.params.customerId; const supplierId = req.query.supplierId; + console.log(req.params.customerId) console.log(req.query.supplierId) const data = await FriendRequest.findOne({ customerId: customerId, supplierId: supplierId }); diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 568d6e1f..18dced6c 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -600,10 +600,9 @@ exports.getConnectedSuppliers = async (req, reply) => { const page = parseInt(req.query.page) || 1; const startindex = (page - 1) * limit; const customerId = req.params.customerId; // Assuming you have already authenticated the user and stored their ID in the request object - console.log(customerId,"HI") try { const friendRequests = await FriendRequest.find({ customerId, status: "accepted" }); - console.log(friendRequests,customerId) + // console.log(friendRequests,customerId) const supplierIdsToInclude = friendRequests.map((request) => request.supplierId); await Supplier.find({ supplierId: { $in: supplierIdsToInclude } }) .limit(limit) @@ -622,3 +621,32 @@ exports.getConnectedSuppliers = async (req, reply) => { }; + +exports.getPendingSuppliers = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const customerId = req.params.customerId; // Assuming you have already authenticated the user and stored their ID in the request object + + try { + const friendRequests = await FriendRequest.find({ customerId, status: ["pending","rejected"] }); + // console.log(friendRequests,customerId) + const supplierIdsToInclude = friendRequests.map((request) => request.supplierId); + // console.log(supplierIdsToInclude) + await Supplier.find({ supplierId: { $in: supplierIdsToInclude } }) + .limit(limit) + .skip(startindex) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; + + diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 986fff0c..ee33a76b 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -56,6 +56,31 @@ module.exports = function (fastify, opts, next) { handler: validationHandler.getConnectedSuppliers, }); + + fastify.get("/api/pendingSuppliers/:customerId", { + schema: { + tags: ["Supplier-Data"], + description: "This is for Get All pending/rejected Suppliers", + summary: "This is for to Get All pending/rejected Suppliers", + params: { + type: "object", + properties: { + customerId: { + type: "string", + description: "customerId", + }, + }, + }, + + security: [ + { + basicAuth: [], + }, + ], + }, + handler: validationHandler.getPendingSuppliers, + }); + fastify.post("/api/supplierlogin", { From c78755ae4b01a6d9e1ac5bed8d4617069d485f4e Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Mon, 27 Mar 2023 15:46:08 +0530 Subject: [PATCH 24/34] deliveryboy login --- src/controllers/supplierController.js | 25 +++++- src/handlers/supplierHandler.js | 108 ++++++++++++++++++++++++++ src/models/supplier.js | 4 + src/routes/supplierRoute.js | 16 ++++ 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/src/controllers/supplierController.js b/src/controllers/supplierController.js index 017328d3..e9eba7be 100644 --- a/src/controllers/supplierController.js +++ b/src/controllers/supplierController.js @@ -10,7 +10,7 @@ const saltRounds = 10; //Get the data models -const { Supplier ,ProfilePicture, generateSupplierId} = require('../models/supplier'); +const { Supplier ,ProfilePicture, generateSupplierId, DeliveryBoy} = require('../models/supplier'); async function bcryptPassword(password) { @@ -55,6 +55,29 @@ exports.loginSupplier = async (req) => { + +//DeliveryBoy Login Controller + + +exports.loginDeliveryBoy = async (req) => { + try { + const phone = req.body.phone; + + + const delivery = await DeliveryBoy.findOne({ phone: phone }); + + + if (delivery) { + return { same: true, delivery: delivery }; + } else { + return { same: false }; + } + + } catch (err) { + throw boom.boomify(err); + } +}; + exports.addSupplier = async (req, reply) => { try { // await resetCounter();//to set customer id back to 0 diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 18dced6c..9ecd368f 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -235,6 +235,114 @@ exports.loginSupplier = async(request, reply) =>{ } + +//Login Delivery Handler +exports.loginDeliveryBoy = async(request, reply) =>{ + loginObject = await supplierController.loginDeliveryBoy(request); + console.log("loginObject...",loginObject) + if (loginObject.same) { + const phoneVerified = loginObject.delivery.phoneVerified; + const oneTimePasswordSetFlag = loginObject.delivery.oneTimePasswordSetFlag; + console.log( + "oneTimePasswordSetFlag is ......", + oneTimePasswordSetFlag, + typeof oneTimePasswordSetFlag, + typeof phoneVerified + ); + if (!phoneVerified) { + reply.send({ + simplydata: { + error: false, + phoneVerified: false, + + phone: loginObject.delivery.phone, + oneTimePasswordSetFlag: oneTimePasswordSetFlag, + message: "Please Verify your phone number", + }, + }); + } else if (oneTimePasswordSetFlag) { + reply.send({ + simplydata: { + error: false, + phoneVerified: phoneVerified, + phone: loginObject.delivery.phone, + oneTimePasswordSetFlag: true, + message: "Password must be reset", + }, + }); + } else { + const token = fastify.jwt.sign( + { + deliveryBoyname: loginObject.delivery.name, + deliveryBoyId: loginObject.delivery._id, + }, + //expiresIn: expressed in seconds or a string describing a time span zeit/ms. Eg: 60, "2 days", "10h", "7d". + //A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), + //otherwise milliseconds unit is used by default ("120" is equal to "120ms"). + { expiresIn: "30d" } + ); + console.log(token, "..token") + + + var d_id = loginObject.delivery._id + + + console.log(d_id,"deliveryId") + var profilePicture = await ProfilePicture.findOne({ deliveryBoyId:d_id}); + + + // request.session.set('supplierId', loginObject.supplier._id) + + + if (!profilePicture) { + reply.send({ + simplydata: { + error: false, + apiversion: fastify.config.APIVERSION, + access_token: token, + + + phone: loginObject.delivery.phone, + deliveryBoyId: loginObject.delivery.deliveryBoyId, + deliveryBoyname: loginObject.delivery.name, + address: loginObject.delivery.address, + phoneVerified: loginObject.delivery.phoneVerified, + oneTimePasswordSetFlag: loginObject.delivery.oneTimePasswordSetFlag, + + }, + }); + }if (profilePicture) { + reply.send({ + simplydata: { + error: false, + apiversion: fastify.config.APIVERSION, + access_token: token, + picture:profilePicture.picture, + phone: loginObject.delivery.phone, + deliveryBoyId: loginObject.delivery.deliveryBoyId, + deliveryBoyname: loginObject.delivery.name, + address: loginObject.delivery.address, + phoneVerified: loginObject.delivery.phoneVerified, + oneTimePasswordSetFlag: loginObject.delivery.oneTimePasswordSetFlag, + }, + }); + } + + + } + } else { + error = { + simplydata: { + error: true, + code: 400, + message: "Invalid Details", + }, + }; + reply.send(error); + } +} + + // Check if all the required fields are supplied by the user exports.fieldCheck = async (req, reply) => { diff --git a/src/models/supplier.js b/src/models/supplier.js index 33adfa27..8094a502 100644 --- a/src/models/supplier.js +++ b/src/models/supplier.js @@ -111,6 +111,10 @@ const supplierSchema = new mongoose.Schema( name: { type: String, default: null }, phone: { type: String, default: null,unique:true }, alternativeContactNumber : { type : String,default: null }, + phoneVerified: { type: Boolean, default: false }, + phoneVerificationCode: { type: Number, default: 11111 }, + passwordResetCode: { type: Number, default: code }, + oneTimePasswordSetFlag: { type: Boolean, default: false }, address: { type: String, default: null }, city: { type: String, default: null }, state: { type: String, default: null }, diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index ee33a76b..d5a26746 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -101,6 +101,22 @@ module.exports = function (fastify, opts, next) { }); + fastify.post("/api/deliveryboylogin", { + schema: { + description: "This is for Login Delivery Boy", + tags: ["Supplier-Data"], + summary: "This is for Login Delivery Boy", + body: { + type: "object", + required: ["phone"], + properties: { + phone: { type: "string" }, + }, + }, + }, + handler: validationHandler.loginDeliveryBoy, +}); + fastify.route({ method: "POST", url: "/api/supplierlogout", From 642b4fa267d27efb85fc57459e423f54ee48cf5d Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Mon, 27 Mar 2023 16:54:30 +0530 Subject: [PATCH 25/34] delivery boy phone verification --- src/controllers/userController.js | 6 +++- src/handlers/supplierHandler.js | 60 ++++++++++++++++++++++++++++++- src/routes/supplierRoute.js | 26 ++++++++++++++ 3 files changed, 90 insertions(+), 2 deletions(-) diff --git a/src/controllers/userController.js b/src/controllers/userController.js index 95e10cc8..ee0bd3d9 100644 --- a/src/controllers/userController.js +++ b/src/controllers/userController.js @@ -403,13 +403,17 @@ exports.sendSms = async (request, reply) => { const message = `Welcome to Arminta !!! your OTP is ${code} please use it for login.`//`Welcome to Arminta !!! your OTP is ${code} please use it for login.`; const user = await User.findOne({phone: mobile}) const supplier = await Supplier.findOne({phone: mobile}) + const deliveryBoy = await DeliveryBoy.findOne( { phone : mobile}) if(user){ await User.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) } if(supplier){ await Supplier.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) } - + if(deliveryBoy){ + await DeliveryBoy.findOneAndUpdate({phone: mobile}, { $set: {'phoneVerificationCode': code } }) + } + const apiUrl = `https://smslogin.co/v3/api.php?username=${username}&apikey=${apiKey}&senderid=${senderId}&mobile=${mobile}&message=${encodeURIComponent(message)}`; const options = { diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 9ecd368f..b924fb2a 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -1,5 +1,5 @@ //Get the data models -const { Supplier } = require('../models/supplier'); +const { Supplier, DeliveryBoy } = require('../models/supplier'); const { FriendRequest } = require('../models/supplier') const { ProfilePicture } = require('../models/User') const supplierController = require("../controllers/supplierController"); @@ -633,7 +633,65 @@ exports.logoutsupplier = async (request, reply) => { throw boom.boomify(err); } }; + + exports.deliveryBoyVerifyPhone = async (req, reply) => { + console.log("-------------------------------------------------"); + try { + phone = req.body.phone; + phoneVerificationCode = req.body.phoneVerificationCode; + + // check if user exists in the system. If user exists , display message that + // username is not available + console.log( + "this is the phone and verification code", + phone, + phoneVerificationCode + ); + deliveryBoyExists = await DeliveryBoy.findOne({ + phone: phone, + phoneVerified: false, + phoneVerificationCode: phoneVerificationCode, + }); + console.log(deliveryBoyExists); + if (deliveryBoyExists) { + // update the phoneVerified flag to true. + const filter = { + phone: phone, + phoneVerificationCode: phoneVerificationCode, + }; + const update = { phoneVerified: true }; + const doc = await DeliveryBoy.findOneAndUpdate(filter, update); + updatedDeliveryBoy = await DeliveryBoy.findOne({ phone: phone }); + + if (updatedDeliveryBoy.phoneVerified) { + reply.send('{"armintatankdata":{"error":false,"verified": true}}'); + } else { + error = { + armintatankdata: { + error: true, + code: 10005, + message: "10005 - Verification code entered cannot be validated.", + }, + }; + req.body.regError = error; + reply.send(error); + } + } else { + error = { + armintatankdata: { + error: true, + code: 10005, + message: "10005 - Verification code entered cannot be validated.", + }, + }; + req.body.regError = error; + reply.send(error); + } + } catch (err) { + throw boom.boomify(err); + } + }; // Get current supplier exports.getCurrentSupplier = async (req, reply) => { diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index d5a26746..808458b2 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -217,6 +217,32 @@ module.exports = function (fastify, opts, next) { }); + fastify.route({ + method: "POST", + url: "/api/deliveryboyphone", + schema: { + tags: ["Supplier-Data"], + description: "This is for verify Delivery Boy Phone", + summary: "This is to Verify Delivery Boy Phone.", + body: { + type: "object", + required: ["phone"], + properties: { + phoneVerificationCode: { type: "string" }, + phone: { type: "string" }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + // preHandler: fastify.auth([fastify.authenticate]), + handler: validationHandler.deliveryBoyVerifyPhone, + }); + + fastify.route({ method: "POST", url: "/api/suppliers/:supplierId", From 0d2f022d9e1e7e66824d51ad55496da2aa2ddc21 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Tue, 28 Mar 2023 11:33:38 +0530 Subject: [PATCH 26/34] delete and update delivery boy details --- src/handlers/supplierHandler.js | 38 ++++++++++++++++ src/routes/supplierRoute.js | 80 +++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index b924fb2a..4e36c00e 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -693,6 +693,44 @@ exports.logoutsupplier = async (request, reply) => { } }; + + //delete selected deliveryboy +exports.deleteDeliveryBoy = async (req, reply) => { + try { + var supplierId = req.params.supplierId; + var phone = req.query.phone; + const delivery = await DeliveryBoy.findOneAndDelete({ phone: phone,supplierId:supplierId }); + + reply.send({ status_code: 200, data: delivery}); + // return tank; + } catch (err) { + throw boom.boomify(err); + } +}; + + +//update selected Delivery Boy Details +exports.updateDeliveryBoy = async (req, reply) => { + + try { + var supplierId = req.params.supplierId; + var phone = req.query.phone; + const delivery = req.body; + const { ...updateData } = delivery; + const update = await DeliveryBoy.findOneAndUpdate({ phone: phone,supplierId:supplierId, }, updateData, { new: true }); + console.log(update) + //return update; + + reply.send({ status_code: 200, data: update }); + + + + } + catch (err) { + throw boom.boomify(err); + } +}; + // Get current supplier exports.getCurrentSupplier = async (req, reply) => { try { diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 808458b2..03087b14 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -242,6 +242,86 @@ module.exports = function (fastify, opts, next) { handler: validationHandler.deliveryBoyVerifyPhone, }); + fastify.route({ + method: "PUT", + url: "/api/deletedeliveryboy/:supplierId", + schema: { + tags: ["Supplier-Data"], + summary: "This is for delete delivery boy", + description: "This is for delete delivery boy", + params: { + required: ["supplierId"], + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + querystring: { + phone: {type: 'string'} + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: validationHandler.deleteDeliveryBoy, + }); + + + fastify.route({ + method: "PUT", + url: "/api/updatedeliveryboy/:supplierId", + schema: { + tags: ["Supplier-Data"], + summary: "This is for update deliveryboy details", + params: { + required: ["supplierId"], + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + querystring: { + phone: {type: 'string'} + }, + + body: { + type: "object", + // required: ['phone'], + properties: { + + name: { type: "string", default: null }, + phone: { type: "string", default: null }, + alternativeContactNumber: { type: "string" }, + address: { type: "string", default: null }, + city: { type: "string" , default: null}, + state: { type: "string", default: null }, + zip: { type: "string", default: null }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + // preHandler: [ + // fastify.auth([fastify.operatorAuthenticate]), + // validationHandler.validatePhoneFormat, + // ], + preHandler: fastify.auth([fastify.authenticate]), + handler: validationHandler.updateDeliveryBoy, + }); + + fastify.route({ method: "POST", From 06342b492f2db5e1b52c1b0aa9f90074582f8367 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Tue, 28 Mar 2023 13:07:11 +0530 Subject: [PATCH 27/34] get all tanker booking details --- src/controllers/tankersController.js | 29 ++++++++++++++++++++++++++++ src/routes/tankersRoute.js | 29 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 87a0e381..1164d0f1 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -299,6 +299,35 @@ exports.getTankersBookingdetails = async (req, reply) => { } }; +exports.getAllTankersBookingdetails = async (req, reply) => { + try { + const supplierId = req.params.customerId + // const tankerName = req.query.tankerName + + await Tankerbooking.find({ supplierId:supplierId }) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + + + + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + + + + + } catch (err) { + throw boom.boomify(err); + } +}; + + + + exports.addBores = async (req, reply) => { try { diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 8a539ada..42d3a2c0 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -327,6 +327,35 @@ module.exports = function (fastify, opts, next) { handler: tankersController.getTankersBookingdetails, }); + + fastify.get("/api/getAllTankersBookingdetails/:supplierId", { + schema: { + tags: ["Supplier"], + description: "This is for Get All Tanker Booking Data", + summary: "This is for to Get All Tanker Booking Data", + params: { + required: ["supplierId"], + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + // querystring: { + // tankerName: {type: 'string'} + // }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: tankersController.getAllTankersBookingdetails, + }); + fastify.get("/api/getBores", { schema: { tags: ["Supplier"], From dda1cc78de3d6b51ced275f78401274ed009ea26 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Tue, 28 Mar 2023 16:43:36 +0530 Subject: [PATCH 28/34] get all pending customer from friend-request --- src/handlers/supplierHandler.js | 31 ++++++++++++++++++++++++++++++- src/routes/supplierRoute.js | 26 ++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 4e36c00e..3c3f09e3 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -1,7 +1,7 @@ //Get the data models const { Supplier, DeliveryBoy } = require('../models/supplier'); const { FriendRequest } = require('../models/supplier') -const { ProfilePicture } = require('../models/User') +const { ProfilePicture, User } = require('../models/User') const supplierController = require("../controllers/supplierController"); const customJwtAuth = require("../customAuthJwt"); const fastify = require("fastify")({ @@ -854,3 +854,32 @@ exports.getPendingSuppliers = async (req, reply) => { }; + +exports.getPendingCustomers = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const supplierId = req.params.supplierId; // Assuming you have already authenticated the user and stored their ID in the request object + + try { + const friendRequests = await FriendRequest.find({ supplierId, status: ["pending","rejected"] }); + console.log(friendRequests,supplierId, "su....") + const supplierIdsToInclude = friendRequests.map((request) => request.customerId); + console.log(supplierIdsToInclude, "supplierIdsToInclude..") + await User.find({ customerId: { $in: supplierIdsToInclude } }) + .limit(limit) + .skip(startindex) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; + + diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 03087b14..6953ba4f 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -81,6 +81,32 @@ module.exports = function (fastify, opts, next) { handler: validationHandler.getPendingSuppliers, }); + + + fastify.get("/api/pendingCustomers/:supplierId", { + schema: { + tags: ["Supplier-Data"], + description: "This is for Get All pending/rejected Customers", + summary: "This is for to Get All pending/rejected Customers", + params: { + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + + security: [ + { + basicAuth: [], + }, + ], + }, + handler: validationHandler.getPendingCustomers, + }); + fastify.post("/api/supplierlogin", { From 7ebe3e09630696575cd248934e44fa8102b9809f Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Wed, 29 Mar 2023 11:26:05 +0530 Subject: [PATCH 29/34] price filed added in tanker storing booking --- src/controllers/tankersController.js | 1 + src/routes/tankersRoute.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 1164d0f1..2effcaa4 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -200,6 +200,7 @@ exports.tankerBooking = async (req, reply) => { capacity: req.body.capacity, address: req.body.address, dateOfOrder: req.body.dateOfOrder, + price:req.body.price //date: req.body.date, // time: req.body.time, diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 42d3a2c0..4790d1c6 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -204,6 +204,7 @@ module.exports = function (fastify, opts, next) { capacity: { type: "string" }, address: { type: "string" }, dateOfOrder: { type: "string"}, + price: { type: "string"}, From 78bfa5afcc3f9a88eb971301d912b0dbf3aaa9fa Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Wed, 29 Mar 2023 11:36:28 +0530 Subject: [PATCH 30/34] connected customers --- src/handlers/supplierHandler.js | 27 +++++++++++++++++++++++++++ src/routes/supplierRoute.js | 25 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/handlers/supplierHandler.js b/src/handlers/supplierHandler.js index 3c3f09e3..7cae812b 100644 --- a/src/handlers/supplierHandler.js +++ b/src/handlers/supplierHandler.js @@ -883,3 +883,30 @@ exports.getPendingCustomers = async (req, reply) => { }; + +exports.getconnectedCustomers = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const supplierId = req.params.supplierId; // Assuming you have already authenticated the user and stored their ID in the request object + + try { + const friendRequests = await FriendRequest.find({ supplierId, status: ["accepted"] }); + console.log(friendRequests,supplierId, "su....") + const supplierIdsToInclude = friendRequests.map((request) => request.customerId); + console.log(supplierIdsToInclude, "supplierIdsToInclude..") + await User.find({ customerId: { $in: supplierIdsToInclude } }) + .limit(limit) + .skip(startindex) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; \ No newline at end of file diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 6953ba4f..09b026ec 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -107,6 +107,31 @@ module.exports = function (fastify, opts, next) { handler: validationHandler.getPendingCustomers, }); + + + fastify.get("/api/connectedCustomers/:supplierId", { + schema: { + tags: ["Supplier-Data"], + description: "This is for Get All connected Customers", + summary: "This is for to Get All connected Customers", + params: { + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + + security: [ + { + basicAuth: [], + }, + ], + }, + handler: validationHandler.getconnectedCustomers, + }); fastify.post("/api/supplierlogin", { From 7dda54bf69df94be12095aa26ff832148f855e53 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Wed, 29 Mar 2023 11:38:44 +0530 Subject: [PATCH 31/34] adding summary --- src/routes/supplierRoute.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/supplierRoute.js b/src/routes/supplierRoute.js index 09b026ec..bfc7e82b 100644 --- a/src/routes/supplierRoute.js +++ b/src/routes/supplierRoute.js @@ -112,8 +112,8 @@ module.exports = function (fastify, opts, next) { fastify.get("/api/connectedCustomers/:supplierId", { schema: { tags: ["Supplier-Data"], - description: "This is for Get All connected Customers", - summary: "This is for to Get All connected Customers", + description: "This is for Get All connected Customers for Suppliers", + summary: "This is for to Get All connected Customers for suppliers", params: { type: "object", properties: { From f01063df2887349e47d23757a21996b861fbd4ee Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Wed, 29 Mar 2023 15:18:26 +0530 Subject: [PATCH 32/34] get all tanker booking data --- src/controllers/tankersController.js | 29 +++++++++++++--------------- src/routes/tankersRoute.js | 1 + 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 2effcaa4..85a666e3 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -18,7 +18,7 @@ exports.addTankers = async (req, reply) => { //const username = req.params.username; -console.log(req.params); + console.log(req.params); const supplierId = req.params.supplierId; //console.log(loginObject.user.username) // const userInfo = await User.findOne({ username: username.toString() }); @@ -200,7 +200,8 @@ exports.tankerBooking = async (req, reply) => { capacity: req.body.capacity, address: req.body.address, dateOfOrder: req.body.dateOfOrder, - price:req.body.price + price:req.body.price, + supplierId:req.body.supplierId //date: req.body.date, // time: req.body.time, @@ -219,6 +220,8 @@ exports.tankerBooking = async (req, reply) => { tankersBookingData.typeofwater = usertobeInserted.typeofwater; tankersBookingData.address = usertobeInserted.address; tankersBookingData.dateOfOrder = usertobeInserted.dateOfOrder; + tankersBookingData.price = usertobeInserted.price; + tankersBookingData.supplierId = usertobeInserted.supplierId; //tankersBookingData.date = usertobeInserted.date; //tankersBookingData.time = usertobeInserted.time; @@ -300,36 +303,30 @@ exports.getTankersBookingdetails = async (req, reply) => { } }; + exports.getAllTankersBookingdetails = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const supplierId = req.params.supplierId try { - const supplierId = req.params.customerId - // const tankerName = req.query.tankerName - - await Tankerbooking.find({ supplierId:supplierId }) + await Tankerbooking.find( { supplierId:supplierId }) + .limit(limit) + .skip(startindex) .exec() .then((docs) => { reply.send({ status_code: 200, data: docs, count: docs.length }); }) - - - .catch((err) => { console.log(err); reply.send({ error: err }); }); - - - - } catch (err) { throw boom.boomify(err); } }; - - - exports.addBores = async (req, reply) => { try { diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 4790d1c6..fa62fff1 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -205,6 +205,7 @@ module.exports = function (fastify, opts, next) { address: { type: "string" }, dateOfOrder: { type: "string"}, price: { type: "string"}, + supplierId: { type: "string"}, From 43c14a804d57da7b29b9333246536f82b9a4bec3 Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Wed, 29 Mar 2023 16:37:35 +0530 Subject: [PATCH 33/34] tanker order accepted and rejected --- src/controllers/tankersController.js | 26 ++++++++++++++++++++++++++ src/routes/tankersRoute.js | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 85a666e3..21874994 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -327,6 +327,31 @@ exports.getAllTankersBookingdetails = async (req, reply) => { }; + +exports.getAllTankersaccepted = async (req, reply) => { + const limit = parseInt(req.query.limit) || 100; + const page = parseInt(req.query.page) || 1; + const startindex = (page - 1) * limit; + const supplierId = req.params.supplierId + try { + await Tankerbooking.find( { supplierId, orderStatus: ["accepted","rejected"] }) + .limit(limit) + .skip(startindex) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; + + + exports.addBores = async (req, reply) => { try { @@ -608,3 +633,4 @@ exports.connectstatus = async (req, reply) => { }; + diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index fa62fff1..56239206 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -675,6 +675,30 @@ module.exports = function (fastify, opts, next) { handler: tankersController.connectstatus, }); + + fastify.get("/api/alltankersaccepted/:supplierId", { + schema: { + tags: ["Supplier-Order"], + description: "This is for Get All connected and rejected for Suppliers", + summary: "This is for to Get All connected and rejected for suppliers", + params: { + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + + security: [ + { + basicAuth: [], + }, + ], + }, + handler: tankersController.getAllTankersaccepted, + }); next(); } From e7544901a4c7f786931baaabc43e340731d76f54 Mon Sep 17 00:00:00 2001 From: varun Date: Wed, 29 Mar 2023 07:35:40 -0400 Subject: [PATCH 34/34] created bookings of supplier and delivery boys --- src/controllers/supplierOrderController.js | 34 ++++ src/controllers/tankersController.js | 219 +++++++++++++++++++++ src/models/tankers.js | 3 + src/routes/supplierOrdersRoutes.js | 50 +++++ src/routes/tankersRoute.js | 3 + 5 files changed, 309 insertions(+) diff --git a/src/controllers/supplierOrderController.js b/src/controllers/supplierOrderController.js index 74110413..fd30e214 100644 --- a/src/controllers/supplierOrderController.js +++ b/src/controllers/supplierOrderController.js @@ -184,4 +184,38 @@ exports.verifyPhone = async (req, reply) => { } }; +exports.getbookingsofsupplier = async (req, reply) => { + try { + console.log(req.params.supplierId) + await Tankerbooking.find({supplierId: req.params.supplierId}) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; + + +exports.getbookingsofdeliveryboy = async (req, reply) => { + try { + console.log(req.params.supplierId) + await Tankerbooking.find({delivery_agent_mobile: req.params.agent_mobile}) + .exec() + .then((docs) => { + reply.send({ status_code: 200, data: docs, count: docs.length }); + }) + .catch((err) => { + console.log(err); + reply.send({ error: err }); + }); + } catch (err) { + throw boom.boomify(err); + } +}; \ No newline at end of file diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 87a0e381..eadc4a66 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -1,5 +1,6 @@ const { Tanker, Tankerbooking,Bore,GovtPipeLine } = require('../models/tankers') const { User,Counter, generateBookingId,resetCounter,generateCustomerId } = require('../models/User') +const { Tank } = require('../models/tanks') const { FriendRequest } = require('../models/supplier') //const User = require("../models/User"); @@ -193,6 +194,8 @@ exports.tankerBooking = async (req, reply) => { else { bookingsData = { + tankname:req.body.tankname, + tankLocation:req.body.tankLocation, tankerName:tankerName, customerId:customerId, bookingid : bookingId, @@ -212,6 +215,8 @@ exports.tankerBooking = async (req, reply) => { usertobeInserted = checkFormEncoding.tankersBookingData; console.log("thsi true url string"); tankersBookingData.customerId = customerId; + tankersBookingData.tankname = usertobeInserted.tankname; + tankersBookingData.tankLocation = usertobeInserted.tankLocation; tankersBookingData.tankerName = tankerName; tankersBookingData.bookingid = bookingId; tankersBookingData.capacity = usertobeInserted.capacity; @@ -581,3 +586,217 @@ exports.connectstatus = async (req, reply) => { }; + + +exports.deliveryboystart = async (req, reply) => { + try { + //let start_time,stop_time + const customerId = req.params.customerId; + + const tankLocation = req.body.tankLocation; + + const action = req.body.action + const receiver_tank = req.body.tankname + const receiver_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:(req.body.to_type).toLowerCase()}); + const receiver_capacity = parseInt((receiver_tank_info.capacity).replace(/,/g, ''), 10) + const desired_water_percentage = parseInt((req.body.percentage).replace(/,/g, ''), 10) + const intervals = {}; + + + if(action === "start"){ + start_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) + + const supplier_tank = req.body.from + const supplier_tank_type = (req.body.from_type).toLowerCase() + const receiver_type = (req.body.to_type).toLowerCase() + console.log(supplier_tank) + + + if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "1" } }); + + const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); + //console.log(supplier_tank_info1) + //const initial_update = parseInt(supplier_tank_info1.waterlevel.replace(/,/g, ''), 10)-200; + // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank,tankLocation:supplier_tank_type}, { $set: { waterlevel: initial_update } }); + const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); + + // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); + let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + // console.log(supplier_waterlevel) + let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + intervals[receiver_tank] = setInterval(async function () { + // Calculate new water levels + const supplier_tank_info2 = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:receiver_type}); + const newWaterLevel = receiver_waterlevel + 350//Math.floor(supplier_waterlevel * 0.1); + const newSupplierWaterLevel = supplier_waterlevel//Math.floor(supplier_waterlevel * 0.1); + const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + console.log((newSupplierWaterLevel/supplier_capacity)*100) + // Check if updating should stop + if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0") { + clearInterval(intervals[receiver_tank]); // Clear the interval for this tank + delete intervals[receiver_tank]; + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "0" } }); + + console.log("end for"+receiver_tank); + } else { + // Update water levels in database + //supplier_waterlevel = newSupplierWaterLevel; + receiver_waterlevel = newWaterLevel; + console.log((newSupplierWaterLevel/supplier_capacity)*100) + // console.log((newWaterLevel/receiver_capacity)*100) + console.log(receiver_tank+""+newWaterLevel+""+"bore to sump") + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { waterlevel: newWaterLevel } }) + if (supplier_tank_info2.motor_status==="0"){ + supplier_waterlevel = parseInt(supplier_tank_info2.waterlevel.replace(/,/g, ''), 10)-350 + console.log(supplier_tank+""+newSupplierWaterLevel+""+"s to oh") + await Tank.findOneAndUpdate({customerId, tankName: supplier_tank,tankLocation:supplier_tank_type}, { $set: { waterlevel: supplier_waterlevel } }) + } + + } + }, 2000); + + } + + + + // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); + + // // console.log(rcvr_info.motor_status) + // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + + // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); + + // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + // intervalId = setInterval(async function () { + // const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); + // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + // // Calculate new water levels + // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + // const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); + // // console.log(newWaterLevel) + // // console.log(newSupplierWaterLevel) + // // console.log(rcvr_info.motor_status) + // // console.log(rcvr_info.tankName) + + // // Check if updating should stop + // if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0) { + + // clearInterval(intervalId) + // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + + // console.log("end"); + // } else { + // // Update water levels in database + // supplier_waterlevel = newSupplierWaterLevel; + // receiver_waterlevel = newWaterLevel; + // // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // // console.log((newWaterLevel/receiver_capacity)*100) + // await Promise.all([ + // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + // ]); + // } + // }, 2000); + + + // } + + if(supplier_tank_type==="bore" && receiver_type === "sump"){ + const receiver_capacity = parseInt(receiver_tank_info.capacity.replace(/,/g, ''), 10) + // console.log(receiver_capacity,"0",receiver_tank_info.tankName) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "1" } }); + + let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + // console.log(receiver_waterlevel,"1") + intervals[receiver_tank] = setInterval(async function () { + // Calculate new water levels + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:receiver_type}); + //console.log(rcvr_info) + //console.log(rcvr_info.motor_status) + const newWaterLevel = receiver_waterlevel+450; + //console.log(newWaterLevel,"2",receiver_tank_info.tankName) + // Check if updating should stop + if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0" ) { + + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "0" } }); + clearInterval(intervals[receiver_tank]); // Clear the interval for this tank + delete intervals[receiver_tank]; + console.log("end for" + receiver_tank); + } else { + // Update water levels in database + + receiver_waterlevel = newWaterLevel; + console.log(receiver_tank+""+newWaterLevel+""+"bore to sump") + //console.log((newWaterLevel/receiver_capacity)*100,"4",receiver_tank_info.tankName) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { waterlevel: newWaterLevel } }) + } + }, 2000); + + } + // console.log(customerId,req.body.from,req.body.from_type,receiver_tank,req.body.to_type,) + motorData = { + + customerId:customerId, + supplierTank : req.body.from, + supplier_type: req.body.from_type, + receiverTank: receiver_tank, + receiver_type: req.body.to_type, + startTime: req.body.startTime, + stopTime: req.body.stopTime, + + + + }; + var motorData = new MotorData(motorData); + + checkFormEncoding = isUserFormUrlEncoded(req); + if (checkFormEncoding.isUserFormUrlEncoded) { + usertobeInserted = checkFormEncoding.motorData; + console.log("thsi true url string"); + motorData.customerId = customerId; + motorData.supplierTank = req.body.from; + motorData.receiverTank = receiver_tank; + motorData.supplier_type = req.body.from_type; + motorData.receiver_type = req.body.to_type; + motorData.startTime = usertobeInserted.startTime; + motorData.stopTime = usertobeInserted.stopTime; + + + } + const motor_data = await motorData.save(); + // reply.send({ status_code: 200, data: motor_data }); + + + + + reply.send({ status_code: 200, "start time": start_time, data: motor_data}); + console.log(start_time) + return motor_data + + + } + + else if (action === "stop") { + stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) + // console.log(stop_time) + // clearInterval(intervalId); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:(req.body.to_type).toLowerCase()}, { $set: { motor_status: "0" } }); + + reply.send({ status_code: 200, "stop time": stop_time}); + } else { + throw new Error("Invalid action"); + } + + return { message: 'Water level updates started' }; + + } catch (err) { + throw new Error(`Failed to start/stop water level updates: ${err.message}`); + + }; +}; diff --git a/src/models/tankers.js b/src/models/tankers.js index 6bd1ac34..bd6d2059 100644 --- a/src/models/tankers.js +++ b/src/models/tankers.js @@ -30,7 +30,10 @@ const tankersSchema = new mongoose.Schema({ }); const tankersbookingSchema = new mongoose.Schema({ + customerId: { type: String, default: null }, + tankname:{ type: String, default: null }, + tankLocation:{ type: String, default: null }, tankerName: { type: String, default: null }, bookingid: { type: String, default: null,unique: true }, supplierId:{type: String, default: null}, diff --git a/src/routes/supplierOrdersRoutes.js b/src/routes/supplierOrdersRoutes.js index a8697e4f..33ce523e 100644 --- a/src/routes/supplierOrdersRoutes.js +++ b/src/routes/supplierOrdersRoutes.js @@ -155,6 +155,56 @@ module.exports = function (fastify, opts, next) { handler: supplierOrderController.verifyPhone, }); + + fastify.get("/api/getsupplierbookings/:supplierId", { + schema: { + tags: ["Supplier"], + description: "This is for Get supplier bookings Data", + summary: "This is for to Get supplier bookings Data", + params: { + required: ["supplierId"], + type: "object", + properties: { + supplierId: { + type: "string", + description: "supplierId", + }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: supplierOrderController.getbookingsofsupplier, + }); + + fastify.get("/api/getdeliveryboybookings/:agent_mobile", { + schema: { + tags: ["Supplier"], + description: "This is for Get delivery bookings Data", + summary: "This is for to Get delivery bookings Data", + params: { + required: ["agent_mobile"], + type: "object", + properties: { + agent_mobile: { + type: "string", + description: "agent_mobile", + }, + }, + }, + security: [ + { + basicAuth: [], + }, + ], + }, + preHandler: fastify.auth([fastify.authenticate]), + handler: supplierOrderController.getbookingsofdeliveryboy, + }); next(); diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 8a539ada..bb26ad08 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -204,6 +204,9 @@ module.exports = function (fastify, opts, next) { capacity: { type: "string" }, address: { type: "string" }, dateOfOrder: { type: "string"}, + tankname:{type: "string"}, + tankLocation:{type:"string"} +