X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fshipsimu%2Fmain%2Fwrapper%2Fclass_CompanyDatabaseWrapper.php;fp=application%2Fshipsimu%2Fmain%2Fwrapper%2Fclass_CompanyDatabaseWrapper.php;h=1552e67462bb1e0692d12719c15e391695326bac;hb=02a6b02f96d2193d2161e70477bf8f18a199389f;hp=0000000000000000000000000000000000000000;hpb=4f70843ae8428f051d70ccff5bb43fc4c03dda8d;p=shipsimu.git diff --git a/application/shipsimu/main/wrapper/class_CompanyDatabaseWrapper.php b/application/shipsimu/main/wrapper/class_CompanyDatabaseWrapper.php new file mode 100644 index 0000000..1552e67 --- /dev/null +++ b/application/shipsimu/main/wrapper/class_CompanyDatabaseWrapper.php @@ -0,0 +1,129 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class CompanyDatabaseWrapper extends BaseDatabaseWrapper { + /** + * Company instance + */ + private $companyInstance = null; + + // Constants for database tables + const DB_TABLE_COMPANY_DATA = 'company'; + const DB_TABLE_COMPANY_USER = 'company_user'; + + // Constants for database columns + const DB_COLUMN_PARTICIPANT_ID = 'participant_id'; + + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this wrapper class + * + * @param $companyInstance An instance of a generic company class or null if no specific + * @return $wrapperInstance An instance of this wrapper class + * @todo Find an interface which is suitable for all companies + */ + public static final function createCompanyDatabaseWrapper (ShippingCompany $companyInstance = null) { + // Create a new instance + $wrapperInstance = new CompanyDatabaseWrapper(); + + // Set (primary!) table name + $wrapperInstance->setTableName(self::DB_TABLE_COMPANY_DATA); + + // Set the company instance if not null + if (!is_null($companyInstance)) { + $wrapperInstance->setCompanyInstance($companyInstance); + } // END - if + + // Return the instance + return $wrapperInstance; + } + + /** + * Checks wether the given user participates in a company + * + * @param $userInstance An instance of a user class + * @return $participates Wether the user participates at lease in one company + */ + public function ifUserParticipatesInCompany (ManageableAccount $userInstance) { + // By default no user owns any company... ;) + $participates = false; + + // Get a search criteria class + $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); + + // Add the user primary key as a search criteria + $searchInstance->addCriteria(self::DB_COLUMN_PARTICIPANT_ID, $userInstance->getPrimaryKey()); + $searchInstance->setLimit(1); + + // Set company->user table + $this->setTableName(self::DB_TABLE_COMPANY_USER); + + // Get the result back + $resultInstance = $this->doSelectByCriteria($searchInstance); + + // Is there a result? + if ($resultInstance->next()) { + // Then cache it + $this->setResultInstance($resultInstance); + + // Entry found for further analysis/processing + $participates = true; + } // END - if + + // Return the result + return $participates; + } + + /** + * Setter for company instance + * + * @param $companyInstance An instance of a generic company + * @return void + * @todo Find an interface suitable for all types of companies + */ + protected final function setCompanyInstance (ShippingCompany $companyInstance) { + $this->companyInstance = $companyInstance; + } + + /** + * Getter for company instance + * + * @return $companyInstance An instance of a generic company + * @todo Find an interface suitable for all types of companies + */ + public final function getCompanyInstance () { + return $this->companyInstance; + } +} + +// [EOF] +?>