<?php
namespace App\Controller;
use App\Repository\AuthUserRepository;
use App\Repository\Csb\UserCsbRepository;
use App\Repository\Treezor\Wallet\WalletRepository;
use App\Security\EmailVerifier;
use App\Service\App\ApiResponseService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
class DefaultController extends AbstractController
{
/** @Route("/{reactRouting}", name="home", defaults={"reactRouting": null}) */
public function index(): Response
{
return $this->render('default/index.html.twig');
}
// /** @Route("/v2/{reactRouting}", name="home", defaults={"reactRouting": null}) */
// public function v2(): Response
// {
// return $this->render('default/v2.html.twig');
// }
/**
* @Route("/api/verifyemail", name="api_verifyEmail")
* @param Request $request
* @param AuthUserRepository $authUserRepository
* @param ApiResponseService $apiResponseService
* @param EmailVerifier $emailVerifier
* @return Response
* @deprecated to be removed in next version.
* @throws ClientExceptionInterface
* @throws DecodingExceptionInterface
* @throws RedirectionExceptionInterface
* @throws ServerExceptionInterface
* @throws TransportExceptionInterface
*/
public function verifyUserEmail(
Request $request,
AuthUserRepository $authUserRepository,
ApiResponseService $apiResponseService,
EmailVerifier $emailVerifier
): Response
{
$id = $request->get('q');
if (null === $id) {
return $apiResponseService->getAccessDeniedResponse();
}
$user = $authUserRepository->find($id);
if (null === $user) {
return $apiResponseService->getAccessDeniedResponse();
}
try {
$emailVerifier->handleEmailConfirmation($request, $user);
} catch (VerifyEmailExceptionInterface $exception) {
return $apiResponseService->getCustomResponse(
false,
Response::HTTP_NOT_ACCEPTABLE,
$exception->getReason()
);
}
return $this->redirect($this->generateUrl('home'));
}
/**
* @Route("/api/admin/dashboardWidget", name="api_admin_dashboardWidget")
*/
public function dashboardWidget(UserCsbRepository $userCsbRepository, WalletRepository $walletRepository): Response
{
$userWithKycReview = $userCsbRepository->count(['kycReview' => !null]);
$userWithoutKycReview = $userCsbRepository->count(['kycReview' => null]);
$localUsers = $userCsbRepository->count(['userId' => null]);
$AllUsers = $userWithKycReview + $userWithoutKycReview;
$PendingWallets = $walletRepository->count(['walletStatus' => 'PENDING']);
$ValidatedWallets = $walletRepository->count(['walletStatus' => 'VALIDATED']);
$canceledWallets = $walletRepository->count(['walletStatus' => 'CANCELED']);
$AllWallets = $PendingWallets + $ValidatedWallets + $canceledWallets;
$ElecMonyWallet = $walletRepository->count(['walletTypeId' => 9]);
$PayAccountWallet = $walletRepository->count(['walletTypeId' => 10]);
return $this->json([
'countAllUsers' => $AllUsers,
'userWithKycReview' => $userWithKycReview,
'userWithoutKycReview' => $userWithoutKycReview,
'localUsers' => $localUsers,
'PendingWallets' => $PendingWallets,
'ValidatedWallets' => $ValidatedWallets,
'canceledWallets' => $canceledWallets,
'AllWallets' => $AllWallets,
'ElecMonyWallet' => $ElecMonyWallet,
'PayAccountWallet' => $PayAccountWallet
], Response::HTTP_OK);
}
}