src/Repository/ExchangeRateRepository.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Domain\ValueObject\CurrencyPair;
  4. use App\Entity\Currency;
  5. use App\Entity\Exchangerate;
  6. use App\Entity\Wholesaler;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  10. /**
  11.  * @method Wholesaler|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method Wholesaler|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method Wholesaler[]    findAll()
  14.  * @method Wholesaler[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class ExchangeRateRepository extends ServiceEntityRepository
  17. {
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryExchangerate::class);
  21.     }
  22.     public function MyExchangeRateQuery($user)
  23.     {
  24.         $qb $this->createQueryBuilder('e');
  25.         if ($user->getWholesaler()) {
  26.             $qb->where('e.wholesaler = :parameter');
  27.             $qb->setParameter('parameter'$user->getWholesaler()->getId());
  28.         } else {
  29.             return new AccessDeniedHttpException();
  30.         }
  31.         return $qb;
  32.     }
  33.     //TO-DO REFACTORIZAR NOMBRE
  34.     public function findHistoryChanges(Currency $fromCurrencyCurrency $toCurrency$user)
  35.     {
  36.         return $this->MyExchangeRateQuery($user)
  37.             ->andWhere('e.entrycurrency = :entrycurrency')
  38.             ->andWhere('e.localcurrency = :localcurrency')
  39.             ->setParameter('entrycurrency'$fromCurrency)
  40.             ->setParameter('localcurrency'$toCurrency)
  41.             ->orderBy('e.active''DESC')
  42.             ->orderBy('e.updatedAt''DESC')
  43.             ->getQuery()
  44.             ->getResult();
  45.     }
  46.     //TO-DO REFACTORIZAR Y CAMBIAR CURRENCY PAIR Y FIND ACTIVE BY PAIR
  47.     public function findActives(Exchangerate $exchangeRate$user)
  48.     {
  49.         return $this->MyExchangeRateQuery($user)
  50.             ->andWhere('e.entrycurrency = :entrycurrency')
  51.             ->andWhere('e.localcurrency = :localcurrency')
  52.             ->andWhere('e.active = true')
  53.             ->setParameter('entrycurrency'$exchangeRate->getEntryCurrency())
  54.             ->setParameter('localcurrency'$exchangeRate->getLocalCurrency())
  55.             ->getQuery()
  56.             ->getResult();
  57.     }
  58.     //TO-DO REFACTORIZAR NOMBRE
  59.     public function findActiveRateByWholesaler(Wholesaler $wholesalerCurrencyPair $currencyPair)
  60.     {
  61.         return $this->createQueryBuilder('e')
  62.             ->andWhere('e.wholesaler = :wholesaler')
  63.             ->andWhere('e.entrycurrency = :entrycurrency')
  64.             ->andWhere('e.localcurrency = :localcurrency')
  65.             ->andWhere('e.active = true')
  66.             ->setParameter('entrycurrency'$currencyPair->from())
  67.             ->setParameter('localcurrency'$currencyPair->to())
  68.             ->setParameter('wholesaler'$wholesaler)
  69.             ->getQuery()
  70.             ->setMaxResults(1)
  71.             ->getOneOrNullResult();
  72.     }
  73. }