public static function addFundsFin(Transaction $transaction) { if ($transaction->getIsPaid()) { // транзакция уже была обработана return false; } else { $transaction->addFundsFin(); } // set new balance $user = UserTable::getInstance()->findOneById($transaction->getIdReceiver()); $user->setBalans($transaction->getReceiverBalanceAfter()); $user->save(); $amount = $transaction->getAmount(); // write to BalanceUser instance if (!($userBalance = BalanceUserTable::getByUserIdAndPeriodId($user->getId()))) { $userBalance = new BalanceUser(); $userBalance->setPeriod(Period::getCurrentPeriod()); $userBalance->setUser($user); } $userBalance->setAddFunds($userBalance->getAddFunds() + $amount); $userBalance->save(); if (!($systemBalance = BalanceSystem::getCurrentBalanceInstance())) { sfContext::getInstance()->getLogger()->info('aS4W Error: getCurrentBalanceInstance return false'); return false; } if ($user->getUSerTypePrefix() == 'u') { $systemBalance->setDepositUser($systemBalance->getDepositUser() + $amount); } else { switch ($user->getTariff()) { case 'standart': $systemBalance->setDepositStandart($systemBalance->getDepositStandart() + $amount); break; case 'super': $systemBalance->setDepositSuper($systemBalance->getDepositSuper() + $amount); break; case 'expert': $systemBalance->setDepositExpert($systemBalance->getDepositExpert() + $amount); break; } } $systemBalance->save(); // If user blocked try UnBlock if ($user->is_blocked) { $user->tryUnBlockUser(); } return true; }
/** * Saves form * * @param sfForm $form * @param <string> $utype * @return User $user */ protected function saveForm(sfForm $form) { $user = $form->save(); $group = UserGroupTable::getInstance()->findOneBy('name', $user->getUtype()); $userGroup = new User__Group(); $userGroup->setUser($user); $userGroup->setGroup($group); $userGroup->save(); $userBalance = new BalanceUser(); $userBalance->setPeriod(Period::getCurrentPeriod()); $userBalance->setUser($user); $userBalance->save(); $user->setIsBlocked(true); $user->setActivationCode(sha1($user->getEmail() . mt_rand(10, 15))); $user->save(); return $user; }