Minor typo in text on CartSupport class.
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 5 Sep 2017 20:12:29 +0000 (16:12 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 5 Sep 2017 20:12:29 +0000 (16:12 -0400)
More work on registrations accounts admin pages including added selected account dashboard page and better organization of account admin actions.

classes/regCartSupport.php
models/admin/registrations/accounts.php
views/admin/registrations/account.html [deleted file]
views/admin/registrations/accountDashboard.html [new file with mode: 0644]
views/admin/registrations/accountEdit.html
views/admin/registrations/accountHeader.html [new file with mode: 0644]
views/admin/registrations/accountsDashboard.html [new file with mode: 0644]

index 1af9f95..c460cf3 100644 (file)
@@ -254,7 +254,7 @@ class GlmRegCartSupport
     }
 
     /*
-     * Recalculates and updates all totals for a reg_)time entry
+     * Recalculates and updates all totals for a reg_time entry
      *
      * @param integer $requestId
      *
index b382052..612779a 100644 (file)
@@ -87,7 +87,9 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
 
     public function modelAction($actionData = false)
     {
-        $option             = 'list';
+        $option             = 'dashboard';
+        $view               = 'accountsDashboard';
+        $reason             = false;
         $numbAccounts       = 0;
         $hasAccounts        = false;
         $paging             = true;
@@ -100,7 +102,7 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
         $filterArchived     = false;
         $filterPending      = false;
         $accounts           = false;
-        $view               = 'account';
+        $accountID          = false;
         $account            = false;
         $haveAccount        = false;
         $accountUpdated     = false;
@@ -110,7 +112,11 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
         $namesList          = false;
         $numbDisplayed      = false;
         $lastDisplayed      = false;
-
+        $registrations      = false;
+        $haveRegistrations  = false;
+        $registered         = false;
+        $haveRegistered     = false;
+        
         // Get any provided option
         if (isset($_REQUEST['option'])) {
             $option = $_REQUEST['option'];
@@ -120,47 +126,49 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
         if (isset($_REQUEST['account'])) {
 
             // Make sure it's numeric
-            $this->accountID = ($_REQUEST['account'] - 0);
-
-            if ($this->accountID <= 0) {
-                $this->accountID = false;
-            }
+            $accountID = ($_REQUEST['account'] - 0);
 
+        } else {
+            
+            // Try to get saved
+            $accountID = get_option('glmMembersDatabaseRegistrationsAccountID');
+            
         }
-
-        $view = 'accountEdit';
-
+        
+        if (!$accountID || $accountID <= 0) {
+            $accountID = false;
+        }
+        
         switch ( $option ) {
         case 'add':
+            
             $account = $this->newEntry();
+            $view = 'accountEdit';
+            
             break;
 
         case 'insert':
+            
             $account = $this->insertEntry();
             if ( $account['status'] ) {
                 $accountAdded = true;
             } else {
                 $accountAddError = true;
             }
-            break;
 
-        case 'edit':
-            $account = $this->editEntry( $this->accountID );
-            //echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
-            if ( $account['status'] ) {
-                $haveAccount = true;
-            }
-            //echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
+            $view = 'accountEdit';
+            
             break;
 
         case 'update':
-            $account = $this->updateEntry( $this->accountID );
+            
+            $account = $this->updateEntry( $accountID );
 
             if ( $account['status'] ) {
                 //echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
                 $accountUpdated = true;
                 // Retrieve the Edit Entry again
-                $account = $this->editEntry( $this->accountID );
+                $account = $this->editEntry( $accountID );
                 if ( $account['status'] ) {
                     $haveAccount = true;
                 }
@@ -168,14 +176,69 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
                 $accountUpdateError = true;
             }
 
+            $view = 'accountEdit';
             break;
 
         case 'delete':
-            $oldAccount = $this->deleteEntry( $this->accountID, true );
-            $view   = 'account';
-
+        
+            echo "*** NEED TO CHECK IF IT'S SAVE TO DELETE THIS ACCOUNT ***";
+            
+            // $oldAccount = $this->deleteEntry( $accountID, true );
+            
+            $view = 'accountsDashboard';
+        
+            break;
+        
+        case 'accountDashboard':
+            
+            // Load registration request and registration registrant data classes
+            require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequest.php';
+            $RegRequest = new GlmDataRegistrationsRequest($this->wpdb, $this->config);
+            require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequestRegistrant.php';
+            $RegRequestRegistrant = new GlmDataRegistrationsRequestRegistrant($this->wpdb, $this->config);
+            
+            // Get account base data
+            $account = $this->getEntry($accountID);
+            if ($account) {
+                
+                $haveAccount = true;
+                
+                // Get any registrations submitted
+                $registrations = $RegRequest->getList("T.account = $accountID");
+                if (is_array($registrations) && count($registrations) > 0) {
+                    $haveRegistrations = true;
+                }
+                
+                // Get any events registered
+                $registered = $RegRequestRegistrant->getList("T.account = $accountID");
+                if (is_array($registered) && count($registered) > 0) {
+                    $haveRegistered = true;
+                }
+                
+            }
+                        
+            $view = 'accountDashboard';
+            
+            break;
+            
+        case 'edit':
+            
+            $account = $this->editEntry( $accountID );
+            if ( $account['status'] ) {
+                
+                $haveAccount = true;
+                $view = 'accountEdit';
+                
+            } 
+            
+            break;
+            
         default:
-            $where       = 'true';
+        case 'dashboard';
+
+            $option = 'dashboard';
+            $where  = 'true';
+            
             // Check if we're doing paging
             if (isset($_REQUEST['pageSelect'])) {
 
@@ -224,14 +287,22 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
             $accounts = $accountsResult['list'];
 
             $hasAccounts = ( $accounts !== false && count( $accounts > 0 ) ) ? true: false;
-            $view        = 'account';
 
             // Get full list of names matching this where clause for search box
             $namesList = $this->getIdName( $where );
             unset( $accountsResult );
+
+            $view        = 'accountsDashboard';
+            
             break;
+            
         }
-
+        
+        // If we have a valid account ID, save that for future use
+        if ($accountID > 0) {
+            update_option('glmMembersDatabaseRegistrationsAccountID', $accountID);
+        }
+        
         // Compile template data
         $templateData = array(
             'hasAccounts'        => $hasAccounts,
@@ -246,7 +317,7 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
             'toDate'             => $toDate,
             'filterArchived'     => $filterArchived,
             'filterPending'      => $filterPending,
-            'accountID'          => $this->accountID,
+            'accountID'          => $accountID,
             'haveAccount'        => $haveAccount,
             'accountUpdated'     => $accountUpdated,
             'accountUpdateError' => $accountUpdateError,
@@ -256,6 +327,11 @@ class GlmMembersAdmin_registrations_accounts extends GlmDataRegistrationsAccount
             'namesList'          => $namesList,
             'numbDisplayed'      => $numbDisplayed,
             'lastDisplayed'      => $lastDisplayed,
+            'registrations'      => $registrations,
+            'haveRegistrations'  => $haveRegistrations,
+            'registered'         => $registered,
+            'haveRegistered'     => $haveRegistered,
+            'reason'             => $reason
         );
              // Return status, any suggested view, and any data to controller
         return array(
diff --git a/views/admin/registrations/account.html b/views/admin/registrations/account.html
deleted file mode 100644 (file)
index 7d1f84e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-{include file='admin/registrations/header.html'}
-
-<h3>Account List Page</h3>
-
-    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=add" class="button button-secondary glm-button glm-right">Add A New Account</a>
-
-    <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
-
-        <input type="hidden" name="prevStart" value="{$prevStart}">
-        <input type="hidden" name="nextStart" value="{$nextStart}">
-        <input type="hidden" name="limit" value="{$limit}">
-
-        <div class="">
-            <p>
-                <span class="glm-nowrap">
-                    <b>Name Search: </b><input  id="glmEventsSearch" name="textSearch" type="text" id="autoTest">
-                    <input type="submit" value="Submit">
-                </span>
-            <p>
-        </div>
-
-        <br clear="all">
-    <p><b>Total found:</b> {$numAccounts}&nbsp;&nbsp;</p>
-
-    {if $paging && $numAccounts}
-        <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
-        <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
-    {/if}
-
-{if $hasAccounts}
-    {assign var="i" value="0"}
-    <table class="wp-list-table striped glm-admin-table">
-        <thead>
-            <tr>
-                <th>ID</th>
-                <th>Active</th>
-                <th>Name</th>
-                <th>Created</th>
-                <th>Member ID</th>
-            </tr>
-        </thead>
-        <tbody>
-    {foreach $accounts as $account}
-        {if $i++ is odd by 1}
-            <tr>
-        {else}
-            <tr class="alternate">
-        {/if}
-            <td>{$account.id}</td>
-            <td>{$account.active.name}</td>
-            <td>
-                <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account={$account.id}">{$account.fname} {$account.lname}</a>
-            </td>
-            <td>{$account.date_created.timestamp|date_format:"%D"}</td>
-            <td>{$account.member_id}</td>
-        </tr>
-    {/foreach}
-    </table>
-{/if}
-
-    {if $paging && $numAccounts}
-        <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
-        <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
-    {/if}
-
-    </form>
-
-    <script>
-        jQuery(document).ready(function($){
-            /*
-             * Do autocomplete search for member
-             * label: What will be searched
-             * value: What will be displayed when selected
-             * id: Member id added so we can go to the member while showing what was selected
-             * Also note that autocomplete does not properly render HTML codes, so we
-             * "unescape" them for HTML in Smarty.
-             */
-
-             var availableTags = [
-                {foreach $namesList as $e}
-                    { label: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", value: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", id: '{$e.id}' },
-                {/foreach}
-             ];
-
-             $( "#glmEventsSearch" ).autocomplete({
-                 source: availableTags,
-                 html: true,
-                 position: { my : "right top", at: "right bottom" },
-                 select: function( event, ui ) {
-                     var accountID = ui.item.id;
-                     window.location.replace("{$adminUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account=" + accountID );
-                 },
-                 response: function(event, ui) {
-                     if (!ui.content.length) {
-                         var noResult = { value:"",label:"No results found" };
-                         ui.content.push(noResult);
-                     }
-                 }
-             });
-        });
-    </script>
-
-{include file='admin/footer.html'}
-
diff --git a/views/admin/registrations/accountDashboard.html b/views/admin/registrations/accountDashboard.html
new file mode 100644 (file)
index 0000000..15cfca6
--- /dev/null
@@ -0,0 +1,124 @@
+{include file='admin/registrations/accountHeader.html'}
+
+<h3>Account Dashboard
+    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account={$accountID}" class="button button-secondary glm-button glm-right">Edit Account</a>
+</h3>
+
+
+{if $paging && $numAccounts}
+    <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+    <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+{/if}
+
+<div id="glm-admin-member-registrations-account-detail" class="glm-admin-table">
+    <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">
+                        <h3>Account:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$account.fname} {$account.lname}{if $account.title}, {$account.title}{/if}
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$account.org}
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$account.addr1}
+                    </div>
+                {if $account.addr2}
+                    <div class="glm-small-12 glm-column">
+                        {$account.addr2}
+                    </div>
+                {/if}
+                    <div class="glm-small-12 glm-column">
+                        {$account.city}, {$account.state} {$account.zip}
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {$account.country}
+                    </div>
+                </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">
+                        <h3>Active:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {if $account.active}Yes{/if}
+                    </div>
+                </div>
+            </div>
+            <div class="glm-admin-table">
+                <div class="glm-row">
+                    <div class="glm-small-12 glm-column">
+                        <h3>Login Validated:</h3>
+                    </div>
+                    <div class="glm-small-12 glm-column">
+                        {if $account.validated}Yes{/if}
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<div style="margin-top: 2em">
+    <h1>Registration Requests</h1>
+    {assign var="i" value="0"}
+    <table class="wp-list-table striped glm-admin-table">
+        <thead>
+            <tr>
+                <th>Submitted</th>
+                <th>Payment By</th>
+                <th>Total Payment</th>
+                <th>Status</th>
+            </tr>
+        </thead>
+        <tbody>
+    {foreach $registrations as $reg}
+        {if $i++ is odd by 1}
+            <tr>
+        {else}
+            <tr class="alternate">
+        {/if}
+            <td>{$reg.date_submitted.datetime}</td>
+            <td>{$reg.pay_method.name}</td>
+            <td>{$reg.total}</td>
+            <td>{$reg.status.name}</td>
+        </tr>
+    {/foreach}
+    </table>
+</div>    
+
+<div style="margin-top: 2em">
+    <h1>Registered for Events</h1>
+    {assign var="i" value="0"}
+    <table class="wp-list-table striped glm-admin-table">
+        <thead>
+            <tr>
+                <th>Event Name</th>
+                <th>Date/Time</th>
+            </tr>
+        </thead>
+        <tbody>
+    {foreach $registered as $reg}
+        {if $i++ is odd by 1}
+            <tr>
+        {else}
+            <tr class="alternate">
+        {/if}
+            <td>{$reg.event_name}</td>
+            <td>{$reg.event_datetime.datetime}</td>
+        </tr>
+    {/foreach}
+    </table>
+</div>    
+
+
+
+{include file='admin/footer.html'}
+
index 58f9a2d..e817197 100644 (file)
@@ -1,27 +1,8 @@
-{include file='admin/registrations/header.html'}
+{include file='admin/registrations/accountHeader.html'}
 
