EquipmentRepository.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace AppBundle\Entity\Product\Repository;
  3. use AppBundle\Entity\Organization\Organization;
  4. use AppBundle\Entity\Person\Person;
  5. use AppBundle\Entity\Product\Equipment;
  6. use AppBundle\Entity\Product\EquipmentList;
  7. use Doctrine\ORM\EntityRepository;
  8. /**
  9. * Description of EquipmentRepository
  10. *
  11. */
  12. class EquipmentRepository extends EntityRepository
  13. {
  14. public function findDuplicateProduct(Equipment $equipment, Organization $organization)
  15. {
  16. $qb = $this->createQueryBuilder('a')
  17. ->innerJoin(EquipmentList::class, 'el', 'WITH', 'el.id <> 1')
  18. ->andWhere('a.sku = :sku')
  19. ->andWhere('a.name = :name')
  20. ->andWhere('a.organization=:organizationId')
  21. ->setParameter(':sku', $equipment->getSku())
  22. ->setParameter(':name', $equipment->getName())
  23. ->setParameter(':organizationId', $organization);
  24. return $qb->getQuery()->getResult();
  25. }
  26. public function findDuplicateMusicScore(Equipment $equipment, Organization $organization)
  27. {
  28. $qb = $this->createQueryBuilder('a');
  29. $qb->innerJoin(EquipmentList::class, 'el','WITH', 'el.id = 1')
  30. ->andWhere('a.sku = :sku')
  31. ->andWhere('a.name = :name')
  32. ->andWhere('a.organization=:organizationId')
  33. ->setParameter(':sku', $equipment->getSku())
  34. ->setParameter(':name', $equipment->getName())
  35. ->setParameter(':organizationId', $organization);
  36. return $qb->getQuery()->getResult();
  37. }
  38. public function findEquipmentWithoutAccess(Organization $organization)
  39. {
  40. $qb = $this->createQueryBuilder('o');
  41. $qb->where('o.organization=:org AND o.access IS NULL')
  42. ->setParameter(':org', $organization);
  43. return $qb->getQuery()->getResult();
  44. }
  45. public function findEquipmentAccessOwner(Organization $organization)
  46. {
  47. $qb = $this->createQueryBuilder('o');
  48. $qb->innerJoin('o.access','owner', 'WITH')
  49. ->innerJoin('owner.person','p', 'WITH')
  50. ->andWhere('p.isPhysical=:physical')
  51. ->andWhere('owner.organization=:org')
  52. ->setParameter(':physical', 0)
  53. ->setParameter(':org', $organization);
  54. $resultPersonNotPhysical = $qb->getQuery()->getResult();
  55. $qb = $this->createQueryBuilder('o');
  56. $qb = $this->createQueryBuilder('o');
  57. $qb->innerJoin('o.access','owner', 'WITH')
  58. ->innerJoin('owner.organizationFunction', 'organizationFunction')
  59. ->andWhere('owner.organization=:org')
  60. ->setParameter(':org', $organization);
  61. $resultPersonIsPhysical = $qb->getQuery()->getResult();
  62. return array_merge($resultPersonNotPhysical, $resultPersonIsPhysical);
  63. }
  64. public function findEquipmentNoAvailableForRent(Organization $organization)
  65. {
  66. $today = new \DateTime();
  67. $qb = $this->createQueryBuilder('o');
  68. $qb
  69. ->innerJoin('o.equipmentLoan', 'equipmentLoan')
  70. ->where('equipmentLoan.endDate > :today or (equipmentLoan.startDate < :today and equipmentLoan.endDate is null) ')
  71. ->andWhere('o.organization=:org')
  72. ->setParameter(':org', $organization)
  73. ->setParameter(':today', $today);
  74. return $qb->getQuery()->getResult();
  75. }
  76. }
  77. ?>