const { Tanker, Tankerbooking,Bore } = 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.tankers; 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 tanker 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){ } else { bookingsData = { bookingid : bookingId, typeofwater: req.body.typeofwater, capacity: req.body.capacity, address: req.body.address, dateOfOrder: req.body.dateOfOrder, }; var tankersBookingData = new Tankerbooking(bookingsData); checkFormEncoding = isUserFormUrlEncoded(req); if (checkFormEncoding.isUserFormUrlEncoded) { usertobeInserted = checkFormEncoding.tankersBookingData; console.log("thsi true url string");s tankersBookingData.bookingid = bookingId; tankersBookingData.capacity = usertobeInserted.capacity; tankersBookingData.typeofwater = usertobeInserted.typeofwater; tankersBookingData.address = usertobeInserted.address; tankersBookingData.dateOfOrder = usertobeInserted.dateOfOrder; } } const booking_data = await tankersBookingData.save(); return booking_data; } catch (err) { throw boom.boomify(err); } }; exports.getTanker = async (req, reply) => { try { await Tanker.find({tankerName: req.query.tankerName}) .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 { //const username = req.params.username; var customerId = req.params.customerId; console.log(customerId); //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); boresData = { customerId:customerId, boreName: req.body.boreName, typeofwater: req.body.typeofwater, description: req.body.description, }; var bore_Name = req.body.boreName var i_bore = await Bore.findOne({ boreName: bore_Name,customerId:customerId}) if(i_bore){ throw new Error('Bore already exists'); } else { var bores = new Bore(boresData); checkFormEncoding = isUserFormUrlEncoded(req); if (checkFormEncoding.isUserFormUrlEncoded) { usertobeInserted = checkFormEncoding.bores; console.log("thsi true url string"); tank.customerId = usertobeInserted.customerId bores.boreName = usertobeInserted.boreName; bores.typeofwater = usertobeInserted.typeofwater; bores.description = usertobeInserted.description; } } const insertedBore = await bores.save(); return insertedBore; } catch (err) { throw boom.boomify(err); } }; exports.getBores = async (req, reply) => { try { await Bore.find({customerId: req.query.customerId}) .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.deleteBoresInfo = async (req, reply) => { try { await Bore.findOneAndDelete({customerId: req.params.customerId,boreName: req.query.boreName}); //console.log(Bore) reply.send({ status_code: 200},); // return Bore; } catch (err) { throw boom.boomify(err); } };