diff --git a/WebApp/.idea/libraries/Java_EE_6_Java_EE_6.xml b/WebApp/.idea/libraries/Java_EE_6_Java_EE_6.xml new file mode 100644 index 0000000000000000000000000000000000000000..e8b47f724e8536080ab442fe668608fa43d68dfa --- /dev/null +++ b/WebApp/.idea/libraries/Java_EE_6_Java_EE_6.xml @@ -0,0 +1,17 @@ +<component name="libraryTable"> + <library name="Java EE 6-Java EE 6"> + <CLASSES> + <root url="jar://$PROJECT_DIR$/lib/javax.annotation.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.ejb.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.jms.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.persistence.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.transaction.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.servlet.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.resource.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.servlet.jsp.jar!/" /> + <root url="jar://$PROJECT_DIR$/lib/javax.servlet.jsp.jstl.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/WebApp/.idea/uiDesigner.xml b/WebApp/.idea/uiDesigner.xml new file mode 100644 index 0000000000000000000000000000000000000000..e96534fb27b68192f27f985d3879e173ec77adb8 --- /dev/null +++ b/WebApp/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Palette2"> + <group name="Swing"> + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> + </item> + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"> + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> + <initial-values> + <property name="text" value="Button" /> + </initial-values> + </item> + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="RadioButton" /> + </initial-values> + </item> + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="CheckBox" /> + </initial-values> + </item> + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="Label" /> + </initial-values> + </item> + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> + <preferred-size width="-1" height="20" /> + </default-constraints> + </item> + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> + </item> + </group> + </component> +</project> \ No newline at end of file diff --git a/WebApp/WebApp.iml b/WebApp/WebApp.iml index abfa2d4ac6b4c3aa8501116ecb37c0ff73d39473..6cc039a5b9196d16ff5e79d32df4cda0c2fecc78 100644 --- a/WebApp/WebApp.iml +++ b/WebApp/WebApp.iml @@ -19,5 +19,6 @@ </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" name="Java EE 6-Java EE 6" level="project" /> </component> </module> \ No newline at end of file diff --git a/WebApp/lib/javax.annotation.jar b/WebApp/lib/javax.annotation.jar new file mode 100644 index 0000000000000000000000000000000000000000..52dca7f561c5d579ca764cb25b96d3f539cf242a Binary files /dev/null and b/WebApp/lib/javax.annotation.jar differ diff --git a/WebApp/lib/javax.ejb.jar b/WebApp/lib/javax.ejb.jar new file mode 100644 index 0000000000000000000000000000000000000000..4ebf5ecd4c9ab83540ef206f6c5a1906db008098 Binary files /dev/null and b/WebApp/lib/javax.ejb.jar differ diff --git a/WebApp/lib/javax.jms.jar b/WebApp/lib/javax.jms.jar new file mode 100644 index 0000000000000000000000000000000000000000..d31451ada1ad9a4471d9bae383df647c9b4b5235 Binary files /dev/null and b/WebApp/lib/javax.jms.jar differ diff --git a/WebApp/lib/javax.persistence.jar b/WebApp/lib/javax.persistence.jar new file mode 100644 index 0000000000000000000000000000000000000000..21d80e0ed3b5e20aa787087247a006398cda7679 Binary files /dev/null and b/WebApp/lib/javax.persistence.jar differ diff --git a/WebApp/lib/javax.resource.jar b/WebApp/lib/javax.resource.jar new file mode 100644 index 0000000000000000000000000000000000000000..696a2345878907025784d2e6e49c6e6b41d1cfac Binary files /dev/null and b/WebApp/lib/javax.resource.jar differ diff --git a/WebApp/lib/javax.servlet.jar b/WebApp/lib/javax.servlet.jar new file mode 100644 index 0000000000000000000000000000000000000000..0519e4a4e16c207f18527175c6a4425b2b1bacbd Binary files /dev/null and b/WebApp/lib/javax.servlet.jar differ diff --git a/WebApp/lib/javax.servlet.jsp.jar b/WebApp/lib/javax.servlet.jsp.jar new file mode 100644 index 0000000000000000000000000000000000000000..9c0631cea0fd56031db19fc3edbb4db4bfbb923a Binary files /dev/null and b/WebApp/lib/javax.servlet.jsp.jar differ diff --git a/WebApp/lib/javax.servlet.jsp.jstl.jar b/WebApp/lib/javax.servlet.jsp.jstl.jar new file mode 100644 index 0000000000000000000000000000000000000000..7be17cc742fde5e957696dd98f6d0cf6520ed294 Binary files /dev/null and b/WebApp/lib/javax.servlet.jsp.jstl.jar differ diff --git a/WebApp/lib/javax.transaction.jar b/WebApp/lib/javax.transaction.jar new file mode 100644 index 0000000000000000000000000000000000000000..729c6952389cd4769d5d840b3d1a7941b3c0f63e Binary files /dev/null and b/WebApp/lib/javax.transaction.jar differ diff --git a/WebApp/src/Controller.java b/WebApp/src/Controller.java new file mode 100644 index 0000000000000000000000000000000000000000..5d6aebe21fed25ce465e00726431bb7f6bb4c66e --- /dev/null +++ b/WebApp/src/Controller.java @@ -0,0 +1,32 @@ +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.io.PrintWriter; + +@javax.servlet.annotation.WebServlet(name = "Controller") +public class Controller extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession session = request.getSession(); + Object token = session.getAttribute("token"); + + if (token == null) { + request.getRequestDispatcher("/login.jsp").forward(request, response); + return; + } + + // TODO : redirect to home + } + + public static String formatUrl(String url) { + + if (url.charAt(url.length()-1) == '/') { + url = url.substring(0, url.length()-1); + } + + return url; + } +} diff --git a/WebApp/src/LoginController.java b/WebApp/src/LoginController.java new file mode 100644 index 0000000000000000000000000000000000000000..a0933742dd95a447758b21dfff5882842b8b0471 --- /dev/null +++ b/WebApp/src/LoginController.java @@ -0,0 +1,33 @@ +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +@WebServlet(name = "LoginController", urlPatterns = "/login") +public class LoginController extends HttpServlet { + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + PrintWriter out = response.getWriter(); + String username = request.getParameter("username"); + String password = request.getParameter("password"); + + if (username == null || password == null) { + response.setStatus(500); + out.println("Wrong parameter!"); + return; + } + + // TODO : Implement http request to identity service + out.println("Request to identity service ..."); + + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String url = request.getRequestURI(); + PrintWriter out = response.getWriter(); + request.getRequestDispatcher("/login.jsp").forward(request, response); + } +} diff --git a/WebApp/src/MainController.java b/WebApp/src/MainController.java new file mode 100644 index 0000000000000000000000000000000000000000..01f3c9189e1948c0b3aeaad688897491cbf5ada7 --- /dev/null +++ b/WebApp/src/MainController.java @@ -0,0 +1,40 @@ +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.io.PrintWriter; + +@WebServlet(name = "MainController") +public class MainController extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String url = request.getRequestURI(); + PrintWriter out = response.getWriter(); + url = Controller.formatUrl(url); + + switch (url) { + case "/main/profil" : + displayProfile(request, response); + return; + case "/main/order" : + displayOrder(request, response); + return; + } + + out.println(url + " will be cooming soon!"); + } + + private void displayOrder(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.getRequestDispatcher("/order.jsp").forward(request, response); + } + + + private void displayProfile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ + // TODO : request data from web service + request.getRequestDispatcher("/profil.jsp").forward(request, response); + } + +} diff --git a/WebApp/web/WEB-INF/web.xml b/WebApp/web/WEB-INF/web.xml index 69d652e69852696c60d6f1fe9e073a49e426eaae..8c2833e449ddb37f6e23a7535bb4108a582d4862 100644 --- a/WebApp/web/WEB-INF/web.xml +++ b/WebApp/web/WEB-INF/web.xml @@ -4,8 +4,34 @@ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> + <servlet> + <servlet-name>Controller</servlet-name> + <servlet-class>Controller</servlet-class> + </servlet> + <servlet> + <servlet-name>LoginController</servlet-name> + <servlet-class>LoginController</servlet-class> + </servlet> + <servlet> + <servlet-name>MainController</servlet-name> + <servlet-class>MainController</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>Controller</servlet-name> + <url-pattern>/</url-pattern> + </servlet-mapping> + <servlet-mapping> + <servlet-name>LoginController</servlet-name> + <url-pattern>/login</url-pattern> + </servlet-mapping> + <servlet-mapping> + <servlet-name>MainController</servlet-name> + <url-pattern>/main/*</url-pattern> + </servlet-mapping> + <welcome-file-list> - <welcome-file>login.jsp</welcome-file> + <welcome-file>main</welcome-file> </welcome-file-list> </web-app> \ No newline at end of file diff --git a/WebApp/web/order.js b/WebApp/web/order.js new file mode 100644 index 0000000000000000000000000000000000000000..955b590549c1df16c3954125fd6c737f9e0c664b --- /dev/null +++ b/WebApp/web/order.js @@ -0,0 +1,191 @@ + +// Hide other page section +(function() { + showLocationPage(); +})(); + +var resultData; + +function makeOrder() { + var customerID = document.getElementById('customer-id').innerHTML; + var orderPickup = document.getElementById('orderPickup').value; + var orderDestination = document.getElementById('orderDestination').value; + var orderPreferredDriver = document.getElementById('orderPreferredDriver').value; + var data = "id="+customerID+"&pickup="+orderPickup+"&destination="+orderDestination+"&driver="+orderPreferredDriver; + + if (orderPickup.trim() == "" || orderDestination.trim() == "") { + alert("Source and destination is required!"); + return; + } + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + resultData = JSON.parse(this.responseText); + bindSearchResult(JSON.parse(this.responseText)); + showDriverPage(); + + document.getElementById('orderPickup').disabled = true; + document.getElementById('orderDestination').disabled = true; + document.getElementById('orderPreferredDriver').disabled = true; + + } + }; + xhttp.open("POST", "/index.php/main/order/new", true); + xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhttp.send(data); +} + +function bindSearchResult(data) { + var preferred = data.preferred; + if (preferred != null) { + var vote = (preferred.sum_order > 1) ? 'votes' : 'vote'; + document.getElementById('driver-preferred-result').innerHTML = '' + + '<div class="row">\n' + + ' <img src="'+preferred.photo+'" style="float: left; border: 1px solid black; margin: 10px" width="120" height="125">\n' + + ' <p style="font-size: 1.4em; margin:20px 10px 3px 10px">'+preferred.name+'</p>\n' + + ' <p style="margin-top: 0"><span class="text-orange"><b><i class="icon icon-star"></i> '+preferred.rating+'</b></span> ('+preferred.sum_order+' '+vote+')</p>\n' + + ' <span class="btn green" style="float: right; margin: 10px" onclick="finishOrder(\''+preferred.id+'\')">I CHOOSE YOU!</span>\n' + + '</div>'; + } + + var html = ''; + var results = data.result; + if (results != null && results.length != 0) { + results.forEach(function (driverItem) { + var vote = (driverItem.sum_order > 1) ? 'votes' : 'vote'; + html += '' + + '<div class="row">\n' + + ' <img src="'+driverItem.photo+'" style="float: left; border: 1px solid black; margin: 10px" width="120" height="125">\n' + + ' <p style="font-size: 1.4em; margin:20px 10px 3px 10px">'+driverItem.name+'</p>\n' + + ' <p style="margin-top: 0"><span class="text-orange"><b><i class="icon icon-star"></i> '+driverItem.rating+'</b></span> ('+driverItem.sum_order+' '+vote+')</p>\n' + + ' <a href="#" class="btn green" style="float: right; margin: 10px" onclick="finishOrder(\''+driverItem.id+'\')">I CHOOSE YOU!</a>\n' + + '</div>'; + }); + document.getElementById('driver-search-result').innerHTML = html; + } +} + +function finishOrder(id) { + var photo; + var name; + var username; + var preferred = resultData.preferred; + if (preferred != null && preferred.id == id) { + photo = preferred.photo; + name = preferred.name; + username = preferred.username; + } else { + var results = resultData.result; + var i = 0; + while (results[i].id != id) { + i++; + } + photo = results[i].photo; + name = results[i].name; + username = results[i].username; + } + + bindFinishPage(id, name, photo, username); + showFinishPage(); +} + +function bindFinishPage(id, name, photo, username) { + document.getElementById('driver-finish-order').innerHTML = '' + + '<img class="img-circle" src="'+photo+'"/><br>\n' + + '<h2 style="margin-bottom: 0px">@'+username+'</h2>\n' + + '<p style="margin-top: 10px">'+name+'</p>\n' + + '<i id="star-1" class="icon icon-star-full big" onclick="setRating(1)"></i>\n' + + '<i id="star-2" class="icon icon-star-full big" onclick="setRating(2)"></i>\n' + + '<i id="star-3" class="icon icon-star-full big" onclick="setRating(3)"></i>\n' + + '<i id="star-4" class="icon icon-star-full big" onclick="setRating(4)"></i>\n' + + '<i id="star-5" class="icon icon-star-full big" onclick="setRating(5)"></i>\n' + + '<input type="hidden" id="order-rating" value="0"> \n' + + '<br>\n' + + '<br>\n' + + '<br>\n' + + '<textarea id="order-comment" style="width: 100%; height: 100px; padding: 10px; resize: none" placeholder="Your comment..." ></textarea>\n' + + '<a class="btn green" style="float: right; margin: 10px" onclick="completeOrder(\''+id+'\')">COMPLETE<br>ORDER</a>' +} + +function setRating(val) { + for (var i = 1; i <= 5; i++) { + if (i <= val) { + document.getElementById('star-'+i).style.color = "orange"; + } else { + document.getElementById('star-'+i).style.color = "#c2c2c2"; + } + } + document.getElementById('order-rating').value = val; +} + +function completeOrder(id) { + var customerID = document.getElementById('customer-id').innerHTML; + var orderPickup = document.getElementById('orderPickup').value; + var orderDestination = document.getElementById('orderDestination').value; + var rating = document.getElementById('order-rating').value; + var comment = document.getElementById('order-comment').value; + var data = 'id='+id+'&id_customer='+customerID+'&source='+orderPickup+'&destination='+orderDestination+'&rating='+rating+'&comment='+comment; + + if (rating == 0) { + alert("You must give rating to your driver"); + return; + } + + if (comment.trim() == "") { + alert("You must give feedback to your driver"); + return; + } + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + if (this.responseText == "Error") { + alert("Fail completing your order"); + } else { + alert("Thanks for your order :D"); + window.location.href = "/index.php/main/order?u="+customerID; + } + } + }; + xhttp.open("POST", "/index.php/main/order/finish?u", true); + xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhttp.send(data); + +} + +function showLocationPage() { + var finishPage = document.getElementById('order-page-finish'); + finishPage.style.display = 'none'; + var driverPage = document.getElementById('order-page-driver'); + driverPage.style.display = 'none'; + var locationPage = document.getElementById('order-page-location'); + locationPage.style.display = 'block'; + document.getElementById('page-tab-driver').classList.remove("selected"); + document.getElementById('page-tab-finish').classList.remove("selected"); + document.getElementById('page-tab-location').classList.add("selected"); +} + +function showDriverPage() { + var locationPage = document.getElementById('order-page-location'); + locationPage.style.display = 'none'; + var finishPage = document.getElementById('order-page-finish'); + finishPage.style.display = 'none'; + var driverPage = document.getElementById('order-page-driver'); + driverPage.style.display = 'block'; + document.getElementById('page-tab-driver').classList.add("selected"); + document.getElementById('page-tab-finish').classList.remove("selected"); + document.getElementById('page-tab-location').classList.remove("selected"); +} + +function showFinishPage() { + var locationPage = document.getElementById('order-page-location'); + locationPage.style.display = 'none'; + var driverPage = document.getElementById('order-page-driver'); + driverPage.style.display = 'none'; + var finishPage = document.getElementById('order-page-finish'); + finishPage.style.display = 'block'; + document.getElementById('page-tab-driver').classList.remove("selected"); + document.getElementById('page-tab-finish').classList.add("selected"); + document.getElementById('page-tab-location').classList.remove("selected"); +} \ No newline at end of file diff --git a/WebApp/web/order.jsp b/WebApp/web/order.jsp new file mode 100644 index 0000000000000000000000000000000000000000..ee9d6c89c3318c14c4419d3778a29ac6cf1b1457 --- /dev/null +++ b/WebApp/web/order.jsp @@ -0,0 +1,131 @@ +<%-- + Created by IntelliJ IDEA. + User: fadhilimamk + Date: 07/11/17 + Time: 11:36 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + +<html> +<head> + <title>DAGO-JEK | Order</title> + <link rel="stylesheet" type="text/css" href="/style.css"> +</head> +<body> +<div class="container"> + <div class="row"> + <div class="col-3"><span class="logo"></span></div> + <div class="col-3 text-right"> + <p class="user-action"> + Hi, <b>fadhilimamk</b> !<br> + <a href="/">Logout</a> + </p> + </div> + </div> + <div class="row"> + <a class="col-2 tab text-center active" href="/main/order">ORDER</a> + <a class="col-2 tab text-center" href="/main/history">HISTORY</a> + <a class="col-2 tab text-center" href="/main/profil">MY PROFILE</a> + </div> + <div class="row"> + <div class="col-6"><h1>MAKE AN ORDER</h1></div> + </div> + <div class="row"> + <div class="col-2"> + <div id="page-tab-location" class="page-tab selected"> + <div class="page-tab-image"> + <div class="circle">1</div> + </div> + <div class="page-tab-content"> + Select Destination + </div> + </div> + </div> + <div class="col-2"> + <div id="page-tab-driver" class="page-tab"> + <div class="page-tab-image"> + <div class="circle">2</div> + </div> + <div class="page-tab-content"> + Select a Driver + </div> + </div> + </div> + <div class="col-2"> + <div id="page-tab-finish" class="page-tab"> + <div class="page-tab-image"> + <div class="circle">3</div> + </div> + <div class="page-tab-content"> + Complete your order + </div> + </div> + </div> + </div> + <br> + <br> + <div id="order-page-location"> + <form id="orderForm"> + <div class="row"> + <div class="col-2" style="line-height: 40px"> + <span style="padding-left: 30%;">Picking Point</span> <br> + </div> + <div class="col-4" style="line-height: 30px"> + <input id="orderPickup" style="width: 80%;height: 30px;padding-left: 5px;font-size: medium" type="text" name="picking_point" placeholder="Pick up point"> + </div> + </div> + <div class="row"> + <div class="col-2" style="line-height: 40px"> + <span style="padding-left: 30%">Destination</span> <br> + </div> + <div class="col-4" style="line-height: 30px"> + <input id="orderDestination" style="width: 80%; height: 30px;padding-left: 5px;font-size: medium" type="text" name="destination" placeholder="Destination"> + </div> + </div> + <div class="row"> + <div class="col-2" style="line-height: 40px"> + <span style="padding-left: 30%">Preferred Driver</span> + </div> + <div class="col-4"> + <input id="orderPreferredDriver" style="width: 80%;height: 30px;padding-left: 5px;font-size: medium" type="text" name="driver" placeholder="(optional)"><br> + </div> + </div> + <br> + <br> + <br> + <div class="row text-center"> + <a href="#" class="btn green" style="font-size: 2em" onclick="makeOrder()">Next</a> + </div> + </form> + </div> + + <div id="order-page-driver"> + <div style="width: 100%; border: 1px solid black; border-radius: 10px;"> + <h2 style="margin-left: 10px; margin-top: 0px">PREFERRED DRIVERS: </h2> + <div id="driver-preferred-result" style="margin: 0 30px 30px 30px"> + <p id="driver-preferred-empty" class="text-center" style="font-size: large; color: #989898; margin: 30px">Nothing to display :(</p> + </div> + </div> + <br> + <div style="width: 100%; border: 1px solid black; border-radius: 10px;"> + <h2 style="margin-left: 10px; margin-top: 0px">OTHER DRIVERS: </h2> + <div id="driver-search-result" style="margin: 0 30px 30px 30px"> + <p id="driver-preferred-empty" class="text-center" style="font-size: large; color: #989898; margin: 30px">Nothing to display :(</p> + </div> + </div> + </div> + + <div id="order-page-finish" style="width: 100%;"> + <h2 style="margin-left: 10px; margin-top: 0px">HOW WAS IT? </h2> + <div id="driver-finish-order" class="text-center profil" style="padding-bottom: 60px"> + <p id="driver-preferred-empty" class="text-center" style="font-size: large; color: #989898; margin: 30px">Nothing to display :(</p> + </div> + </div> + + +</div> + +<script type="text/javascript" src="/order.js"></script> +</body> +</html> diff --git a/WebApp/web/profil.jsp b/WebApp/web/profil.jsp new file mode 100644 index 0000000000000000000000000000000000000000..1d2ad30c73715d8c60abd134195845d8fc07de8e --- /dev/null +++ b/WebApp/web/profil.jsp @@ -0,0 +1,56 @@ +<%-- + Created by IntelliJ IDEA. + User: fadhilimamk + Date: 07/11/17 + Time: 11:28 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<html> +<head> + <title>DAGO-JEK | Profil</title> + <link rel="stylesheet" type="text/css" href="/style.css"> +</head> +<body> +<div class="container"> + <div class="row"> + <div class="col-3"><span class="logo"></span></div> + <div class="col-3 text-right"> + <p class="user-action"> + Hi, <b>fadhilimamk</b> !<br> + <a href="/logout">Logout</a> + </p> + </div> + </div> + <div class="row"> + <a class="col-2 tab text-center" href="/main/order">ORDER</a> + <a class="col-2 tab text-center" href="/main/history">HISTORY</a> + <a class="col-2 tab text-center active" href="/main/profil">MY PROFILE</a> + </div> + <div class="row"> + <div class="col-5"><h1>MY PROFILE</h1></div> + <div class="col-1 text-right"><a class="edit" href="/edit/profil"></a></div> + </div> + <div class="text-center profil"> + <img class="img-circle" src="#"/><br> + <h2>@fadhilimamk</h2> + <p>Fadhil Imam</p> + <p>Driver | <span class="text-orange"><b><i class="icon icon-star"></i> 4.15</b></span> (122 votes)</p> + <p><i class="icon icon-mail"></i> 13515146@std.stei.itb.ac.id</p> + <p><i class="icon icon-phone"></i> 085797490039</p> + </div> + <div class="row"> + <div class="col-5"><h2>PREFERED LOCATIONS</h2></div> + <div class="col-1 text-right"><a class="edit" href="/edit/location"></a></div> + </div> + <div class="row"> + <ul class="location-list"> + <li style="margin-left: 0px"><b>Cipaganti</b></li> + <li style="margin-left: 35px"><b>Dago Pojok</b></li> + <li style="margin-left: 70px"><b>Tubagus</b></li> + <li style="margin-left: 105px"><b>Unpad</b></li> + </ul> + </div> +</div> +</body> +</html>