| <?php | |
| 	/** | |
| 	 * This is the abstract Panel class for the List All functionality | |
| 	 * of the Address class.  This code-generated class | |
| 	 * contains a datagrid to display an HTML page that can | |
| 	 * list a collection of Address objects.  It includes | |
| 	 * functionality to perform pagination and sorting on columns. | |
| 	 * | |
| 	 * To take advantage of some (or all) of these control objects, you | |
| 	 * must create a new QPanel which extends this AddressListPanelBase | |
| 	 * class. | |
| 	 * | |
| 	 * Any and all changes to this file will be overwritten with any subsequent re- | |
| 	 * code generation. | |
| 	 *  | |
| 	 * @package Quasi | |
| 	 * @subpackage Drafts | |
| 	 *  | |
| 	 */ | |
| 	class AddressListPanel extends QPanel | |
|     { | |
| 		 | |
|         protected $strNameToFind; | |
|         protected $objAccount = null; | |
|          | |
|         // Callback Method Names | |
|         protected $strSetEditPanelMethod; | |
|         protected $strCloseEditPanelMethod; | |
|          | |
|         // Local instance of the Meta DataGrid to list Addresses | |
| 		public $dtgAddresses; | |
| 
 | |
|         public $lblMessage; | |
|         public $txtNameSearch; | |
|         public $txtNumberSearch; | |
| 
 | |
| 		// Other public QControls in this panel | |
| 		public $btnCreateNew; | |
| 		public $pxyEdit; | |
| 
 | |
| 		 | |
| 		public function __construct($objParentObject, $strSetEditPanelMethod, $strCloseEditPanelMethod, $strControlId = null) { | |
| 			// Call the Parent | |
| 			try { | |
| 				parent::__construct($objParentObject, $strControlId); | |
| 			} catch (QCallerException $objExc) { | |
| 				$objExc->IncrementOffset(); | |
| 				throw $objExc; | |
| 			} | |
| 
 | |
| 			// Record Method Callbacks | |
| 			$this->strSetEditPanelMethod = $strSetEditPanelMethod; | |
| 			$this->strCloseEditPanelMethod = $strCloseEditPanelMethod; | |
| 
 | |
| 			// Setup the Template | |
| 			$this->Template = 'AddressListPanel.tpl.php'; | |
|              | |
|             //messages (eg. Name not found ..) | |
|             $this->lblMessage = new QLabel($this); | |
|              | |
|             // a search field for Address by name .. | |
|             $this->txtNameSearch = new QTextBox($this); | |
|             $this->txtNameSearch->AddAction(new QEnterKeyEvent(), new QServerControlAction($this, 'txtNameSearch_Click')); | |
|             $this->txtNameSearch->Name = 'Search by Name:'; | |
| 
 | |
|             // a search field for Address by account number .. | |
|             $this->txtNumberSearch = new QIntegerTextBox($this); | |
|             $this->txtNumberSearch->AddAction(new QEnterKeyEvent(), new QServerControlAction($this, 'txtNumberSearch_Click')); | |
|             $this->txtNumberSearch->Name = 'Search by Number:'; | |
|             $this->txtNumberSearch->CausesValidation = $this->txtNumberSearch; | |
| 
 | |
| 			// Instantiate the Meta DataGrid | |
| 			$this->dtgAddresses = new AddressDataGrid($this); | |
| 
 | |
| 			// Style the DataGrid (if desired) | |
| 			$this->dtgAddresses->CssClass = 'datagrid'; | |
| 			$this->dtgAddresses->AlternateRowStyle->CssClass = 'alternate'; | |
|             $this->dtgAddresses->SetDataBinder('AddressDataBinder', $this); | |
| 
 | |
| 			// Add Pagination (if desired) | |
| 			$this->dtgAddresses->Paginator = new QPaginator($this->dtgAddresses); | |
| 			$this->dtgAddresses->ItemsPerPage = 8; | |
| 
 | |
| 			// Use the MetaDataGrid functionality to add Columns for this datagrid | |
|  | |
| 			// Create an Edit Column | |
| 			$this->pxyEdit = new QControlProxy($this); | |
| 			$this->pxyEdit->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'pxyEdit_Click')); | |
| 			$this->dtgAddresses->MetaAddEditProxyColumn($this->pxyEdit, 'Edit', 'Edit'); | |
| 
 | |
| 			// Create the Other Columns (note that you can use strings for address's properties, or you | |
| 			// can traverse down QQN::address() to display fields that are down the hierarchy) | |
| 			$this->dtgAddresses->MetaAddColumn('Id'); | |
| 			$this->dtgAddresses->MetaAddColumn('Title'); | |
| 			$this->dtgAddresses->MetaAddColumn(QQN::Address()->Person); | |
| 			$this->dtgAddresses->MetaAddColumn('Street1'); | |
| 			$this->dtgAddresses->MetaAddColumn('Street2'); | |
| 			$this->dtgAddresses->MetaAddColumn('Suburb'); | |
| 			$this->dtgAddresses->MetaAddColumn('City'); | |
| 			$this->dtgAddresses->MetaAddColumn('County'); | |
| 			$this->dtgAddresses->MetaAddTypeColumn('ZoneId', 'ZoneType'); | |
| 			$this->dtgAddresses->MetaAddTypeColumn('CountryId', 'CountryType'); | |
| 			$this->dtgAddresses->MetaAddColumn('PostalCode'); | |
| 			$this->dtgAddresses->MetaAddColumn('IsCurrent'); | |
| 			$this->dtgAddresses->MetaAddTypeColumn('TypeId', 'AddressType'); | |
| 			$this->dtgAddresses->MetaAddColumn('CreationDate'); | |
| 			$this->dtgAddresses->MetaAddColumn('LastModificationDate'); | |
| 
 | |
