From: Steve Sutton Date: Thu, 21 Sep 2017 20:24:19 +0000 (-0400) Subject: Work on registrant add delete X-Git-Tag: v1.0.0^2~396 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=8be56297a1a437186fca91062166fa934903a55b;p=WP-Plugins%2Fglm-member-db-registrations.git Work on registrant add delete Can now add reg_request_registrant and delete them. --- diff --git a/js/frontRegApp.js b/js/frontRegApp.js index 6b36e35..670519d 100644 --- a/js/frontRegApp.js +++ b/js/frontRegApp.js @@ -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(); }, diff --git a/js/models/front/regRequestRegistrant.js b/js/models/front/regRequestRegistrant.js index 8adaf67..31390ba 100644 --- a/js/models/front/regRequestRegistrant.js +++ b/js/models/front/regRequestRegistrant.js @@ -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); + // + // }, }); diff --git a/js/views/front/regClass.js b/js/views/front/regClass.js index 783d003..1b88b8e 100644 --- a/js/views/front/regClass.js +++ b/js/views/front/regClass.js @@ -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 ); }, }); diff --git a/js/views/front/regRequestRegistrant.js b/js/views/front/regRequestRegistrant.js index 279eeb7..07e79eb 100644 --- a/js/views/front/regRequestRegistrant.js +++ b/js/views/front/regRequestRegistrant.js @@ -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(); }, diff --git a/models/admin/ajax/regFront.php b/models/admin/ajax/regFront.php index d1ed0c3..fac5d5d 100644 --- a/models/admin/ajax/regFront.php +++ b/models/admin/ajax/regFront.php @@ -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); diff --git a/models/admin/ajax/regFront/registrant.php b/models/admin/ajax/regFront/registrant.php index ffd1b98..3eee142 100644 --- a/models/admin/ajax/regFront/registrant.php +++ b/models/admin/ajax/regFront/registrant.php @@ -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; diff --git a/models/front/registrations/registration.php b/models/front/registrations/registration.php index eacb090..8b72a46 100644 --- a/models/front/registrations/registration.php +++ b/models/front/registrations/registration.php @@ -130,11 +130,13 @@ // grab the reg rate for this class $rates = $RegRate->getList( "T.reg_class = " . $rClass['id'] ); //echo '
$rates: ' . print_r( $rates, true ) . '
'; - 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 '
$regClass: ' . print_r( $regClass, true ) . '
';