You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
4.2KB

  1. <?php
  2. namespace Lc\SovBundle\Repository\Reminder;
  3. use Lc\SovBundle\Repository\AbstractStore;
  4. class ReminderStore extends AbstractStore implements ReminderStoreInterface
  5. {
  6. protected ReminderRepositoryQueryInterface $query;
  7. public function __construct(ReminderRepositoryQueryInterface $query)
  8. {
  9. $this->query = $query;
  10. }
  11. public function get($params = [], $query = null)
  12. {
  13. if (is_null($query)) {
  14. $query = $this->query->create();
  15. }
  16. $query->filterDone();
  17. if (array_key_exists('user', $params)) {
  18. $query->filterUser($params['user']);
  19. }
  20. if (array_key_exists('crudAction', $params)) {
  21. $query->filterCrudAction($params['crudAction']);
  22. }
  23. if (array_key_exists('crudControllerFqcn', $params)) {
  24. $query->filterCrudControllerFqcn($params['crudControllerFqcn']);
  25. }
  26. if (array_key_exists('entityId', $params)) {
  27. $query->filterEntityId($params['entityId']);
  28. }
  29. $query->orderDefault();
  30. return $query->find();
  31. }
  32. /*
  33. public function getRemindersByUser($user)
  34. {
  35. $reminderRepo = $this->em->getRepository(ReminderInterface::class);
  36. $reminders = $reminderRepo->findByUser($user);
  37. $entitiesRepo = array();
  38. $entitiesConfig = array();
  39. if (count($reminders) > 0) {
  40. foreach ($reminders as $reminder) {
  41. if ($reminder->getEntityName()) {
  42. if (!isset($entitiesConfig[$reminder->getEntityName()])) {
  43. $entitiesConfig[$reminder->getEntityName()] = $this->configManager->getEntityConfig($reminder->getEntityName());
  44. }
  45. if ($reminder->getEntityAction() == 'edit' || $reminder->getEntityAction() == 'show') {
  46. if (!isset($entitiesRepo[$reminder->getEntityName()])) {
  47. $entitiesRepo[$reminder->getEntityName()] = $this->em->getRepository($entitiesConfig[$reminder->getEntityName()]['class']);
  48. }
  49. if ($reminder->getEntityId()) {
  50. $reminder->relatedPage = $entitiesRepo[$reminder->getEntityName()]->find($reminder->getEntityId())->__toString();
  51. }
  52. } else {
  53. $reminder->relatedPage = 'Liste de ' . $entitiesConfig[$reminder->getEntityName()]['label'];
  54. }
  55. }
  56. }
  57. }
  58. return $reminders;
  59. }
  60. */
  61. /*
  62. public function findByUser($user)
  63. {
  64. $qb = $this->createQueryBuilder('e')
  65. ->leftJoin('e.users', 'u')
  66. ->having('COUNT(u.id) = 0')
  67. ->orHaving(':user MEMBER OF e.users')
  68. ->andWhere('e.done = 0')
  69. ->setParameter('user', $user)
  70. ->orderBy('e.dateReminder', 'ASC')
  71. ->groupBy('e.id');
  72. return $qb->getQuery()->getResult();
  73. }
  74. public function findByEasyAdminConfigAndUser($crudAction, $crudControllerFqcn, $user, $entityId = null)
  75. {
  76. $qb = $this->createQueryBuilder('e');
  77. $qb->leftJoin('e.users', 'u');
  78. $qb->having('COUNT(u.id) = 0');
  79. $qb->orHaving(':user MEMBER OF e.users');
  80. $qb->andWhere('e.done = 0');
  81. $qb->andWhere('e.crudAction LIKE :crudAction');
  82. $qb->andWhere('e.crudControllerFqcn LIKE :entity');
  83. $qb->setParameter('crudAction', $crudAction);
  84. $qb->setParameter('crudControllerFqcn', $crudControllerFqcn);
  85. $qb->setParameter('user', $user);
  86. if ($entityId) {
  87. $qb->andWhere('e.entityId LIKE :id');
  88. $qb->setParameter('entityId', $entityId);
  89. }
  90. $qb->orderBy('e.dateReminder', 'ASC');
  91. $qb->groupBy('e.id');
  92. return $qb->getQuery()->getResult();
  93. }*/
  94. }