Spaces:
Running
Running
const express = require("express"); | |
const router = express.Router(); | |
const mongoose = require("mongoose"); | |
var axios = require('axios'); | |
const Order = require("../Database/models/order"); | |
const Product = require("../Database/models/product"); | |
var User = require('../Database/models/user'); | |
const pushApi = "https://fcm.googleapis.com/fcm/send"; | |
const { responseAddProduct, responseFetchProduct, failedResponse, successResponse } = require("../utils/responseModel"); | |
//Post order | |
router.post("/", async (req, res, next) => { | |
try { | |
console.log(req.body); | |
const order = new Order(req.body); | |
const orders = await order.save(); | |
if (orders) { | |
const data = await User.findOne({ unique_id: req.body.unique_id }) | |
console.log(data.pushToken); | |
if (data) { | |
/* var data = JSON.stringify({ | |
"content_available": true, | |
"priority": "high", | |
"to": data.pushToken, | |
"notification": { | |
"title": "Order Placed", | |
"body": "We are preparing your orders..." | |
} | |
}); */ | |
var config = { | |
method: 'post', | |
url: pushApi, | |
headers: { | |
'Content-Type': 'application/json', | |
'Authorization': 'key=AAAAKXRRooI:APA91bH9pMJziYPRNRI2XyMaSIG_e5a-eJzxMSkaozaCrmCencitDrTul4XyrVAV87K6d-56zGJC49y7Cz6mTRpcxca16QzmF1TF8EW7OmxHPvcQdseHWoD3TIAe62u2gfY0pVXlhJ8Y' | |
}, | |
data: data | |
}; | |
axios(config) | |
.then(function (response) { | |
console.log(JSON.stringify(response.data)); | |
}) | |
.catch(function (error) { | |
console.log(error); | |
}); | |
} | |
// If order placed it will send push notification to admin | |
// Who will deliver the order | |
const adminUsers = await User.find({ role: 'admin' }); | |
if (adminUsers) { | |
await Promise.all(adminUsers.map(async (data) => { | |
console.log("Hope it will work" + data.pushToken) | |
var data = JSON.stringify({ | |
"content_available": true, | |
"priority": "high", | |
"to": data.pushToken, | |
"notification": { | |
"title": "Order Placed", | |
"body": "New order placed. Take ready :)" | |
} | |
}); | |
var config = { | |
method: 'post', | |
url: pushApi, | |
headers: { | |
'Content-Type': 'application/json', | |
'Authorization': 'key=AAAAKXRRooI:APA91bH9pMJziYPRNRI2XyMaSIG_e5a-eJzxMSkaozaCrmCencitDrTul4XyrVAV87K6d-56zGJC49y7Cz6mTRpcxca16QzmF1TF8EW7OmxHPvcQdseHWoD3TIAe62u2gfY0pVXlhJ8Y' | |
}, | |
data: data | |
}; | |
axios(config) | |
.then(function (response) { | |
console.log(JSON.stringify(response.data)); | |
}) | |
.catch(function (error) { | |
console.log(error); | |
}); | |
})); | |
} else { | |
console.log("Admin Users not found!") | |
} | |
} | |
res.status(200).json(responseAddProduct(true, "Order placed!")); | |
} catch (err) { | |
res.status(500).json(responseAddProduct(false, err)); | |
} | |
}); | |
//UPDATE | |
router.put("/:id", async (req, res) => { | |
try { | |
console.log(req.params.id); | |
console.log(req.body); | |
const data = await Order.updateOne({ _id: req.params.id }, | |
{ $set: { status: req.body.status } }).exec(); | |
if (data) { | |
try { | |
var statusText = "" | |
if (req.body.status == "Cancelled" || req.body.status == "cancelled") { | |
statusText = "You're order is cancelled" | |
} else if (req.body.status == "Accepted" || req.body.status == "accepted") { | |
statusText = "You're order is accepted by the dealer :) " | |
} else if (req.body.status == "Preparing" || req.body.status == "preparing") { | |
statusText = "You're order is about to packing :) " | |
} | |
const data = await User.findOne({ unique_id: req.body.unique_id }).exec(); | |
if (data) { | |
console.log(data.pushToken); | |
var config = { | |
method: 'post', | |
url: pushApi, | |
headers: { | |
'Content-Type': 'application/json', | |
'Authorization': 'key=AAAAKXRRooI:APA91bH9pMJziYPRNRI2XyMaSIG_e5a-eJzxMSkaozaCrmCencitDrTul4XyrVAV87K6d-56zGJC49y7Cz6mTRpcxca16QzmF1TF8EW7OmxHPvcQdseHWoD3TIAe62u2gfY0pVXlhJ8Y' | |
}, | |
data: data | |
}; | |
axios(config) | |
.then(function (response) { | |
console.log(JSON.stringify(response.data)); | |
}) | |
.catch(function (error) { | |
console.log(error); | |
}); | |
} | |
} catch (e) { | |
console.log(e) | |
} | |
} else { | |
return res.status(201).send(failedResponse(err)) | |
} | |
} catch (err) { | |
console.log(err); | |
res.status(500).json(err); | |
} | |
}); | |
// //GET USER ORDERS | |
// router.get("/:id", async (req, res) => { | |
// console.log(req.params.unique_id); | |
// try { | |
// const orders = await Order.find({ id: req.params.id }); | |
// res.status(200).json(orders); | |
// } catch (err) { | |
// res.status(500).json(err); | |
// } | |
// }); | |
//find order by unique_id | |
router.get("/:unique_id", async (req, res, next) => { | |
try { | |
console.log(req.params.unique_id); | |
const orders = await Order.find({ unique_id: req.params.unique_id }); | |
res.status(200).json(orders); | |
} catch (err) { | |
res.status(500).json(err); | |
} | |
}); | |
// //GET ALL | |
router.get("/", async (req, res) => { | |
try { | |
const orders = await Order.find(); | |
res.status(200).send(successResponse(orders)); | |
} catch (err) { | |
res.status(500).send(failedResponse(err)); | |
} | |
}); | |
//delete order | |
router.delete("/:orderId", async (req, res, next) => { | |
await Order.remove({ _id: req.params.orderId }) | |
.exec() | |
.then(result => { | |
res.status(200).json(successResponse(result)); | |
}) | |
.catch(err => { | |
res.status(500).json(failedResponse(err)); | |
}); | |
}); | |
module.exports = router; |