From 55bdba90fc8f911fb924c8e7160f3e84e2be0d6b Mon Sep 17 00:00:00 2001
From: Adylan Roaffa <adylanrff@gmail.com>
Date: Thu, 18 Oct 2018 07:13:47 +0700
Subject: [PATCH] fixed router

---
 client/app/browse.php           |  8 --------
 client/app/homepage.php         |  7 +++++++
 client/public/.htaccess         |  0
 client/public/index.php         |  6 +++---
 server/app/user/UserUsecase.php | 26 ++++++++++++++++----------
 server/app/user/routes.php      |  9 ++++-----
 server/public/index.php         |  2 +-
 server/util/Routing/Request.php |  4 +++-
 server/util/Routing/Router.php  | 15 +++++++--------
 9 files changed, 41 insertions(+), 36 deletions(-)
 delete mode 100644 client/app/browse.php
 create mode 100644 client/app/homepage.php
 delete mode 100644 client/public/.htaccess

diff --git a/client/app/browse.php b/client/app/browse.php
deleted file mode 100644
index 458b1a6..0000000
--- a/client/app/browse.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-    
-    $browsePage = function(){
-        echo "Implement plz";
-        require_once __ROOT__.'/static/html/index.html';
-    }
-
-?>
\ No newline at end of file
diff --git a/client/app/homepage.php b/client/app/homepage.php
new file mode 100644
index 0000000..5fac71f
--- /dev/null
+++ b/client/app/homepage.php
@@ -0,0 +1,7 @@
+<?php
+    
+    $homepage = function() {
+        include __ROOT__.'/static/html/index.html';
+    }
+
+?>
\ No newline at end of file
diff --git a/client/public/.htaccess b/client/public/.htaccess
deleted file mode 100644
index e69de29..0000000
diff --git a/client/public/index.php b/client/public/index.php
index 0b4bd9c..9f52800 100644
--- a/client/public/index.php
+++ b/client/public/index.php
@@ -3,18 +3,18 @@
 
     
     require_once __ROOT__.'/util/Routing/Router.php';
-    require_once __ROOT__.'/app/browse.php';
+    require_once __ROOT__.'/app/homepage.php';
     require_once __ROOT__.'/app/history.php';
     require_once __ROOT__.'/app/profile.php';
     
 
     $router = new Router();
 
-    $router->add("/", "GET", $browsePage);
+    $router->add("/", "GET", $homepage);
     $router->add("/profile/", "GET", $historyPage);
     $router->add("/history/", "GET", $profilePage);
 
-    $uri = $_SERVER["REQUEST_URI"];
+    $uri = $_SERVER["PATH_INFO"];
     $method = $_SERVER["REQUEST_METHOD"];
 
     $router->route($uri, $method);
diff --git a/server/app/user/UserUsecase.php b/server/app/user/UserUsecase.php
index b74d3c0..a8952ec 100644
--- a/server/app/user/UserUsecase.php
+++ b/server/app/user/UserUsecase.php
@@ -1,5 +1,6 @@
 <?php
     require_once __ROOT__.'/app/user/UserDb.php';
