Admin registration selected event dashboard improvements.
authorChuck Scott <cscott@gaslightmedia.com>
Mon, 20 Nov 2017 19:13:56 +0000 (14:13 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Mon, 20 Nov 2017 19:13:56 +0000 (14:13 -0500)
Started reformatting top of reg event dashboard eventDashboard.html
Added total attendee counts to top of dashboard
Added max attendees input field and AJAX submit button to non-date-specific dashboard
Adeded option to some dataRegEvent functions to use new post-processing code to get registration totals for an event or events

classes/data/dataRegEvent.php
models/front/registrations/index.php
models/front/registrations/registration.php
setup/databaseScripts/create_database_V0.0.18.sql
views/admin/registrations/eventDashboard.html

index 081a7bf..6955b14 100644 (file)
@@ -410,7 +410,7 @@ class GlmDataRegistrationsRegEvent extends GlmDataAbstract
                FROM ".GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time
                WHERE reg_event = ".$result_data['id']
             , ARRAY_A);
-echo "<pre>".print_r($counts,1)."</pre>";
+
             $result_data['total'] = $counts['total'];
             $result_data['registered'] = $counts['registered'];
             $result_data['cartHold'] = $counts['cartHold'];
@@ -541,10 +541,11 @@ echo "<pre>".print_r($counts,1)."</pre>";
      * @param boolean $extended         Request added data from Event add-on if true
      * @param boolean $forEdit          Ask for results to include arrays necessary for construction of input fields
      * @param boolean $withRecurData    Ask for all recirrences and recurrence times for event if true
+     * @param boolean $counts           Ask for attendee counts
      *
      * @return array All data related to the setup/configuration of a registration event
      */
-    public function getEventConfig($id = false, $extended = false, $forEdit = false, $withRecurData = false)
+    public function getEventConfig($id = false, $extended = false, $forEdit = false, $withRecurData = false, $counts = false)
     {
 
         $regEventFirstTime = false;
@@ -558,6 +559,9 @@ echo "<pre>".print_r($counts,1)."</pre>";
             $this->postProcAddedEventData = true;
         }
 
+        // If counts are requested
+        $this->postProcAddRegistrantsCount = true;
+
         // Try to get the base information - and extended data from the Event add-on if requested
         if ($id > 0) {
             $this->regEventData = $this->getEntry($id, 'id', ' TRUE ', $forEdit);
@@ -566,6 +570,9 @@ echo "<pre>".print_r($counts,1)."</pre>";
             }
         }
 
+        // Restore counts request flag
+        $this->postProcAddRegistrantsCount = false;
+
         // Get all reg_time records for this event
         require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegTime.php';
         $RegTime = new GlmDataRegistrationsRegTime($this->wpdb, $this->config);
@@ -965,11 +972,11 @@ echo "<pre>".print_r($counts,1)."</pre>";
         } // each recurrence
 
         // If this is a time specific event
+        $deleteList = '';
+        $deleteSep = '';
         if ($this->regEventData['time_specific']['value']) {
 
             // Check all reg_times we had from before to make sure they were matched with a recur time
-            $deleteList = '';
-            $deleteSep = '';
             foreach($this->regEventData['reg_time'] as $regTimeKey=>$regTimeVal) {
                 if (!isset($regTimeVal['OK'])) {
 
index 51de79e..1a6cf98 100644 (file)
@@ -105,10 +105,18 @@ class GlmMembersFront_registrations_index
             $page = 'list';
         }
 
+        if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+            trigger_error("Registration Front-End Sub-Controller: Page = $page ", E_USER_NOTICE);
+        }
+
         // Load the specified model
         $pageFile = GLM_MEMBERS_REGISTRATIONS_PLUGIN_PATH.'/models/front/registrations/'.$page.'.php';
         require_once $pageFile;
 
+        if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+            trigger_error("Sub-Controller Calling: $pageFile", E_USER_NOTICE);
+        }
+
         // load and run the model
         $regClass = 'GlmMembersFront_registrations_'.$page;
         $regModel = new $regClass($this->wpdb, $this->config);
index 33c4bc8..e4deab2 100644 (file)
             } // - End loop through events.
         }
 
