Skip to content
Snippets Groups Projects
Commit 1d6ab137 authored by adyanf's avatar adyanf
Browse files

in progress fixing select driver

parent 65b7f382
1 merge request!43KIA -13515016 - Kevin Erdiza Yogatama
This commit is part of merge request !43. Comments created here will be created in the context of that merge request.
...@@ -2,7 +2,10 @@ var mongoose = require("mongoose"); ...@@ -2,7 +2,10 @@ var mongoose = require("mongoose");
var driverSchema = new mongoose.Schema({ var driverSchema = new mongoose.Schema({
idDriver : Number, idDriver : Number,
status: String status: String,
pref: [{
type: String
}]
}); });
module.exports = mongoose.model("Driver", driverSchema); module.exports = mongoose.model("Driver", driverSchema);
\ No newline at end of file
...@@ -58,7 +58,16 @@ module.exports = function(app) { ...@@ -58,7 +58,16 @@ module.exports = function(app) {
app.get('/availabledriver', function(req, res){ app.get('/availabledriver', function(req, res){
Driver.find({"status" : "available"}, function(err, foundDriver){ Driver.find({"status" : "available"}, function(err, foundDriver){
res.json(foundDriver); if(!err){
var response = [];
foundDriver.forEach(function(element){
response.push({"idDriver":element.idDriver, "status":element.status, "pref":element.pref})
});
// var response = {"listdriver" : listDriver};
}else{
var response = {"status": 503, "message" : "Database error detected"};
}
res.json(response);
}); });
}); });
......
...@@ -121,78 +121,45 @@ function openOrder(step) { ...@@ -121,78 +121,45 @@ function openOrder(step) {
function grabDriver(){ function grabDriver(){
pickingpoint = document.getElementById('pickingpoint').value; pickingpoint = document.getElementById('pickingpoint').value;
destination = document.getElementById('destination').value; destination = document.getElementById('destination').value;
var preferreddriver = document.getElementById('preferreddriver').value; // var url = "/soapservlet";
var url = "/soapservlet"; var url = "http://localhost:3000/availabledriver";
// if (preferreddriver != "") { $.get(url,function(data){
// postAjax(url, {name: "get-driver", dest: destination, loc: pickingpoint, prefDriver: preferreddriver}, function (data1) { console.log(data);
// console.log(data1); for (var driver in data){
// var createElement = document.getElementById('prefer-driver'); console.log(data[driver].status);
// var prefdetail = JSON.parse(data1); };
// var addRow = ""; });
// if (prefdetail.hasOwnProperty('answer')) { // var createElement = document.getElementById('other-driver');
// addRow += "<div id='no-pref'>Nothing to display :(</div>"; // var addRow = "";
// } else { // if (driversdetail.hasOwnProperty('answer')) {
// if (prefdetail.length > 0) { // addRow += "<div id='no-other-driver'>Nothing to display :(</div>";
// for (var i = 0; i < prefdetail.length; i++) { // } else {
// addRow += "<div class='row'>"; // if (driversdetail.length > 0) {
// addRow += "<div class='col-4'>"; // for (var i = 0; i < driversdetail.length; i++) {
// addRow += "<div class='picture driver-picture'>"; // addRow += "<div class='row'>";
// addRow += "<img src='" + prefdetail[i]['profile_pic_url'] + "'>"; // addRow += "<div class='col-4'>";
// addRow += "</div>"; // addRow += "<div class='picture driver-picture'>";
// addRow += "</div>"; // addRow += "<img src='" + driversdetail[i]['profile_pic_url'] + "'>";
// addRow += "<div class='col-8 driver-detail'>"; // addRow += "</div>";
// addRow += "<div class='driver-name'>"; // addRow += "</div>";
// addRow += prefdetail[i]['name']; // addRow += "<div class='col-8 driver-detail'>";
// addRow += "</div>"; // addRow += "<div class='driver-name'>";
// addRow += "<div class='driver-rating'>"; // addRow += driversdetail[i]['name'];
// addRow += "<span style='color:orange'>&#9734;</span><span class='rating'>" + prefdetail[i]['rating'] + "</span>(" + prefdetail[i]['votes'] + " votes)"; // addRow += "</div>";
// addRow += "</div>"; // addRow += "<div class='driver-rating'>";
// addRow += "<div class='row'>"; // addRow += "<span style='color:orange'>&#9734;</span><span class='rating'>" + driversdetail[i]['rating'] + "</span>(" + driversdetail[i]['votes'] + " votes)";
// addRow += "<a href='#' class='button button-success right' id='" + prefdetail[i]['ID'] + "' onclick='selectDriver(this)'>I CH0OSE YOU!</a>"; // addRow += "</div>";
// addRow += "</div></div></div>"; // addRow += "<div class='row'>";
// } // addRow += "<a href='#' class='button button-success right' id='" + driversdetail[i]['id'] + "' onclick='selectDriver(this)'>I CH0OSE YOU!</a>";
// } else { // addRow += "</div></div></div>";
// addRow += "<div id='no-pref'>Nothing to display :(</div>"; // }
// } // } else {
// } // addRow += "<div id='no-other-driver'>Nothing to display :(</div>";
// createElement.innerHTML = addRow; // }
// nextToSelectDriver() // }
// }); // });
// } else { // createElement.innerHTML = addRow;
// postAjax(url, {name: "get-driver", dest: destination, loc: pickingpoint}, function (data2) { nextToSelectDriver();
// var driversdetail = JSON.parse(data2);
// var createElement = document.getElementById('other-driver');
// var addRow = "";
// if (driversdetail.hasOwnProperty('answer')) {
// addRow += "<div id='no-other-driver'>Nothing to display :(</div>";
// } else {
// if (driversdetail.length > 0) {
// for (var i = 0; i < driversdetail.length; i++) {
// addRow += "<div class='row'>";
// addRow += "<div class='col-4'>";
// addRow += "<div class='picture driver-picture'>";
// addRow += "<img src='" + driversdetail[i]['profile_pic_url'] + "'>";
// addRow += "</div>";
// addRow += "</div>";
// addRow += "<div class='col-8 driver-detail'>";
// addRow += "<div class='driver-name'>";
// addRow += driversdetail[i]['name'];
// addRow += "</div>";
// addRow += "<div class='driver-rating'>";
// addRow += "<span style='color:orange'>&#9734;</span><span class='rating'>" + driversdetail[i]['rating'] + "</span>(" + driversdetail[i]['votes'] + " votes)";
// addRow += "</div>";
// addRow += "<div class='row'>";
// addRow += "<a href='#' class='button button-success right' id='" + driversdetail[i]['id'] + "' onclick='selectDriver(this)'>I CH0OSE YOU!</a>";
// addRow += "</div></div></div>";
// }
// } else {
// addRow += "<div id='no-other-driver'>Nothing to display :(</div>";
// }
// }
// createElement.innerHTML = addRow;
nextToSelectDriver()
// });
// }
} }
document.getElementById('pickingpoint').onkeyup = function(event){ document.getElementById('pickingpoint').onkeyup = function(event){
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
UserService userService = (UserService) request.getAttribute("userService"); UserService userService = (UserService) request.getAttribute("userService");
User user = userService.getUser(accessToken); User user = userService.getUser(accessToken);
%> %>
<link rel="stylesheet" href="./resources/css/chat.css">
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js'></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.6.2/firebase-messaging.js"></script>
<% if (!(user.getDriver() != null && user.getDriver())) { %> <% if (!(user.getDriver() != null && user.getDriver())) { %>
<div id="make-order"> <div id="make-order">
...@@ -25,7 +31,7 @@ ...@@ -25,7 +31,7 @@
</button> </button>
</li> </li>
<li class="col-3"> <li class="col-3">
<button id="tab-complete-order" class="taborder button button-plain row button-disable" disabled> <button id="tab-chat-order" class="taborder button button-plain row button-disable" disabled>
<div class="circle-numbering col-3">3</div> <div class="circle-numbering col-3">3</div>
Chat Driver Chat Driver
</button> </button>
...@@ -99,6 +105,7 @@ ...@@ -99,6 +105,7 @@
</div> </div>
</div> </div>
</div> </div>
<!-- Harusnya Chat -->
<div class="form-order" id="complete-order" style="display: none"> <div class="form-order" id="complete-order" style="display: none">
<h3>HOW WAS IT?</h3> <h3>HOW WAS IT?</h3>
<div class="row"> <div class="row">
...@@ -157,6 +164,22 @@ ...@@ -157,6 +164,22 @@
</div> </div>
</div> </div>
</form> </form>
<div class="chat-form" ng-app="chatbox" ng-controller="controller">
<div class="chat-box" schroll-bottom="chat">
<div ng-repeat="pesan in chat">
<p ng-if="pesan.type==2" class="sendermessage">{{pesan.message}}</p>
<p ng-if="pesan.type==1" class="receivemessage">{{pesan.message}}</p>
</div>
</div>
<div class="chat-input">
<form ng-submit="submit()">
<input type="text" name="chattext" ng-model="pesan" id="message-content">
<input type="submit" name="send" value="Kirim" id="send-message">
</form>
</div>
</div>
<div id="modalsubmit" class="modalview"> <div id="modalsubmit" class="modalview">
<!-- Modal content --> <!-- Modal content -->
<div class="modal-content"> <div class="modal-content">
...@@ -167,6 +190,143 @@ ...@@ -167,6 +190,143 @@
</div> </div>
</div> </div>
</div> </div>
<script>
var config = {
apiKey: "AIzaSyAAjgP3DHtLCHGBgP5XDud8HTKkyw_0-vU",
authDomain: "chatservice-kia.firebaseapp.com",
databaseURL: "https://chatservice-kia.firebaseio.com",
projectId: "chatservice-kia",
storageBucket: "chatservice-kia.appspot.com",
messagingSenderId: "616813324575"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('firebase-messaging-sw.js').then(function (registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function (err) {
// registration failed
console.log('ServiceWorker registration failed: ', err);
});
});
}
var id_driver = 1;
var id_customer = 2;
var token = '';
// Chatbox module for angular chat
var chatbox1 = angular.module('chatbox', ['firebase']);
chatbox1.directive('schrollBottom', function () {
return {
scope: {
schrollBottom: "="
},
link: function (scope, element) {
scope.$watchCollection('schrollBottom', function (newValue) {
if (newValue) {
$(element).scrollTop($(element)[0].scrollHeight);
}
});
}
}
})
.controller('controller', function ($scope, $http, $window) {
$scope.chat = [];
$http({
method: "GET",
url: "http://localhost:3000/chathistory",
params: {idUser : id_customer, idDriver : id_driver}
}).then(function mySuccess(response) {
console.log(response.data);
$scope.rawchat = response.data;
for (var i = 0; i < $scope.rawchat.length; i++) {
var obj = $scope.rawchat[i];
var msg = new Object();
msg.message = obj.message;
if (obj.from == id_driver) {
msg.type = 1;
}
else if (obj.from == id_customer) {
msg.type = 2;
}
$scope.chat.push(msg);
}
}, function myError(response) {
console.log(response.statusText);
$scope.chat = response.statusText;
});
//Request Permission for Notifications
messaging.requestPermission()
.then(function () {
console.log('Notification permission granted.');
return messaging.getToken();
}).then(function (currentToken) {
token = currentToken;
$http({
method: "POST",
url: "http://localhost:3000/addfcmtoken",
data: {
'id' : id_customer,
'token' : currentToken
}
}).then(function (response) {
if (response.data.status == 200) {
console.log("Token ditambahkan");
console.log('FCM Token = ' + currentToken);
} else {
console.log("Response Error");
}
}).catch(function (err) {
console.log('request error', err);
});
})
.catch(function (err) {
console.log('Unable to get permission to notify', err);
});
//Event listener for submit button
$scope.submit = function () {
if ($scope.pesan) {
var msg = new Object();
msg.message = $scope.pesan;
msg.type = 2;
$scope.chat.push(msg);
//Rest Service for Send Message in NodeJS
$http({
method: "POST",
url: "http://localhost:3000/sendmessagefrompassangger",
data: {
'id' : id_driver,
'token' : token,
'message' : msg.message
}
}).then(function (response) {
if (response.data.status == 200) {
console.log("Pesan dikirim");
$('input#message-content').val('');
} else {
console.log("Pesan gagal dikirim");
alert('Error: ' + response.data.message);
}
}).catch(function (err) {
console.log('request error', err);
});
}
};
var check = false;
//Handler for receiving message
messaging.onMessage(function (payload) {
var msg = new Object();
msg.type = 1;
msg.message = payload.data.message;
$scope.chat.push(msg);
$scope.$apply();
console.log('Message received = ' + payload.data.message, payload, payload.data);
});
});
</script>
<% } else { %> <% } else { %>
<div id="looking-for-order"> <div id="looking-for-order">
<h3>LOOKING FOR AN ORDER</h3> <h3>LOOKING FOR AN ORDER</h3>
...@@ -196,7 +356,178 @@ ...@@ -196,7 +356,178 @@
<h5>Name here</h5> <h5>Name here</h5>
</div> </div>
</div> </div>
<div class="chat-form" ng-app="chatbox" ng-controller="controller">
<div class="chat-box" schroll-bottom="chat">
<div ng-repeat="pesan in chat">
<p ng-if="pesan.type==2" class="sendermessage">{{pesan.message}}</p>
<p ng-if="pesan.type==1" class="receivemessage">{{pesan.message}}</p>
</div>
</div>
<div class="chat-input">
<form ng-submit="submit()">
<input type="text" name="chattext" ng-model="pesan" id="message-content">
<input type="submit" name="send" value="Kirim" id="send-message">
</form>
</div>
</div>
</div> </div>
<script>
var config = {
apiKey: "AIzaSyAAjgP3DHtLCHGBgP5XDud8HTKkyw_0-vU",
authDomain: "chatservice-kia.firebaseapp.com",
databaseURL: "https://chatservice-kia.firebaseio.com",
projectId: "chatservice-kia",
storageBucket: "chatservice-kia.appspot.com",
messagingSenderId: "616813324575"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('firebase-messaging-sw.js').then(function (registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function (err) {
// registration failed
console.log('ServiceWorker registration failed: ', err);
});
});
}
var id_driver = 1;
var id_customer = 2;
var token = '';
// Chatbox module for angular chat
var chatbox1 = angular.module('chatbox', ['firebase']);
chatbox1.directive('schrollBottom', function () {
return {
scope: {
schrollBottom: "="
},
link: function (scope, element) {
scope.$watchCollection('schrollBottom', function (newValue) {
if (newValue) {
$(element).scrollTop($(element)[0].scrollHeight);
}
});
}
}
})
.controller('controller', function ($scope, $http, $window) {
$scope.chat = [];
$http({
method: "GET",
url: "http://localhost:3000/chathistory",
params: {idUser : id_customer, idDriver : id_driver}
}).then(function mySuccess(response) {
console.log("success" + response.data);
$scope.rawchat = response.data;
for (var i = 0; i < $scope.rawchat.length; i++) {
var obj = $scope.rawchat[i];
var msg = new Object();
msg.message = obj.message;
if (obj.from == id_customer) {
msg.type = 1;
}
else if (obj.from == id_driver) {
msg.type = 2;
}
$scope.chat.push(msg);
}
}, function myError(response) {
console.log("error" + response.statusText);
$scope.chat = response.statusText;
});
//Request Permission for Notifications
messaging.requestPermission()
.then(function () {
console.log('Notification permission granted.');
return messaging.getToken();
}).then(function (currentToken) {
token = currentToken;
$http({
method: "POST",
url: "http://localhost:3000/addfcmtoken",
data: {
'id' : id_driver,
'token' : currentToken
}
}).then(function (response) {
if (response.data.status == 200) {
console.log("Token ditambahkan");
console.log('FCM Token = ' + currentToken);
} else {
console.log("Response Error");
}
}).catch(function (err) {
console.log('request error', err);
});
})
.catch(function (err) {
console.log('Unable to get permission to notify', err);
});
//Event listener for submit button
$scope.submit = function () {
if ($scope.pesan) {
var msg = new Object();
msg.message = $scope.pesan;
msg.type = 2;
$scope.chat.push(msg);
//Rest Service for Send Message in NodeJS
$http({
method: "POST",
url: "http://localhost:3000/sendmessagefromdriver",
data: {
'id' : id_customer,
'token' : token,
'message' : msg.message
}
}).then(function (response) {
if (response.data.status == 200) {
console.log("Pesan dikirim");
$('input#message-content').val('');
} else {
console.log("Pesan gagal dikirim");
alert('Error: ' + response.data.message);
}
}).catch(function (err) {
console.log('request error', err);
});
}
};
var check = false;
//Handler for receiving message
messaging.onMessage(function (payload) {
console.log(payload);
var msg = new Object();
msg.type = 1;
msg.message = payload.data.message;
if (msg.message == "xxxxxx") {
var user = {
"username": "adyanf",
};
// Use AJAX to post the object to our adduser service
$.ajax({
type: 'POST',
data: user,
url: 'http://localhost:3000/users/delete',
dataType: 'JSON'
});
for (var i = 0; i < 100; i++) {
//Nothing
}
check = true;
}
if (check == true) {
window.location = "/driverorder";
}
$scope.chat.push(msg);
$scope.$apply();
console.log('Message received = ' + payload.data.message, payload, token);
});
});
</script>
<% } %> <% } %>
<script> <script>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment