<?php use CRM_Nbrgeneralobservation_ExtensionUtil as E; class CRM_Nbrgeneralobservation_Page_NbrGenObservations extends CRM_Core_Page { private $_currentData = []; public function run() { CRM_Utils_System::setTitle(E::ts('NbrGenObservations')); CRM_Core_Resources::singleton()->addScriptFile('nbrgeneralobservation', 'templates/CRM/Nbrgeneralobservation/utils.js'); $tableName = CRM_Nihrbackbone_BackboneConfig::singleton()->getVolunteerGeneralObservationsCustomGroup('table_name'); $columnName = CRM_Nihrbackbone_BackboneConfig::singleton()->getGeneralObservationCustomField('nvgo_bmi', 'column_name'); Civi::log()->info("Table name is ".$tableName); Civi::log()->info("Column name is ".$columnName); $contactId = (int) CRM_Utils_Request::retrieveValue('cid', 'Integer'); $this->assign('contactId', $contactId); $this->assign('editButton', $this->createEditButton($contactId)); $this->assign('deleteButton', $this->createDeleteButton($contactId)); $this->assign('observations', $this->getUserGenObs($contactId)); parent::run(); } private function getUserGenObs(int $contactId): array { $userObservation = []; // todo you could do this with API4, no need for additional methods? $observationData = CRM_Nbrgeneralobservation_BAO_NbrGenObservations::getWithId($contactId); // $userObservation[] = $this->assembleObsRow($observationData); // try { // $nbrGenObservationses = \Civi\Api4\NbrGenObservations::get() // ->addSelect('*') // ->addWhere('entity_id', '=', $contactId) // ->setLimit(1) // ->execute(); // $observations = $nbrGenObservationses->first(); // If observation matches assemble row, otherwise continue if($observationData){ $userObservation = $this->assembleObsRow($observationData); } // } // catch (API_Exception $ex) { // } return $userObservation; } // todo Move this to utils -> in nihrbackbone, either in Utils or in service (nbrConfig) public static function yesOrNo($value) { if ($value !== NULL) { $value = ($value) ? "Yes" : "No"; } return $value; } // Convert to readable format, might not even need to change most private function assembleObsRow(array $observations): array { $observations['nvgo_hand_preference'] = CRM_Nihrbackbone_Utils::getOptionValueLabel($observations['nvgo_hand_preference'], 'nbr_hand_preference'); $observations['nvgo_ethnicity_id'] = CRM_Nihrbackbone_Utils::getOptionValueLabel($observations['nvgo_ethnicity_id'], 'nihr_ethnicity'); $observations['nvgo_abo_group'] = CRM_Nihrbackbone_Utils::getOptionValueLabel($observations['nvgo_abo_group'], 'nbr_abo_group'); $observations['nvgo_rhesus_factor'] = CRM_Nihrbackbone_Utils::getOptionValueLabel($observations['nvgo_rhesus_factor'], 'nbr_rhesus_factor'); $observations['nvgo_probably_consanguineous'] = $this->yesOrNo($observations['nvgo_probably_consanguineous']); $observations['nvgo_proband'] = ($observations['nvgo_proband']) ? "Proband" : NULL; $observations['nvgo_family_history'] = $this->yesOrNo($observations['nvgo_family_history']); $observations['nvgo_school_id'] = CRM_Nbrgeneralobservation_BAO_NbrGenObservations::getSchoolLabel($observations['nvgo_school_id']); $observations['nvgo_bmi'] = round($observations['nvgo_bmi'], 2); return ($observations); } protected function createEditButton($contactId) { $updateUrl = CRM_Utils_System::url('civicrm/nbrgeneralobservation/form/nbrgenobservations', 'reset=1&action=update&cid=' . $contactId, TRUE); $editButton = '<a class="action-item button" title="Update" href="' . $updateUrl . '">' . E::ts('Edit general observations') . '</a>'; return $editButton; } protected function createDeleteButton($contactId) { $deleteButton = '<a class="action-item button" id="deleteBtn" entity_id="' . $contactId . '" title="Delete"">' . E::ts('Delete general observations') . '</a>'; return $deleteButton; } }