-        // echo '<pre>$registrants: ' . print_r( $registrants, true ) . '</pre>';
+        // echo '<pre>$registrants: ' . print_r( $regEvent, true ) . '</pre>';
 
         // Compile template data
         $templateData = array(
index d5aca0a..270736d 100644 (file)
@@ -240,6 +240,8 @@ CREATE TABLE {prefix}reg_event (
 -- One or more for each event
 CREATE TABLE {prefix}reg_time (
     id INT NOT NULL AUTO_INCREMENT,
++    active                                                     -- Flag. True if registrations is available for this time
++    non_time_specific                                          -- Flag. True if this is a pseudo time for non-time-specific events - Other informational times for the event will have this flag off
     reg_event INT NULL,                                         -- Pointer to reg_event table
     event_time INT NULL,                                        -- ID of events times table entry in Events add-on - If false (0), then this is a pseudo entry to use for all registrations (non-date/time specific)
     start_datetime DATETIME NULL,                               -- Date and time when event instance starts
index ae688e8..712587d 100644 (file)
@@ -1,6 +1,6 @@
 {include file='admin/registrations/eventHeader.html'}
 
-<h1>Selected Event Dashboard</h1>
+<h1>{$regEvent.event_name}</h1>
 
     {if $haveMessages}
         <div class="glm-error" style="font-size: 1.5rem; line-height: 1.5rem; margin-top: 1rem;">
     {/if}
     
 
-<div class="glm-admin-table-inner glm-admin-table">
+<div class="glm-admin-table-inner">
 
-    <h3>Event</h3>
-    <div id="glm-admin-member-dashboard" class="glm-admin-table">
+    <div id="glm-admin-member-dashboard glm-admin-table">
       {if $haveRegEvent}
 
         <div class="glm-row">
-            <div class="glm-small-4 glm-left">
-                <div class="glm-admin-table">
-                    <div class="glm-row">
-                        <div class="glm-small-12 glm-column">
-                            {$regEvent.event_name}
-                        </div>
+            <div class="glm-small-12 glm-large-4 glm-columns">
+                <div class="glm-row">
+                    <div class="glm-small-6 glm-column">
+                        <h3>Event Code:</h3>
+                    </div>
+                    <div class="glm-small-6 glm-column">
+                        {$regEvent.event_code}
                     </div>
                 </div>
-                <div class="glm-admin-table">
-                    <div class="glm-row">
-                        <div class="glm-small-12 glm-column">
-                            <h4>First Event Time:</h4>
-                        </div>
-                        <div class="glm-small-12 glm-column">
-                            {$regEventFirstTime.start_time.datetime}
-                        </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>First Event Time:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEventFirstTime.start_time.datetime}
                     </div>
                 </div>
-                <div class="glm-admin-table">
-                    <div class="glm-row">
-                        <div class="glm-small-12 glm-column">
-                            <h4>Last Event Time:</h4>
-                        </div>
-                        <div class="glm-small-12 glm-column">
-                            {$regEventLastTime.end_time.datetime}
-                        </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Last Event Time:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEventLastTime.end_time.datetime}
                     </div>
                 </div>
             </div>
-            <div class="glm-small-4 glm-left">
-                <div class="glm-admin-table">
-                    <div class="glm-row">
-                        <div class="glm-small-12 glm-column">
-                            <h4>Event Code:</h4>
-                        </div>
-                        <div class="glm-small-12 glm-column">
-                            {$regEvent.event_code}
-                        </div>
+            <div class="glm-small-12 glm-large-4 glm-columns">
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Maximum Attendees:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEvent.total}
+                    </div>
+                </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Registered:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEvent.registered}
+                    </div>
+                </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Cart Hold:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEvent.cartHold}
+                    </div>
+                </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Currently Available:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEvent.curAvail}
+                    </div>
+                </div>
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Total Available:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$regEvent.totalAvail}
                     </div>
                 </div>
             </div>
-            {if apply_filters('glm_members_menu_members', true)}
-            <div class="glm-small-4 glm-right">
-                {$r_link = apply_filters('glm_members_add_link_to_registrations_event_list_entry', $regEvent.event)}
-                {if is_array($r_link)}
-                    <a class="button button-secondary glm-button glm-right" href="{$r_link.url|escape:'string'}">Edit {$r_link.title}</a>
-                {/if}
-                <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=edit&regEventID={$regEvent.id}" class="button button-secondary glm-button glm-right">Edit Registration Event</a>
+            
+        {if apply_filters('glm_members_menu_members', true)}
+            <div class="glm-small-12 glm-large-4 glm-columns">
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=edit&regEventID={$regEvent.id}" class="button button-secondary glm-button">Edit Registration Event</a>
+          {$r_link = apply_filters('glm_members_add_link_to_registrations_event_list_entry', $regEvent.event)}
+          {if is_array($r_link)}
+                        <a class="button button-secondary glm-button" href="{$r_link.url|escape:'string'}">Edit {$r_link.title}</a>
+          {/if}
+                    </div>
+                </div>
             </div>
