15 require_once(
"$admLibrary/aMemberSupport.i");
20 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
21 "mParameters" => array(
"filter" => FILTER_SANITIZE_STRING)
24 HCU_ImportVars($admVars,
"MEMBER_SEARCH", $admOk);
26 $sOperation = isset($admVars[
"MEMBER_SEARCH"][
"operation"]) ? $admVars[
"MEMBER_SEARCH"][
"operation"] :
null;
27 $sParameters = isset($admVars[
"MEMBER_SEARCH"][
"mParameters"]) ? $admVars[
"MEMBER_SEARCH"][
"mParameters"] :
null;
32 switch ($sOperation) {
37 header(
'Content-type: application/json');
39 $sValidate = MemberValidate($SYSENV, $sParameters,
true);
40 $sContext = MemberContext($SYSENV, $Cu, $sValidate);
41 $sMembers = MemberSearch($SYSENV, $dbh, $sContext);
43 if ($sMembers[
'members'] && count($sMembers[
'members']) == 1) {
45 $sMember = $sMembers[
'members'][0];
51 $sMemberValidate = MemberValidate($SYSENV, $sMember);
52 $sMemberContexet = MemberContext($SYSENV, $Cu, $sMemberValidate);
53 $sMemberSelect = MemberSelect($SYSENV, $dbh, $sMemberContexet);
54 $sMemberEncrypt = MemberEncrypt($SYSENV, $Cu, $sMemberSelect);
56 $aryResult[
'data'][
'member'] = $sMemberSelect;
57 $aryResult[
'data'][
'encrypt'] = $sMemberEncrypt;
59 $aryResult[
'data'][
'members'] = $sMembers[
'members'];
61 MemberReply($aryResult, $aryReply, $sOperation);
64 throw new Exception(
"Unknown server request: " . $sOperation);
68 }
catch (Exception $e) {
69 $aryReply[
'errors'][] = $e->getMessage();
70 $aryResult[
'data'] = array();
71 $aryResult[
'info'] = array();
72 MemberReply($aryResult, $aryReply, $sOperation);
89 function MemberSearch($pEnv, $pDbh, $pContext) {
90 $cuTable = $pContext[
'cu_table'];
91 $cuCode = $pContext[
'cu_code'];
92 $cuAccount = $pContext[
'm_account'];
96 accountnumber AS m_account";
99 FROM {$cuTable}memberacct 100 WHERE accountnumber = '$cuAccount'";
102 $sqlSelectRs = db_query($sqlSelect, $pDbh);
104 $pEnv[
'logger']->error(db_last_error());
105 throw new Exception(
"Failed to read members.");
108 $sqlReturn[
'members'] = db_fetch_all($sqlSelectRs);
120 <div
id=
"status"></div>
121 <div
class=
"row hcuSpacer">
122 <div
class=
"col-sm-5">
123 <label
for=
"inpMbrAccount"> Account #</label>
125 <div
class=
"col-sm-7">
126 <input type=
"text" class=
"k-input k-textbox hcu-all-100" id=
"inpMbrAccount" name=
"inpMbrAccount" 129 data-homecuCustomMaxLen-msg=
"Account number must be at most 12 characters" 130 data-required-msg=
"Account number is required" 136 <div
id=
"noResults" class=
"row">
137 <div
class=
"col-sm-12">
138 <p>No accounts were found.</p>
168 <script type=
"text/javascript">
170 var MemberSearch =
function() {
171 var msCardContainer =
null;
172 var msCardWindows =
null;
178 var msNoResults =
null;
179 var msDataSource =
null;
181 var mrInputMember =
null;
183 var ValidateSearch =
function() {
184 var memberValue = mrInputMember.val().trim();
185 var memberLength = memberValue.length;
187 if (memberLength == 0) {
188 mrInputMember.addClass(
"k-invalid");
189 mrInputMember.focus();
193 mrInputMember.removeClass(
"k-invalid");
198 var EventSendSearch =
function() {
199 var memberValue = mrInputMember.val();
201 m_account: memberValue
204 var memberString = JSON.stringify(memberData);
205 var memberRequest = {
206 operation:
"memberSearch",
207 mParameters: memberString
210 msDataSource.transport.options.read.type =
"POST";
211 msDataSource.read(memberRequest);
214 var EventOpenWindow =
function(e) {
215 var windowElement = this.element[0];
216 var windowId = windowElement.id;
220 mrInputMember.removeClass(
"k-invalid");
221 mrInputMember.val(
"");
222 mrInputMember.focus();
226 msCardWindows.push(
this);
229 var EventCloseWindow =
function(e) {
230 var windowElement = this.element[0];
231 var windowId = windowElement.id;
235 if ($.homecuValidator.validate()) {
242 EventPopWindow(windowId);
246 EventPopWindow(windowId);
253 var EventPopWindow =
function(windowId) {
255 for (var i = 0; i < msCardWindows.length; i++) {
256 var openWindow = msCardWindows[i].element[0];
257 var openId = openWindow.id;
259 if (openId == windowId) {
266 msCardWindows.splice(popIndex, 1);
270 var InitDataSources =
function() {
271 msDataSource =
new kendo.data.DataSource({
276 contentType:
"application/x-www-form-urlencoded",
284 requestStart:
function(request) {
287 requestEnd:
function(response) {
288 setTimeout(hideWaitWindow, 500);
290 if (response.hasOwnProperty(
"response")) {
291 if (response.response.hasOwnProperty(
"Results")) {
292 var results = response.response.Results;
294 if (results.hasOwnProperty(
"error")) {
295 $.homecuValidator.homecuResetMessage =
true;
296 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
297 }
else if (results.hasOwnProperty(
"info")) {
298 $.homecuValidator.homecuResetMessage =
true;
299 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
302 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
305 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
309 parse:
function(response) {
312 var resultData =
null;
313 var resultOperation =
null;
315 if (response.hasOwnProperty(
"Results")) {
316 results = response.Results;
317 resultData = results.data;
318 resultOperation = results.operation;
323 if (results.hasOwnProperty(
"errors")) {
327 if (resultData == undefined || resultData ==
null) {
331 setTimeout(
function() {
332 switch (resultOperation) {
334 if (resultData.encrypt) {
336 msCall(
"updateMemberInfo", resultData.member);
337 msCall(
"updateMemberEncrypt", resultData.encrypt);
339 if (resultData.members) {
355 var InitDataViews =
function() {
356 msSearch = msCardContainer.find(
"#search").kendoDialog({
357 title:
"Account Search",
363 show: EventOpenWindow,
364 close: EventCloseWindow,
367 action:
function() { msAction =
"searchCancel"; }
369 { text:
"Search", primary:
true,
370 action:
function() { msAction =
"searchSubmit"; }
373 }).data(
"kendoDialog");
375 msNoResults = msCardContainer.find(
"#noResults").kendoDialog({
376 title:
"Select Account",
383 show: EventOpenWindow,
384 close: EventCloseWindow,
387 action:
function() { msAction =
"searchCancel"; }
389 { text:
"Start Over", primary:
true,
390 action:
function() { msAction =
"searchStart"; }
393 }).data(
"kendoDialog");
395 mrInputMember = $(
"#inpMbrAccount");
398 var InitDataActions =
function() {
399 mrInputMember.on(
"keyup",
function(e) {
400 if (e.keyCode == 13) {
401 msAction =
"searchSubmit";
407 this.Open =
function(windowStack) {
408 msCardWindows = windowStack;
412 $.homecuValidator.setup({
413 formStatusField:
"status",
414 formValidate:
"search" 418 this.Close =
function() {
420 msNoResults.destroy();
422 $.homecuValidator.setup({
423 formStatusField:
"formStatus",
424 formValidate:
"cardContainerDiv" 428 this.Init =
function(hubCall, cardContainer) {
430 msCardContainer = cardContainer;