Rename and work on membership renewal WIP

This commit is contained in:
nikolark committed 2015-08-04 21:46:26 +02:00
1 parent 3a726a34e9
commit 6190f6e643
3 files changed
+26 -21

No files matched your search

+14 -6
View File
@@ -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
View File
@@ -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'];
+5 -11
View File
@@ -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);