You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
4.1 KiB

const Tanker = require("../models/tankers");
const Tankerbooking = require("../models/tankers");
const User = require("../models/User");
const boom = require("boom");
const fastify = require("fastify")({
logger: true,
});
exports.addTankers = async (req, reply) => {
try {
//const username = req.params.username;
console.log(req.params);
const username = loginObject.user.username;
//console.log(loginObject.user.username)
// 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);
tankersData = {
tankerName: req.body.tankerName,
phoneNumber: req.body.phoneNumber,
typeofwater: req.body.typeofwater,
capacity: req.body.capacity,
};
var tanker_Name = req.body.tankerName
var i_tank = await Tanker.findOne({ tankerName: tanker_Name})
if(i_tank){
throw new Error('tankname already exists');
}
else {
var tankers = new Tanker(tankersData);
checkFormEncoding = isUserFormUrlEncoded(req);
if (checkFormEncoding.isUserFormUrlEncoded) {
usertobeInserted = checkFormEncoding.tank;
console.log("thsi true url string");
tankers.tankerName = usertobeInserted.tankerName;
tankers.phoneNumber = usertobeInserted.phoneNumber;
tankers.capacity = usertobeInserted.capacity;
tankers.typeofwater = usertobeInserted.typeofwater;
}
}
const insertedTank = await tankers.save();
return insertedTank;
} catch (err) {
throw boom.boomify(err);
}
};
//update selected tanker
exports.updateTankersInfo = async (req, reply) => {
try {
//const username = loginObject.user.username;
const tankerName = req.params.tankerName;
var tank_name = req.body.tankerName
var i_tank = await Tanker.findOne({ tankerName: tank_name})
const tanker = req.body;
const { ...updateData } = tanker;
const update = await Tanker.findOneAndUpdate({ tankerName: tankerName }, updateData, { new: true });
if(i_tank){
throw new Error('tankname already exists');
}
else
{
//return update;
reply.send({ status_code: 200, data: update });
}
}
catch (err) {
throw boom.boomify(err);
}
};
//delete selected tank
exports.deleteTankerInfo = async (req, reply) => {
try {
const tankerName = req.params.tankerName;
const tanker = await Tanker.findOneAndDelete({ tankerName: tankerName });
reply.send({ status_code: 200, data: tanker});
// return tanker;
} catch (err) {
throw boom.boomify(err);
}
};
let bookingCount = 0
exports.tankerBooking = async (req, reply) => {
try {
const date = new Date()
const year = date.getFullYear()
const month = (date.getMonth() + 1).toString().padStart(2, '0')
const day = date.getDate().toString().padStart(2, '0')
const count = bookingCount.toString().padStart(4, '0')
const bookingId = `ARM${year}${month}${day}${count}`
bookingCount = (bookingCount + 1) % 100;
var booking_id = await Tankerbooking.findOne({ bookingid: bookingId})
// if(booking_id){
// reply.redirect(tankerBooking())
// }
// else {
bookingsData = {
bookingid : bookingId,
typeofwater: req.body.typeofwater,
capacity: req.body.capacity,
address: req.body.address,
dateTime: req.body.dateTime,
};
var tankersBookingData = new Tankerbooking(bookingsData);
checkFormEncoding = isUserFormUrlEncoded(req);
if (checkFormEncoding.isUserFormUrlEncoded) {
usertobeInserted = checkFormEncoding.tankersBookingData;
console.log("thsi true url string");
tankersBookingData.bookingid = bookingId;
tankersBookingData.capacity = usertobeInserted.capacity;
tankersBookingData.typeofwater = usertobeInserted.typeofwater;
tankersBookingData.address = usertobeInserted.address;
tankersBookingData.dateTime = usertobeInserted.dateTime;
}
//}
const booking_data = await tankersBookingData.save();
return booking_data;
} catch (err) {
throw boom.boomify(err);
}
};