From 886e13b1226ab482a7e5153786c43e8b0832386d Mon Sep 17 00:00:00 2001 From: Bhaskara Kishore Date: Fri, 24 Mar 2023 17:06:10 +0530 Subject: [PATCH 1/3] 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 2/3] 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 3/3] 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 },