Skip to content

Commit

Permalink
added internal donate type, via admin panel
Browse files Browse the repository at this point in the history
  • Loading branch information
kokspflanze committed Nov 1, 2015
1 parent e9215e9 commit 1cc1416
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 36 deletions.
1 change: 1 addition & 0 deletions src/PServerCMS/Entity/DonateLog.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class DonateLog

const TYPE_PAYMENT_WALL = 'paymentwall';
const TYPE_SUPER_REWARD = 'superreward';
const TYPE_INTERNAL = 'internal';

const STATUS_SUCCESS = 1;
const STATUS_ERROR = 0;
Expand Down
3 changes: 2 additions & 1 deletion src/PServerCMS/Entity/Repository/DonateLog.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ public function getDonationDataSuccess( \DateTime $dateTime )
public function getDonateTypes(){
return [
Entity::TYPE_PAYMENT_WALL,
Entity::TYPE_SUPER_REWARD
Entity::TYPE_SUPER_REWARD,
Entity::TYPE_INTERNAL
];
}

Expand Down
23 changes: 18 additions & 5 deletions src/PServerCMS/Service/Coin.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,34 @@ class Coin extends InvokableBase
/**
* @param $data
* @param $userId
* @param UserInterface $adminUser
* @return bool
*/
public function addCoinsForm($data, $userId)
public function addCoinsForm($data, $userId, UserInterface $adminUser)
{
$form = $this->getAdminCoinForm();
$form->setData($data);

if(!$form->isValid()){
if (!$form->isValid()) {
return false;
}

$user = $this->getUser4Id($userId);

if ($user) {
$data = $form->getData();
$this->addCoins($user, $data['coins']);


$class = $this->getEntityOptions()->getDonateLog();
/** @var \PServerCMS\Entity\DonateLog $donateEntity */
$donateEntity = new $class;
$donateEntity->setTransactionId('AdminPanel: ' . $adminUser->getUsername())
->setCoins($data['coins'])
->setIp($this->getIpService()->getIp())
->setSuccess($donateEntity::STATUS_SUCCESS)
->setType($donateEntity::TYPE_INTERNAL)
->setUser($user);
}

return true;
Expand All @@ -34,7 +47,7 @@ public function addCoinsForm($data, $userId)
* @param UserInterface $user
* @return int
*/
public function getCoinsOfUser( UserInterface $user )
public function getCoinsOfUser(UserInterface $user)
{
return $this->getGameBackendService()->getCoins($user);
}
Expand All @@ -44,7 +57,7 @@ public function getCoinsOfUser( UserInterface $user )
* @param $amount
* @return bool
*/
public function addCoins( UserInterface $user, $amount )
public function addCoins(UserInterface $user, $amount)
{
return $this->getGameBackendService()->setCoins($user, $amount);
}
Expand Down
63 changes: 33 additions & 30 deletions src/PServerCMS/Service/PaymentNotify.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ class PaymentNotify extends InvokableBase implements LogInterface
* @return boolean
* @throws \Exception
*/
public function success( Request $request )
public function success(Request $request)
{
$user = $this->getUser4Id( $request->getUserId() );
$user = $this->getUser4Id($request->getUserId());
if (!$user) {
throw new \Exception( 'User not found' );
throw new \Exception('User not found');
}

// we already added add the reward, so skip this =)
if ($this->isStatusSuccess($request) && $this->isDonateAlreadyAdded($request)) {
throw new \Exception( 'already added' );
throw new \Exception('already added');
}

// check if donate should add coins or remove
Expand All @@ -35,36 +35,36 @@ public function success( Request $request )
// save the message if gamebackend-service is unavailable
$errorMessage = '';
try {
$this->getCoinService()->addCoins( $user, $coins );
} catch( \Exception $e ) {
$request->setStatus( $request::STATUS_ERROR );
$this->getCoinService()->addCoins($user, $coins);
} catch (\Exception $e) {
$request->setStatus($request::STATUS_ERROR);
$errorMessage = $e->getMessage();
}

if ($request->isReasonToBan()) {
$expire = (int)$this->getConfigService()->get( 'payment-api.ban-time', 0 ) + time();
$expire = (int)$this->getConfigService()->get('payment-api.ban-time', 0) + time();
$reason = 'Donate - ChargeBack';

$this->getUserBlockService()->blockUser( $user, $expire, $reason );
$this->getUserBlockService()->blockUser($user, $expire, $reason);
}

$this->saveDonateLog( $request, $user, $errorMessage );
$this->saveDonateLog($request, $user, $errorMessage);

return true;
}

/**
* Method to log the error
*
* @param Request $request
* @param Request $request
* @param \Exception $e
* @return bool
*/
public function error( Request $request, \Exception $e )
public function error(Request $request, \Exception $e)
{
$user = $this->getUser4Id( $request->getUserId() );
$user = $this->getUser4Id($request->getUserId());

$this->saveDonateLog( $request, $user, $e->getMessage() );
$this->saveDonateLog($request, $user, $e->getMessage());
}

/**
Expand All @@ -73,23 +73,25 @@ public function error( Request $request, \Exception $e )
* @param string $errorMessage
* @return DonateLog
*/
protected function getDonateLogEntity4Data( Request $request, $user, $errorMessage = '' )
protected function getDonateLogEntity4Data(Request $request, $user, $errorMessage = '')
{
$data = $request->toArray();
if ($errorMessage) {
$data['errorMessage'] = $errorMessage;
}

$donateEntity = new DonateLog();
$donateEntity->setTransactionId( $request->getTransactionId() )
->setCoins( $request->getAmount() )
->setIp( $request->getIp() )
->setSuccess( $request->getStatus() )
->setType( $this->mapPaymentProvider2DonateType( $request ) )
->setDesc( json_encode( $data ) );
$class = $this->getEntityOptions()->getDonateLog();
/** @var DonateLog $donateEntity */
$donateEntity = new $class;
$donateEntity->setTransactionId($request->getTransactionId())
->setCoins($request->getAmount())
->setIp($request->getIp())
->setSuccess($request->getStatus())
->setType($this->mapPaymentProvider2DonateType($request))
->setDesc(json_encode($data));

if ($user) {
$donateEntity->setUser( $user );
$donateEntity->setUser($user);
}

return $donateEntity;
Expand All @@ -100,11 +102,11 @@ protected function getDonateLogEntity4Data( Request $request, $user, $errorMessa
* @param $user
* @param string $errorMessage
*/
protected function saveDonateLog( Request $request, $user, $errorMessage = '' )
protected function saveDonateLog(Request $request, $user, $errorMessage = '')
{
$donateLog = $this->getDonateLogEntity4Data( $request, $user, $errorMessage );
$donateLog = $this->getDonateLogEntity4Data($request, $user, $errorMessage);
$entityManager = $this->getEntityManager();
$entityManager->persist( $donateLog );
$entityManager->persist($donateLog);
$entityManager->flush();
}

Expand All @@ -114,7 +116,7 @@ protected function saveDonateLog( Request $request, $user, $errorMessage = '' )
* @param Request $request
* @return string
*/
protected function mapPaymentProvider2DonateType( Request $request )
protected function mapPaymentProvider2DonateType(Request $request)
{
$result = '';
switch ($request->getProvider()) {
Expand All @@ -135,12 +137,13 @@ protected function mapPaymentProvider2DonateType( Request $request )
* @param Request $request
* @return bool
*/
protected function isDonateAlreadyAdded( Request $request )
protected function isDonateAlreadyAdded(Request $request)
{
/** @var \PServerCMS\Entity\Repository\DonateLog $donateEntity */
$donateEntity = $this->getEntityManager()->getRepository( $this->getEntityOptions()->getDonateLog() );
$donateEntity = $this->getEntityManager()->getRepository($this->getEntityOptions()->getDonateLog());

return $donateEntity->isDonateAlreadyAdded( $request->getTransactionId(), $this->mapPaymentProvider2DonateType( $request ) );
return $donateEntity->isDonateAlreadyAdded($request->getTransactionId(),
$this->mapPaymentProvider2DonateType($request));
}

/**
Expand Down

0 comments on commit 1cc1416

Please sign in to comment.