From 36f94fbd530eb3ee3f8bc61c6c8ecef7e7f8629e Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Mon, 23 Oct 2017 12:49:43 -0400 Subject: [PATCH] Refactor part to update or add registrant to cart. Will be moving this to support class later. --- js/frontRegApp.js | 2 +- js/views/front/app.js | 2 +- models/admin/ajax/regFront/registrant.php | 590 ++++++++++------------ 3 files changed, 275 insertions(+), 319 deletions(-) diff --git a/js/frontRegApp.js b/js/frontRegApp.js index 455ae73..14815fd 100644 --- a/js/frontRegApp.js +++ b/js/frontRegApp.js @@ -387,7 +387,7 @@ app.Views.Front.App = Backbone.View.extend({ }, events: { -// 'click #glm-reg-cart-continue': 'continue', + 'click #glm-reg-cart-continue': 'continue', }, continue: function(){ diff --git a/js/views/front/app.js b/js/views/front/app.js index 2f3c3ab..f6ad6d6 100644 --- a/js/views/front/app.js +++ b/js/views/front/app.js @@ -24,7 +24,7 @@ app.Views.Front.App = Backbone.View.extend({ }, events: { -// 'click #glm-reg-cart-continue': 'continue', + 'click #glm-reg-cart-continue': 'continue', }, continue: function(){ diff --git a/models/admin/ajax/regFront/registrant.php b/models/admin/ajax/regFront/registrant.php index 0aaf3be..811bb3e 100644 --- a/models/admin/ajax/regFront/registrant.php +++ b/models/admin/ajax/regFront/registrant.php @@ -90,18 +90,13 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations $option = $modelData['option']; } - // if ( $modelData['id'] == 0 ) { - // $option = 'add'; - // } - - //trigger_error(print_r($option, 1)); // Perform specified action switch ( $option ) { case 'add': // Call to add registrant - $registrant = $this->addRegistrantToCart( $modelData ); + $registrant = $this->addUpdateRegistrantToCart( $modelData, 'add' ); echo json_encode( $registrant, JSON_NUMERIC_CHECK ); wp_die(); @@ -112,110 +107,10 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations case 'update': - $registrant = $this->addRegistrantToCart( $modelData ); + $registrant = $this->addUpdateRegistrantToCart( $modelData, 'update' ); echo json_encode( $registrant, JSON_NUMERIC_CHECK ); wp_die(); - // if ( $accountId = filter_var( $modelData['account'], FILTER_VALIDATE_INT ) ) { - // $validated = $this->wpdb->get_var( - // $this->wpdb->prepare( - // "SELECT validated - // FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account - // WHERE id = %d", - // $accountId - // ) - // ); - // // If not validated go ahead and update the account data - // if ( !$validated ) { - // $accountData = array( - // 'fname' => $modelData['fname'], - // 'lname' => $modelData['lname'], - // 'addr1' => $modelData['addr1'], - // 'addr2' => $modelData['addr2'], - // 'city' => $modelData['city'], - // 'state' => $modelData['state'], - // 'zip' => $modelData['zip'], - // 'country' => $modelData['country'], - // ); - // $accountDataFormat = array( - // '%s', // fname - // '%s', // lname - // '%s', // addr1 - // '%s', // addr2 - // '%s', // city - // '%s', // state - // '%s', // zip - // '%s', // country - // ); - // $this->wpdb->update( - // GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account', - // $accountData, - // array( 'id' => $accountId ), - // $accountDataFormat, - // array( '%d' ) - // ); - // } - // - // } - // if ( $regRequestRegistrantId = filter_var( $modelData['id'], FILTER_VALIDATE_INT ) ) { - // $regTime = $this->wpdb->get_row( - // $this->wpdb->prepare( - // "SELECT * - // FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time - // WHERE id = %d", - // $modelData['reg_time'] - // ), - // ARRAY_A - // ); - // // Check the account to see what's changed - // // Check for a new reg_time - // $data = array( - // 'account' => $modelData['account'], - // 'reg_event' => $modelData['reg_event'], - // 'reg_time' => $modelData['reg_time'], - // 'event_datetime' => $regTime['start_datetime'], - // 'reg_request' => $modelData['reg_request'], - // 'reg_request_event' => $modelData['reg_request_event'], - // 'reg_request_class' => $modelData['reg_request_class'], - // 'reg_request_rate' => $modelData['reg_request_rate'], - // 'fname' => $modelData['fname'], - // 'lname' => $modelData['lname'], - // ); - // $dataFormat = array( - // '%d', // account - // '%d', // reg_event - // '%s', // reg_time - // '%s', // event_datetime - // '%d', // reg_request - // '%d', // reg_request_event - // '%d', // reg_request_class - // '%d', // reg_request_rate - // '%s', // fname - // '%s', // lname - // ); - // $this->wpdb->update( - // GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant', - // $data, - // array( 'id' => $regRequestRegistrantId ), - // $dataFormat, - // array( '%d' ) - // ); - // $registrant = $this->getEntry( $regRequestRegistrantId ); - // $registrant['validated'] = $validated; - // if ( $registrant['reg_time'] && filter_var( $registrant['reg_time'], FILTER_VALIDATE_INT ) ) { - // $regTimeText = $this->wpdb->get_var( - // $this->wpdb->prepare( - // "SELECT DATE_FORMAT( start_datetime, '%%m/%%d/%%Y %%l:%%i %%p' ) - // FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time - // WHERE id = %d", - // $registrant['reg_time'] - // ) - // ); - // $registrant['reg_time_text'] = $regTimeText; - // } - // echo json_encode( $registrant, JSON_NUMERIC_CHECK ); - // wp_die(); - // } break; case 'delete': @@ -241,223 +136,284 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations } - public function addRegistrantToCart( $modelData ) + /** + * addUpdateRegistrantToCart + * + * Adds or Updates the registrant in the cart. + * + * @param mixed $modelData The modelData containing the data + * @param mixed $action The action ( update or add ) + * + * @access public + * @return void + */ + public function addUpdateRegistrantToCart( $modelData, $action ) { $validated = false; - // Check for or create reg_request_event - $regRequestEventId = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT id - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_event - WHERE reg_event = %d - AND reg_request = %d", - $modelData['reg_event'], - $modelData['reg_request'] - ) - ); - $data = array( - 'reg_request' => $modelData['reg_request'], - 'reg_event' => $modelData['reg_event'], - 'event_name' => $modelData['event_name'], - 'event_datetime' => $modelData['event_datetime'], - ); - $dataFormat = array( - '%d', // reg_request - '%d', // reg_event - '%s', // event_name - '%s', // event_datetime - ); - if ( !$regRequestEventId ) { - $this->wpdb->insert( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', - $data, - $dataFormat + if ( $action == 'add' ) { + // Check for or create reg_request_event + $regRequestEventId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_event + WHERE reg_event = %d + AND reg_request = %d", + $modelData['reg_event'], + $modelData['reg_request'] + ) ); - $regRequestEventId = $this->wpdb->insert_id; - } else { - $this->wpdb->update( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', - $data, - array( 'id' => $regRequestEventId ), - $dataFormat, - array( '%d' ) + $data = array( + 'reg_request' => $modelData['reg_request'], + 'reg_event' => $modelData['reg_event'], + 'event_name' => $modelData['event_name'], + 'event_datetime' => $modelData['event_datetime'], ); - } - - // Check for or create reg_request_class - $regRequestClassId = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT id - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_class - WHERE reg_request_event = %d - AND class = %d - AND reg_request = %d", - $regRequestEventId, - $modelData['reg_class'], - $modelData['reg_request'] - ) - ); - // At this point we need to get the class data - $regClass = $this->wpdb->get_row( - $this->wpdb->prepare( - "SELECT * - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_class - WHERE id = %d", - $modelData['reg_class'] - ), - ARRAY_A - ); - $data = array( - 'reg_event' => $modelData['reg_event'], - 'event_datetime' => $modelData['event_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRequestEventId, - 'class' => $modelData['reg_class'], - 'class_name' => $regClass['name'], - ); - $dataFormat = array( - '%d', // reg_event - '%s', // event_datetime - '%d', // reg_request - '%d', // reg_request_event - '%d', // class - '%s', // class_name - ); - if ( !$regRequestClassId ) { - $this->wpdb->insert( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class', - $data, - $dataFormat + $dataFormat = array( + '%d', // reg_request + '%d', // reg_event + '%s', // event_name + '%s', // event_datetime ); - $regRequestClassId = $this->wpdb->insert_id; - } else { - $this->wpdb->update( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class', - $data, - array( 'id' => $regRequestClassId ), - $dataFormat, - array( '%d' ) + if ( !$regRequestEventId ) { + $this->wpdb->insert( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', + $data, + $dataFormat + ); + $regRequestEventId = $this->wpdb->insert_id; + } else { + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', + $data, + array( 'id' => $regRequestEventId ), + $dataFormat, + array( '%d' ) + ); + } + + // Check for or create reg_request_class + $regRequestClassId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_class + WHERE reg_request_event = %d + AND class = %d + AND reg_request = %d", + $regRequestEventId, + $modelData['reg_class'], + $modelData['reg_request'] + ) ); - } - - // Check for or create reg_request_rate - $regRequestRate = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT id - FROM " .GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_rate - WHERE reg_event = %d - AND rate = %d - AND reg_request = %d", - $modelData['reg_event'], - $modelData['reg_rate'], - $modelData['reg_request'] - ) - ); - // At this point we need to get the rate data - $rate = $this->wpdb->get_row( - $this->wpdb->prepare( - "SELECT * - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_rate - WHERE id = %d", - $modelData['reg_rate'] - ), - ARRAY_A - ); - $data = array( - 'reg_event' => $modelData['reg_event'], - 'event_datetime' => $modelData['event_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRequestEventId, - 'reg_request_class' => $regRequestClassId, - 'rate' => $modelData['reg_rate'], - 'rate_name' => $rate['name'], - 'base_rate' => $rate['base_rate'], - 'per_registrant' => $rate['per_registrant'], - 'registrant_credits' => $rate['registrant_credits'], - ) ; - $dataFormat = array( - '%d', // reg_event - '%s', // event_datetime - '%d', // reg_request - '%d', // reg_request_event - '%d', // reg_request_class - '%d', // rate - '%s', // rate_name - '%f', // base_rate - '%f', // per_registrant - '%d', // registrant_credits - ); - if ( !$regRequestRate ) { - // Now with the previous data we can create reg_request_rate - $this->wpdb->insert( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate', - $data, - $dataFormat + // At this point we need to get the class data + $regClass = $this->wpdb->get_row( + $this->wpdb->prepare( + "SELECT * + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_class + WHERE id = %d", + $modelData['reg_class'] + ), + ARRAY_A ); - $regRequestRate = $this->wpdb->insert_id; - } else { - // Now with the previous data we can create reg_request_rate - $this->wpdb->update( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate', - $data, - array( 'id' => $regRequestRate ), - $dataFormat, - array( '%d' ) + $data = array( + 'reg_event' => $modelData['reg_event'], + 'event_datetime' => $modelData['event_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRequestEventId, + 'class' => $modelData['reg_class'], + 'class_name' => $regClass['name'], ); - } - - // If we have the email address then look up the account for it - if ( isset( $modelData['email'] ) && $email = filter_var( $modelData['email'], FILTER_VALIDATE_EMAIL ) ) { - $accountId = $this->wpdb->get_var( + $dataFormat = array( + '%d', // reg_event + '%s', // event_datetime + '%d', // reg_request + '%d', // reg_request_event + '%d', // class + '%s', // class_name + ); + if ( !$regRequestClassId ) { + $this->wpdb->insert( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class', + $data, + $dataFormat + ); + $regRequestClassId = $this->wpdb->insert_id; + } else { + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class', + $data, + array( 'id' => $regRequestClassId ), + $dataFormat, + array( '%d' ) + ); + } + + // Check for or create reg_request_rate + $regRequestRate = $this->wpdb->get_var( $this->wpdb->prepare( "SELECT id - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account - WHERE email = %s", - $email + FROM " .GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_rate + WHERE reg_event = %d + AND rate = %d + AND reg_request = %d", + $modelData['reg_event'], + $modelData['reg_rate'], + $modelData['reg_request'] ) ); - } - if ( !isset( $accountId ) ) { - // We need to create an account for this one - $this->wpdb->insert( - GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account', - array( - 'fname' => $modelData['fname'], - 'lname' => $modelData['lname'], - 'email' => $modelData['email'], - 'date_created' => date('Y-m-d'), + // At this point we need to get the rate data + $rate = $this->wpdb->get_row( + $this->wpdb->prepare( + "SELECT * + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_rate + WHERE id = %d", + $modelData['reg_rate'] ), - '%s' + ARRAY_A + ); + $data = array( + 'reg_event' => $modelData['reg_event'], + 'event_datetime' => $modelData['event_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRequestEventId, + 'reg_request_class' => $regRequestClassId, + 'rate' => $modelData['reg_rate'], + 'rate_name' => $rate['name'], + 'base_rate' => $rate['base_rate'], + 'per_registrant' => $rate['per_registrant'], + 'registrant_credits' => $rate['registrant_credits'], + ) ; + $dataFormat = array( + '%d', // reg_event + '%s', // event_datetime + '%d', // reg_request + '%d', // reg_request_event + '%d', // reg_request_class + '%d', // rate + '%s', // rate_name + '%f', // base_rate + '%f', // per_registrant + '%d', // registrant_credits + ); + if ( !$regRequestRate ) { + // Now with the previous data we can create reg_request_rate + $this->wpdb->insert( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate', + $data, + $dataFormat + ); + $regRequestRate = $this->wpdb->insert_id; + } else { + // Now with the previous data we can create reg_request_rate + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate', + $data, + array( 'id' => $regRequestRate ), + $dataFormat, + array( '%d' ) + ); + } + + // If we have the email address then look up the account for it + if ( isset( $modelData['email'] ) && $email = filter_var( $modelData['email'], FILTER_VALIDATE_EMAIL ) ) { + $accountId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account + WHERE email = %s", + $email + ) + ); + } + if ( !isset( $accountId ) ) { + // We need to create an account for this one + $this->wpdb->insert( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account', + array( + 'fname' => $modelData['fname'], + 'lname' => $modelData['lname'], + 'email' => $modelData['email'], + 'date_created' => date('Y-m-d'), + ), + '%s' + ); + $accountId = $this->wpdb->insert_id; + // Here validated would be false. + // Because it is new account. + } + $validated = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT validated + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account + WHERE id = %d", + $accountId + ) ); - $accountId = $this->wpdb->insert_id; - // Here validated would be false. - // Because it is new account. } - $validated = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT validated - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account - WHERE id = %d", - $accountId - ) - ); - // Check for or create reg_request_registrant - $regRequestRegistrantId = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT id - FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_registrant - WHERE reg_request = %d - AND account = %d - AND reg_request_event = %d - AND reg_request_class = %d", - $modelData['reg_request'], - $accountId, - $regRequestEventId, - $regRequestClassId - ) - ); + if ( $action == 'update' ) { + if ( $accountId = filter_var( $modelData['account'], FILTER_VALIDATE_INT ) ) { + $validated = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT validated + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account + WHERE id = %d", + $accountId + ) + ); + // If not validated go ahead and update the account data + if ( !$validated ) { + $accountData = array( + 'fname' => $modelData['fname'], + 'lname' => $modelData['lname'], + 'addr1' => $modelData['addr1'], + 'addr2' => $modelData['addr2'], + 'city' => $modelData['city'], + 'state' => $modelData['state'], + 'zip' => $modelData['zip'], + 'country' => $modelData['country'], + ); + $accountDataFormat = array( + '%s', // fname + '%s', // lname + '%s', // addr1 + '%s', // addr2 + '%s', // city + '%s', // state + '%s', // zip + '%s', // country + ); + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account', + $accountData, + array( 'id' => $accountId ), + $accountDataFormat, + array( '%d' ) + ); + } + + } + } + if ( $regRequestRegistrantId = filter_var( $modelData['id'], FILTER_VALIDATE_INT ) ) { + // Do nothing here for now + } else { + + // Check for or create reg_request_registrant + $regRequestRegistrantId = $this->wpdb->get_var( + $this->wpdb->prepare( + "SELECT id + FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_registrant + WHERE reg_request = %d + AND account = %d + AND reg_request_event = %d + AND reg_request_class = %d", + $modelData['reg_request'], + $accountId, + $regRequestEventId, + $regRequestClassId + ) + ); + } $regTime = $this->wpdb->get_row( $this->wpdb->prepare( @@ -469,16 +425,16 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations ARRAY_A ); $data = array( - 'account' => $accountId, - 'reg_event' => $modelData['reg_event'], - 'reg_time' => $modelData['reg_time'], - 'event_datetime' => $regTime['start_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRequestEventId, - 'reg_request_class' => $regRequestClassId, - 'reg_request_rate' => $regRequestRate, - 'fname' => $modelData['fname'], - 'lname' => $modelData['lname'], + 'account' => $accountId, + 'reg_event' => $modelData['reg_event'], + 'reg_time' => $modelData['reg_time'], + 'event_datetime' => $regTime['start_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRequestEventId, + 'reg_request_class' => $regRequestClassId, + 'reg_request_rate' => $regRequestRate, + 'fname' => $modelData['fname'], + 'lname' => $modelData['lname'], ); $dataFormat = array( '%d', // account -- 2.17.1