<?php
declare(strict_types=1);
namespace App\Controller;
use App\Entity\Reward;
use App\Logic\MailLogic;
use App\Logic\PrepaidCardManager;
use App\Logic\RewardService;
use App\Repository\RewardRepository;
use Doctrine\ORM\EntityManagerInterface;
use Sonata\AdminBundle\Controller\CRUDController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
final class RewardAdminController extends CRUDController
{
public function payAction(RewardRepository $rewardRepository, Request $request, EntityManagerInterface $entityManager, RewardService $rewardService)
{
$rewardsAll = $rewardRepository->findRewards();
$rewards = [];
foreach ($rewardsAll as $reward){
$rewardItem = isset($reward[0]) ? $reward[0] : null;
if($reward['total_price'] >= 250 || ($rewardItem && $rewardItem->getSkipAmountCheck() === true)){
$reward[0]->totalSum = $reward['total_price'];
$rewards[] = $reward[0];
}
}
$form = $this->createFormBuilder()->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach ($rewards as $reward) {
$rewardService->payReward($reward, false);
}
$entityManager->flush();
return $this->redirect($this->admin->generateUrl('pay'));
}
return $this->renderWithExtraParams('admin/rewards/pay_list.html.twig', [
'rewards' => $rewards,
'form' => $form->createView()
]);
}
public function payRewardAction(Reward $reward, Request $request, RewardService $rewardService)
{
if($reward->getStatus() === Reward::STATUS_PAID){
$this->addFlash('danger', 'Reward is already Paid');
}
$rewardService->payReward($reward);
return new RedirectResponse($request->headers->get('referer'));
}
}