| 			// Setup the Create New button | |
| 			$this->btnCreateNew = new QButton($this); | |
| 			$this->btnCreateNew->Text = QApplication::Translate('Create a New') . ' ' . QApplication::Translate('Address'); | |
| 			$this->btnCreateNew->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnCreateNew_Click')); | |
| 		} | |
|         public function txtNumberSearch_Click($strFormId, $strControlId, $strParameter) | |
|         { | |
|             $intAccountId = $this->txtNumberSearch->Text; | |
|             if( $this->objAccount = Account::Load($intAccountId) ) | |
|             { | |
|                 $this->lblMessage->Text = ''; | |
|                 $this->dtgAddresses->Refresh(); | |
|             } | |
|             else | |
|                 $this->lblMessage->Text = 'Account ' . $intAccountId . ' not found.'; | |
|         } | |
|          | |
|         public function txtNameSearch_Click($strFormId, $strControlId, $strParameter) | |
|         { | |
|             $this->lblMessage->Text = ''; | |
|             $this->strNameToFind =$this->txtNameSearch->Text; | |
|             $this->dtgAddresses->Refresh(); | |
|         } | |
|         public function AddressDataBinder() | |
|         { | |
|             $aryClauses = array(); | |
|             $aryConditions = array(); | |
|             $aryPersonIds = array(); | |
|             $objCondition = null; | |
|              | |
|             if ($objClause = $this->dtgAddresses->OrderByClause) | |
|                 array_push($aryClauses, $objClause); | |
| 
 | |
|             if ($objClause = $this->dtgAddresses->LimitClause) | |
|                 array_push($aryClauses, $objClause); | |
|              | |
|             if($this->strNameToFind) | |
|             { | |
|                 $aryNamesToFind = explode(' ', $this->txtNameSearch->Text); | |
|                 $aryPersons = array(); | |
|                 if(sizeof($aryNamesToFind) > 1 ) | |
|                 { | |
|                     $aryPersons = Person::QueryArray( | |
|                                             QQ::AndCondition( | |
|                                                 QQ::Like(QQN::Person()->FirstName, $aryNamesToFind[0]), | |
|                                                 QQ::Like(QQN::Person()->LastName,  $aryNamesToFind[1]) | |
|                                             ) | |
|                                         ); | |
|                 } | |
|                 elseif(sizeof($aryNamesToFind) == 1 ) | |
|                 { | |
|                     $aryPersons = Person::QueryArray( | |
|                                             QQ::OrCondition( | |
|                                                 QQ::Like(QQN::Person()->FirstName, $this->txtNameSearch->Text), | |
|                                                 QQ::Like(QQN::Person()->LastName, $this->txtNameSearch->Text) | |
|                                             ) | |
|                                         ); | |
|                 } | |
| 
 | |
|                 foreach( $aryPersons as $objPerson ) | |
|                     $aryPersonIds[] = $objPerson->Id; | |
|             } | |
| 
 | |
| /*            if($this->intAddressStatusId ) | |
|             {     | |
|                 $this->dtgAddresses->TotalItemCount = Address::QueryCount(QQ::Equal(QQN::Address()->StatusId, $this->intAddressStatusId)); | |
|                 $aryAddresses = Address::QueryArray(QQ::Equal( QQN::Address()->StatusId, $this->intAddressStatusId), $aryClauses ); | |
|             }*/ | |
|              | |
|             if($this->objAccount ) | |
|             { | |
|                 $aryPersons = array(); | |
|                 $aryPersons = Person::QueryArray( | |
|                                         QQ::OrCondition( | |
|                                             QQ::Equal(QQN::Person()->Id, $this->objAccount->Person->Id), | |
|                                             QQ::Equal(QQN::Person()->OwnerPersonId, $this->objAccount->Person->Id) | |
|                                         ) | |
|                                     ); | |
| 
 | |
|                  | |
|                 foreach( $aryPersons as $objPerson ) | |
|                     $aryPersonIds[] = $objPerson->Id; | |
|                  | |
|             } | |
|             if( count( $aryPersonIds) ) | |
|                 $aryConditions[] =  QQ::In( QQN::Address()->PersonId, $aryPersonIds); | |
|                   | |
|             if(count($aryConditions) > 1) | |
|                 $objCondition = QQ::AndCondition($aryConditions); | |
|             elseif(count($aryConditions) == 1) | |
|                 $objCondition = $aryConditions[0]; | |
|             else | |
|                 $objCondition = QQ::All(); | |
|              | |
|             $this->dtgAddresses->TotalItemCount = Address::QueryCount($objCondition); | |
|             $aryAddresses = Address::QueryArray($objCondition, $aryClauses ); | |
|             $this->dtgAddresses->DataSource = $aryAddresses; | |
|         } | |
| 
 | |
| 		public function pxyEdit_Click($strFormId, $strControlId, $strParameter) { | |
| 			$strParameterArray = explode(',', $strParameter); | |
| 			$objEditPanel = new AddressEditPanel($this, $this->strCloseEditPanelMethod, $strParameterArray[0]); | |
| 
 | |
| 			$strMethodName = $this->strSetEditPanelMethod; | |
| 			$this->objForm->$strMethodName($objEditPanel); | |
| 		} | |
| 
 | |
| 		public function btnCreateNew_Click($strFormId, $strControlId, $strParameter) { | |
| 			$objEditPanel = new AddressEditPanel($this, $this->strCloseEditPanelMethod, null); | |
| 			$strMethodName = $this->strSetEditPanelMethod; | |
| 			$this->objForm->$strMethodName($objEditPanel); | |
| 		} | |
| 	} | |
| ?>
 |