src/Service/AdminEventInfosService.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\AffiliatedEventApplication;
  4. use App\Entity\Event;
  5. use App\Entity\MarketplaceReservation;
  6. use App\Entity\User;
  7. use App\Repository\EventRepository;
  8. use App\Repository\MarketplaceReservationRepository;
  9. use DateTime;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Doctrine\ORM\NonUniqueResultException;
  12. use Doctrine\ORM\NoResultException;
  13. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  14. use Symfony\Component\Security\Core\Security;
  15. class AdminEventInfosService
  16. {
  17.     /**
  18.      * @var Security
  19.      */
  20.     private $security;
  21.     /**
  22.      * @var EventRepository
  23.      */
  24.     private $eventRepository;
  25.     /**
  26.      * @var MarketplaceReservationRepository
  27.      */
  28.     private $marketplaceReservationRepository;
  29.     /**
  30.      * @var ParameterBagInterface
  31.      */
  32.     private $parameterBagInterface;
  33.     /**
  34.      * @var EntityManagerInterface
  35.      */
  36.     private $em;
  37.     public function __construct(Security $securityEntityManagerInterface $emParameterBagInterface $parameterBagInterface)
  38.     {
  39.         $this->security $security;
  40.         $this->em $em;
  41.         $this->parameterBagInterface $parameterBagInterface;
  42.         $this->eventRepository $this->em->getRepository(Event::class);
  43.         $this->marketplaceReservationRepository $this->em->getRepository(MarketplaceReservation::class);
  44.         $this->affiliatedEventApplicationRepo $this->em->getRepository(AffiliatedEventApplication::class);
  45.     }
  46.     /**
  47.      * Get the count for the current events for admin
  48.      * @return int
  49.      */
  50.     public function getCurrentEventsCount(): int
  51.     {
  52.         $result 0;
  53.         $user $this->security->getUser();
  54.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  55.             try {
  56.                 $result intval($this->eventRepository->getAdminCurrentEventsQueryBuilder()
  57.                           ->select('COUNT(event)')->getQuery()->getSingleScalarResult());
  58.             } catch (NoResultException|NonUniqueResultException $e) {
  59.                 $result 0;
  60.             }
  61.         }
  62.         return $result;
  63.     }
  64.     /**
  65.      * Get the count for events that will be cancelled in 96 hours
  66.      * @return int
  67.      */
  68.     public function getEventsWarningCount(): int
  69.     {
  70.         $result 0;
  71.         $user $this->security->getUser();
  72.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  73.             $startLimit = (new DateTime())->modify('+'$this->parameterBagInterface->get('alert_expert_event') .'hours')->setTime(0,0,1);
  74.             $endLimit = (new DateTime())->modify('+'$this->parameterBagInterface->get('alert_expert_event') .'hours')->setTime(23,59,59);
  75.             try {
  76.                 $result intval$this->eventRepository->queryFindByDatesIntervalle(
  77.                     [
  78.                         'startLimit' => $startLimit,
  79.                         'endLimit' => $endLimit,
  80.                         'regCount' => true
  81.                     ])
  82.                     ->select('COUNT(DISTINCT e)')->getQuery()->getSingleScalarResult());
  83.             } catch (NoResultException|NonUniqueResultException $e) {
  84.                 $result 0;
  85.             }
  86.         }
  87.         return $result;
  88.     }
  89.     /**
  90.      * Get the count for events that will be cancelled in 96 hours
  91.      * @return int
  92.      */
  93.     public function getEventsAlertCount(): int
  94.     {
  95.         $result 0;
  96.         $user $this->security->getUser();
  97.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  98.             $startLimit = (new DateTime())->modify('+'$this->parameterBagInterface->get('before_send_warning_event_mail')['limit_hours'] .'hours')->setTime(0,0,1);
  99.             $endLimit = (new DateTime())->modify('+'$this->parameterBagInterface->get('before_send_warning_event_mail')['limit_hours'] .'hours')->setTime(23,59,59);
  100.             try {
  101.                 $result intval$this->eventRepository->queryFindByDatesIntervalle(
  102.                     [
  103.                         'startLimit' => $startLimit,
  104.                         'endLimit' => $endLimit,
  105.                         'regCount' => true
  106.                     ])
  107.                     ->select('COUNT(e)')->getQuery()->getSingleScalarResult());
  108.             } catch (NoResultException|NonUniqueResultException $e) {
  109.                 $result 0;
  110.             }
  111.         }
  112.         return $result;
  113.     }
  114.     /**
  115.      * Get the count for pending marketplaceReservations
  116.      * @return int
  117.      */
  118.     public function getPendingMarketplaceReservations(): int
  119.     {
  120.         $result 0;
  121.         $user $this->security->getUser();
  122.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  123.             try {
  124.                 $result $result intval($this->marketplaceReservationRepository->createQueryBuilder('marketplaceRes')
  125.                 ->andWhere('marketplaceRes.paymentStatus = :success')
  126.                 ->andWhere('marketplaceRes.status = :pending')
  127.                 ->setParameter('pending'MarketplaceReservation::STATUS_PENDING)
  128.                 ->setParameter('success'MarketplaceReservation::PAYMENT_STATUS_SUCCESS)
  129.                 ->select('COUNT(marketplaceRes)')->getQuery()->getSingleScalarResult());;
  130.             } catch (NoResultException|NonUniqueResultException $e) {
  131.                 $result 0;
  132.             }
  133.         }
  134.         return $result;
  135.     }
  136.     /**
  137.      * Get the count for special marketplace requests
  138.      * @return int
  139.      */
  140.     public function getSpecialMarketplaceRequests(): int
  141.     {
  142.         $result 0;
  143.         $user $this->security->getUser();
  144.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  145.             try {
  146.                 $result $result intval($this->marketplaceReservationRepository->createQueryBuilder('marketplaceRes')
  147.                 ->andWhere('marketplaceRes.paymentStatus = :free')
  148.                 ->andWhere('marketplaceRes.status = :pending')
  149.                 ->setParameter('pending'MarketplaceReservation::STATUS_PENDING)
  150.                 ->setParameter('free'MarketplaceReservation::PAYMENT_STATUS_FREE)
  151.                 ->select('COUNT(marketplaceRes)')->getQuery()->getSingleScalarResult());;
  152.             } catch (NoResultException|NonUniqueResultException $e) {
  153.                 $result 0;
  154.             }
  155.         }
  156.         return $result;
  157.     }
  158.     /**
  159.      * Get the count for accepted marketplaceReservations
  160.      * @return int
  161.      */
  162.     public function getAcceptedMarketplaceReservations(): int
  163.     {
  164.         $result 0;
  165.         $user $this->security->getUser();
  166.         if ($user instanceof User && $this->security->isGranted(User::ROLE_ADMIN)){
  167.             try {
  168.                 $result $result intval($this->marketplaceReservationRepository->createQueryBuilder('marketplaceRes')
  169.                 ->andWhere('marketplaceRes.paymentStatus IN (:success, :refund)')
  170.                 ->andWhere('marketplaceRes.status IN (:accepted, :canceled)')
  171.                 ->setParameter('accepted'MarketplaceReservation::STATUS_ACCEPTED)
  172.                 ->setParameter('canceled'MarketplaceReservation::STATUS_CANCELED)
  173.                 ->setParameter('success'MarketplaceReservation::PAYMENT_STATUS_SUCCESS)
  174.                 ->setParameter('refund'MarketplaceReservation::PAYMENT_STATUS_REFUND)
  175.                 ->select('COUNT(marketplaceRes)')->getQuery()->getSingleScalarResult());;
  176.             } catch (NoResultException|NonUniqueResultException $e) {
  177.                 $result 0;
  178.             }
  179.         }
  180.         return $result;
  181.     }
  182.     // /**
  183.     //  * Get the count for the available events for a specialist
  184.     //  * @return int
  185.     //  */
  186.     // public function getAvailableEventsCount(): int
  187.     // {
  188.     //     $result = 0;
  189.     //     $user = $this->security->getUser();
  190.     //     if ($user instanceof User && $this->security->isGranted(User::ROLE_COMPANY)){
  191.     //         $company = $this->em->getRepository(Company::class)->find($user->getCompany()->getId());
  192.     //         try {
  193.     //             $result = intval($this->eventRepository->getCompanySpecialistEventsQueryBuilder($company)
  194.     //                 ->select('COUNT(event)')->getQuery()->getSingleScalarResult());
  195.     //         } catch (NoResultException|NonUniqueResultException $e) {
  196.     //             $result = 0;
  197.     //         }
  198.     //     }
  199.     //     return $result;
  200.     // }
  201.     //  /**
  202.     //  * Get the count for the available affiliated event applications for a specialist
  203.     //  * @return int
  204.     //  */
  205.     // public function getAffiliatedEventsApplicationCount(): int
  206.     // {
  207.     //     $result = 0;
  208.     //     $user = $this->security->getUser();
  209.     //     if ($user instanceof User && $this->security->isGranted(User::ROLE_COMPANY)){
  210.     //         $company = $this->em->getRepository(Company::class)->find($user->getCompany()->getId());
  211.     //         try {
  212.     //             $result = intval($this->affiliatedEventApplicationRepo->getAffiliatedEventsForCompanyQueryBuilder($company)
  213.     //                 ->select('COUNT(event)')->getQuery()->getSingleScalarResult());
  214.     //         } catch (NoResultException|NonUniqueResultException $e) {
  215.     //             $result = 0;
  216.     //         }
  217.     //     }
  218.     //     return $result;
  219.     // }
  220. }