src/Controller/SoldController.php line 76

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the FOSUserBundle package.
  4.  *
  5.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace App\Controller;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use App\Entity\Sold;
  13. use App\Entity\Users;
  14. use App\Entity\Zone;
  15. use App\Form\Type\SoldFormType;
  16. use App\Helper\RoleHelper;
  17. use App\Manager\DashboardManager;
  18. use App\Manager\RequestParamsManager;
  19. use App\Manager\RoleManager;
  20. use App\Manager\ZoneManager;
  21. use Doctrine\ORM\EntityManager;
  22. use Faker\Provider\ka_GE\DateTime;
  23. use App\Manager\UserManager;
  24. use FOS\UserBundle\Model\UserManagerInterface;
  25. use Psr\Container\ContainerInterface;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\HttpFoundation\RedirectResponse;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\HttpFoundation\Response;
  30. use FOS\UserBundle\Controller\ProfileController as BaseController;
  31. use Psr\Log\LoggerInterface;
  32. use Symfony\Contracts\Translation\TranslatorInterface;
  33. /**
  34.  * Controller managing sold nano entrepreneur.
  35.  *
  36.  */
  37. class SoldController extends BaseController
  38. {
  39.     private $eventDispatcher;
  40.     private $userManager;
  41.     private $zoneManager;
  42.     private $dashboardManager;
  43.     private $requestParamsManager;
  44.     protected $container;
  45.     public function __construct(
  46.         DashboardManager $dashboardManager,
  47.         UserManager $userManager,
  48.         ZoneManager $zoneManager,
  49.         RequestParamsManager $requestParamsManager,
  50.         ContainerInterface $container
  51.     ) {
  52.         $this->userManager $userManager;
  53.         $this->zoneManager $zoneManager;
  54.         $this->dashboardManager $dashboardManager;
  55.         $this->requestParamsManager $requestParamsManager;
  56.         $this->container $container;
  57.     }
  58.     /**
  59.      * @param Request $request
  60.      * @param RoleHelper $roleHelper
  61.      */
  62.     public function addSoldAction(
  63.         Request $request,
  64.         RoleHelper $roleHelper,
  65.         EntityManager $em,
  66.         TranslatorInterface $translatorInterface
  67.     ) {
  68.         $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  69.         if (!$this->isGranted(RoleManager::ROLE_EQUIPE$this->getUser())) {
  70.             $this->addFlash('error'$translatorInterface->trans('You are not authorized to access this section'));
  71.             return $this->redirectToRoute('app.home');
  72.         }
  73.         $em $this->container->get('doctrine')->getManager();
  74.         $formattedRoles $roleHelper->getReachableRoles($this->getUser()->getRoles());
  75.         if ($this->isGranted(RoleManager::ROLE_SUPER_ADMIN)) {
  76.             $roles array_keys($this->getParameter('security.role_hierarchy.roles'));
  77.             $formattedRoles $roleHelper->getReachableRoles($roles);
  78.         }
  79.         $form $this->createForm(SoldFormType::class, new Sold(), []);
  80.         $form->handleRequest($request);
  81.         if ($form->isSubmitted() && $form->isValid()) {
  82.             /** @var Users $user */
  83.             $sold $form->getData();
  84.             try {
  85.                 $sold->setUser($this->getUser());
  86.                 $dataRequest $request->request->get("sold_form");
  87.                 $userNanoId $dataRequest["userNano"];
  88.                 $oUserNano $em->getRepository('App\Entity\NanoEntrepreneur')->findOneBy(['owner' => $userNanoId]);
  89.                 $sold->setNanoEntrepreneur($oUserNano);
  90.                 $em->persist($sold);
  91.                 $em->flush();
  92.                 $this->addFlash('success'$translatorInterface->trans('The balance has been created successfully'));
  93.                 return $this->redirectToRoute('app.solde.list');
  94.             } catch (ExistingDefaultEntrepreneurException $e) {
  95.                 $this->addFlash('error'$e->getMessage());
  96.             }
  97.         }
  98.         return $this->render('@App/Solde/form.html.twig', [
  99.             'form' => $form->createView(),
  100.             'pageTitle' => $translatorInterface->trans('Creation of a balance nano-entrepreneur')
  101.         ]);
  102.     }
  103.     /**
  104.      * @param EntityManager $em
  105.      * @param null $role
  106.      * @return RedirectResponse|Response
  107.      * @throws \Doctrine\ORM\ORMException
  108.      */
  109.     public function listAction(EntityManager $em$role nullTranslatorInterface $translatorInterface)
  110.     {
  111.         $solds $em->getRepository('App\Entity\Sold')->findAll();
  112.         $allDistrict $em->getRepository(Zone::class)->getDistrict();
  113.         return $this->render('@App/Solde/list.html.twig', [
  114.             "soldes" => $solds,
  115.             'districts' => $allDistrict,
  116.             'profile' => $role,
  117.             'pageTitle' => $translatorInterface->trans('Expenses and products')
  118.         ]);
  119.     }
  120.     /**
  121.      * @param Request $request
  122.      * @param Users|null $user
  123.      * @param RoleHelper $roleHelper
  124.      * @param UserManager $userManager
  125.      * @return RedirectResponse|Response
  126.      *
  127.      */
  128.     public function editSoldAction(
  129.         Request $request,
  130.         Sold $sold null,
  131.         LoggerInterface $logger,
  132.         TranslatorInterface $translatorInterface
  133.     ) {
  134.         $this->denyAccessUnlessGranted(RoleManager::ROLE_SUPER_ADMIN$this->getUser());
  135.         $form $this->createForm(SoldFormType::class, $sold, ['dateApplication' => $sold->getDateApplication()]);
  136.         $form->handleRequest($request);
  137.         $em $this->container->get('doctrine')->getManager();
  138.         if ($form->isSubmitted() && $form->isValid()) {
  139.             try {
  140.                 $dataRequest $request->request->get("sold_form");
  141.                 $userNanoId $dataRequest["userNano"];
  142.                 $oUserNano $em->getRepository('App\Entity\NanoEntrepreneur')->findOneBy(['owner' => $userNanoId]);
  143.                 $sold->setNanoEntrepreneur($oUserNano);
  144.                 $em->persist($sold);
  145.                 $em->flush();
  146.             } catch (\Exception $e) {
  147.                 $logger->error($e->getMessage(), [__CLASS__ => __FUNCTION__]);
  148.                 $this->addFlash('error'"Une exception a été levée pendant l'ajout");
  149.                 return $this->render('@App/Solde/form.html.twig', [
  150.                     'form' => $form->createView(),
  151.                     'pageTitle' => $translatorInterface->trans('Adding a sold'),
  152.                 ]);
  153.             }
  154.             $this->addFlash('success''The balance was successfully modified');
  155.             return $this->redirectToRoute('app.solde.list');
  156.         }
  157.         return $this->render('Solde/form.html.twig', [
  158.             'form' => $form->createView(),
  159.             'pageTitle' => $translatorInterface->trans('Editing a sold') . " : ",
  160.             'sold' => $sold
  161.         ]);
  162.     }
  163.     /**
  164.      * @param Request $request
  165.      * @param EntityManager $em
  166.      * @return JsonResponse|RedirectResponse
  167.      */
  168.     public function deleteAction(Request $requestSold $soldTranslatorInterface $trans)
  169.     {
  170.         $this->denyAccessUnlessGranted(RoleManager::ROLE_SUPER_ADMIN$this->getUser());
  171.         try {
  172.             $em $this->container->get('doctrine')->getManager();
  173.             $em->remove($sold);
  174.             $em->flush();
  175.             $message $trans->trans('Balance successfully removed');
  176.             $title $trans->trans('Deleted');
  177.             $class 'success';
  178.         } catch (\Exception $e) {
  179.             $message $e->getMessage();
  180.             $title 'Erreur';
  181.             $class 'warning';
  182.         }
  183.         return new JsonResponse([
  184.             'message' => $message,
  185.             'title' => $title,
  186.             'class' => $class,
  187.         ]);
  188.     }
  189.     public function listSyntheseAction(EntityManager $emRequest $request$role nullTranslatorInterface $translatorInterface)
  190.     {
  191.         $queryParams = [];
  192.         $em $this->container->get('doctrine')->getManager();
  193.         //$queryParams['queryParams'] = $this->requestParamsManager->initQueryParams($request);
  194.         if (!empty($request->query->get('FilterStart')) && !empty($request->query->get('FilterEnd'))) {
  195.             $sDateDebut =  \DateTime::createFromFormat("d/m/Y"$request->query->get('FilterStart'));
  196.             $sDateFin =  \DateTime::createFromFormat("d/m/Y"$request->query->get('FilterEnd'));
  197.             $queryParams['queryParams']['dateDebut'] =  $sDateDebut//date_format(date_create($sDateDebut), 'd/m/Y'); //
  198.             $queryParams['queryParams']['dateFin']   =  $sDateFin//date_format(date_create($sDateFin), 'd/m/Y');
  199.             $queryParams['queryParams']['dateFilter']   =   $sDateDebut//date_format(date_create($sDateDebut),"d/m/Y");
  200.         }
  201.         $aDate $this->dashboardManager->getIntervalDate(new \DateTime(), "quinze");
  202.         $queryParams['current_start_date'] = $queryParams['queryParams']['dateDebut'] ?? $aDate['startDate']->format('Y-m-d');
  203.         $queryParams['current_end_date'] = $queryParams['queryParams']['dateFin'] ?? $aDate['endDate']->format('Y-m-d');
  204.         $users $em->getRepository(Users::class)->getNanoEntrepeneurSold($queryParams);
  205.         $zonesTypes $this->zoneManager->getZonesTypes($users);
  206.         $allDistrict $this->zoneManager->getDistrictByZone($zonesTypes['zones']);
  207.         return $this->render('@App/Solde/synthese.html.twig', [
  208.             'profile' => $role,
  209.             'users' => $users,
  210.             'pageTitle' => $translatorInterface->trans('Synthesis'),
  211.             'current_start_date' => (isset($sDateDebut)) ? $sDateDebut $queryParams['current_start_date'],
  212.             'current_end_date' => (isset($sDateFin)) ? $sDateFin $queryParams['current_end_date'],
  213.             'districts' => $allDistrict
  214.         ]);
  215.     }
  216. }