From ada5cdf28e8edef4afcffc000fca1c1375a44e42 Mon Sep 17 00:00:00 2001
From: Irfan Ariq <irfanariq@home.com>
Date: Wed, 29 Nov 2017 23:48:49 +0000
Subject: [PATCH] edit router.js

---
 ChatService/app/routes.js | 606 ++++++++++++++++++--------------------
 1 file changed, 284 insertions(+), 322 deletions(-)

diff --git a/ChatService/app/routes.js b/ChatService/app/routes.js
index 45e19693e..a283472be 100644
--- a/ChatService/app/routes.js
+++ b/ChatService/app/routes.js
@@ -1,346 +1,308 @@
 module.exports = function(app) {
-
-        // Load Models
-        var Driver         = require('./models/driver');
-        var FcmToken         = require('./models/fcmtoken');
-        var Chat           = require('./models/chat');        
-
-
-        // We need this to build our post string
-        var querystring = require('querystring');
-        var http = require('http');
-        var fs = require('fs');
-
-        function sendMessages(to, codestring) {
-            // Build the post string from an object
-            var post_data = JSON.stringify({
-                "notification": {
-                    "title": "ini judul",
-                    "body" : codestring,
-                    "icon" : "firebase-logo.png",
-                    "click-action" : ""
-               },
-               "to": to
-            });
-
-            // An object of options to indicate where to post to
-            var post_options = {
-                host: 'fcm.googleapis.com',
-                path: '/fcm/send',
-                method: 'POST',
-                headers: {
-                    'Content-Type': 'application/json',
-                    'Authorization' : 'key=AAAAj5zwaR8:APA91bEs0mPlX_EKQFn3hBAkz7bUFJJt-3RW5eZ-EfBr4wHIhcMwRl6ka6COI3qaAU136KLjIC3TDHLS0M3QPbfG-SJLxG5fNACB9srlxViHNZkZ5TBpKNTxVkD5o9czlt0S3xeQZoGF',
-                    'Content-Length': Buffer.byteLength(post_data)
-                }
-            };
-
-            // Set up the request
-            var post_req = http.request(post_options, function(res) {
-                res.setEncoding('utf8');
-                res.on('data', function (chunk) {
-                    console.log('Response: ' + chunk);
+    
+            // Load Models
+            var Driver         = require('./models/driver');
+            var FcmToken         = require('./models/fcmtoken');
+            var Chat           = require('./models/chat');        
+    
+    
+            // We need this to build our post string
+            var querystring = require('querystring');
+            var http = require('http');
+            var fs = require('fs');
+    
+            function sendMessages(to, title, message) {
+                // Build the post string from an object
+                var post_data = JSON.stringify({
+                    "notification": {
+                        "title": title,
+                        "body" : codestring
+                        // "icon" : "firebase-logo.png",
+                        // "click-action" : ""
+                   },
+                   "to": to
+                });
+    
+                // An object of options to indicate where to post to
+                var post_options = {
+                    host: 'fcm.googleapis.com',
+                    path: '/fcm/send',
+                    method: 'POST',
+                    headers: {
+                        'Content-Type': 'application/json',
+                        'Authorization' : 'key=AAAAj5zwaR8:APA91bEs0mPlX_EKQFn3hBAkz7bUFJJt-3RW5eZ-EfBr4wHIhcMwRl6ka6COI3qaAU136KLjIC3TDHLS0M3QPbfG-SJLxG5fNACB9srlxViHNZkZ5TBpKNTxVkD5o9czlt0S3xeQZoGF',
+                        'Content-Length': Buffer.byteLength(post_data)
+                    }
+                };
+    
+                // Set up the request
+                var post_req = http.request(post_options, function(res) {
+                    res.setEncoding('utf8');
+                    res.on('data', function (chunk) {
+                        console.log('Response: ' + chunk);
+                    });
                 });
+    
+            // post the data
+            post_req.write(post_data);
+            post_req.end();
+            }
+    
+            // ====================== SERVER ROUTES ============================
+    
+            // FOR HANDLING DRIVER STATUS
+            // see available driver
+            Driver.remove({},function(err,some) {
+                if (err) return console.error;
             });
-
-        // post the data
-        post_req.write(post_data);
-        post_req.end();
-        }
-
-
-        // Requirement to post to firebase-admin
-        // var admin = require("firebase-admin");
-        // var serviceAccount = require("../config/serviceAccountKey.json");
-        // console.log(serviceAccount);
-
-        // admin.initializeApp({
-        //   credential: admin.credential.cert(serviceAccount),
-        //   databaseURL: "https://chatservice-kia.firebaseio.com",
-        // });     
-
-        // function sendMessages(to, message){          
-        //     var message = { //this may vary according to the message type (single recipient, multicast, topic, et cetera)
-        //         // to: to, 
-        //         notification: {
-        //             title: 'Title of your push notification', 
-        //             body: 'Body of your push notification' 
-        //         },
-        //         data: {  //you can send only notification or only data(or include both)
-        //             // to: ro,
-        //             message: message
-        //         }
-        //     };
-        //     admin.messaging().sendToDevice(to, message)
-        //         .then(function(response) {
-        //             console.log("response: ", response);
-        //         })
-        //         .catch(function(err) {
-        //             console.log("error: ", err);
-        //         });
-        // };
-
-        // ====================== SERVER ROUTES ============================
-
-        // FOR HANDLING DRIVER STATUS
-        // see available driver
-        Driver.remove({},function(err,some) {
-            if (err) return console.error;
-        });
-
-        app.get('/availabledriver', function(req, res){
-            Driver.find({"status" : "available"}, function(err, foundDriver){
-                res.json(foundDriver);
+    
+            app.get('/availabledriver', function(req, res){
+                Driver.find({"status" : "available"}, function(err, foundDriver){
+                    res.json(foundDriver);
+                });
             });
-        });
-        
-        var someDriver = new Driver({idDriver:7,status:"available"});
-        someDriver.save(function(err,someDriver) {
-            if (err) return console.error(err);
-        })
-
-        app.get('/alldriver', function(req, res){
-            Driver.find({}, function(err, foundDriver){
-                res.json(foundDriver);
+            
+            // var someDriver = new Driver({idDriver:7,status:"available"});
+            //     someDriver.save(function(err,someDriver) {
+            //     if (err) return console.error(err);
+            // })
+    
+            app.get('/alldriver', function(req, res){
+                Driver.find({}, function(err, foundDriver){
+                    res.json(foundDriver);
+                });
             });
-        });
-
-        // driver want to find order
-        app.post('/findorder', function(req, res){
-            Driver.findOne({"idDriver" : Number (req.body.id)}, function(err, foundDriver){
-                if (err){
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);
-                }
-                else {
-                    if (!foundDriver){
-                        Driver.create({"idDriver" : req.body.id, "status" : "available"}, function(error, addDriver){
-                            if(!error && addDriver){
-                                var response = {"status" : 200, "message" : "Driver added to available driver list"};
-                                res.json(response);    
-                            }
-                        });
-                    } else {
-                        foundDriver["status"] = "available";
-                        foundDriver.save();
-                        var response = {"status" : 200, "message" : "Driver status has changed to available"};
+    
+            // driver want to find order
+            app.post('/findorder', function(req, res){
+                Driver.findOne({"idDriver" : req.body.id}, function(err, foundDriver){
+                    if (err){
+                        var response = {"status" : 503, "message" : "Database error detected"};
                         res.json(response);
                     }
-                }
-            });
-        });
-
-        // user select certain driver
-        app.post('/selectdriver', function(req, res){
-            Driver.findOne({"idDriver" : Number (req.body.id), "status" : "available"}, function(err, foundDriver){
-                if (!err && foundDriver){
-                    foundDriver["status"] = "acceptorder";
-                    foundDriver.save();
-                    var response = {"status" : 200, "message" : "Driver has accepted an order"};
-                    res.json(response);
-                }
-                else {
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);                     
-                }
-            });
-        });
-
-        // user finishes their order
-        app.post('/finishorder', function(req, res){
-            Driver.findOne({"idDriver" : Number (req.body.id), "status" : "acceptorder"}, function(err, foundDriver){
-                if (!err && foundDriver){
-                    foundDriver["status"] = "available";
-                    foundDriver.save();
-                    var response = {"status" : 200, "message" : "Driver has finished the order"};
-                    res.json(response);
-                }
-                else {
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);                     
-                }
+                    else {
+                        if (!foundDriver){
+                            Driver.create({"idDriver" : req.body.id, "status" : "available", "pref": req.body.pref}, function(error, addDriver){
+                                if(!error && addDriver){
+                                    var response = {"status" : 200, "message" : "Driver added to available driver list"};
+                                    res.json(response);    
+                                }
+                            });
+                        } else {
+                            foundDriver["status"] = "available";
+                            foundDriver.save();
+                            var response = {"status" : 200, "message" : "Driver status has changed to available"};
+                            res.json(response);
+                        }
+                    }
+                });
             });
-        });
-
-        // FOR HANDLING FCM TOKEN USER
-        // add user fcm token
-        app.post('/addfcmtoken', function(req, res){
-            FcmToken.findOne({"id" : Number (req.body.id)}, function(err, foundUser){
-                if (err){
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);
-                }
-                else {
-                    if (!foundUser){
-                        FcmToken.create({"id" : Number (req.body.id), "token" : req.body.token}, function(error, addUser){
-                            if(!error && addUser){
-                                var response = {"status" : 200, "message" : "User token has been added to token list"};
-                                res.json(response);    
+    
+            // user select certain driver
+            app.post('/selectdriver', function(req, res){
+                Driver.findOne({"idDriver" : req.body.id, "status" : "available"}, function(err, foundDriver){
+                    if (!err && foundDriver){
+                        FcmToken.findOne({"id" : req.body.id}, function(err1, tokenDriver){
+                            if (!err1 && tokenDriver) {
+                                foundDriver["status"] = "acceptorder";
+                                foundDriver.save();
+                                var response = {"status" : 200, "message" : "Driver has accepted an order"};
+                                sendMessages(tokenDriver.token, "order", "you get an order");
+                                res.json(response);
+                            }else{
+                                var response = {"status" : 503, "message" : "Database error detected"};
+                                res.json(response);                     
                             }
                         });
-                    } else {
-                        foundUser["token"] = req.body.token;
-                        foundUser.save();
-                        var response = {"status" : 200, "message" : "User token has been updated"};
-                        res.json(response);
                     }
-                }
-            });
-        });
-
-        // delete user fcm token
-        app.post('/deletefcmtoken', function(req, res){
-            FcmToken.findOne({"id" : Number (req.body.id)}, function(err, foundUser){
-                if (err){
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);
-                }
-                else {
-                    foundUser.remove();
-                    var response = {"status" : 200, "message" : "User token has been deleted"};
-                    res.json(response);
-                }
-            });
-        });
-
-        app.get('/listfcmtoken',function(req, res){
-            FcmToken.find({},function(err, listUser){
-                if (err){
-                    var response = {"status" : 503, "message" : "Database error detected"};
-                    res.json(response);
-                }
-                else {
-                    var response = {"status" : 200, "message" : "User token has been deleted"};
-                    res.json(listUser);
-                }
+                    else {
+                        var response = {"status" : 503, "message" : "Database error detected"};
+                        res.json(response);                     
+                    }
+                });
             });
-        })
-
-        // CHAT SERVICE
-        // Get chat history
-        app.get('/chathistory', function(req, res){
-            var idUser = Number (req.query.idUser);
-            var idDriver = Number (req.query.idDriver);
-            Chat.findOne({"idUser" : idUser, "idDriver" : idDriver}, function(err, chat){
-                if(err){
-                    res.json({"error" : "yes"});
-                } else {
-                    res.json(chat.history);
-                }
+    
+            // user finishes their order
+            app.post('/finishorder', function(req, res){
+                Driver.findOne({"idDriver" : req.body.id, "status" : "acceptorder"}, function(err, foundDriver){
+                    if (!err && foundDriver){
+                        foundDriver.remove();
+                        var response = {"status" : 200, "message" : "Driver has finished the order"};
+                        res.json(response);
+                    }
+                    else {
+                        var response = {"status" : 503, "message" : "Database error detected"};
+                        res.json(response);                     
+                    }
+                });
             });
-        });
-
-        // Send message from passangger
-        app.post('/sendmessagefrompassangger', function(req, res){
-            var senderToken = req.body.token;
-            var receiverId = Number (req.body.id);
-            var message = req.body.message;
-            FcmToken.findOne({'id' : receiverId}, function(err1, receiverToken){
-                if(err1){
-                    var response = {"status" : 503, "message" : "Database error detected 1"};
-                    res.json(response);
-                }
-                else {
-                    FcmToken.findOne({'token' : senderToken}, function(err2, senderId){
-                        if(err2){
-                            var response = {"status" : 503, "message" : "Database error detected 2"};
+    
+            // FOR HANDLING FCM TOKEN USER
+            // add user fcm token
+            app.post('/addfcmtoken', function(req, res){
+                FcmToken.findOne({"id" : req.body.id}, function(err, foundUser){
+                    if (err){
+                        var response = {"status" : 503, "message" : "Database error detected"};
+                        res.json(response);
+                    }
+                    else {
+                        if (!foundUser){
+                            FcmToken.create({"id" : req.body.id, "token" : req.body.token}, function(error, addUser){
+                                if(!error && addUser){
+                                    var response = {"status" : 200, "message" : "User token has been added to token list"};
+                                    res.json(response);    
+                                }
+                            });
+                        } else {
+                            foundUser["token"] = req.body.token;
+                            foundUser.save();
+                            var response = {"status" : 200, "message" : "User token has been updated"};
                             res.json(response);
                         }
-                        else {
-                            Chat.findOne({'idUser' : senderId.id, 'idDriver' : receiverId}, function(err3, chat){
-                                if (err3){
-                                    var response = {"status" : 503, "message" : "Database error detected 3"};
-                                    res.json(response);
-                                }
-                                else {
-                                    if (!chat){
-                                        Chat.create({'idUser' : senderId.id, 'idDriver' : receiverId}, function(err4, newChat){
-                                            if (err4){
-                                                var response = {"status" : 503, "message" : "Database error detected 4"};
-                                                res.json(response);
-                                            }
-                                            else {
-                                                newChat.history = [];
-                                                newChat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
-                                                newChat.save();
-                                                console.log(receiverToken);
-                                                sendMessages(receiverToken.token, message);
-                                                res.json({'status' : 200, 'message' : 'chat history created and message sent.'});
-                                            }
-                                        });
+                    }
+                });
+            });
+    
+            // delete user fcm token
+            app.post('/deletefcmtoken', function(req, res){
+                FcmToken.findOne({"id" : req.body.id}, function(err, foundUser){
+                    if (err){
+                        var response = {"status" : 503, "message" : "Database error detected"};
+                        res.json(response);
+                    }
+                    else {
+                        foundUser.remove();
+                        var response = {"status" : 200, "message" : "User token has been deleted"};
+                        res.json(response);
+                    }
+                });
+            });
+    
+            app.get('/listfcmtoken',function(req, res){
+                FcmToken.find({},function(err, listUser){
+                    if (err){
+                        var response = {"status" : 503, "message" : "Database error detected"};
+                        res.json(response);
+                    }
+                    else {
+                        var response = {"status" : 200, "message" : "User token has been deleted"};
+                        res.json(listUser);
+                    }
+                });
+            })
+    
+            // CHAT SERVICE
+            // Send message from passangger
+            app.post('/sendmessagefrompassangger', function(req, res){
+                var senderToken = req.body.token;
+                var receiverId = Number (req.body.id);
+                var message = req.body.message;
+                FcmToken.findOne({'id' : receiverId}, function(err1, receiverToken){
+                    if(err1){
+                        var response = {"status" : 503, "message" : "Database error detected 1"};
+                        res.json(response);
+                    }
+                    else {
+                        FcmToken.findOne({'token' : senderToken}, function(err2, senderId){
+                            if(err2){
+                                var response = {"status" : 503, "message" : "Database error detected 2"};
+                                res.json(response);
+                            }
+                            else {
+                                Chat.findOne({'idUser' : senderId.id, 'idDriver' : receiverId}, function(err3, chat){
+                                    if (err3){
+                                        var response = {"status" : 503, "message" : "Database error detected 3"};
+                                        res.json(response);
                                     }
                                     else {
-                                        chat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
-                                        chat.save();
-                                        console.log(receiverToken);
-                                        sendMessages(receiverToken.token, message);
-                                        res.json({'status' : 200, 'message' : 'message sent.'});
+                                        if (!chat){
+                                            Chat.create({'idUser' : senderId.id, 'idDriver' : receiverId}, function(err4, newChat){
+                                                if (err4){
+                                                    var response = {"status" : 503, "message" : "Database error detected 4"};
+                                                    res.json(response);
+                                                }
+                                                else {
+                                                    newChat.history = [];
+                                                    newChat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
+                                                    newChat.save();
+                                                    console.log(receiverToken);
+                                                    sendMessages(receiverToken.token, "chat", message);
+                                                    res.json({'status' : 200, 'message' : 'chat history created and message sent.'});
+                                                }
+                                            });
+                                        }
+                                        else {
+                                            chat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
+                                            chat.save();
+                                            console.log(receiverToken);
+                                            sendMessages(receiverToken.token, "chat", message);
+                                            res.json({'status' : 200, 'message' : 'message sent.'});
+                                        }
                                     }
-                                }
-                            });
-                        }
-                    });
-                }
+                                });
+                            }
+                        });
+                    }
+                });
             });
-        });
-
-        // Send message from driver
-        app.post('/sendmessagefromdriver', function(req, res){
-            var senderToken = req.body.token;
-            var receiverId = Number (req.body.id);
-            var message = req.body.message;
-            FcmToken.findOne({'id' : receiverId}, function(err1, receiverToken){
-                if(err1){
-                    var response = {"status" : 503, "message" : "Database error detected 1"};
-                    res.json(response);
-                }
-                else {
-                    FcmToken.findOne({'token' : senderToken}, function(err2, senderId){
-                        if(err2){
-                            var response = {"status" : 503, "message" : "Database error detected 2"};
-                            res.json(response);
-                        }
-                        else {
-                            Chat.findOne({'idUser' : receiverId.id, 'idDriver' : senderId}, function(err3, chat){
-                                if (err3){
-                                    var response = {"status" : 503, "message" : "Database error detected 3"};
-                                    res.json(response);
-                                }
-                                else {
-                                    if (!chat){
-                                        Chat.create({'idUser' : receiverId.id, 'idDriver' : senderId}, function(err4, newChat){
-                                            if (err4){
-                                                var response = {"status" : 503, "message" : "Database error detected 4"};
-                                                res.json(response);
-                                            }
-                                            else {
-                                                newChat.history = [];
-                                                newChat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
-                                                newChat.save();
-                                                sendMessages(receiverToken.token, message);
-                                                res.json({'status' : 200, 'message' : 'chat history created and message sent.'});
-                                            }
-                                        });
+    
+            // Send message from driver
+            app.post('/sendmessagefromdriver', function(req, res){
+                var senderToken = req.body.token;
+                var receiverId = Number (req.body.id);
+                var message = req.body.message;
+                FcmToken.findOne({'id' : receiverId}, function(err1, receiverToken){
+                    if(err1){
+                        var response = {"status" : 503, "message" : "Database error detected 1"};
+                        res.json(response);
+                    }
+                    else {
+                        FcmToken.findOne({'token' : senderToken}, function(err2, senderId){
+                            if(err2){
+                                var response = {"status" : 503, "message" : "Database error detected 2"};
+                                res.json(response);
+                            }
+                            else {
+                                Chat.findOne({'idUser' : receiverId.id, 'idDriver' : senderId}, function(err3, chat){
+                                    if (err3){
+                                        var response = {"status" : 503, "message" : "Database error detected 3"};
+                                        res.json(response);
                                     }
                                     else {
-                                        chat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
-                                        chat.save();
-                                        sendMessages(receiverToken.token, message);
-                                        res.json({'status' : 200, 'message' : 'message sent.'});
+                                        if (!chat){
+                                            Chat.create({'idUser' : receiverId.id, 'idDriver' : senderId}, function(err4, newChat){
+                                                if (err4){
+                                                    var response = {"status" : 503, "message" : "Database error detected 4"};
+                                                    res.json(response);
+                                                }
+                                                else {
+                                                    newChat.history = [];
+                                                    newChat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
+                                                    newChat.save();
+                                                    sendMessages(receiverToken.token, "chat", message);
+                                                    res.json({'status' : 200, 'message' : 'chat history created and message sent.'});
+                                                }
+                                            });
+                                        }
+                                        else {
+                                            chat.history.push({'from' : senderId.id, 'to' : receiverId, 'message' : message});
+                                            chat.save();
+                                            sendMessages(receiverToken.token, "chat", message);
+                                            res.json({'status' : 200, 'message' : 'message sent.'});
+                                        }
                                     }
-                                }
-                            });
-                        }
-                    });
-                }
+                                });
+                            }
+                        });
+                    }
+                });
             });
-        });
-
-        // ====================== FRONTEND ROUTES ============================
-
-        // route to handle all angular requests
-        app.get('*', function(req, res) {
-            res.send('./public/index.html');
-        });
     
-};
\ No newline at end of file
+            // ====================== FRONTEND ROUTES ============================
+    
+            // route to handle all angular requests
+            app.get('*', function(req, res) {
+                res.send('./public/index.html');
+            });
+        
+    };
\ No newline at end of file
-- 
GitLab