delivery boy start and stop

master
varun 3 years ago
parent 88babe0d4c
commit d11e05d1a8

@ -1,6 +1,8 @@
//const Supplier = require("../models/supplier"); //const Supplier = require("../models/supplier");
const { Supplier, generateSupplierId, FriendRequest,DeliveryBoy} = require("../models/supplier") const { Supplier, generateSupplierId, FriendRequest,DeliveryBoy} = require("../models/supplier")
const { Tank } = require('../models/tanks')
const boom = require("boom"); const boom = require("boom");
const fastify = require("fastify")({ const fastify = require("fastify")({
@ -181,3 +183,117 @@ exports.getactivedeliveryboysofsupplier = async (req, reply) => {
throw boom.boomify(err); throw boom.boomify(err);
} }
}; };
const intervals = {};
exports.deliveryboystartandstop = async (req, reply) => {
try {
//let start_time,stop_time
const bookingId = req.params.bookingId
const bookingdata = await Tankerbooking.findOne({bookingid: bookingId})
// console.log(bookingdata,"0")
// console.log(bookingdata.supplierId,"6")
const customerId = bookingdata.customerId;
const action = req.body.action
const receiver_tank = bookingdata.tankName
// console.log(receiver_tank,"5")
const receiver_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:"sump"});
// console.log(receiver_tank_info,"1")
const receiver_capacity = parseInt((receiver_tank_info.capacity).replace(/,/g, ''), 10)
// console.log(receiver_capacity,"2")
if(action === "start"){
// console.log("started")
start_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'})
const initial_receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10)
await Tankerbooking.findOneAndUpdate({bookingid:bookingId}, { $set: { initial_water_level: initial_receiver_waterlevel ,start_time:start_time} });
let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10)
// console.log(receiver_waterlevel,"1")
const intervalId = setInterval(async function () {
// Calculate new water levels
const newWaterLevel = receiver_waterlevel+450;
//console.log(newWaterLevel,"2",receiver_tank_info.tankName)
// Check if updating should stop
if ((newWaterLevel/receiver_capacity)*100 >= 97 ) {
clearInterval(intervals[receiver_tank]); // Clear the interval for this tank
delete intervals[receiver_tank];
stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'})
const final_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:"sump"});
const final_receiver_waterlevel = parseInt(final_tank_info.waterlevel.replace(/,/g, ''), 10)
// console.log(final_receiver_waterlevel)
// clearInterval(intervalId);
await Tankerbooking.findOneAndUpdate({bookingid:bookingId}, { $set: { final_water_level: final_receiver_waterlevel ,stop_time:stop_time} });
// 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:"sump"}, { $set: { waterlevel: newWaterLevel } })
// console.log(intervals,"check1")
}
}, 2000);
intervals[receiver_tank] = intervalId;
// console.log(customerId,req.body.from,req.body.from_type,receiver_tank,req.body.to_type,)
reply.send({ status_code: 200, "start time": start_time,});
console.log(start_time)
}
if (action === "stop") {
const booking_data = await Tankerbooking.findOne({bookingid: bookingId})
console.log(intervals,"hii3")
try {
clearInterval(intervals[receiver_tank]); // Clear the interval for this tank
delete intervals[receiver_tank]; // Delete the interval ID for this tank from the intervals object
} catch (err) {
console.log(err);
}
stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'})
const final_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:"sump"});
// console.log(final_tank_info,"hii")
const final_receiver_waterlevel = parseInt(final_tank_info.waterlevel.replace(/,/g, ''), 10)
const start_water_level = parseInt(booking_data.initial_water_level.replace(/,/g, ''), 10)
const quantity_delivered = final_receiver_waterlevel-start_water_level
await Tankerbooking.findOneAndUpdate({bookingid:bookingId}, { $set: { final_water_level: final_receiver_waterlevel ,stop_time:stop_time,quantityDelivered:quantity_delivered} });
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}`);
};
};

@ -201,7 +201,9 @@ exports.tankerBooking = async (req, reply) => {
address: req.body.address, address: req.body.address,
dateOfOrder: req.body.dateOfOrder, dateOfOrder: req.body.dateOfOrder,
price:req.body.price, price:req.body.price,
supplierId:req.body.supplierId supplierId:req.body.supplierId,
tankName:req.body.tankName,
tankLocation:req.body.tankLocation,
//date: req.body.date, //date: req.body.date,
// time: req.body.time, // time: req.body.time,
@ -222,6 +224,8 @@ exports.tankerBooking = async (req, reply) => {
tankersBookingData.dateOfOrder = usertobeInserted.dateOfOrder; tankersBookingData.dateOfOrder = usertobeInserted.dateOfOrder;
tankersBookingData.price = usertobeInserted.price; tankersBookingData.price = usertobeInserted.price;
tankersBookingData.supplierId = usertobeInserted.supplierId; tankersBookingData.supplierId = usertobeInserted.supplierId;
tankersBookingData.tankName = usertobeInserted.tankName;
tankersBookingData.tankLocation = usertobeInserted.tankLocation;
//tankersBookingData.date = usertobeInserted.date; //tankersBookingData.date = usertobeInserted.date;
//tankersBookingData.time = usertobeInserted.time; //tankersBookingData.time = usertobeInserted.time;
@ -610,11 +614,6 @@ exports.connectionStatus = async (req, reply) => {
exports.connectstatus = async (req, reply) => { exports.connectstatus = async (req, reply) => {
try { try {
const customerId = req.params.customerId; const customerId = req.params.customerId;
const supplierId = req.query.supplierId; const supplierId = req.query.supplierId;

@ -32,7 +32,7 @@ const tankersSchema = new mongoose.Schema({
const tankersbookingSchema = new mongoose.Schema({ const tankersbookingSchema = new mongoose.Schema({
customerId: { type: String, default: null }, customerId: { type: String, default: null },
tankname:{ type: String, default: null }, tankName:{ type: String, default: null },
tankLocation:{ type: String, default: null }, tankLocation:{ type: String, default: null },
tankerName: { type: String, default: null }, tankerName: { type: String, default: null },
bookingid: { type: String, default: null,unique: true }, bookingid: { type: String, default: null,unique: true },
@ -49,7 +49,10 @@ const tankersbookingSchema = new mongoose.Schema({
delivery_agent : { type: String, default: "null" }, delivery_agent : { type: String, default: "null" },
delivery_agent_mobile : { type: String, default: "null" }, delivery_agent_mobile : { type: String, default: "null" },
delivery_agent_alternative_mobile : { type: String, default: "null" }, delivery_agent_alternative_mobile : { type: String, default: "null" },
initial_water_level:{ type: String, default: "null" },
final_water_level:{ type: String, default: "null" },
start_time:{ type: String, default: "null" },
stop_time:{ type: String, default: "null" },
quantityDelivered: { type: String, default: null}, quantityDelivered: { type: String, default: null},
amount_paid: { type: String, default: null }, amount_paid: { type: String, default: null },
amount_due: { type: String, default: null }, amount_due: { type: String, default: null },

@ -208,6 +208,53 @@ module.exports = function (fastify, opts, next) {
handler: supplierOrderController.getactivedeliveryboysofsupplier, handler: supplierOrderController.getactivedeliveryboysofsupplier,
}); });
fastify.route({
method: "PUT",
url: "/api/deliveryboystartandstop/:bookingId",
schema: {
tags: ["Supplier"],
summary: "This is for delivery boy start and stop",
params: {
required: ["bookingId"],
type: "object",
properties: {
bookingId: {
type: "string",
description: "bookingId",
},
},
},
body: {
type: "object",
// required: ['phone'],
properties: {
action: { type: "string" },
percentage: { type: "string",default: "100" },
//startTime:{ type: "string" },
//stopTime:{ type: "string" },
},
},
security: [
{
basicAuth: [],
},
],
},
// preHandler: [
// fastify.auth([fastify.operatorAuthenticate]),
// validationHandler.validatePhoneFormat,
// ],
preHandler: fastify.auth([fastify.authenticate]),
handler: supplierOrderController.deliveryboystartandstop,
});
next(); next();
} }

@ -199,6 +199,8 @@ module.exports = function (fastify, opts, next) {
body: { body: {
type: "object", type: "object",
properties: { properties: {
tankName:{type: 'string'},
tankLocation:{type: 'string'},
tankerName: {type: 'string'}, tankerName: {type: 'string'},
typeofwater: { type: "string" }, typeofwater: { type: "string" },
capacity: { type: "string" }, capacity: { type: "string" },

Loading…
Cancel
Save