Added list of requests needing attention to Reg Events Dashboard with edit of status.
authorChuck Scott <cscott@gaslightmedia.com>
Fri, 28 Sep 2018 18:08:19 +0000 (14:08 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Fri, 28 Sep 2018 18:08:19 +0000 (14:08 -0400)
Removd a couple request status values that are not currently needed.

classes/data/dataRegRequest.php [changed mode: 0644->0755]
config/plugin.ini [changed mode: 0644->0755]
models/admin/registrations/events_dashboard.php [changed mode: 0644->0755]
views/admin/registrations/eventRegistrants.html
views/admin/registrations/eventsDashboard.html [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index e8725e0..5228eaa
@@ -466,10 +466,12 @@ class GlmDataRegistrationsRegRequest extends GlmDataAbstract
      *
      * @param string $where Where clause to filter list
      * @param boolean $getStats Flag to get additional stats for cart
+     * @param string $orderBy ORDER BY clause for results
+     * @param boolean $includeSummary Include HTML summary of submitted request if true
      *
      * @return object Class object
      */
-    public function getRegRequestListSimplified($where = false, $getStats = false)
+    public function getRegRequestListSimplified($where = false, $getStats = false, $orderBy = '', $includeSummary = false)
     {
 
         $savedFields = $this->fields;
@@ -485,10 +487,15 @@ class GlmDataRegistrationsRegRequest extends GlmDataAbstract
             'account_lname' => $savedFields['account_lname'],
             'status'        => $savedFields['status'],
             'date_created'  => $savedFields['date_created'],
-            'last_update'   => $savedFields['last_update']
+            'last_update'   => $savedFields['last_update'],
+            'total'         => $savedFields['total']
         );
 
-        $requestsSimplified = $this->getList($where);
+        if ($includeSummary) {
+            $this->fields['summary'] = $savedFields['summary'];
+        }
+
+        $requestsSimplified = $this->getList($where, $orderBy);
         $this->fields = $savedFields;
         $this->postProcRegRequest = $savedPostProcess;
 
old mode 100644 (file)
new mode 100755 (executable)
index b68e8f8..23e5d86
@@ -202,9 +202,9 @@ billing_field_numb['FAX']                       = 12
 ;
 submission_status[0]                            = 'In Cart'
 submission_status[10]                           = 'Complete'
-submission_status[20]                           = 'Unpaid'
+submission_status[20]                           = 'Unpaid'
 submission_status[30]                           = 'Card Pending'
-submission_status[40]                           = 'Card Declined'
+submission_status[40]                           = 'Card Declined'
 submission_status[50]                           = 'Payment Pending'
 submission_status[60]                           = 'Pay On Arrival'
 submission_status[70]                           = 'Administrative Hold'
old mode 100644 (file)
new mode 100755 (executable)
index 48a8e78..c905d25
@@ -25,12 +25,13 @@ $paging             = true;
 $prevStart          = false;
 $nextStart          = false;
 $start              = 1;
-$limit              = 20;        // Set to the number of listings per page
+$limit              = 10;        // Set to the number of listings per page
 $namesList          = false;
 $textSearch         = false;
 $haveRegEvent       = false;
 $alphaWhere         = '';
 $where              = ' TRUE ';
+$haveRequests       = false;
 
 
 
@@ -98,9 +99,97 @@ if ($list !== false) {
     }
 }
 
+
 // Get full list of event names matching the current where clause for text search box
 $namesList = $this->getSimpleRegEventsList($where);
 
+/*
+ * Build list of status options for display of request reccords.
+ */
+$statusSelected = $this->config['submission_status_numb']['PAYMENT_PEND'];
+if (isset($_REQUEST['request_status_select'])) {
+    $statusSelected = $_REQUEST['request_status_select'];
+}
+
+/**
+ * ******* TEMPORARY - USE SAME FUNCTION IN MAIN PLUGIN WHEN THAT'S UPDATED (less the number 2 at the end)  *************
+ */
+// require_once GLM_MEMBERS_REGISTRATIONS_MAIN_PLUGIN_PATH.'/classes/glmPluginSupport.php';
+function glmMembersConfigArraySetup2( $configTable, $configNumbTable = false, $configSelectedArray = false)
+{
+
+    // Check if config table array exits
+    if (!is_array($configTable) || count($configTable) == 0) {
+        return false;
+    }
+
+    // Build base array
+    $conf = array();
+    foreach ($configTable as $key=>$descr) {
+        $conf[$key] = array(
+            'id' => $key,
+            'descr' => $descr,
+            'name' => false,
+            'selected' => false
+        );
+    }
+
+    // If name->number array add that data
+    if (is_array($configNumbTable) && count($configNumbTable) > 0) {
+        foreach ($configNumbTable as $name=>$key) {
+            if (isset($conf[$key])) {
+                $conf[$key]['name'] = $name;
+            }
+        }
+    }
+
+    // If a selected array is provided, add that data
+    if (is_array($configSelectedArray) && count($configSelectedArray) > 0) {
+        foreach ($configSelectedArray as $key) {
+            if (isset($conf[$key])) {
+                $conf[$key]['selected'] = true;
+            }
+        }
+    }
+
+    return $conf;
+
+}
+
+// Check for an update to the status of a request
+if (isset($_REQUEST['option2']) && $_REQUEST['option2'] == 'updateStatus' && isset($_REQUEST['requestId']) && isset($_REQUEST['status'])) {
+
+    // Make sure we have the required parameters
+    $requestId = ($_REQUEST['requestId']-0);
+    $status = ($_REQUEST['status']-0);
+    if ($requestId > 0 && $status > 0) {
+        $sql = "
+            UPDATE ".GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request
+               SET status = $status
+             WHERE id = $requestId
+        ";
+        $this->wpdb->query($sql);
+    }
+
+}
+
+// Get list of request status options for selection except certain ones. - Save a copy with all options for edit.
+$requestStatusSelect = glmMembersConfigArraySetup($this->config['submission_status'], $this->config['submission_status_numb']);
+$requestStatusEditSelect = $requestStatusSelect;
+unset($requestStatusSelect[$this->config['submission_status_numb']['CART']]);
+unset($requestStatusEditSelect[$this->config['submission_status_numb']['CART']]);
+unset($requestStatusSelect[$this->config['submission_status_numb']['COMPLETE']]);
+unset($requestStatusSelect[$this->config['submission_status_numb']['FAILED']]);
+unset($requestStatusSelect[$this->config['submission_status_numb']['CANCELED']]);
+
+// Get list of requests matching selection status
+require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequest.php';
+$Requests = new GlmDataRegistrationsRegRequest($this->wpdb, $this->config);
+$requests = $Requests->getRegRequestListSimplified("status = $statusSelected", false, 'bill_lname, bill_fname', true);
+if (is_array($requests) && count($requests) > 0) {
+    $haveRequests = true;
+}
+
 $templateData = array(
     'regEventsCount'          => $regEventsCount,
     'haveRegEvents'           => $haveRegEvents,
@@ -117,7 +206,12 @@ $templateData = array(
     'namesList'               => $namesList,
     'textSearch'              => $textSearch,
     'regEvent'                => $regEvent,
-    'haveRegEvent'            => $haveRegEvent
+    'haveRegEvent'            => $haveRegEvent,
+    'requestStatusEditSelect' => $requestStatusEditSelect,
+    'requestStatusSelect'     => $requestStatusSelect,
+    'statusSelected'          => $statusSelected,
+    'haveRequests'            => $haveRequests,
+    'requests'                => $requests
 );
 
 $view = 'eventsDashboard';
index 59753d1..db4523b 100755 (executable)
@@ -40,7 +40,7 @@
             <span class="glm-nowrap">
                 <b>Time Selected</b>
                 <select name="time">
-                    <option value=""></option>
+                    <option value=""></option>Card De
       {foreach $times as $time}
         {if $time.start_datetime.timestamp}
                     <option value="{$time.id}"{if $selectedTime == $time.id} selected{/if}>{$time.start_datetime.datetime}</option>
old mode 100644 (file)
new mode 100755 (executable)
index 5a34b77..8d1e972
     {/if}
 
 </div>
+
+<div class="glm-admin-table-inner glm-admin-table">        
+    <p>
+        <h2 class="glm-admin-table-header">List of {$terms.reg_term_registration_cap}&nbsp;Requests Needing Attention</h2>
+    </p>
+    <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+        <div class="glm-row">   
+            <b>Selected Status:</b>&nbsp;&nbsp;
+    {foreach $requestStatusSelect as $s}
+            <input type="radio" value="{$s.id}" name="request_status_select" value="{$s.id}" onChange="this.form.submit();"{if $s.id == $statusSelected}checked{/if}>&nbsp;{$s.descr}&nbsp;&nbsp;&nbsp;
+    {/foreach}
+        </div>
+    </form>
+    <table class="wp-list-table striped glm-admin-table-single">
+        <thead>
+            <tr>
+                <th>Request ID</th>
+                <th>Requested By</th>
+                <th>Status</th>
+                <th>Total</th>
+                <th>Date Created</th>
+                <th>Last Update</th>
+            </tr>
+        </thead>
+        <tbody>
+{if $haveRequests}
+    {assign var="i" value="0"}
+    {foreach $requests as $r}
+        {if $i++ is odd by 1}
+            <tr id="glmRegRequestLine_{$r.id}" data-request="{$r.id}" class="glm-request-line">
+        {else}
+            <tr id="glmRegRequestLine_{$r.id}" data-request="{$r.id}" class="glm-request-line alternate">
+        {/if}
+                <td style="width: 50px;">
+                    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-requests&option=requestDashboard&requestID={$r.id}">{$r.id}</a>
+                </td>
+                <td>{$r.account_fname} {$r.account_lname}</td>
+                <td>{$r.status.nameEsc}</td>
+                <td>{$r.total}
+                <td>{$r.date_created.datetime}</td>
+                <td>{$r.last_update.datetime}</td>
+            </tr>
+            <tr id="requestLinks_{$r.id}" class="glm-hidden glm-request-links">
+                <td colspan="6" style="padding: .8rem; background-color: #fff;">
+                    <span class="attendee-edit-link">
+                        <a id="glm-request-link_{$r.id}" href="#" data-request="{$r.id}" class="glm-request-link">Edit Request Status</a> | 
+                        <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-requests&option=requestDashboard&requestID={$r.id}">View Request Detail</a>
+                    </span>
+                    <br>
+                </td>
+            </tr>
+            <tr id="requestEdit_{$r.id}" class="glm-hidden glm-request-detail">
+                <td colspan="6" style="padding: .8rem; background-color: #f8ffff; border: 1px solid black;">
+                    <div>
+                        <h2>Edit This Request</h2>
+                        <b>Set Status To:</b>&nbsp;&nbsp;
+    {foreach $requestStatusEditSelect as $s}
+                        <input type="radio" value="{$s.id}" name="glm_request_status_{$r.id}" value="{$s.id}" onChange="this.form.submit();"{if $s.id == $statusSelected}checked{/if}>&nbsp;{$s.descr}&nbsp;&nbsp;&nbsp;
+    {/foreach}
+                        <br>
+                        <span class="button button-small glm-request-edit-save">Save</span>
+                        <span class="button button-small glm-cancel-link">Cancel Edit</span>
+                        <p />
+                    </div>
+                    <div>
+                        <b>NOTE:</b> The summary below is a copy from when the request was submitted. Any changes to {$terms.reg_term_attendee_plur} after that are not shown here.<br> 
+                        {$r.summary}
+                    </div>
+                </td>
+            </tr>
+    {/foreach}
+{else}
+            <tr class="alternate"><td colspan="2">(no requests with selected status)</td></tr>
+{/if}
+        </tbody>
+    </table>
+</div>
+
 <script type="text/javascript">
     jQuery(document).ready(function($) {
 
          var availableTags = [
    {foreach $namesList as $m}
                 { label: "{$m.event_name|unescape:'html'|replace:'"':''}", value: "{$m.event_name|unescape:'html'|replace:'"':''}", id: '{$m.id}' },
-            {/foreach}
+   {/foreach}
          ];
 
          // Autocomplete for list Text Search
          $('#filterCategories').multiselect();
          $('#exportFilterCategories').multiselect();
 
+         // Request Line Hover Action
+         var requestEditId = false;
+         var requestHoverId = false;
+         $('.glm-request-line').mouseenter( function() {
+             if (requestEditId) {
+                 return;
+             }
+             requestHoverId = $(this).attr('data-request');
+             $('.glm-request-links').addClass('glm-hidden');
+             $('#requestLinks_' + requestHoverId).removeClass('glm-hidden');
+         });
+
+         // Request Edit Action
+         $('.glm-request-link').on('click', function() {
+             requestEditId = $(this).attr('data-request');
+             $('#requestEdit_' + requestEditId).removeClass('glm-hidden');
+         });
+
+         // Cancel Edit Action
+         $('.glm-cancel-link').on('click', function() {
+             if (!requestEditId) {
+                 return;
+             }
+             $('#glm-request-link_' + requestEditId).focus();
+             $('.glm-request-detail').addClass('glm-hidden');
+             requestEditId = false;
+         });
+
+         // Request Edit Save Action
+         $('.glm-request-edit-save').on('click', function() {
+             var statusSelected = $('input[name=glm_request_status_' + requestEditId + ']:checked').val();
+             window.location.replace("{$adminUrl}?page=glm-members-admin-menu-registrations-events&option=dashboard&option2=updateStatus&requestId=" + requestEditId + "&status=" + statusSelected );
+         });
+
     });
 </script>