<?php
namespace App\Controller\Back;
use App\Entity\Company;
use App\Repository\CompanyRepository;
use App\Repository\PaiementRepository;
use App\Services\MangoPayService;
use App\Services\StripeSubscriptionService;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/admin/subscriptions")
* @IsGranted("ROLE_ADMIN_LIMITED")
*/
class SubscriptionController extends AbstractController {
/**
* @var EntityManagerInterface
*/
private $em;
/**
* @var MangoPayService
*/
private $mangoPayService;
/**
* @var StripeSubscriptionService
*/
private $stripeSubscriptionService;
public function __construct(EntityManagerInterface $em, MangoPayService $mangoPayService, StripeSubscriptionService $stripeSubscriptionService)
{
$this->em = $em;
$this->mangoPayService = $mangoPayService;
$this->stripeSubscriptionService = $stripeSubscriptionService;
}
/**
* @Route("/subscribers/list", name="admin_subscribers_list")
*/
public function everySubscription(CompanyRepository $companyRepository)
{
$companies = $companyRepository->getSubscribedCompanies();
return $this->render('back/subscription/index.html.twig', [
'companies' => $companies
]);
}
/**
* @Route("/paiements", name="app_admin_subscription_paiements")
*/
public function paiements(PaiementRepository $paiementRepository): Response
{
$paiements = $paiementRepository->findByExistentAbonnement();
return $this->render('back/admin_finances/paiements.html.twig', [
'paiements' => $paiements,
'controller_name' => 'AdminFinancesController',
]);
}
/**
* @Route("/disable/subscription/{id}", name="admin_subscription_subscription_end")
*/
public function disableSubscription(Company $company, Request $request)
{
if (!$this->getUser() ) {
return $this->redirectToRoute('front_home');
}
if (!$this->isCsrfTokenValid('unsubscribe' . $company->getId(), $request->request->get('token'))) {
$this->addFlash('danger','jeton csfr invalide !!');
return $this->redirectToRoute('admin_subscribers_list');
}
$this->stripeSubscriptionService->cancelCompanySubscription($company, $this->em);
return $this->redirectToRoute('admin_subscribers_list');
}
}