src/Service/Bonus/BonusService.php line 55

Open in your IDE?
  1. <?php
  2. namespace App\Service\Bonus;
  3. use App\Entity\Bonus;
  4. use App\Repository\BonusRepository;
  5. use App\Service\AbstractService;
  6. use Doctrine\ORM\Tools\Pagination\Paginator;
  7. class BonusService extends AbstractService
  8. {
  9.     /**
  10.      * @var BonusRepository
  11.      */
  12.     protected $repo;
  13.     /**
  14.      * BonusService constructor.
  15.      */
  16.     public function __construct(BonusRepository $repo)
  17.     {
  18.         parent::__construct($repo);
  19.     }
  20.     public function getAdminIndex(int $pageint $limit): Paginator
  21.     {
  22.         $qb $this->repo->getAdminIndexQueryBuilder();
  23.         $qb->setMaxResults($limit);
  24.         $qb->setFirstResult($page $limit $limit);
  25.         return new Paginator($qb->getQuery());
  26.     }
  27.     public function createBonus(\DateTime $beginint $percentint $durationInMinutes): Bonus
  28.     {
  29.         $end = clone $begin;
  30.         $end->modify('+'.$durationInMinutes.' minutes');
  31.         $entity = new Bonus();
  32.         $entity->setBonusBegin($begin);
  33.         $entity->setPercent($percent);
  34.         $entity->setBonusEnd($end);
  35.         return $entity;
  36.     }
  37.     public function hasBonusBetweenDates(\DateTimeInterface $begin\DateTimeInterface $end): bool
  38.     {
  39.         $qb $this->repo->getBonusBetweenDatesQueryBuilder($begin$end);
  40.         return count($qb->getQuery()->getResult()) > 0;
  41.     }
  42.     public function getCurrentBonus(\DateTimeInterface $time): ?Bonus
  43.     {
  44.         $qb $this->repo->getBonusBetweenDatesQueryBuilder($time$time);
  45.         $result $qb->getQuery()->getResult();
  46.         if (count($result)) {
  47.             return $result[0];
  48.         }
  49.         return null;
  50.     }
  51. }