<?php
namespace App\Controller;
use App\Entity\SysUsers;
use App\Service\EntityManagerFactory;
use App\Service\SysUsersService;
use Illuminate\Contracts\Container\Container;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use App\Service\StatisticsService;
class DefaultController extends BaseController
{
/**
* @Route("/", name="homepage")
* @Security("is_granted('IS_AUTHENTICATED_FULLY')")
* @param ContainerInterface $container
* @return \Symfony\Component\HttpFoundation\Response
*/
public function homepageAction(Request $request, ContainerInterface $container, EntityManagerFactory $emf)
{
/** @var SysUsers $user */
$user = $this->getUser();
$router = $this->container->get('router');
$allowedIp = $container->getParameter("ip_allowed");
$actualIp = SysUsersService::getRealIpAddr();
if (false === in_array($actualIp, $allowedIp) && false === $user->getExternalIp()) {
return new RedirectResponse($router->generate('fos_user_security_logout'), 307);
}
$authChecker = $this->container->get('security.authorization_checker');
if ($authChecker->isGranted('ROLE_CLIENT')) {
return new RedirectResponse($router->generate('clientOrderList'), 307);
}
// Compte les nouvelles commandes en lignes
$emf->getCurrentRaffinManager()->getFilters()->disable("disabledClientFilter");
$em = $emf->getCurrentRaffinManager();
$q = ' SELECT e.id FROM App:CommandeSpeciale e';
$q .= ' INNER JOIN e.details AS d WITH d.acomptePrisSur IS NULL ';
$q .= ' WHERE e.company = :company ';
$q .= ' AND d.status <> 2 AND exists (select csd.id from App:CommandeSpecialeDetail csd where csd.acomptePrisSur is null) ';
$q .= ' AND e.commandeEnLigneType is not null ';
$q .= ' GROUP BY e.id ';
$query = $em->createQuery($q);
$query->setParameter('company', $this->getCurrentCompany());
$onlineOrdersCount = count($query->execute());
$emf->getCurrentRaffinManager()->getFilters()->enable("disabledClientFilter");
return $this->render('default/index.html.twig', [
'resetCookieCaissier' => $this->getCurrentUser()->getCodeCaissier(),
'onlineOrdersCount' => $onlineOrdersCount,
]);
}
}