BankAccountRepository.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace AppBundle\Entity\Bank\Repository;
  3. use AppBundle\Entity\Organization\Organization;
  4. use Doctrine\ORM\EntityRepository;
  5. /**
  6. * Description of BankAccountRepository
  7. *
  8. */
  9. class BankAccountRepository extends EntityRepository
  10. {
  11. public function findInvalidBankAccountByOrganization(Organization $organization)
  12. {
  13. $queryBuilder = $this->createQueryBuilder('o');
  14. $queryBuilder
  15. ->innerJoin('o.organization', 'organization')
  16. ->andWhere('organization.id = :organization')
  17. ->andWhere(
  18. $queryBuilder->expr()->orX(
  19. $queryBuilder->expr()->andX($queryBuilder->expr()->isNotNull('o.bicInvalid'), $queryBuilder->expr()->neq('o.bicInvalid', ':empty')),
  20. $queryBuilder->expr()->andX($queryBuilder->expr()->isNotNull('o.ibanInvalid'), $queryBuilder->expr()->neq('o.ibanInvalid', ':empty'))
  21. ))
  22. ->setParameter('organization', $organization->getId())
  23. ->setParameter('empty', '');
  24. return $queryBuilder->getQuery()->getResult();
  25. }
  26. public function findInvalidBankAccountByAccess(Organization $organization)
  27. {
  28. $queryBuilder = $this->_em->createQueryBuilder();
  29. $queryBuilder
  30. ->select('access')
  31. ->from('AppBundle:AccessAndFunction\Access', 'access')
  32. ->innerJoin('access.organizationFunction', 'function')
  33. ->andWhere('access.organization = :organization')
  34. ->andWhere('function.startDate < :dateEnd')
  35. ->andWhere(
  36. $queryBuilder->expr()->orX(
  37. $queryBuilder->expr()->gt('function.endDate', ':dateStart'),
  38. $queryBuilder->expr()->isNull('function.endDate')
  39. ))
  40. ->setParameter('organization', $organization->getId())
  41. ->setParameter('dateStart', date('Y-m-d'))
  42. ->setParameter('dateEnd', date('Y-m-d'));
  43. $ids = array_map(function($o) {return $o->getPerson()->getId();}, $queryBuilder->getQuery()->getResult());
  44. $queryBuilder = $this->createQueryBuilder('o');
  45. $queryBuilder
  46. ->innerJoin('o.person', 'person')
  47. ->andWhere(
  48. $queryBuilder->expr()->in('person', ':ids'),
  49. $queryBuilder->expr()->orX(
  50. $queryBuilder->expr()->andX($queryBuilder->expr()->isNotNull('o.bicInvalid'), $queryBuilder->expr()->neq('o.bicInvalid', ':empty')),
  51. $queryBuilder->expr()->andX($queryBuilder->expr()->isNotNull('o.ibanInvalid'), $queryBuilder->expr()->neq('o.ibanInvalid', ':empty'))
  52. ))
  53. ->setParameter('ids', $ids)
  54. ->setParameter('empty', '');
  55. return $queryBuilder->getQuery()->getResult();
  56. }
  57. }