An error occurred while loading the file. Please try again.
-
Fajar Nugroho authored7d36807c
chatRoutes.js 3.39 KiB
const express = require('express');
const Chat = require('../models/Chat.js');
const chatRouter = express.Router();
const async = require('async');
const messaging = require('../controllers/messaging');
const request = require('request');
const admin = require('firebase-admin');
const getFCMToken = require('../controllers/getFCMToken');
const User = require('../models/User');
chatRouter.route('/').get((req, res) => {
res.setHeader('Allow-Control-Access-Origin', '*');
const uCustomer = req.query.customer;
const uDriver = req.query.driver;
console.log("masuk");
Chat.find({ customer : uCustomer, driver : uDriver}, (err, result) => {
if (err) return console.error(err);
return res.json({
'url' : '/chat',
'desc' : 'get chat history',
'status' : 200,
'data' : result[0]
});
});
});
chatRouter.route('/send').post((req, res) => {
res.setHeader('Allow-Control-Access-Origin', '*');
const data = {};
console.log(req.body);
data.uCustomer = req.body.customer;
data.uDriver = req.body.driver;
data.chat = {
sender : req.body.chat.sender,
message : req.body.chat.message
}
const recvUser = req.body.chat.sender == data.uCustomer ? data.uDriver : data.uCustomer;
// const recvToken = getFCMToken(recvUser);
// console.log(recvToken);
const payload = {
"notification" : {
"title": "Notif Masuk",
"body": req.body.chat.message,
}
}
console.log(recvUser);
User.findOne({ username : recvUser }, (err, result) => {
if (err) return console.error(err);
console.log(result);
const recvToken = result.token;
console.log(recvToken);
messaging.sendToDevice(recvToken, payload)
.then((response) => {
console.log(response);
async.waterfall([
(flowCallback) => {
Chat.find({ customer : data.uCustomer, driver : data.uDriver}, (err, result) => {
if (err) return flowCallback(err);
result.length > 0 ? data.exist = 1 : data.exist = 0;
return flowCallback();
});
},
(flowCallback) => {
if (data.exist == 1) {
Chat.update({ customer : data.uCustomer, driver : data.uDriver},
{ '$push' : { content : data.chat}}, (err, result) => {
if (err) return flowCallback(err);
return flowCallback();
});
} else {
Chat.create({
customer : data.uCustomer,
driver : data.uDriver,
content : [data.chat]
}, (err, result) => {
if (err) return flowCallback(err);
return flowCallback();
});
}
}
], (err, result) => {
if (err) {
console.error(err);
return res.json({
url : '/chat/save',
desc : 'save chat history',
status : 500,
data : {}
});
} else {
return res.json({
url : '/chat/save',
desc : 'save chat history',
status : 200,
data : 'OK'
});
}
});
})
.catch((err) => {
console.error(err);
return res.json({
url : '/chat/save',
desc : 'send chat',
status : 500,
data : {}
});
});
});
});
module.exports = chatRouter;