-    <a href="{$thisUrl}?page={$thisPage}&glm_action=accounts"
-       class="button button-secondary glm-button glm-right">Return to Account List</a>
+    <a href="{$thisUrl}?page={$thisPage}&glm_action=accounts&option=accountDashboard&account={$accountID}" class="button button-secondary glm-button glm-right">Return to Account</a>
 
   {if $option == 'edit' || $option == 'update'}
-    <a id="deleteAccountButton" class="button button-secondary glm-button glm-right">Delete this Account</a>
-    <div id="deleteAccountDialog" class="glm-dialog-box" title="Delete Account">
-        <center>
-            <p><a id="deleteAccountCancel" class="button button-primary">Cancel</a></p>
-            <p><input id="deleteAccountSubmit" type="submit" value="Delete this contact"></p>
-        </center>
-        <div class="glm-item-container">
-            <p><center><span class="glm-error">WARNING:</span></center></p>
-            <p>
-                <span class="glm-warning">Clicking the "Delete this Account" button above will
-                delete all of the data and images associated with this contact.
-                </span>
-            </p>
-            <p>
-                <span class="glm-error">Once deleted, this information will no longer be available and cannot be retrieved!</span>
-            </p>
-        </div>
-    </div>
     <h2>Edit Account
   {else}
     <h2>Add new Account
