src/Controller/AppController.php line 160
<?phpnamespace App\Controller;use App\Entity\ConnectionLog;use App\Entity\Invoice;use App\Entity\User;use App\Kimia;use App\Model\Pdf\Wrapper;use App\Repository\ArticleRepository;use App\Repository\ConnectionLogRepository;use App\Repository\DepartmentRepository;use App\Repository\EmployeeRepository;use App\Repository\EstablishmentRepository;use App\Repository\JournalRepository;use App\Repository\LotRepository;use App\Repository\MenuRepository;use App\Repository\OrderRepository;use App\Repository\PromotionRepository;use App\Repository\TicketRepository;use App\Service\Establishment\EstablishmentManager;use App\Service\HostResolver;use DateTime;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\ORM\EntityManagerInterface;use Dompdf\Dompdf;use Dompdf\Options;use GroupIN\ConfigBundle\Service\Config;use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\StreamedResponse;use Symfony\Component\Routing\Annotation\Route;use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;class AppController extends AbstractController{public function __construct(private HostResolver $hostResolver,private EstablishmentManager $establishmentManager,private EstablishmentRepository $establishmentRepository,private DepartmentRepository $departmentRepository,private EmployeeRepository $employeeRepository,private ConnectionLogRepository $connectionLogRepository,private JournalRepository $journalRepository,private LotRepository $lotRepository,private TicketRepository $ticketRepository,private ArticleRepository $articleRepository,){}#[IsGranted('IS_AUTHENTICATED_FULLY')]#[Route('/app', name: 'app')]public function app(OrderRepository $orderRepository,PromotionRepository $promotionRepository,JWTTokenManagerInterface $jwtManager): Response{/** @var User $user */$user = $this->getUser();$establishment = $this->hostResolver->getEstablishmentManager()->getConnected();if (is_null($establishment))return $this->redirectToRoute('app_self');$employee = $this->employeeRepository->findOneByEstablishment($establishment, $user);$token = $jwtManager->create($user);$journal = $this->journalRepository->findOneBy(['establishment' => $establishment], ['id' => 'DESC']);$timestamp = $journal?->getCreatedAt()->getTimestamp();if ($employee && $employee->getIsGranted(Kimia::ROLE_WAITER)) {$orders = $orderRepository->findByWaiter($establishment, $employee);} else {$orders = $orderRepository->findNotCancelledByEstablishment($establishment, 5, true, $timestamp);}$lots = [];$articles = 0;$tickets = 0;$ticketsSales = 0;if ((int)$establishment->getType() === Kimia::TYPE_TICKET) {$lots = $this->lotRepository->findBy(['establishment' => $establishment], ['id' => 'DESC']);$tickets = count($this->ticketRepository->findByEstablishment($establishment));$ticketsSales = count($this->ticketRepository->findSalesByEstablishment($establishment));$articles = count($this->articleRepository->findByEstablishment($establishment));}return $this->render('app/index.html.twig', ['establishment' => $establishment,'orders' => $orders,'lots' => $lots,'tickets' => $tickets,'ticketsSales' => $ticketsSales,'articles' => $articles,'promotions' => $promotionRepository->findBy(['establishment' => $establishment, 'isPromote' => true]),'employee' => $employee,'token' => $token,'isOwner' => $establishment->getUser() === $user]);}#[Route('v3/app', name: 'app_v3')]public function appV3(OrderRepository $orderRepository,PromotionRepository $promotionRepository,JWTTokenManagerInterface $jwtManager): Response{/** @var User $user */$user = $this->getUser();$establishment = $this->hostResolver->getEstablishmentManager()->getConnected();if (is_null($establishment))return $this->redirectToRoute('app_self');$employee = $this->employeeRepository->findOneByEstablishment($establishment, $user);$token = $jwtManager->create($user);$journal = $this->journalRepository->findOneBy(['establishment' => $establishment], ['id' => 'DESC']);$timestamp = $journal?->getCreatedAt()->getTimestamp();if ($employee && $employee->getIsGranted(Kimia::ROLE_WAITER)) {$orders = $orderRepository->findByWaiter($establishment, $employee);} else {$orders = $orderRepository->findNotCancelledByEstablishment($establishment, 5, true, $timestamp);}$lots = [];$articles = 0;$tickets = 0;$ticketsSales = 0;if ((int)$establishment->getType() === Kimia::TYPE_TICKET) {$lots = $this->lotRepository->findBy(['establishment' => $establishment], ['id' => 'DESC']);$tickets = count($this->ticketRepository->findByEstablishment($establishment));$ticketsSales = count($this->ticketRepository->findSalesByEstablishment($establishment));$articles = count($this->articleRepository->findByEstablishment($establishment));}return $this->render('app/app.html.twig', ['establishment' => $establishment,'orders' => $orders,'lots' => $lots,'tickets' => $tickets,'ticketsSales' => $ticketsSales,'articles' => $articles,'promotions' => $promotionRepository->findBy(['establishment' => $establishment, 'isPromote' => true]),'employee' => $employee,'token' => $token,'isOwner' => $establishment->getUser() === $user]);}#[Route(('help/'), name: 'help')]public function help(): Response{return $this->render('site/help.html.twig');}/* #[Route('/select', name: 'app_establishment_select', methods: ['GET', 'POST'])]public function select(Request $request,EstablishmentManager $establishmentManager): Response{$user = $this->getUser();$establishments = new ArrayCollection();if (!empty($user->getEstablishments())) {foreach ($user->getEstablishments() as $establishment) {$establishments->add($establishment);}}if ($employees = $this->employeeRepository->findBy(['user' => $user])) {foreach ($employees as $employee) {$establishments->add($employee->getDepartment()->getEstablishment());}}if (empty($establishments->toArray())) {return $this->redirectToRoute('app_establishment_new');}if ($request->isMethod('POST')) {$id = $request->request->get('establishment');$establishment = $this->establishmentRepository->find($id);if ($establishment) {$session = $request->getSession();$session->set(Kimia::ESTABLISHMENT_KEY, $establishment->getId());$connectionLog = new ConnectionLog();$connectionLog->setUser($user);$connectionLog->setEstablishment($establishment);$connectionLog->setCreatedAt(new DateTime());$this->connectionLogRepository->save($connectionLog, true);}$this->addFlash('success', 'Bienvenu dans Kimia Manager, votre ERP qui vous aidera à mieux gérer votre établissement.');return $this->redirectToRoute('app');}return $this->render('establishment/select.html.twig', ['establishments' => $establishments,'establishment' => $establishmentManager->getConnected()]);}*/#[IsGranted('ROLE_SUPER_ADMIN')]#[Route('/doctrine-cache-clear', name: 'app_cash_clear')]public function cacheClearDoctrineAction(EntityManagerInterface $em): JsonResponse{$caches = ['metadata' => $em->getConfiguration()->getMetadataCache(),'query' => $em->getConfiguration()->getQueryCache(),'results' => $em->getConfiguration()->getResultCache(),];$messages = [];foreach ($caches as $key => $cache) {$messages[$key] = [];$messages[$key]['delete'] = false;$messages[$key]['flush'] = false;if (!$cache) {continue;}if ($cache->deleteAll()) {$messages[$key]['delete'] = true;}if ($cache->flushAll()) {$messages[$key]['flush'] = true;}}return $this->json($messages);}public function header(JWTTokenManagerInterface $jwtManager): Response{/** @var User $user */$user = $this->getUser();$establishments = [];//if ($user)if (!empty($user->getEstablishments())) {foreach ($user->getEstablishments() as $establishment) {$establishments[] = $establishment;}}if (!empty($user->getMutualities())) {foreach ($user->getMutualities() as $mutuality) {if($mutuality->getEstablishment())$establishments[] = $mutuality->getEstablishment();}}if ($employees = $this->employeeRepository->findBy(['user' => $user])) {foreach ($employees as $employee) {$establishments[] = $employee->getDepartment()->getEstablishment();}}$token = $jwtManager->create($user);return $this->render('modules/header.html.twig', ['establishments' => array_unique($establishments),'token' => $token]);}public function sidebar(MenuRepository $menuRepository): Response{/** @var User $user */$user = $this->getUser();$establishment = $this->establishmentManager->getConnected();$isOwner = $establishment ? $establishment->getUser() === $user : null;$employee = null;$menus = [];$departments = [];if ($establishment) {$employee = $this->employeeRepository->findOneByEstablishment($establishment, $user);$menus = $menuRepository->findBy(['parent' => null, 'establishment' => $establishment, 'isActive' => true]);$departments = $this->departmentRepository->findBy(['establishment' => $establishment, 'isOnMenu' => true]);}return $this->render('modules/sidebar.html.twig', ['employee' => $employee,'isOwner' => $isOwner,'menus' => $menus,'departments' => $departments,]);}}