Rename and work on membership renewal WIP
This commit is contained in:
1 parent
3a726a34e9
commit
6190f6e643
3 files changed
+26
-21
No files matched your search
+14
-6
@@ -260,15 +260,23 @@ function get_active_card_number($user) {
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
function add_or_renew_membership($user, $data) {
|
||||
// TODO stub
|
||||
throw new Exception("TODO: Not implemented!");
|
||||
function add_or_renew_membership($user_id, $purchased=NULL) {
|
||||
assert($user_id !== NULL);
|
||||
|
||||
$conn = get_db_connection(DB_FETCHMODE_ORDERED);
|
||||
|
||||
/* Membership expiry */
|
||||
/* One year from today (default) */
|
||||
if( !isset($data['purchased']) ) {
|
||||
$data['purchased'] = date_create();
|
||||
if( $purchased == NULL ) {
|
||||
$purchased = date_create();
|
||||
}
|
||||
/* ...or one year from specified date */
|
||||
$expires = date_format(date_modify($data['purchased'], "+1 year"), "Y-m-d");
|
||||
$expires = date_format(date_modify($purchased, "+1 year"), "Y-m-d");
|
||||
|
||||
$res = $conn->autoExecute("din_user", array('expires' => $expires), DB_AUTOQUERY_UPDATE, "id=$user_id");
|
||||
|
||||
if( DB::isError($res) ) {
|
||||
new InsideDatabaseException($res->getMessage().". DEBUG: ".$res->getDebugInfo());
|
||||
}
|
||||
|
||||
}
|
||||
+7
-4
@@ -36,14 +36,14 @@ if($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
}
|
||||
|
||||
/* Validate action */
|
||||
$valid_actions = array('new_card_no_user', 'update_card', 'renewal');
|
||||
$valid_actions = array('new_card_membership', 'update_card', 'add_or_renew');
|
||||
if( !isset($data['action']) || !in_array($data['action'], $valid_actions) ) {
|
||||
return_json_response(array('error' => "Missing param 'action' or action not in ".implode(", ", $valid_actions).'.'), 400);
|
||||
|
||||
}
|
||||
|
||||
/* New membership, with only card number and phone number tuple */
|
||||
if($data['action'] === 'new_card_no_user') {
|
||||
if($data['action'] === 'new_card_membership') {
|
||||
$phone_number = clean_phonenumber($data['phone_number']);
|
||||
if(!valid_phonenumber($phone_number)) {
|
||||
return_json_response(array('error' => "Invalid phone number: '".$phone_number."'"), 400);
|
||||
@@ -52,7 +52,10 @@ if($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
if($card['registered'] !== '') {
|
||||
return_json_response(array('error' => 'Card number is in use and belongs to phone number: '.$card['owner_phone_number'].'.'));
|
||||
}
|
||||
/* TODO Check if user with phone number exists, if so, then bail */
|
||||
/* If user with phone number exists, then bail */
|
||||
if( !getUseridFromPhone($phone_number) ) {
|
||||
return_json_response(array('error' => 'User with phone number: '.$phone_number.' already exists.'));
|
||||
}
|
||||
|
||||
update_card_with_phone_number($card_number, $phone_number);
|
||||
|
||||
@@ -98,7 +101,7 @@ if($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
else {
|
||||
/* Validate params */
|
||||
if( !isset($_GET['card_number']) ) {
|
||||
return_json_response(array('error' => "Missing param card_number: ".var_export($_POST, true)), 400);
|
||||
return_json_response(array('error' => "Missing param card_number."), 400);
|
||||
}
|
||||
$card_number = $_GET['card_number'];
|
||||
|
||||
|
||||
@@ -21,12 +21,6 @@ $data = json_decode($body, true);
|
||||
if($data === NULL) {
|
||||
return_json_response(array('error' => 'Can\'t decode body'), 400);
|
||||
}
|
||||
/* Check type of registration and set valid fields */
|
||||
$reg_type = "new";
|
||||
if( isset($data['type']) && $data['type'] === "renewal" ) {
|
||||
/* Renewal */
|
||||
$reg_type = $data['type'];
|
||||
}
|
||||
|
||||
$required_keys = array('apikey', 'user_id');
|
||||
$valid_keys = $required_keys;
|
||||
@@ -55,7 +49,7 @@ $conn = get_db_connection(DB_FETCHMODE_ASSOC);
|
||||
|
||||
/* Existing user? */
|
||||
$user = get_user($user_id);
|
||||
/* Don't allow renewal of an existing valid membership. */
|
||||
/* Don't allow renewal if valid membership exists. */
|
||||
if( $user['membership_status'] !== 0 ) {
|
||||
if($user['expires'] === '') {
|
||||
// Life long
|
||||
@@ -63,14 +57,15 @@ if( $user['membership_status'] !== 0 ) {
|
||||
}
|
||||
return_json_response(array('error' => 'Cannot renew, user with phone '.$user['id'].' has a valid membership until: '.$user['expires']), 409);
|
||||
}
|
||||
// TODO: existing membership or new membership?
|
||||
|
||||
/* Validate optional purchase_date */
|
||||
$purchased = NULL;
|
||||
if( isset($data['purchased']) ) {
|
||||
$purchased = clean_date($data['purchased']) ;
|
||||
$purchased = clean_date($data['purchased']);
|
||||
if($purchased === false) {
|
||||
return_json_response(array('error' => 'Could not parse date from field purchased: '.$data['purchased']), 400);
|
||||
}
|
||||
$data['purchased'] = $purchased;
|
||||
}
|
||||
|
||||
/* Validate optional source */
|
||||
@@ -80,8 +75,7 @@ if( isset($data['source']) && !in_array($data['source'], $valid_sources) ) {
|
||||
|
||||
/* Add or renew membership */
|
||||
try {
|
||||
// TODO ADD or renew membership
|
||||
add_or_renew_membership($user, $data);
|
||||
add_or_renew_membership($user_id, $purchased);
|
||||
} catch(InsideDatabaseException $e) {
|
||||
error_log($e->getMessage());
|
||||
return_json_response(array('error' => 'db_error', 'error_message' => $e->getMessage()), 500);
|
||||
Reference in new issue
Block a user