Work on registrant add delete
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 21 Sep 2017 20:24:19 +0000 (16:24 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 21 Sep 2017 20:24:52 +0000 (16:24 -0400)
Can now add reg_request_registrant and delete them.

js/frontRegApp.js
js/models/front/regRequestRegistrant.js
js/views/front/regClass.js
js/views/front/regRequestRegistrant.js
models/admin/ajax/regFront.php
models/admin/ajax/regFront/registrant.php
models/front/registrations/registration.php

index 6b36e35..670519d 100644 (file)
@@ -222,7 +222,22 @@ app.Models.Front.RegRequestRegistrant = Backbone.Model.extend({
         lname: '',
     },
 
-    url: ajaxUrl+'&glm_action=regFront&collection=registrant'
+    url: ajaxUrl+'&glm_action=regFront&collection=registrant',
+
+    // sync: function( method, model ){
+    //     //console.log( 'sync in model' );
+    //     // console.log( method );
+    //     // console.log( model );
+    //     switch ( method ) {
+    //         case 'delete':
+    //             console.log( 'Delete called in registrant model' );
+    //             return false;
+    //             //this.url = url + 'model=' + model.toJSON();
+    //             break;
+    //     }
+    //     Backbone.sync.apply(this, arguments);
+    //
+    // },
 });
 
 app.Models.Front.Request = Backbone.Model.extend({
@@ -569,14 +584,13 @@ app.Views.Front.RegClass = Backbone.View.extend({
     },
 
     deleteOne: function( item ){
+        console.log('Delete on regClass registrant called');
+        // this.model.registrants.remove( item );
         this.render();
     },
 
     events: {
         'click .addRegistrant': 'newEntry',
-        // 'click .toggle-class-open': 'toggleClassOpen',
-        // 'click .toggle-class-close': 'toggleClassClose',
-        //'click .glm-reg-level-registrant-delete': 'deleteOne',
     },
 
     toggleClassOpen: function(){
@@ -607,20 +621,21 @@ app.Views.Front.RegClass = Backbone.View.extend({
             data: 'email=' + this.$newEmail.val().trim()
         })
         .done(function(account){
-            console.log(account);
+            //console.log(account);
             // Check for id and email
             if ( account.validEmail !== true ) {
                 // If not found then nothing was found for that email.
                 alert('Must be a valid email address!');
             }  else if ( account.id !== undefined && account.email !== undefined ) {
-                console.log( cart.get( 'request' ) );
+                //console.log( cart.get( 'request' ) );
                 var regRequest = cart.get( 'request' );
                 this.model.registrants.create({
+                    option: 'add',
                     account: account.id,
                     reg_request: regRequest.id,
                     reg_event: this.model.get( 'reg_event' ),
                     reg_class: this.model.get( 'id' ),
-                    reg_request_rate: this.model.get('reg_rate_id'),
+                    reg_rate: this.model.get('reg_rate_id'),
                     email: account.email,
                 });
                 this.$newEmail.val('');
@@ -638,22 +653,12 @@ app.Views.Front.RegClass = Backbone.View.extend({
         });
     },
 
-    // updateCount: function(){
-    //     this.model.set({ reg_count: this.model.accounts.length });
-    //     this.render();
-    // },
-
     addOne: function( item ){
         this.render();
-        // if ( item.isValid() ) {
-        //     var view = new app.Views.Front.Account({ model: item });
-        //     this.$el.append( view.render().el );
-        // }
     },
 
     addAll: function(){
         jQuery('.glm-reg-level').html('');
-        //this.model.accounts.each( this.addOne, this );
     },
 
 });
@@ -708,8 +713,13 @@ app.Views.Front.RegRequestRegistrant = Backbone.View.extend({
     },
 
     deleteOne: function(){
-        //console.log( this.model );
-        this.model.destroy();
+        // Remove model  here
+        var modelId = this.model.get('id');
+        this.model.destroy({data: {
+            id: modelId,
+            option: 'delete'
+        }, processData: true});
+
         this.remove();
     },
 
index 8adaf67..31390ba 100644 (file)
@@ -19,5 +19,20 @@ app.Models.Front.RegRequestRegistrant = Backbone.Model.extend({
         lname: '',
     },
 
-    url: ajaxUrl+'&glm_action=regFront&collection=registrant'
+    url: ajaxUrl+'&glm_action=regFront&collection=registrant',
+
+    // sync: function( method, model ){
+    //     //console.log( 'sync in model' );
+    //     // console.log( method );
+    //     // console.log( model );
+    //     switch ( method ) {
+    //         case 'delete':
+    //             console.log( 'Delete called in registrant model' );
+    //             return false;
+    //             //this.url = url + 'model=' + model.toJSON();
+    //             break;
+    //     }
+    //     Backbone.sync.apply(this, arguments);
+    //
+    // },
 });
index 783d003..1b88b8e 100644 (file)
@@ -30,14 +30,13 @@ app.Views.Front.RegClass = Backbone.View.extend({
     },
 
     deleteOne: function( item ){
+        console.log('Delete on regClass registrant called');
+        // this.model.registrants.remove( item );
         this.render();
     },
 
     events: {
         'click .addRegistrant': 'newEntry',
-        // 'click .toggle-class-open': 'toggleClassOpen',
-        // 'click .toggle-class-close': 'toggleClassClose',
-        //'click .glm-reg-level-registrant-delete': 'deleteOne',
     },
 
     toggleClassOpen: function(){
@@ -68,20 +67,21 @@ app.Views.Front.RegClass = Backbone.View.extend({
             data: 'email=' + this.$newEmail.val().trim()
         })
         .done(function(account){
-            console.log(account);
+            //console.log(account);
             // Check for id and email
             if ( account.validEmail !== true ) {
                 // If not found then nothing was found for that email.
                 alert('Must be a valid email address!');
             }  else if ( account.id !== undefined && account.email !== undefined ) {
-                console.log( cart.get( 'request' ) );
+                //console.log( cart.get( 'request' ) );
                 var regRequest = cart.get( 'request' );
                 this.model.registrants.create({
+                    option: 'add',
                     account: account.id,
                     reg_request: regRequest.id,
                     reg_event: this.model.get( 'reg_event' ),
                     reg_class: this.model.get( 'id' ),
-                    reg_request_rate: this.model.get('reg_rate_id'),
+                    reg_rate: this.model.get('reg_rate_id'),
                     email: account.email,
                 });
                 this.$newEmail.val('');
@@ -99,22 +99,12 @@ app.Views.Front.RegClass = Backbone.View.extend({
         });
     },
 
-    // updateCount: function(){
-    //     this.model.set({ reg_count: this.model.accounts.length });
-    //     this.render();
-    // },
-
     addOne: function( item ){
         this.render();
-        // if ( item.isValid() ) {
-        //     var view = new app.Views.Front.Account({ model: item });
-        //     this.$el.append( view.render().el );
-        // }
     },
 
     addAll: function(){
         jQuery('.glm-reg-level').html('');
-        //this.model.accounts.each( this.addOne, this );
     },
 
 });
index 279eeb7..07e79eb 100644 (file)
@@ -21,8 +21,13 @@ app.Views.Front.RegRequestRegistrant = Backbone.View.extend({
     },
 
     deleteOne: function(){
-        //console.log( this.model );
-        this.model.destroy();
+        // Remove model  here
+        var modelId = this.model.get('id');
+        this.model.destroy({data: {
+            id: modelId,
+            option: 'delete'
+        }, processData: true});
+
         this.remove();
     },
 
index d1ed0c3..fac5d5d 100644 (file)
@@ -79,6 +79,9 @@ class GlmMembersAdmin_ajax_regFront
             wp_die();
         }
 
+        if ( !isset($_REQUEST['model']) && $_REQUEST['option'] === 'delete' ) {
+            $_REQUEST['model'] = json_encode($_REQUEST);
+        }
         // Try to decode the JSON
         $modelData = json_decode(stripslashes($_REQUEST['model']), true);
 
index ffd1b98..3eee142 100644 (file)
@@ -14,9 +14,9 @@
  */
 
 // Load Registrations data abstract
-require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequest.php';
+require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequestRegistrant.php';
 
-class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrationsRegRequest
+class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrationsRequestRegistrant
 {
 
     /**
@@ -74,7 +74,7 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
          * Note, the third parameter is a flag that indicates to the Contacts
          * data class that it should flag a group of fields as 'view_only'.
          */
-        //parent::__construct(false, false, true);
+        parent::__construct(false, false, true);
 
     }
 
@@ -82,7 +82,6 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
     {
 
         trigger_error(print_r($modelData,1));
-        dei();
 
         if ( !isset( $modelData['option'] ) ) {
             $option = null;
@@ -90,24 +89,27 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
             $option = $modelData['option'];
         }
 
-        if ( $modelData['id'] == 0 ) {
-            $option = 'add';
-        }
+        // if ( $modelData['id'] == 0 ) {
+        //     $option = 'add';
+        // }
 
+        //trigger_error(print_r($option, 1));
         // Perform specified action
         switch ( $option ) {
 
         case 'add':
             // Check for or create reg_request_event
             if ( $modelData['reg_event'] ) {
-                return false;
+                //return false;
             }
             $regRegquestEventId = $this->wpdb->get_var(
                 $this->wpdb->prepare(
                     "SELECT id
                        FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_event
-                      WHERE reg_event = %d",
-                    $modelData['reg_event']
+                      WHERE reg_event = %d
+                        AND reg_request = %d",
+                    $modelData['reg_event'],
+                    $modelData['reg_request']
                 )
             );
             if ( !$regRegquestEventId ) {
@@ -122,12 +124,12 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
                         'event_datetime' => $modelData['event_datetime'],
                     ),
                     array(
-                        '%d',
-                        '%d',
-                        '%d',
-                        '%s',
-                        '%d',
-                        '%s',
+                        '%d', // account
+                        '%d', // reg_request
+                        '%d', // reg_event
+                        '%s', // event_name
+                        '%d', // reg_time
+                        '%s', // event_datetime
                     )
                 );
                 $regRequestEvent = $this->wpdb->insert_id;
@@ -138,20 +140,150 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
                     "SELECT id
                        FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_class
                       WHERE reg_request_event = %d
-                        AND class = %d",
+                        AND class = %d
+                        AND reg_request = %d",
                     $regRegquestEventId,
-                    $modelData['reg_class']
+                    $modelData['reg_class'],
+                    $modelData['reg_request']
                 )
             );
-            $this->wpdb->insert(
-                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
-                array(
-                    'account'           => $modelData['account'],
-                    'reg_event'         => $modelData['reg_event'],
-                    'reg_request_event' => $modelData['reg_request_event'],
-                ),
-                array()
+            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
+                    )
+                );
+                $regRequestClassId = $this->wpdb->insert_id;
+            }
+            // 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']
+                )
+            );
+            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',
+                    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'],
+                    ),
+                    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
+                    )
+                );
+                $regRequestRate = $this->wpdb->insert_id;
+            }
+
+            // 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'],
+                    $modelData['account'],
+                    $regRegquestEventId,
+                    $regRequestClassId
+                )
             );
