<?php
/** * @author Prakash Khanchandani * @copyright 2013 * @program user.php * @description user maintenance * @specialities - rearrange column order in form * - mix of explicit auto validations and programmatic validations */
session_start(); require_once ("classes.php");
function createTableObject() { $obj = new userTable; if ($obj->getListAndColumns() === false) return false; else return $obj; }
# # # # #
class userTable extends mstrTable { function getListAndColumns() { $this->tableName = 'users'; $this->ignoreInForm = array('passWrd'); /* create foreign references for bank, branch, and group. */ $this->explicitFrgnRef[] = array("bnkPrmtrs", "bank = parentBank"); $this->explicitFrgnRef[] = array("brnchPrmtrs", "bank=parentBank", "branch=parentBranch");
return parent::getListAndColumns('userId', 'userName', 'parentBank', 'parentBranch'); }
function populateRecordValues() { if (parent::populateRecordValues() === false) return false; /* populate the adtnlInfo with bankName and branchName. We have given explicit foreign references and therefore the reference records would be available in the master class. */ $bankDes = $this->getForeignRefDescription('bnkPrmtrs', 'bankName'); $branchDes = $this->getForeignRefDescription('brnchPrmtrs', 'branchName'); $grpDes = $this->getForeignRefDescription('groups', 'grpDes');
$idBank = $this->getColDefsId('parentBank'); $idBranch = $this->getColDefsId('parentBranch'); $idGrp = $this->getColDefsId('grp');
$this->addAdditionalInfo($idBank, $bankDes); $this->addAdditionalInfo($idBranch, $branchDes); $this->addAdditionalInfo($idGrp, $grpDes);
return true; }
protected function validateInput() { /* Since we have given explicit foreign references for bank and branch, and there is an implicit foreign reference for the group, we need not do those checks here. But there are a lot of other checks that have to be done manually through this function. */
/* get various fields entered by user - they are required throughout this func. If you cant get it, no point in continuing. */ $userId = $this->getColDefsVal("userId"); $parentBank = $this->getColDefsVal("parentBank"); $parentBranch = $this->getColDefsVal("parentBranch"); $userType = $this->getColDefsVal("userType"); $isCashTell = $this->getColDefsVal("isCashTell"); $isHC = $this->getColDefsVal("isHC");
if ($userId === false or $userType === false or $isCashTell === false or $isHC === false) { addToErrorMsg('could not get one of the fields entered'); return false; } $errors = 0; /* there can be only one user with userType SDBA. Check if there are any others present. If the current user already has a record, you might be counting him as well, so ignore him for the search. Note that since userType is defined as an enum column, the basic checks would have been done already; you dont have to check that it is SDBA, DBA, NORM, etc. */ if ($userType == 'SDBA') { $qry = "select count(*) from users where parentBank = '$parentBank' and userId <> '$userId' and userType = 'SDBA' "; $script = new mstrScripts; $result = $script->runCountQry($qry); if ($result === false) { addToErrorMsg($script->getErrorMsg()); $errors = $errors + 1; } else { if ($result > 0) { addToErrorMsg('SDBA user already available for this bank'); $errors = $errors + 1; } } } /* check the count of input $type - Vault or Headcashier. There can be only one per bank/branch which is also input. Dont include this userId in the count */ if ($isCashTell == 'V') { $qry = "select count(*) from users where parentBank = '$parentBank' and parentBranch = '$parentBranch' and userId <> '$userId' and isCashTell = 'V' "; $script = new mstrScripts; $result = $script->runCountQry($qry); if ($result === false) { addToErrorMsg($script->getErrorMsg()); $errors = $errors + 1; } else { if ($result > 0) { addToErrorMsg('Vault user already available for this branch'); $errors = $errors + 1; } } } /* similarly, there can be only one headCashier per branch. */ if ($isHC == 'Y') { $qry = "select count(*) from users where parentBank = '$parentBank' and parentBranch = '$parentBranch' and userId <> '$userId' and isHC = 'Y' "; $script = new mstrScripts; $result = $script->runCountQry($qry); if ($result === false) { addToErrorMsg($script->getErrorMsg()); $errors = $errors + 1; } else { if ($result > 0) { addToErrorMsg('Head Cashier already available for this branch'); $errors = $errors + 1; } } }
if ($errors > 0) return false;
return true; } }
# # # # #
if (!isset($_REQUEST['actn'])) { $obj = createTableObject(); } else { /* if the user has taken some action, handle it. */ $obj = handleRequestOption(); }
$form = new mstrFH($obj); $form->setDemoNotes(userNotes()); $form->clmnOrdr = array("userId", "userName", "parentBank", "parentBranch", "autoAuthorise", "selfAuthorise"); $form->displayForm(); ?>
|