+    require_once __ROOT__.'/app/user/User.php';
     require_once __ROOT__.'/util/Routing/Response.php';
 
     class UserUsecase {
@@ -39,19 +40,24 @@
         function editProfile(Request $request){
             $user_id = (int)$request->params["user_id"];
             $user = $this->userDb->getUserById($user_id)[0];
-            $user->username = array_key_exists("username",$request->payload) ? $request->payload["username"] : $user->username;
-            $user->fullname = array_key_exists("fullname",$request->payload) ? $request->payload["fullname"]: $user->fullname;
-            $user->email = array_key_exists("email",$request->payload) ? $request->payload["email"] : $user->email;
-            $user->address = array_key_exists("address",$request->payload) ? $request->payload["address"] : $user->address;
 
-            $newPass = array_key_exists("password",$request->payload) ? hash('sha256', $request->payload["username"]) : $user->getPassword();
-            $user->setPassword($newPass);
-            
-            $user = $this->userDb->updateUser($user);
             if ($user){
-                writeResponse(200, "Success edit user profile", $user);
+                $user->username = array_key_exists("username",$request->payload) ? $request->payload["username"] : $user->username;
+                $user->fullname = array_key_exists("fullname",$request->payload) ? $request->payload["fullname"]: $user->fullname;
+                $user->email = array_key_exists("email",$request->payload) ? $request->payload["email"] : $user->email;
+                $user->address = array_key_exists("address",$request->payload) ? $request->payload["address"] : $user->address;
+    
+                $newPass = array_key_exists("password",$request->payload) ? hash('sha256', $request->payload["username"]) : $user->getPassword();
+                $user->setPassword($newPass);
+                
+                $user = $this->userDb->updateUser($user);
+                if ($user){
+                    writeResponse(200, "Success edit user profile", $user);
+                } else {
+                    writeResponse(500, "Failed edit user profile");
+                }
             } else {
-                writeResponse(500, "Failed edit user profile");
+                writeResponse(400, "User not exist");
             }
         }
 
diff --git a/server/app/user/routes.php b/server/app/user/routes.php
index 012884e..b2a81b1 100644
--- a/server/app/user/routes.php
+++ b/server/app/user/routes.php
@@ -1,15 +1,14 @@
 <?php
 
     function addUserRoutes($router, $userUsecase){
-        // User Routes
         $router->add("/user/", "POST", array($userUsecase,'registerUser'));
+        $router->add("/user/search/", "GET", function($request){
+            $queries = $request->queries;
+            var_dump($queries);
+        });
         $router->add("/user/:user_id/", "DELETE", array($userUsecase,'removeUser'));
         $router->add("/user/:user_id/", "GET", array($userUsecase,'getProfile'));
         $router->add("/user/:user_id/", "PUT", array($userUsecase,'editProfile'));
-        // $router->add("/book/:book_id/", "POST", $postCallbackExample);
-        // $router->add("/book/:book_id/user/:user_id/", "POST", $postCallbackExample);
-        // $router->add("/book/:book_id/", "POST", $postCallbackExample);
-
         return $router;
     }
 
diff --git a/server/public/index.php b/server/public/index.php
index 0642b50..73d339b 100644
--- a/server/public/index.php
+++ b/server/public/index.php
@@ -32,7 +32,7 @@
     // TODO: Add Order Routes
     
     $errorCallback = function(){
-        echo "500";
+        writeResponse(404, "Page not found.");
     };
     
     $uri = $_SERVER['PATH_INFO'];
diff --git a/server/util/Routing/Request.php b/server/util/Routing/Request.php
index ba6d58f..2cdd4fc 100644
--- a/server/util/Routing/Request.php
+++ b/server/util/Routing/Request.php
@@ -3,11 +3,13 @@
         public $params = array();
         public $payload = array();
         public $header = array();
+        public $queries = array();
 
-        function __construct(array $params, array $payload, $header){
+        function __construct(array $params, array $payload, $header, $queries = null){
             $this->params = $params;
             $this->payload = $payload;
             $this->header = $header;
+            $this->queries = $queries;
         }
     }
 
diff --git a/server/util/Routing/Router.php b/server/util/Routing/Router.php
index b92e8fb..09e5f8e 100644
--- a/server/util/Routing/Router.php
+++ b/server/util/Routing/Router.php
@@ -12,22 +12,21 @@
 
         private function __makeParamPattern($url){
             $url_components = explode("/", $url);
-            $paramPattern = "^\/";
+            $paramPattern = "^";
             foreach($url_components as $url_component){
                 if ($url_component != ""){
                     if (preg_match('(:.*)',$url_component)){
                         preg_match('(:.*)',$url_component, $paramName);
                         $param = substr($paramName[0],1);
                         array_push($this->paramKeys, $param);
-                        $paramPattern .= "(?P"."<$param>"."\d+)\/";
+                        $paramPattern .= "\/(?P"."<$param>"."\d+)";
                     }
                     else {
-                        $paramPattern .= "(".$url_component.")\/"; 
+                        $paramPattern .= "\/(".$url_component.")"; 
                     }
                 }
             }
-            $paramPattern.= "$";
-
+            $paramPattern.= "\/$";
             return $paramPattern;
         }
 
@@ -49,7 +48,6 @@
 
             return $request_params;
         }
-
         private function __getRouteFromPattern($url, $method){
             foreach ($this->routes as $key=>$value){
                 if (preg_match("($key)", $url) && array_key_exists($method, $value)){
@@ -76,8 +74,9 @@
                 parse_str(file_get_contents("php://input"), $payload);                
                 // get header
                 $headers = getallheaders();
-
-                $request = new Request($params, $payload, $headers);
+                $queries = $_GET;
+                
+                $request = new Request($params, $payload, $headers, $queries);
 
                 if ($route["middleware"]){
                     $route["middleware"]->run($route["callback"], $request);
-- 
GitLab