From 2108959402e5c8600d4b4ca24c6f3b1217dc1d4b Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Mon, 20 Jul 2015 01:00:56 +0200 Subject: [PATCH] Adds some more card number checks --- api/api_functions.php | 26 ++++++++++++++++++++++++++ api/cardnumber.php | 24 +++++++++++++++++++++--- api/test.php | 30 ++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 api/test.php diff --git a/api/api_functions.php b/api/api_functions.php index dbbfd7f..313bcf1 100644 --- a/api/api_functions.php +++ b/api/api_functions.php @@ -78,6 +78,9 @@ if( !function_exists('valid_phonenumber') ) { function get_user_data($ids, $conn) { + if( !is_string($ids) ) { + new Exception('Param ids should be a comma separated string of user ids'); + } $ACTIVE_GROUP_ID = "2"; $conn->setFetchMode(DB_FETCHMODE_ASSOC); @@ -137,4 +140,27 @@ function get_user_data($ids, $conn) { $results[] = $result; } return $results; +} + +function update_card($user_id, $card_number) { + /* Update card number on user */ + +} +function get_user_id_by_card_number($card_number) { + $conn = get_db_connection(DB_FETCHMODE_ORDERED); + + $card_number = $conn->quoteSmart($card_number); + $sql = "SELECT mc.userId FROM din_membercard AS mc + LEFT JOIN din_user AS u ON mc.userId=u.id + WHERE mc.id=$card_number"; + + $res = $conn->getAll($sql); + + if( DB::isError($res) ) { + new Exception($res->getMessage()); + } + if( count($res) === 0 ) { + return NULL; + } + return $res[0][0]; } \ No newline at end of file diff --git a/api/cardnumber.php b/api/cardnumber.php index 4982f97..75edaeb 100644 --- a/api/cardnumber.php +++ b/api/cardnumber.php @@ -37,9 +37,27 @@ if($_SERVER['REQUEST_METHOD'] === 'POST') { if( !is_numeric($data['user_id']) ) { return_json_response(array('error' => "Value user_id must be numeric: '".$data['user_id']."'"), 400); } - /* TODO: If user does not exist, bail */ - /* TODO: If user relationship to card exists, bail */ - /* TODO: Either Add card relationship OR remove old relationsip and add new */ + /* If user does not exist, bail */ + $user_data = get_user_data($data['user_id'], $conn); + if( count($user_data) !== 1 ) { + return_json_response(array('error' => "User with user_id '".$data['user_id']."' does not exist."), 400); + } + $user = $user_data[0]; + + /* If card number is attached to specified user, bail */ + if($user['cardno'] === $data['card_number']) { + return_json_response(array('error' => "Card number ".$data['card_number']." is already attached to user (".$data['user_id'].")."), 400); + } + /* If card number does not exist, bail */ + $id_from_card_number = get_user_id_by_card_number($data['card_number']); + if($id_from_card_number === NULL) { + return_json_response(array('error' => "Card number ".$data['card_number']." does not exist."), 400); + } + /* If card belongs to another user, bail */ + if($id_from_card_number !== "") { + return_json_response(array('error' => "Card number ".$data['card_number']." belongs to another user ($id_from_card_number)."), 400); + } + /* TODO: Add card relationship OR remove old relationsip and add new */ return_json_response(array('error' => 'TODO: Not implemented')); } else { diff --git a/api/test.php b/api/test.php new file mode 100644 index 0000000..ecb6fd5 --- /dev/null +++ b/api/test.php @@ -0,0 +1,30 @@ + '1', + 'card_number' => '123456789' + )); + + $ch = curl_init(API_URL.'/api/cardnumber.php?apikey='.USER_API_KEY_KASSA); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_ENCODING ,""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=UTF-8')); + + $result = curl_exec($ch); + var_dump($result); + $decoded_result = json_decode($result, true); + var_dump($decoded_result); + + /* Register */ + curl_close ($ch); +} + +test_post_cardnumber(); \ No newline at end of file