/** * Method the add the reward * * @param Request $request * @return boolean * @throws \Exception */ public function success(Request $request) { $user = $this->getUser4Id($request->getUserId()); if (!$user) { throw new \Exception('User not found'); } // we already added add the reward, so skip this =) if ($this->isStatusSuccess($request) && $this->isDonateAlreadyAdded($request)) { // no exception, or the other side spam the service ... throw new AlreadyAddedException('already added'); } // check if donate should add coins or remove $request->setAmount(abs($request->getAmount())); $coins = $this->isStatusSuccess($request) ? $request->getAmount() : -$request->getAmount(); $request->setAmount($coins); // save the message if gamebackend-service is unavailable $errorMessage = ''; try { $this->coinService->addCoins($user, $coins); } catch (\Exception $e) { $request->setStatus($request::STATUS_ERROR); $errorMessage = $e->getMessage(); } if ($request->isReasonToBan()) { $expire = (int) $this->collectionOptions->getConfig()['payment-api']['ban-time'] + time(); $reason = 'Donate - ChargeBack'; $this->userBlockService->blockUser($user, $expire, $reason); } $this->saveDonateLog($request, $user, $errorMessage); return true; }
/** * @return int */ public function __invoke() { return $this->coinService->getCoinsOfUser($this->authService->getIdentity()); }