From 31ae507b1b8bed024e18581f244e16e9c74e927b Mon Sep 17 00:00:00 2001
From: Tom Lake <tswsl1989@sucs.org>
Date: Thu, 27 Sep 2012 15:51:24 +0000
Subject: [PATCH] Add member list from SU API

---
 components/susignup-admin.php | 24 +++++++++++++++++++++++
 htdocs/css/susignup-admin.css |  2 +-
 templates/susignup-admin.tpl  | 36 ++++++++++++++++++++++++++++-------
 3 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/components/susignup-admin.php b/components/susignup-admin.php
index 9751558..bd930b3 100644
--- a/components/susignup-admin.php
+++ b/components/susignup-admin.php
@@ -244,6 +244,30 @@ if (isset($session->groups[$permission])) {
 			$smarty->assign("failusers", $failures);
 			$smarty->assign("successes", count($successes));
 		}
+	} else if ($mode == 'list') {
+		//Get list of members according to the SU
+		$url = "https://$suapi_user:$suapi_pass@hap.swansea-union.co.uk/memberships/Membership.asmx/GetMemberListData?GroupingId=6613";
+		$apiReq = curl_init();
+		curl_setopt($apiReq, CURLOPT_URL, $url);
+		curl_setopt($apiReq, CURLOPT_RETURNTRANSFER, TRUE);
+
+		$apiResult = curl_exec($apiReq);
+		$sumembers = su_response_decode($apiResult);
+		$matches = array();
+		foreach ($sumembers as $sumem) {
+			$sucsmem = get_sucs_record($sumem['uni_card_number']);
+			if ($sucsmem) {
+				$matches[]=array($sumem['firstName']." ".$sumem['lastName'], $sucsmem['realname'], $sumem['uni_card_number'], $sucsmem['username'], $sucsmem['paid']);
+			} else {
+				$matches[]=array($sumem['firstName']." ".$sumem['lastName'], "N/A", $sumem['uni_card_number'], "N/A", "Not signed up");
+			}
+		}
+		function sortbypaid($a, $b) {
+			//Lets us array sort by final column ('Paid')
+			return ($a[4] < $b[4]) ? -1  : 1;
+		}
+		usort($matches, 'sortbypaid');
+		$smarty->assign("matches", $matches);
 	}
 }
 
diff --git a/htdocs/css/susignup-admin.css b/htdocs/css/susignup-admin.css
index 1631a56..1de06bb 100644
--- a/htdocs/css/susignup-admin.css
+++ b/htdocs/css/susignup-admin.css
@@ -1,6 +1,6 @@
 div.susignup-admin-menu {
 	float: left;
-	width: 30%;
+	width: 22%;
 	margin-left: 10px;
 	background: #E76808;
 	border-radius: 15px;
diff --git a/templates/susignup-admin.tpl b/templates/susignup-admin.tpl
index a455340..0c9dc1a 100644
--- a/templates/susignup-admin.tpl
+++ b/templates/susignup-admin.tpl
@@ -46,6 +46,20 @@ The following accounts failed to renew:
 {/if}
 </div>
 </div>
+ {elseif $mode == 'list'}
+
+ <table id='susignup-renewals'>
+	<thead>
+		<tr><th>Name (SU)</th><th>Name (SUCS)</th><th>Student ID</th><th>SUCS Username</th><th>Paid Until</th></tr>
+	</thead>
+	<tbody>
+{foreach from=$matches item=match}
+		<tr><td>{$match[0]}</td><td>{$match[1]}</td><td class='centre'>{$match[2]}</td><td>{$match[3]}</td><td class='centre'>{$match[4]}</td></tr>
+{foreachelse}
+		<tr><td colspan='6'><em>Oh Noes! No members found in the SU database</em></td></tr>
+{/foreach}
+	</tbody>
+</table>
  {elseif $mode == 'search'}
 <div style='text-align: center'>
  <div class='cbb' style='text-align: left'>
@@ -67,6 +81,15 @@ This component allows staff members to sort out memberships and renewals that ha
 	</p>
 <div style='text-align: center'>
 <div class='susignup-admin-menu cbb'>
+<h3>Signup a newbie</h3>
+<form action='{$componentpath}' method='post'>
+	<label for='sid'>Student Number:</label>
+	<input type='text' name='sid' id='sid' maxlength=6 /> 
+	<input type='hidden' name='mode' id='mode' value="search" />
+	<input type='submit' name='snsubmit' id='snsubmit' value="Start" />
+</form>
+</div>
+<div class='susignup-admin-menu cbb'>
 <h3>Renew existing account:</h3>
 <form action='{$componentpath}' method='post'>
 	<label for='member'>Account:</label>
@@ -77,19 +100,18 @@ This component allows staff members to sort out memberships and renewals that ha
 </div>
 <div class='susignup-admin-menu cbb'> 
 <h3>Bulk Renewals</h3>
-<p style='text-align: left'>This will query the SU API for all current SUCS members and generate a list of corresponding SUCS accounts to be renewed.<br /> This process can take a little while to run</p><br />
+<p style='text-align: left'>This will query the SU API and generate a list of corresponding SUCS accounts to be renewed.<br /> This process can take a little while to run</p><br />
 <form action='{$componentpath}' method='post'>
 	<input type='submit' name='rwsubmit' id='rwsubmit' value='Generate List' />
 	<input type='hidden' name='mode' id='mode' value='renewals' />
 </form>
 </div>
-<div class='susignup-admin-menu cbb'>
-<h3>Signup a newbie</h3>
+<div class='susignup-admin-menu cbb'> 
+<h3>SU Membership List</h3>
+<p style='text-align: left'>This will query the SU API for all current SUCS members<br /> This process can take a little while to run</p><br />
 <form action='{$componentpath}' method='post'>
-	<label for='sid'>Student Number:</label>
-	<input type='text' name='sid' id='sid' maxlength=6 /> 
-	<input type='hidden' name='mode' id='mode' value="search" />
-	<input type='submit' name='snsubmit' id='snsubmit' value="Start" />
+	<input type='submit' name='lssubmit' id='lssubmit' value='View List' />
+	<input type='hidden' name='mode' id='mode' value='list' />
 </form>
 </div>
 </div>
-- 
GitLab