From 017d86e6429d81a03f5045e9bdae3dd473a74e94 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Mon, 25 Sep 2017 15:50:06 -0400 Subject: [PATCH] Update the ajax file for adding registrant. Use account id for account if it can find it by email else it will create an account and use the new id. For each table it will check for existing entry and update that one. --- js/frontRegApp.js | 2 + js/views/front/regClass.js | 2 + models/admin/ajax/regFront/registrant.php | 264 ++++++++++++-------- views/front/registrations/registration.html | 2 +- 4 files changed, 167 insertions(+), 103 deletions(-) diff --git a/js/frontRegApp.js b/js/frontRegApp.js index fe005d1..852b76e 100644 --- a/js/frontRegApp.js +++ b/js/frontRegApp.js @@ -656,6 +656,8 @@ app.Views.Front.RegClass = Backbone.View.extend({ reg_class: this.model.get( 'id' ), reg_rate: this.model.get( 'reg_rate_id' ), email: email, + fname: fname, + lname: lname, }); this.newRegAccount.destroy(); this.newRegAccountView.remove(); diff --git a/js/views/front/regClass.js b/js/views/front/regClass.js index 220032a..eade028 100644 --- a/js/views/front/regClass.js +++ b/js/views/front/regClass.js @@ -79,6 +79,8 @@ app.Views.Front.RegClass = Backbone.View.extend({ reg_class: this.model.get( 'id' ), reg_rate: this.model.get( 'reg_rate_id' ), email: email, + fname: fname, + lname: lname, }); this.newRegAccount.destroy(); this.newRegAccountView.remove(); diff --git a/models/admin/ajax/regFront/registrant.php b/models/admin/ajax/regFront/registrant.php index 3eee142..10faff8 100644 --- a/models/admin/ajax/regFront/registrant.php +++ b/models/admin/ajax/regFront/registrant.php @@ -112,27 +112,35 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations $modelData['reg_request'] ) ); + $data = array( + 'reg_request' => $modelData['reg_request'], + 'reg_event' => $modelData['reg_event'], + 'event_name' => $modelData['event_name'], + 'reg_time' => $modelData['reg_time'], + 'event_datetime' => $modelData['event_datetime'], + ); + $dataFormat = array( + '%d', // reg_request + '%d', // reg_event + '%s', // event_name + '%d', // reg_time + '%s', // event_datetime + ); if ( !$regRegquestEventId ) { $this->wpdb->insert( GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', - array( - 'account' => 0, - 'reg_request' => $modelData['reg_request'], - 'reg_event' => $modelData['reg_event'], - 'event_name' => $modelData['event_name'], - 'reg_time' => $modelData['reg_time'], - 'event_datetime' => $modelData['event_datetime'], - ), - array( - '%d', // account - '%d', // reg_request - '%d', // reg_event - '%s', // event_name - '%d', // reg_time - '%s', // event_datetime - ) + $data, + $dataFormat + ); + $regRegquestEventId = $this->wpdb->insert_id; + } else { + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event', + $data, + array( 'id' => $regRegquestEventId ), + $dataFormat, + array( '%d' ) ); - $regRequestEvent = $this->wpdb->insert_id; } // Check for or create reg_request_class $regRequestClassId = $this->wpdb->get_var( @@ -147,31 +155,39 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations $modelData['reg_request'] ) ); + $data = array( + 'reg_event' => $modelData['reg_event'], + 'event_name' => $modelData['event_name'], + 'reg_time' => $modelData['reg_time'], + 'event_datetime' => $modelData['event_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRegquestEventId, + 'class' => $modelData['reg_class'], + ); + $dataFormat = array( + '%d', // reg_event + '%s', // event_name + '%d', // reg_time + '%s', // event_datetime + '%d', // reg_request + '%d', // reg_request_event + '%d', // class + ); if ( !$regRequestClassId ) { $this->wpdb->insert( GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class', - array( - 'account' => 0, - 'reg_event' => $modelData['reg_event'], - 'event_name' => $modelData['event_name'], - 'reg_time' => $modelData['reg_time'], - 'event_datetime' => $modelData['event_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRegquestEventId, - 'class' => $modelData['reg_class'], - ), - array( - '%d', // account - '%d', // reg_event - '%s', // event_name - '%d', // reg_time - '%s', // event_datetime - '%d', // reg_request - '%d', // reg_request_event - '%d', // 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( @@ -186,52 +202,86 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations $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_name' => $modelData['event_name'], + 'reg_time' => $modelData['reg_time'], + 'event_datetime' => $modelData['event_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRegquestEventId, + '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_name + '%s', // reg_time + '%s', // event_datetime + '%d', // reg_request + '%d', // reg_request_event + '%d', // reg_request_class + '%d', // rate + '%d', // rate_name + '%s', // base_rate + '%s', // per_registrant + '%d', // registrant_credits + ); if ( !$regRequestRate ) { - // 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 - ); // 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->insert( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account', array( - 'account' => 0, - 'reg_event' => $modelData['reg_event'], - 'event_name' => $modelData['event_name'], - 'reg_time' => $modelData['reg_time'], - 'event_datetime' => $modelData['event_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRegquestEventId, - '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'], + 'fname' => $modelData['fname'], + 'lname' => $modelData['lname'], + 'email' => $modelData['email'] ), - array( - '%d', // account - '%d', // reg_event - '%s', // event_name - '%s', // reg_time - '%s', // event_datetime - '%d', // reg_request - '%d', // reg_request_event - '%d', // reg_request_class - '%d', // rate - '%d', // rate_name - '%s', // base_rate - '%s', // per_registrant - '%d', // registrant_credits - ) + '%s' ); - $regRequestRate = $this->wpdb->insert_id; + $accountId = $this->wpdb->insert_id; } // Check for or create reg_request_registrant @@ -249,37 +299,47 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations $regRequestClassId ) ); + $data = array( + 'account' => $accountId, + 'reg_event' => $modelData['reg_event'], + 'event_name' => $modelData['event_name'], + 'reg_time' => $modelData['reg_time'], + 'event_datetime' => $modelData['event_datetime'], + 'reg_request' => $modelData['reg_request'], + 'reg_request_event' => $regRegquestEventId, + 'reg_request_class' => $regRequestClassId, + 'reg_request_rate' => $regRequestRate, + 'fname' => $modelData['fname'], + 'lname' => $modelData['lname'], + ); + $dataFormat = array( + '%d', // account + '%d', // reg_event + '%s', // event_name + '%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 + ); if ( !$regRequestRegistrantId ) { $this->wpdb->insert( GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant', - array( - 'account' => $modelData['account'], - 'reg_event' => $modelData['reg_event'], - 'event_name' => $modelData['event_name'], - 'reg_time' => $modelData['reg_time'], - 'event_datetime' => $modelData['event_datetime'], - 'reg_request' => $modelData['reg_request'], - 'reg_request_event' => $regRegquestEventId, - 'reg_request_class' => $regRequestClassId, - 'reg_request_rate' => $regRequestRate, - 'fname' => $modelData['fname'], - 'lname' => $modelData['lname'], - ), - array( - '%d', // account - '%d', // reg_event - '%s', // event_name - '%s', // reg_time - '%s', // event_datetime - '%d', // reg_request - '%d', // reg_request_event - '%d', // reg_request_class - '%d', // reg_request_rate - '%d', // fname - '%s', // lname - ) + $data, + $dataFormat ); $regRequestRegistrantId = $this->wpdb->insert_id; + } else { + $this->wpdb->update( + GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant', + $data, + array( 'id' => $regRequestRegistrantId ), + $dataFormat, + array( '%d' ) + ); } $regRequstRegistrant = $this->getEntry( $regRequestRegistrantId ); echo json_encode( $regRequstRegistrant, JSON_NUMERIC_CHECK ); diff --git a/views/front/registrations/registration.html b/views/front/registrations/registration.html index a2b35f7..b9cf7da 100644 --- a/views/front/registrations/registration.html +++ b/views/front/registrations/registration.html @@ -88,7 +88,7 @@ {/literal} -- 2.17.1