Update the ajax file for adding registrant.
authorSteve Sutton <steve@gaslightmedia.com>
Mon, 25 Sep 2017 19:50:06 +0000 (15:50 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Mon, 25 Sep 2017 19:50:06 +0000 (15:50 -0400)
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
js/views/front/regClass.js
models/admin/ajax/regFront/registrant.php
views/front/registrations/registration.html

index fe005d1..852b76e 100644 (file)
@@ -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();
index 220032a..eade028 100644 (file)
@@ -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();
index 3eee142..10faff8 100644 (file)
@@ -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 );
index a2b35f7..b9cf7da 100644 (file)
@@ -88,7 +88,7 @@
 <script type="text/template" id="registrant-template">
     <a class="glm-reg-level-registrant-delete">Delete</a>
     <label class="registrant-label">
-        <span class="glm-reg-level-registrant-email"><%= email %></span>
+        <span class="glm-reg-level-registrant-email"><%= fname %> <%= lname %> <%= email %></span>
     </label>
 </script>
 {/literal}