@@ -33,6 +14,7 @@
         {if $accountAddError}<span class="glm-error glm-flash-updated">Account Add Error</span>{/if}
     </h2>
 
+    <p> </p>
 
     <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
         <input type="hidden" name="glm_action" value="accounts">
diff --git a/views/admin/registrations/accountHeader.html b/views/admin/registrations/accountHeader.html
new file mode 100644 (file)
index 0000000..2cc4960
--- /dev/null
@@ -0,0 +1,7 @@
+<div class="wrap">
+<h2>Registration Accounts</h2>
+<h2 class="nav-tab-wrapper">
+    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts" class="nav-tab{if $option==dashboard} nav-tab-active{/if}">Dashboard</a>
+    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&option=accountDashboard" class="nav-tab{if $option==accountDashboard} nav-tab-active{/if}">Selected Account</a>
+</h2>
+<div id="glm-admin-content-container">
diff --git a/views/admin/registrations/accountsDashboard.html b/views/admin/registrations/accountsDashboard.html
new file mode 100644 (file)
index 0000000..bfcd4c4
--- /dev/null
@@ -0,0 +1,104 @@
+{include file='admin/registrations/accountHeader.html'}
+
+<h3>Accounts Dashboard
+    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=add" class="button button-secondary glm-button glm-right">Add A New Account</a>
+</h3>
+
+    <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+
+        <input type="hidden" name="prevStart" value="{$prevStart}">
+        <input type="hidden" name="nextStart" value="{$nextStart}">
+        <input type="hidden" name="limit" value="{$limit}">
+
+        <div class="">
+            <p>
+                <span class="glm-nowrap">
+                    <b>Name Search: </b><input  id="glmEventsSearch" name="textSearch" type="text" id="autoTest">
+                    <input type="submit" value="Submit">
+                </span>
+            <p>
+        </div>
+
+        <br clear="all">
+    <p><b>Total found:</b> {$numAccounts}&nbsp;&nbsp;</p>
+
+    {if $paging && $numAccounts}
+        <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+        <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+    {/if}
+
+{if $hasAccounts}
+    {assign var="i" value="0"}
+    <table class="wp-list-table striped glm-admin-table">
+        <thead>
+            <tr>
+                <th>ID</th>
+                <th>Active</th>
+                <th>Name</th>
+                <th>Created</th>
+                <th>Member ID</th>
+            </tr>
+        </thead>
+        <tbody>
+    {foreach $accounts as $account}
+        {if $i++ is odd by 1}
+            <tr>
+        {else}
+            <tr class="alternate">
+        {/if}
+            <td>{$account.id}</td>
+            <td>{$account.active.name}</td>
+            <td>
+                <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=accountDashboard&account={$account.id}">{$account.fname} {$account.lname}</a>
+            </td>
+            <td>{$account.date_created.timestamp|date_format:"%D"}</td>
+            <td>{$account.member_id}</td>
+        </tr>
+    {/foreach}
+    </table>
+{/if}
+
+    {if $paging && $numAccounts}
+        <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+        <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+    {/if}
+
+    </form>
+
+    <script>
+        jQuery(document).ready(function($){
+            /*
+             * Do autocomplete search for member
+             * label: What will be searched
+             * value: What will be displayed when selected
+             * id: Member id added so we can go to the member while showing what was selected
+             * Also note that autocomplete does not properly render HTML codes, so we
+             * "unescape" them for HTML in Smarty.
+             */
+
+             var availableTags = [
+                {foreach $namesList as $e}
+                    { label: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", value: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", id: '{$e.id}' },
+                {/foreach}
+             ];
+
+             $( "#glmEventsSearch" ).autocomplete({
+                 source: availableTags,
+                 html: true,
+                 position: { my : "right top", at: "right bottom" },
+                 select: function( event, ui ) {
+                     var accountID = ui.item.id;
+                     window.location.replace("{$adminUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account=" + accountID );
+                 },
+                 response: function(event, ui) {
+                     if (!ui.content.length) {
+                         var noResult = { value:"",label:"No results found" };
+                         ui.content.push(noResult);
+                     }
+                 }
+             });
+        });
+    </script>
+
+{include file='admin/footer.html'}
+