+            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
+                    )
+                );
+                $regRequestRegistrantId = $this->wpdb->insert_id;
+            }
+            $regRequstRegistrant = $this->getEntry( $regRequestRegistrantId );
+            echo json_encode( $regRequstRegistrant, JSON_NUMERIC_CHECK );
+            wp_die();
             break;
 
         case 'get':
@@ -161,17 +293,16 @@ class GlmMembersAdmin_registrations_ajax_registrant // extends GlmDataRegistrati
             break;
 
         case 'delete':
+            // TODO: Should we now check to see if this is the last registrant for this reg_request_event,class,rate
+            // Then delete those?
+            $this->wpdb->delete(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
+                array( 'id' => $modelData['id'] ),
+                array( '%d' )
+            );
             break;
 
         default:
-            // If the model has an id then add it to the registrant table
-            // Check to see if the registrant is there if not create one
-            // $registrantId = $this->wpdb->get_var(
-            //     $this->wpdb->prepare(
-            //         "SELECT id
-            //            FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_registrant"
-            //     )
-            // );
             die();  // should never get here
             break;
 
index eacb090..8b72a46 100644 (file)
                 // grab the reg rate for this class
                 $rates = $RegRate->getList( "T.reg_class = " . $rClass['id'] );
                 //echo '<pre>$rates: ' . print_r( $rates, true ) . '</pre>';
-                foreach ( $rates as $rate ) {
-                    $rClass['reg_rate_id']         = $rate['id'];
-                    $rClass['reg_rate_name']       = $rate['name'];
-                    $rClass['reg_rate_base_price'] = $rate['base_rate'];
-                    $rClass['reg_rate_per_reg']    = $rate['per_registrant'];
+                if ( isset( $rates ) && is_array( $rates ) ) {
+                    foreach ( $rates as $rate ) {
+                        $rClass['reg_rate_id']         = $rate['id'];
+                        $rClass['reg_rate_name']       = $rate['name'];
+                        $rClass['reg_rate_base_price'] = $rate['base_rate'];
+                        $rClass['reg_rate_per_reg']    = $rate['per_registrant'];
+                    }
                 }
             }
             //echo '<pre>$regClass: ' . print_r( $regClass, true ) . '</pre>';