/** * Grant credits by one user to another * * @param $grantorId * @param $userId * @param $amount * @return bool */ public function grantCredits($grantorId, $userId, $amount) { if (!$grantorId || !$userId || !$amount) { return false; } $grantorBalance = $this->balanceDao->findByUserId($grantorId); if (!$grantorBalance || $grantorBalance->balance < $amount) { return false; } $balance = $this->balanceDao->findByUserId($userId); if (!$balance) { $balance = new USERCREDITS_BOL_Balance(); $balance->userId = $userId; $balance->balance = 0; } // increase balance $balance->balance = $balance->balance + $amount; $this->balanceDao->save($balance); //decrease grantor balance $grantorBalance->balance = $grantorBalance->balance - $amount; $this->balanceDao->save($grantorBalance); return true; }