/** * * @return Pap_Db_UserInCommissionGroup */ protected function getUserCommissionGroup() { if($this->userInGroup !== null) { return $this->userInGroup; } try { $userInGroup = Pap_Db_Table_UserInCommissionGroup::getInstance()->getUserCommissionGroup( $this->getCurrentUserId(), $this->transaction->getCampaignId()); } catch (Gpf_DbEngine_TooManyRowsException $e) { Gpf_Log::error(sprintf('Database not in consistent state. User %s has many commission groups', $userId)); Pap_Db_Table_UserInCommissionGroup::removeUserFromCampaignGroups($userId, $campaignId); $userInGroup = new Pap_Db_UserInCommissionGroup(); $userInGroup->setStatus(Pap_Features_PerformanceRewards_Condition::STATUS_APPROVED); $userInGroup->setUserId($userId); } return $this->userInGroup = $userInGroup; }
/** * * @return Pap_Db_UserInCommissionGroup */ public function getUserCommissionGroup($userId, $campaignId) { $selectBuilder = new Gpf_SqlBuilder_SelectBuilder(); $selectBuilder->select->addAll(Pap_Db_Table_UserInCommissionGroup::getInstance(), 'ucg'); $selectBuilder->from->add(Pap_Db_Table_UserInCommissionGroup::getName(), 'ucg'); $selectBuilder->from->addInnerJoin(Pap_Db_Table_CommissionGroups::getName(), 'cg', 'ucg.'.Pap_Db_Table_UserInCommissionGroup::COMMISSION_GROUP_ID .'='. 'cg.'.Pap_Db_Table_CommissionGroups::ID); $selectBuilder->where->add('ucg.'.Pap_Db_Table_UserInCommissionGroup::USER_ID, '=', $userId); $selectBuilder->where->add('cg.'.Pap_Db_Table_CommissionGroups::CAMPAIGN_ID, '=', $campaignId); $userInGroup = new Pap_Db_UserInCommissionGroup(); $userInGroup->setStatus(Pap_Features_PerformanceRewards_Condition::STATUS_APPROVED); try { $record = $selectBuilder->getOneRow(); $userInGroup->fillFromRecord($record); $userInGroup->setPersistent(true); } catch (Gpf_DbEngine_NoRowException $e) { $userInGroup->setUserId($userId); $userInGroup->setCommissionGroupId(Pap_Db_Table_Campaigns::getInstance()->getDefaultCommissionGroup($campaignId)->getId()); } return $userInGroup; }
public function init() { $this->setTable(Pap_Db_Table_UserInCommissionGroup::getInstance()); parent::init(); }
/** * @param Pap_Db_Transaction $transaction * @return Pap_Db_Commission */ protected function getCommissionForTransaction(Pap_Db_Transaction $transaction) { $commission = new Pap_Db_Commission(); $commission->setCommissionTypeId($transaction->getCommissionTypeId()); $commission->setGroupId($transaction->getCommissionGroupId()); $commission->setTier($transaction->getTier()); try { $commission->loadFromData(array(Pap_Db_Table_Commissions::TYPE_ID, Pap_Db_Table_Commissions::GROUP_ID)); } catch (Gpf_Exception $e) { $userInGroup = Pap_Db_Table_UserInCommissionGroup::getInstance()->getUserCommissionGroup($transaction->getUserId(), $transaction->getCampaignId()); $commission->setGroupId($userInGroup->getCommissionGroupId()); try { $commission->loadFromData(array(Pap_Db_Table_Commissions::TYPE_ID, Pap_Db_Table_Commissions::GROUP_ID, Pap_Db_Table_Commissions::TIER)); } catch (Gpf_Exception $e) { throw new Gpf_Exception($this->_('Unable to find commision for transaction id=' . $transaction->getId())); } } return $commission; }