-            {/if}
+        {/if}
         </div>
-        {else}
+      {else}
             <h3>Did not find selected event.</h3>
-        {/if}
+      {/if}
     </div>
 </div>
 
         <tr><th colspan="2">Unlimited registration - Not maintaining available inventory.</th></tr>
         {else}
         <tr><td colspan="2">&nbsp;</td></tr>
-        <tr><td colspan="2">Limited availability for this event - the below numbers are for all days.
-            <br>*** NEED TO ADD EDITING OF MAX ATTENDEES ***
+        <tr><td colspan="2">Limited availability for this event - the below numbers are for all days.</td></tr>
+        <tr><th style="text-align: left">Maximum Attendees:</th><td>
+            <input class="glm-form-text-input-veryshort availabilityInput" type="text" id="maxAtt" value="{$rt.attendee_max}">
+            <div id="availSubmit" class="button-primary" data-timeid="{$rt.id}">Upate</div>
+            <span id="submit-flash" class="glm-notice" style="display: none; margin-left: 1rem;">Submitted</span>
         </td></tr>
-        <tr><th>Maximum attendees: </th><td>{$rt.attendee_max}</td></tr>
-        <tr><th>Registered: </th><td>{$rt.attendee_count}</td></tr>
-        <tr><th>Attendees pending in carts: </th><td>{$rt.attendees_pending}</td></tr>
-        <tr><th>Currently available: </th><td>{$rt.attendees_available}</td></tr>
+        <tr><th style="text-align: left">Registered Attendees:</th><td id="regAtt">{$rt.attendee_count}</td></tr>
+        <tr><th style="text-align: left">Pending in Carts:</th><td id="pendAtt">{$rt.attendees_pending}</td></tr>
+        <tr><th style="text-align: left">Available for Registration:</th><td id="availAtt">{$rt.attendees_available}</td></tr>
         {/if}
       {/foreach}
     </table>
         <tr><th style="text-align: left">Pending in Carts:</th><td id="dialogPendAtt"></td></tr>
         <tr><th style="text-align: left">Available for Registration:</th><td id="dialogAvailAtt"></td></tr>
         <tr><td style="text-align: right">
-            <div id="availabilitySubmit" class="button-primary" data-timeid="">Upate</div>      
+            <div id="dialogAvailSubmit" class="button-primary" data-timeid="">Upate</div>      
         </td></tr>
     </table>
 </div>
                             $('#dialogRegAtt').html(calEvent.count);
                             $('#dialogPendAtt').html(calEvent.pending);
                             $('#dialogAvailAtt').html(calEvent.available);
-                            $('#availabilitySubmit').attr('data-timeid', calEvent.timeid);
+                            $('#dialogAvailSubmit').attr('data-timeid', calEvent.timeid);
                             // Re-calculate total available when entering
 
                             $('#dialogMaxAtt').on('change', function() {
                                 $('#dialogMaxAtt').off('change');
                             });
                             
-                            $('#availabilitySubmit').on('click', function() {
+                            $('#dialogAvailSubmit').on('click', function() {
                                 var max = $('#dialogMaxAtt').val();
-                                var timeid = $('#availabilitySubmit').attr('data-timeid');
+                                var timeid = $('#dialogAvailSubmit').attr('data-timeid');
                                 $.ajax({
                                     url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&max=" + max + "&reg_time=" + timeid
                                  });
                                 $('#availabilityEditDialog').dialog('close');           
-                                $('#availabilitySubmit').off('click');           
+                                $('#dialogAvailSubmit').off('click');           
                                 
                                 calEvent.title = max + '-' + calEvent.count + '-' + calEvent.pending + '-' + calEvent.available;
                                 $('#eventCalendar').fullCalendar('updateEvent', calEvent);      
 
                        initFullCalendar();
 
+            } else {
+
+                // Not date specific so do one counts update form
+                $('#maxAtt').on('change', function() {
+                    var max = $('#maxAtt').val();
+                    var count = $('#regAtt').html();
+                    var pending = $('#pendAtt').html();
+                    var available = max - count - pending;
+                    if (available < 0) {
+                        max = max - available;
+                        $('#maxAtt').val(max);
+                        available = 0;
+                    }
+                    $('#availAtt').html(available);
+                });
+                
+                $('#availSubmit').on('click', function() {
+                    var max = $('#maxAtt').val();
+                    var time = $('#availSubmit').attr('data-timeid');
+                    
+                    $.ajax({
+                        url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&max=" + max + "&reg_time=" + time
+                    });
+                    $("#submit-flash").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+                });
+
+                
+
             }
                             
             // Flash certain elements for a short time after display