2 require_once(dirname(__FILE__) .
"/../../shared/library/statecountry.i");
6 public function parms_parse($payload) {
12 list($firstname,$middlename,$lastname,$email,$homephone,$workphone,$cellphone,$fax,$ssn,$address1,$address2,$city,$state,$zip,$cc,$dob) = explode(
"\t",$payload);
13 return array(
'firstname' => $firstname,
14 'middlename' => $middlename,
15 'lastname' => $lastname,
17 'homephone' => $homephone,
18 'workphone' => $workphone,
19 'cellphone' => $cellphone,
22 'address1' => $address1,
23 'address2' => $address2,
31 public function parms_validate($parms) {
32 $dms_ok = array(
'accountnumber' =>
'digits',
33 'firstname' =>
'string',
34 'middlename' =>
'string',
35 'lastname' =>
'string',
37 'homephone' =>
'string',
38 'workphone' =>
'string',
39 'cellphone' =>
'string',
42 'address1' =>
'string',
43 'address2' =>
'string',
49 dms_import_v2($parms,
"HCUPOST", $dms_ok);
60 $parms[
'HCUPOST'][
'accountnumber'] = preg_replace(
'/\D/',
'', $parms[
'HCUPOST'][
'accountnumber']);
61 if (trim($parms[
'HCUPOST'][
'accountnumber']) ==
'') {
62 unset($parms[
'HCUPOST'][
'accountnumber']);
64 $parms[
'HCUPOST'][
'homephone'] = preg_replace(
'/\D/',
'', $parms[
'HCUPOST'][
'homephone']);
65 if (trim($parms[
'HCUPOST'][
'homephone']) ==
'') {
66 unset($parms[
'HCUPOST'][
'homephone']);
68 $parms[
'HCUPOST'][
'cellphone'] = preg_replace(
'/\D/',
'', $parms[
'HCUPOST'][
'cellphone']);
69 if (trim($parms[
'HCUPOST'][
'cellphone']) ==
'') {
70 unset($parms[
'HCUPOST'][
'cellphone']);
72 $parms[
'HCUPOST'][
'workphone'] = preg_replace(
'/\D/',
'', $parms[
'HCUPOST'][
'workphone']);
73 if (trim($parms[
'HCUPOST'][
'workphone']) ==
'') {
74 unset($parms[
'HCUPOST'][
'workphone']);
77 $parms[
'HCUPOST'][
'PHONE'] = (isset($parms[
'HCUPOST'][
'homephone']) ? $parms[
'HCUPOST'][
'homephone'] :
78 (isset($parms[
'HCUPOST'][
'cellphone']) ? $parms[
'HCUPOST'][
'cellphone'] : $parms[
'HCUPOST'][
'workphone']));
82 if (trim($parms[
'HCUPOST'][
'dob']) !=
"")
84 $date= DateTime::createFromFormat(
"m/d/Y", $parms[
'HCUPOST'][
'dob']);
86 throw new exception(
"DOB is invalid");
87 $parms[
'HCUPOST'][
'dob']= $date->format(
"Y-m-d");
90 unset($parms[
'HCUPOST'][
'dob']);
95 $errors[]=
"DOB is invalid";
98 $parms[
'HCUPOST'][
'ssn'] = str_replace(
'-',
'', $parms[
'HCUPOST'][
'ssn']);
99 if (trim($parms[
'HCUPOST'][
'ssn']) ==
'') {
100 unset($parms[
'HCUPOST'][
'ssn']);
102 if (strlen($parms[
'HCUPOST'][
'ssn']) <> 9) {
103 $errors[] =
"ssn must be 9 digits";
107 $parms[
'HCUPOST'][
'zip'] = str_replace(
'-',
'', $parms[
'HCUPOST'][
'zip']);
108 $parms[
'HCUPOST'][
'zip'] = str_replace(
' ',
'', $parms[
'HCUPOST'][
'zip']);
109 if (trim($parms[
'HCUPOST'][
'zip']) ==
'') {
110 unset($parms[
'HCUPOST'][
'zip']);
112 if (strlen($parms[
'HCUPOST'][
'zip']) <> 9 && strlen($parms[
'HCUPOST'][
'zip']) <> 5) {
113 $errors[] =
"zip must be either 5 digits or 9 digits";
117 $rmlist = array(
"#",
"&",
"/",
"%",
",",
":",
"=",
"?",
"'");
119 $parms[
'HCUPOST'][
'email'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'email']);
120 if (trim($parms[
'HCUPOST'][
'email']) ==
'') {
121 unset($parms[
'HCUPOST'][
'email']);
123 $parms[
'HCUPOST'][
'firstname'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'firstname']);
124 if (trim($parms[
'HCUPOST'][
'firstname']) ==
'') {
125 unset($parms[
'HCUPOST'][
'firstname']);
127 $parms[
'HCUPOST'][
'middlename'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'middlename']);
128 $parms[
'HCUPOST'][
'lastname'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'lastname']);
129 if (trim($parms[
'HCUPOST'][
'lastname']) ==
'') {
130 unset($parms[
'HCUPOST'][
'lastname']);
132 $parms[
'HCUPOST'][
'address1'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'address1']);
133 if (trim($parms[
'HCUPOST'][
'address1']) ==
'') {
134 unset($parms[
'HCUPOST'][
'address1']);
136 $parms[
'HCUPOST'][
'address2'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'address2']);
137 $parms[
'HCUPOST'][
'city'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'city']);
138 if (trim($parms[
'HCUPOST'][
'city']) ==
'') {
139 unset($parms[
'HCUPOST'][
'city']);
141 $parms[
'HCUPOST'][
'state'] = str_replace($rmlist,
"", $parms[
'HCUPOST'][
'state']);
142 if (trim($parms[
'HCUPOST'][
'state']) ==
'') {
143 unset($parms[
'HCUPOST'][
'state']);
147 'accountnumber' => 1,
157 $missing = array_diff_key($reqMIR,$parms[
'HCUPOST']);
158 if (
sizeof($missing)) {
159 $errors[] =
"Missing Required Info (" . join(
", ",array_keys($missing)) .
")";
164 if (
sizeof($errors)) {
166 $payload[errors] = $errors;
169 $payload[data] =
"{$parms['HCUPOST']['firstname']}\t{$parms['HCUPOST']['middlename']}\t{$parms['HCUPOST']['lastname']}\t{$parms['HCUPOST']['email']}\t{$parms['HCUPOST']['homephone']}\t{$parms['HCUPOST']['workphone']}\t{$parms['HCUPOST']['cellphone']}\t{$parms['HCUPOST']['fax']}\t{$parms['HCUPOST']['ssn']}\t{$parms['HCUPOST']['address1']}\t{$parms['HCUPOST']['address2']}\t{$parms['HCUPOST']['city']}\t{$parms['HCUPOST']['state']}\t{$parms['HCUPOST']['zip']}\t{$parms['HCUPOST']['cc']}\t{$parms['HCUPOST']['dob']}";
174 public function printTemplate()
176 <div
id=
'gridMIR' style=
"width:100%"></div>
177 <div
id=
"window"></div>
180 public function printGlobals()
182 var tValuesMirrrrr = [ {
'value':
'',
'text':
'...Choose...'}, {
'value':
'US',
'text':
'United states'}, {
'value':
'BB',
'text':
'Barbados'}, {
'value':
'BS',
'text':
'Bahamas'},
183 {
'value':
'PR',
'text':
'Puerto Rico'}, {
'value':
'TC',
'text':
'Turks and Caicos'}, {
'value':
'TT',
'text':
'Trinidad and Tobago'}, {
'value':
'VI',
'text':
'Virgin Islands'}];
187 public function printInit($crudhost, $trustid, $fromUserHub=
false)
189 $stateDDL= getStateDDL();
190 $stateDDL= json_encode($stateDDL);
191 $countryDDL= getCountryDDL();
192 $countryDDL= json_encode($countryDDL);
194 var windowTemplate=
'Delete member info for member <strong>#= accountnumber #</strong>? </p>\ 195 <button class="k-button" id="yesButton">Yes</button>\ 196 <button class="k-button" id="noButton"> No</button>';
198 var windowError=
'#= Message #</p>\ 199 <button class="k-button" id="errCloseButton">Close</button>';
201 var popupMIR=
'<form id="popupForm"><div id="mirPopupDiv" class="container">\ 202 <div class="row col-md-12">\ 203 <div id="formValidatePopupDiv" class="k-block k-error-colored formValidateDiv" style="display:none;"></div>\ 205 <div class="row col-md-12">\ 206 <div class="col-md-2">Member:</div>\ 207 <div class="col-md-7"><div class="accountnumber"></div></div>\ 209 <div class="row col-md-12">\ 210 <div class="col-md-2">First, Middle Name:</div>\ 211 <div class="col-md-7"><input class="k-input k-textbox" name="firstname" placeholder="First" required /> <input class="k-input k-textbox" name="middlename" placeholder="Middle"/>\ 212 </div><div class="col-md-1"><div class="k-invalid-msg" data-for="firstname"></div></div>\ 214 <div class="row col-md-12">\ 215 <div class="col-md-2">Last Name:</div>\ 216 <div class="col-md-7"><input class="k-input k-textbox" name="lastname" placeholder="Last" required /></div>\ 217 <div class="col-md-1"><div class="k-invalid-msg" data-for="lastname"></div></div>\ 219 <div class="row col-md-12">\ 220 <div class="col-md-2">Email:</div>\ 221 <div class="col-md-7"><input type="email" class="k-input k-textbox" name="email" placeholder="Email" /></div>\ 222 <div class="col-md-1"><div data-for="email" class="k-invalid-msg"></div></div>\ 224 <div class="row col-md-12">\ 225 <div class="col-md-2">SSN:</div>\ 226 <div class="col-md-7"><input name="ssn" placeholder="ssn" /></div>\ 227 <div class="col-md-1"><div data-for="ssn" class="k-invalid-msg"></div></div>\ 229 <div class="row col-md-12">\ 230 <div class="col-md-2">DOB:</div>\ 231 <div class="col-md-7"><input name="dobInput" placeholder="DOB" /></div>\ 232 <div class="col-md-1"><div data-for="dobInput" class="k-invalid-msg"></div></div>\ 234 <div class="row col-md-12">\ 235 <div class="col-md-2">Home Phone:</div>\ 236 <div class="col-md-7"><input class="k-input k-textbox homephoneInput validatePhone" name="homephone" placeholder="Home Phone" /></div>\ 237 <div class="col-md-1"><div data-for="homephone" class="k-invalid-msg"></div></div>\ 239 <div class="row col-md-12">\ 240 <div class="col-md-2">Cell Phone:</div>\ 241 <div class="col-md-7"><input class="k-input k-textbox cellphoneInput validatePhone" name="cellphone" placeholder="Cell Phone" /></div>\ 242 <div class="col-md-1"><div data-for="cellphone" class="k-invalid-msg"></div></div>\ 244 <div class="row col-md-12">\ 245 <div class="col-md-2">Work Phone:</div>\ 246 <div class="col-md-7"><input class="k-input k-textbox workphoneInput validatePhone" name="workphone" placeholder="Work Phone" /></div>\ 247 <div class="col-md-1"><div data-for="workphone" class="k-invalid-msg"></div></div>\ 249 <div class="row col-md-12">\ 250 <div class="col-md-2">Fax:</div>\ 251 <div class="col-md-7"><input class="k-input k-textbox workphoneInput validatePhone" name="fax" placeholder="FAX" /></div>\ 252 <div class="col-md-1"><div data-for="fax" class="k-invalid-msg"></div></div>\ 254 <div class="row col-md-12">\ 255 <div class="col-md-2">Address Line 1:</div>\ 256 <div class="col-md-7"><input class="k-input k-textbox" name="address1" placeholder="Address" required /></div>\ 257 <div class="col-md-1"><div data-for="address1" class="k-invalid-msg"></div></div>\ 259 <div class="row col-md-12">\ 260 <div class="col-md-2">Address Line 2:</div>\ 261 <div class="col-md-7"><input class="k-input k-textbox" name="address2" placeholder="Line 2"/></div>\ 263 <div class="row col-md-12">\ 264 <div class="col-md-2">City, State Zip:</div>\ 265 <div class="col-md-7"><input class="k-input k-textbox" name="city" placeholder="City" required />, <div id="stateDDL" style="width:100px;"></div>\ 266 <input type="hidden" name="state" required>\ 267 <input class="k-input k-textbox zipInput" name="zip" placeholder="Zip" required homecu-match="zip" /></div> \ 268 <div class="col-md-1"><div class="k-invalid-msg" data-for="state"></div><div class="k-invalid-msg" data-for="city"></div><div class="k-invalid-msg" data-for="zip"></div></div>\ 270 <div class="row col-md-12">\ 271 <div class="col-md-2">Country:</div>\ 272 <div class="col-md-7"><div id="countryDDL"></div> <input type="hidden" name="cc" required></div>\ 275 var popupNotification = $(
"<div id='popupNotification'></div>").appendTo(
"body").kendoNotification().data(
"kendoNotification");
276 popupNotification.setOptions({
281 windowTemplate = kendo.template(windowTemplate);
282 var windowT = $(
"#window").kendoWindow({
283 title:
"Please Confirm",
289 if (window.activeWindows !=
null)
290 window.activeWindows.push(
this);
294 if (window.activeWindows !=
null)
295 window.activeWindows.pop();
297 }).data(
"kendoWindow");
299 windowError = kendo.template(windowError);
300 var winErr = $(
"<div id='winErr'></div>").appendTo(
"body").kendoWindow({
308 if (window.activeWindows !=
null)
309 window.activeWindows.push(
this);
313 if (window.activeWindows !=
null)
314 window.activeWindows.pop();
316 }).data(
"kendoWindow");
318 var crudServiceBaseUrl =
"<?php echo $crudhost; ?>?ft=534&trustid=<?php echo $trustid; ?>";
319 <?php
if ($fromUserHub) { ?>
320 crudServiceBaseUrl+=
"&userid=" + $(
"#selectedId").text();
322 dataSource =
new kendo.data.DataSource({
325 serverFiltering:
false,
333 url: crudServiceBaseUrl +
"&action=read",
338 url: crudServiceBaseUrl +
"&action=update",
343 url: crudServiceBaseUrl +
"&action=delete",
348 url: crudServiceBaseUrl +
"&action=new",
351 parameterMap:
function(options, operation) {
352 if (operation !==
"read" && options.models) {
353 return {models: kendo.stringify(options.models)};
354 }
else if (operation ===
'create' || operation ===
'update' || operation ===
'destroy') {
361 total:
function(response)
363 return response.homecuData.length;
365 errors:
function(response)
367 return response.homecuErrors !=
null && response.homecuErrors.length > 0 ? response.homecuErrors :
null;
369 parse:
function(response)
371 var returnValue= response.Results[0];
372 if (returnValue.homecuInfo !=
null && returnValue.homecuInfo.length > 0)
373 popupNotification.show(returnValue.homecuInfo,
"info");
379 keyid: {type:
'number'},
380 accountnumber: { type:
'string'},
381 parms: { type:
'string'},
382 firstname: { type:
'string'},
383 middlename: { type:
'string'},
384 lastname: { type:
"string"},
385 email: {type:
"string"},
386 homephone: {type:
"string"},
387 workphone: {type:
"string"},
388 cellphone: {type:
"string"},
389 fax: {type:
"string"},
390 ssn: { type:
"string"},
391 address1: {type:
"string"},
392 address2: {type:
"string"},
393 city: {type:
"string"},
394 state: {type:
"string"},
395 zip: {type:
"string"},
396 cc: {type:
"string", defaultValue:
'US'},
397 dob: { type:
"string"},
398 userid: {type :
"number"}
405 winErr.content(windowError({Message: e.errors.join(
"<br>")}));
406 $(
"#winErr").closest(
".k-window.k-widget").css({<?php printTopCenterCss(200,
"",
"jsGuts"); ?>});
410 var grid= $(
"#gridMIR").kendoGrid({
411 dataSource: dataSource,
413 pageSizes: [2, 10, 20, 50],
417 display:
"Showing {0}-{1} from {2} data items" 424 { field:
"userid", title:
"User", width:
"100px"},
425 { field:
"accountnumber", title:
"Member", width:
"120px"},
426 { field:
"firstname", title:
"First Name", width:
"100px" },
427 { field:
"middlename", title:
"Middle", width:
"100px" },
428 { field:
"lastname", title:
"Last Name", width:
"100px" },
429 { command: [{name:
"edit", text:
"Change"}, {name:
"Delete"}], title:
" ", width:
"200px" }],
430 <?php
if ($fromUserHub) { ?>
433 toolbar: [{name:
"customCreate", text:
"<span class='k-icon k-add'></span> Add New Record"}],
437 template: kendo.template(popupMIR),
442 var thisWindow=
this;
443 if (window.activeWindows !=
null)
445 thisWindow.grid= grid;
446 window.activeWindows.push(thisWindow);
452 if (window.activeWindows !=
null)
453 window.activeWindows.pop();
460 $(e.container.element).closest(
".k-window.k-widget").css({<?php printTopCenterCss(350,
"",
"jsGuts"); ?>});
462 setupValidatorInGrid(e,
false, {formValidate:
"popupForm", formErrorTitle:
'The following errors were detected:', formStatusField:
"formValidatePopupDiv",
464 custZip:
function(input)
466 if(input.is(
"[name='zip']"))
468 var value= $(input).val().trim();
471 if (!value.match(/^\d{5}(-\_{4})?$/) && !value.match(/^\d{5}(-\d{4})?$/))
473 $(input).attr(
"data-custZip-msg",
"Zip is invalid!");
479 custPhone:
function(input)
481 if (input.is(
".validatePhone"))
483 var value= $(input).val().trim();
486 if (!value.match(/^\([2-9]\d{2}\) \d{3}-\d{4}$/))
488 $(input).attr(
"data-custPhone-msg", $(input).attr(
"name") +
" is invalid!");
494 ssnCheck:
function(input)
496 if (input.is(
"[name='ssn']"))
498 var value= $(input).val().trim();
501 if (!value.match(/^\d{3}-\d{2}-\d{4}$/))
503 $(input).attr(
"data-ssnCheck-msg",
"SSN is invalid!");
509 dobCheck:
function(input)
511 if (input.is(
"[name='dobInput']"))
513 var value= $(input).val().trim();
516 var matches= value.match(/(\d{1,2})\/(\d{1,2})\/(\d{4})/);
517 var newDate=
new Date(value);
519 if (!matches || newDate ==
"Invalid Date" || Number(newDate.getMonth()) != Number(matches[1])-1
520 || Number(newDate.getDate()) != Number(matches[2]) || Number(newDate.getFullYear()) != Number(matches[3]))
522 $(input).attr(
"data-dobCheck-msg",
"DOB is invalid!");
530 var homephoneMTB= $(
".homephoneInput").kendoMaskedTextBox({
531 mask:
"(000) 000-0000",
534 e.model.homephone= this.raw();
537 }).data(
"kendoMaskedTextBox");
539 homephoneMTB.value(e.model.homephone);
541 var workphoneMTB= $(
".workphoneInput").kendoMaskedTextBox({
542 mask:
"(000) 000-0000",
545 e.model.workphone= this.raw();
548 }).data(
"kendoMaskedTextBox");
550 workphoneMTB.value(e.model.workphone);
552 var cellphoneMTB= $(
".cellphoneInput").kendoMaskedTextBox({
553 mask:
"(000) 000-0000",
556 e.model.cellphone= this.raw();
559 }).data(
"kendoMaskedTextBox");
561 cellphoneMTB.value(e.model.cellphone);
563 var zipMTB= $(
".zipInput").kendoMaskedTextBox({
567 e.model.zip= this.raw();
570 }).data(
"kendoMaskedTextBox");
572 zipMTB.value(e.model.zip);
574 var stateDDL= $(
"#stateDDL").kendoDropDownList({
576 data: <?php echo $stateDDL; ?>
578 dataTextField:
"text",
579 dataValueField:
"value",
580 filter:
"startswith",
583 $(
"[name='state']").val(this.value());
584 e.model.state= this.value();
586 $(this.wrapper).find(
".k-dropdown-wrap.k-state-default .k-input").text(this.value());
588 }).data(
"kendoDropDownList");
590 var countryDDL= $(
"#countryDDL").kendoDropDownList({
592 data: <?php echo $countryDDL; ?>
594 dataTextField:
"text",
595 dataValueField:
"value",
596 filter:
"startswith",
599 $(
"[name='cc']").val(this.value());
600 e.model.cc= this.value();
603 }).data(
"kendoDropDownList");
605 var dobPicker= $(
"[name='dobInput']").kendoDatePicker({
608 e.model.dob= $(
"[name='dobInput']").val();
610 }).data(
"kendoDatePicker");
612 var ssnMTB= $(
"[name='ssn']").kendoMaskedTextBox({
614 }).data(
"kendoMaskedTextBox");
618 e.model.userid= $(
"#selectedAccntId").text();
619 e.model.accountnumber= $(
"#selectedAccnt").text();
620 $(
".accountnumber").text($(
"#selectedAccnt").text());
625 $(
".accountnumber").text(e.model.accountnumber);
628 stateDDL.value(e.model.state);
629 countryDDL.value(e.model.cc);
630 dobPicker.value(e.model.dob);
632 $(stateDDL.wrapper).find(
".k-dropdown-wrap.k-state-default .k-input").text(stateDDL.value());
636 useValidatorInGrid(e,
false);
639 template:
"<tr><td colspan='5'>No Records Found!</td></tr>" 641 }).data(
"kendoGrid");
643 <?php
if (!$fromUserHub) { ?>
644 $(
"#gridMIR").on(
"click",
".k-grid-customCreate",
function() {
645 searchUser(
function(dataItem) {
647 $(
"[name='firstname']").focus();
653 $(
"#winErr").on(
"click",
"#errCloseButton",
function() {
658 var deleteDataItem=
null;
659 $(
"#gridMIR").on(
"click",
".k-grid-Delete",
function(e) {
660 var tr = $(e.target).closest(
"tr");
661 deleteDataItem = grid.dataItem(tr);
662 windowT.content(windowTemplate(deleteDataItem));
663 $(
"#window").closest(
".k-window.k-widget").css({<?php printTopCenterCss(200,
"",
"jsGuts"); ?>});
668 $(
"#window").on(
"click",
"#yesButton",
function() {
669 dataSource.remove(deleteDataItem)
675 $(
"#window").on(
"click",
"#noButton",
function() {
681 public function parms_disp4edit($findTab, $searchTab, $crudhost, $Cu, $trustid) {
685 $this->printTemplate();
686 printSearchTemplates($searchTab, $findTab);
692 getShowWaitFunctions();
693 searchOutsideHub($searchTab, $findTab);
694 getUseValidatorInGridFunction();
695 getSetupValidatorInGridFunction();
696 $this->printGlobals(); ?>
697 var activeWindows= [];
698 $(document).ready(
function() {
699 <?php $this->printInit($crudhost, $trustid);?>
700 $(
"body").on(
"click",
".k-overlay",
function() {
701 if (activeWindows.length > 0)
703 var lastActive= activeWindows[activeWindows.length-1];
704 lastActive.grid !=
null ? lastActive.grid.cancelRow() : lastActive.close();