protected function getNextStatusID() { // get the MAX(status_id)... need to determine what insertion status_id will be (used to create new status record) $status = new RowManager_StatusManager(); $statuses = new MultiTableManager(); $statuses->addRowManager($status); $statuses->setFunctionCall('MAX', 'status_id'); $statuses->ignoreFields(); // only leave MAX(status_id) in values to be returned $statusesList = $statuses->getListIterator(); $statusesArray = $statusesList->getDataList(); $maxID = -1; reset($statusesArray); foreach (array_keys($statusesArray) as $k) { $statusRecord = current($statusesArray); $maxID = $statusRecord['MAX(status_id)']; if ($maxID > -1) { // this condition occurs if no records found if ($maxID == '') { $maxID = -1; } break; // get out of the loop once MAX is found } next($statusesArray); } return $maxID + 1; // NOTE: equals 0 if nothing found }
protected function getNextPersonID() { // get the MAX(person_id)... need to determine what insertion person ID will be (used to create new registration record) $person = new RowManager_PersonManager(); $persons = new MultiTableManager(); $persons->addRowManager($person); $persons->setFunctionCall('MAX', 'person_id'); $persons->ignoreFields(); // only leave MAX(person_id) in values to be returned $personsList = $persons->getListIterator(); $personsArray = $personsList->getDataList(); $maxID = -1; reset($personsArray); foreach (array_keys($personsArray) as $k) { $personRecord = current($personsArray); $maxID = $personRecord['MAX(person_id)']; if ($maxID > -1) { break; // get out of the loop once MAX is found } next($personsArray); } return $maxID + 1; }
/** * function getHTML * <pre> * This method returns the HTML data generated by this object. * </pre> * @return [STRING] HTML Display data. */ function getHTML() { // Make a new Template object //$this->pathModuleRoot.'templates/'; // Replace $path with the following line if you want to create a // template tailored for this page: $path = $this->pathModuleRoot . 'templates/'; // store the link values // $this->linkValues[ 'view' ] = 'add/new/href/data/here'; // store the link labels $this->linkLabels['add'] = $this->labels->getLabel('[Add]'); $this->linkLabels['edit'] = $this->labels->getLabel('[Edit]'); $this->linkLabels['del'] = $this->labels->getLabel('[Delete]'); $this->linkLabels['cont'] = $this->labels->getLabel('[Continue]'); // $this->linkLabels[ 'view' ] = 'new link label here'; // $adminLink = $this->linkValues[ 'adminHome' ]; // $this->template->set('adminLink', $adminLink ); // get pricing info // get base price for event participation $event = new RowManager_EventManager($this->event_id); $eventBasePrice = $event->getEventBasePrice(); // get price rules for specific event $priceRules = new RowManager_PriceRuleManager(); $priceRules->setEventID($this->event_id); $ruleManager = $priceRules->getListIterator(); $priceRulesArray = $ruleManager->getDataList(); // echo "<pre>".print_r($priceRulesArray,true)."</pre>"; // array storing the rules applied to a particular registrant $rulesApplied = array(); $priceGetter = new FinancialTools(); $basePriceForThisGuy = $priceGetter->getBasePriceForRegistrant($this->reg_id, $this->event_id, $this->campus_id, $eventBasePrice, $priceRulesArray, $rulesApplied); // get Personal Info $registration = new RowManager_RegistrationManager(); $registration->setRegID($this->reg_id); $person = new RowManager_PersonManager(); $assignment = new RowManager_AssignmentsManager(); // assigns campus to person $campus = new RowManager_CampusManager(); // $campus->setCampusID($this->campus_id); $personalInfo = new MultiTableManager(); $personalInfo->addRowManager($person); $personalInfo->addRowManager($assignment, new JoinPair($person->getJoinOnPersonID(), $assignment->getJoinOnPersonID())); $personalInfo->addRowManager($campus, new JoinPair($campus->getJoinOnCampusID(), $assignment->getJoinOnCampusID())); $personalInfo->addRowManager($registration, new JoinPair($registration->getJoinOnPersonID(), $person->getJoinOnPersonID())); $this->listManager = $personalInfo->getListIterator(); $personInfoArray = $this->listManager->getDataList(); // echo "<pre>".print_r($this->listManager,true)."</pre>"; // echo "<pre>".print_r($personInfoArray,true)."</pre>"; // cycle through registrations and store balance owing for each $this->owingArray = array(); $priceGetter = new FinancialTools(); reset($personInfoArray); foreach (array_keys($personInfoArray) as $k) { $personData = current($personInfoArray); $this->person_id = $personData['person_id']; $this->person_info['person_fname'] = ''; $this->person_info['person_fname'] = $personData['person_fname']; $this->person_info['person_lname'] = ''; $this->person_info['person_lname'] = $personData['person_lname']; $this->person_info['campus_desc'] = ''; $this->person_info['campus_desc'] = $personData['campus_desc']; $this->person_info['person_email'] = ''; $this->person_info['person_email'] = $personData['person_email']; $this->person_info['gender_id'] = ''; $this->person_info['gender_id'] = $personData['gender_id']; $this->person_info['person_local_addr'] = ''; $this->person_info['person_local_addr'] = $personData['person_local_addr']; $this->person_info['person_local_city'] = ''; $this->person_info['person_local_city'] = $personData['person_local_city']; $this->person_info['person_local_province_id'] = ''; $this->person_info['person_local_province_id'] = $personData['person_local_province_id']; $this->person_info['person_local_pc'] = ''; $this->person_info['person_local_pc'] = $personData['person_local_pc']; $this->person_info['person_local_phone'] = ''; $this->person_info['person_local_phone'] = $personData['person_local_phone']; $this->person_info['person_addr'] = ''; $this->person_info['person_addr'] = $personData['person_addr']; $this->person_info['person_city'] = ''; $this->person_info['person_city'] = $personData['person_city']; $this->person_info['province_id'] = ''; $this->person_info['province_id'] = $personData['province_id']; $this->person_info['person_pc'] = ''; $this->person_info['person_pc'] = $personData['person_pc']; $this->person_info['person_phone'] = ''; $this->person_info['person_phone'] = $personData['person_phone']; $this->person_info['registration_status'] = $personData['registration_status']; next($personInfoArray); } $this->linkValues["EditPersonInfo"] .= $this->person_id; $this->prepareTemplate($path); // set current registration status ID $this->template->set('currentRegStatus', $this->person_info['registration_status']); // get list of registration statuses $regStatuses = new RowManager_StatusManager(); $regStatusesList = $regStatuses->getListIterator(); $regStatusesArray = $regStatusesList->getDataList(); $statusList = array(); reset($regStatusesArray); foreach (array_keys($regStatusesArray) as $k) { $record = current($regStatusesArray); $statusList[key($regStatusesArray)] = $record['status_desc']; next($regStatusesArray); } // echo 'status list = <pre>'.print_r($statusList, true).'</pre>'; // set registration status information $this->template->set('statusFormAction', $this->formAction); $this->template->set('statusList', $statusList); $this->template->set('statusButtonText', 'Update'); // set some variables calculated previously; placed here because I need to get PERSON_ID for link // which had to be set before prepareTemplate(), which has to be executed BEFORE setting variables... $this->template->set('eventBasePrice', $eventBasePrice); $this->template->set('priceRules', $rulesApplied); $this->template->set('basePriceForThisGuy', $basePriceForThisGuy); //$priceGetter->calcBalanceOwing($this->reg_id); // NOT NEEDED BECAUSE TOTALS CALCULATED $this->template->set('person', $this->person_info); // get provinces and genders $provinces = new RowManager_ProvinceManager(); $provinceList = $provinces->getListIterator(); $provincesArray = $provinceList->getDataList(); // echo "<pre>".print_r($provincesArray,true)."</pre>"; $province_info = array(); reset($provincesArray); foreach (array_keys($provincesArray) as $k) { $province = current($provincesArray); $province_info[$province['province_id']] = $province['province_desc']; next($provincesArray); } $this->template->set('list_province_id', $province_info); $genders = new RowManager_GenderManager(); $genderList = $genders->getListIterator(); $genderArray = $genderList->getDataList(); // echo "<pre>".print_r($genderArray,true)."</pre>"; $gender_info = array(); reset($genderArray); foreach (array_keys($genderArray) as $k) { $gender = current($genderArray); $gender_info[$gender['gender_id']] = $gender['gender_desc']; next($genderArray); } $this->template->set('list_gender_id', $gender_info); // send in scholarships table, cash transactions table, and credit card transactions table $this->template->set('scholarshipsAdminBox', $this->generateScholarshipsTable()); $this->template->set('cashTransAdminBox', $this->generateCashTransactionsTable()); $this->template->set('ccTransAdminBox', $this->generateCCTransactionsTable()); // get scholarship total $scholarships = new RowManager_ScholarshipAssignmentManager(); $scholarships->setRegID($this->reg_id); $scholarshipTotal = new MultiTableManager(); $scholarshipTotal->addRowManager($scholarships); $scholarshipTotal->setFunctionCall('SUM', 'scholarship_amount'); $scholarshipTotal->setGroupBy('registration_id'); $scholarshipsList = $scholarshipTotal->getListIterator(); $scholarshipsArray = $scholarshipsList->getDataList(); reset($scholarshipsArray); foreach (array_keys($scholarshipsArray) as $k) { $scholarshp = current($scholarshipsArray); $scholarship_total = $scholarshp['SUM(scholarship_amount)']; next($scholarshipsArray); } if (!isset($scholarship_total)) { $scholarship_total = 0; } $this->template->set('scholarshipTotal', $scholarship_total); // get cash total $cashTrans = new RowManager_CashTransactionManager(); $cashTrans->setRegID($this->reg_id); $cashTrans->setReceived(true); $cashTransTotal = new MultiTableManager(); $cashTransTotal->addRowManager($cashTrans); $cashTransTotal->setFunctionCall('SUM', 'cashtransaction_amtPaid'); $cashTransTotal->setGroupBy('reg_id'); $cashTransList = $cashTransTotal->getListIterator(); $cashTransArray = $cashTransList->getDataList(); reset($cashTransArray); foreach (array_keys($cashTransArray) as $k) { $cash_trans = current($cashTransArray); $cash_total = $cash_trans['SUM(cashtransaction_amtPaid)']; next($cashTransArray); } if (!isset($cash_total)) { $cash_total = 0; } $this->template->set('cashTotal', $cash_total); // get cash owed $cashOwed = new RowManager_CashTransactionManager(); $cashOwed->setRegID($this->reg_id); $cashOwed->setReceived(false); $cashOwedTotal = new MultiTableManager(); $cashOwedTotal->addRowManager($cashOwed); $cashOwedTotal->setFunctionCall('SUM', 'cashtransaction_amtPaid'); $cashOwedTotal->setGroupBy('reg_id'); $cashOwedList = $cashOwedTotal->getListIterator(); $cashOwedArray = $cashOwedList->getDataList(); reset($cashOwedArray); foreach (array_keys($cashOwedArray) as $k) { $cash_owed = current($cashOwedArray); $cash_owing = $cash_owed['SUM(cashtransaction_amtPaid)']; next($cashOwedArray); } if (!isset($cash_owing)) { $cash_owing = 0; } $this->template->set('cashOwed', $cash_owing); // get credit card total $ccTrans = new RowManager_CreditCardTransactionManager(); $ccTrans->setProcessed(true); $ccTrans->setRegID($this->reg_id); $ccTransTotal = new MultiTableManager(); $ccTransTotal->addRowManager($ccTrans); $ccTransTotal->setFunctionCall('SUM', 'cctransaction_amount'); $ccTransTotal->setGroupBy('reg_id'); $ccTransList = $ccTransTotal->getListIterator(); $ccTransArray = $ccTransList->getDataList(); reset($ccTransArray); foreach (array_keys($ccTransArray) as $k) { $cc_trans = current($ccTransArray); $cc_total = $cc_trans['SUM(cctransaction_amount)']; next($ccTransArray); } if (!isset($cc_total)) { $cc_total = 0; } $this->template->set('ccTotal', $cc_total); // TODO??: get credit card transactions NOT processed // set form for editing registration-specific form fields' values $this->template->set('eventFieldsFormSingle', $this->generateFieldValuesForm()); // store any additional link Columns // example: //$title = $this->labels->getLabel( '[title_groups]'); //$columnLabel = $this->labels->getLabel( '[groups]'); //$link = $this->linkValues[ 'groups' ]; //$fieldName = 'accessgroup_id'; //$this->addLinkColumn( $title, $columnLabel, $link, $fieldName); // store the page labels // NOTE: use this location to update any label tags ... // example: // $name = $user->getName(); // $this->labels->setLabelTag( '[Title]', '[userName]', $name); // store the Row Manager's XML Node Name // $this->template->set( 'rowManagerXMLNodeName', RowManager_RegistrationManager::XML_NODE_NAME ); $this->template->set('rowManagerXMLNodeName', MultiTableManager::XML_NODE_NAME); // store the primary key field name for the data being displayed $this->template->set('primaryKeyFieldName', 'registration_id'); // Load over-payment message, if necessary if ($this->ccTrans_subPage->hasOverPaid()) { $this->template->set('attemptedOverpayment', true); } // TODO: somehow merge the primary join with the balance owing join.... for efficiency /* * Set up any additional data transfer to the Template here... */ // $this->template->set( 'dataList', $this->dataList); $templateName = 'page_EditRegistrationDetails.tpl.php'; // if you are creating a custom template for this page then // replace $templateName with the following: //$templateName = 'page_EditCampusRegistrations.php'; return $this->template->fetch($templateName); }
protected function createRegistrationRecord($eventID, $personID, &$regs) { if ($personID != -1 && $eventID != -1) { // $regs = new RowManager_RegistrationManager(); // get status id for INITIAL_REG_STATUS $regStatus = new RowManager_StatusManager(); $regStatus->setStatusDesc(FormProcessor_Register::INITIAL_REG_STATUS); $regStatusList = $regStatus->getListIterator(); $regStatusArray = $regStatusList->getDataList(); $statusID = 0; reset($regStatusArray); foreach (array_keys($regStatusArray) as $k) { $status = current($regStatusArray); $statusID = $status['status_id']; // NOTE: should only be one reg. per person per event (ENFORCE??) next($regStatusArray); } // get the MAX(registration_id)... need to determine what insertion registration ID will be (used in confirmNum) $allRegs = new MultiTableManager(); $allRegs->addRowManager($regs); $allRegs->setFunctionCall('MAX', 'registration_id'); $allRegs->ignoreFields(); // only leave MAX(registration_id) in values to be returned $allRegsList = $allRegs->getListIterator(); $allRegsArray = $allRegsList->getDataList(); $maxID = -1; reset($allRegsArray); foreach (array_keys($allRegsArray) as $k) { $regRecord = current($allRegsArray); $maxID = $regRecord['MAX(registration_id)']; if ($maxID > -1) { break; // get out of the loop once MAX is found } next($allRegsArray); } // compile values needed for new registration record $regValues = array(); $nextRegID = $maxID + 1; $regValues['event_id'] = $eventID; // check if a new person record needs to be created // if ($this->person_id == -1) // { // $this->person_id = $this->getNextPersonID(); // assumes processData() will properly use this value for insertion // } $regValues['person_id'] = $personID; $timestamp = strtotime("now"); $date = date('Y-m-d H:i:s', $timestamp); // == NOW() : to bad I could pass that as non-string... $regValues['registration_date'] = $date; // set date-time to current date-time $regValues['registration_confirmNum'] = 'E' . $eventID . 'R' . $nextRegID . 'AIA'; $regValues['registration_status'] = $statusID; $this->confirmNum = $regValues['registration_confirmNum']; // TODO: change means of assigning to global // store values in table manager object. $regs->loadFromArray($regValues); // set primary key to use for update (if maxID found) if ($maxID > -1) { $regValues['registration_id'] = $nextRegID; $regs->setRegID($regValues['registration_id']); } // now update the DB with the values if (!$regs->isLoaded()) { $regs->createNewEntry(true); // allow primary key to be set (in case auto_increment is off) return $nextRegID; } else { return -1; } // TODO: figure out how to show error if no registration made, or updated (IF it is even possible now...) } }
protected function getFieldArray($reportID = '') { // $FALSE = 0; $groupBy = 'cim_hrdb_fields.fields_id'; $dbFunction = 'COUNT'; $funcParam = 'person_id'; $fields = new RowManager_FormFieldManager(); // $fvalues = new RowManager_FieldValueManager(); $ftypes = new RowManager_FieldTypeManager(); // $custom_reports = new RowManager_CustomReportsManager(); //$reportID $custom_fields = new RowManager_CustomFieldsManager(); //$reportID if ($reportID != '') { $custom_fields->setReportID($reportID); } $fieldvalues = new RowManager_FormFieldValueManager(); // "NEW" (in order to sort fields by # of values) // echo "personID = ".$personID; // if ($formID != '') // { // $fields->setFormID($formID); // //$fvalues->setRegID($regID); // } $fieldInfo = new MultiTableManager(); $fieldInfo->addRowManager($fields); // $fieldInfo->addRowManager($fvalues, new JoinPair($fvalues->getJoinOnFieldID(), $fields->getJoinOnFieldID())); $fieldInfo->addRowManager($ftypes, new JoinPair($fields->getJoinOnFieldTypeID(), $ftypes->getJoinOnFieldTypeID())); $fieldInfo->addRowManager($custom_fields, new JoinPair($custom_fields->getJoinOnFieldID(), $fields->getJoinOnFieldID())); $fieldInfo->addRowManager($fieldvalues, new JoinPair($fieldvalues->getJoinOnFieldID(), $fields->getJoinOnFieldID())); // use GROUP BY and $dbFunction = 'COUNT' to sort fields by # of values if ($groupBy != '') { $fieldInfo->setGroupBy($groupBy); //'campus_desc'); } if ($dbFunction != '') { $fieldInfo->setFunctionCall($dbFunction, $funcParam); } $fieldInfo->setSortOrder('COUNT(person_id) DESC'); // $fieldInfo->setSortOrder('fields_priority'); // echo $fieldInfo->createSQL(); $valuesIterator = $fieldInfo->getListIterator(); $valuesArray = $valuesIterator->getDataList(); // echo "values:<br><pre>".print_r($valuesArray,true)."</pre>"; // map the fields_id of each field values row to the label of that particular form field // $idx = 0; // reset($valuesArray); // foreach(array_keys($valuesArray) as $k) // { // $record = current($valuesArray); // // // store mapping associating form field label with fields_id // $this->formFieldToFieldIDmapper['form_field'.$idx] = $record['fields_id']; // // next($valuesArray); // $idx++; // } // echo "field id values:<br><pre>".print_r($this->formFieldToFieldIDmapper,true)."</pre>"; $reportFields = new MultiTableManager(); $customfields = new RowManager_CustomFieldsManager(); $customfields->setReportID($this->customreport_id); // TODO? error checking on ID $fieldvalues = new RowManager_FormFieldValueManager(); $reportFields->addRowManager($customfields); $reportFields->addRowManager($fieldvalues, new JoinPair($customfields->getJoinOnFieldID(), $fieldvalues->getJoinOnFieldID())); // use GROUP BY and $dbFunction = 'COUNT' to quickly get summary data per campus if ($groupBy != '') { $reportFields->setGroupBy($groupBy); //'campus_desc'); } if ($dbFunction != '') { $reportFields->setFunctionCall($dbFunction, $funcParam); } $reportFields->setSortOrder('COUNT(person_id) DESC'); return $valuesArray; }
function getCCtransTotal() { $ccTrans = new RowManager_CreditCardTransactionManager(); $ccTrans->setRegID($this->reg_id); $ccTrans->setProcessed(true); $ccTransTotal = new MultiTableManager(); $ccTransTotal->addRowManager($ccTrans); $ccTransTotal->setFunctionCall('SUM', 'cctransaction_amount'); $ccTransTotal->setGroupBy('reg_id'); $ccTransList = $ccTransTotal->getListIterator(); $ccTransArray = $ccTransList->getDataList(); $cc_total = 0; reset($ccTransArray); foreach (array_keys($ccTransArray) as $k) { $cc_trans = current($ccTransArray); $cc_total = $cc_trans['SUM(cctransaction_amount)']; next($ccTransArray); } return $cc_total; }