createQueryBuilder('te') ->select('te.defaultDate') ->where('te.cId = :courseId') ->andWhere('te.defaultValueType = :valueType') ->andWhere('te.defaultEventType = :eventType') ->andWhere('te.defaultValue LIKE :serializedPattern') ->setParameter('courseId', $courseId) ->setParameter('valueType', 'user_object') ->setParameter('eventType', 'user_subscribed') ->setParameter('serializedPattern', '%'.$serializedPattern.'%') ; if ($sessionId > 0) { $qb->andWhere('te.sessionId = :sessionId') ->setParameter('sessionId', $sessionId) ; } elseif (0 === $sessionId) { $qb->andWhere('te.sessionId = 0'); } else { $qb->andWhere('te.sessionId IS NULL'); } $qb->setMaxResults(1); $query = $qb->getQuery(); try { $result = $query->getOneOrNullResult(); if ($result && isset($result['defaultDate'])) { return $result['defaultDate'] instanceof DateTime ? $result['defaultDate'] : new DateTime($result['defaultDate']); } } catch (Exception $e) { throw new RuntimeException('Error fetching registration date: '.$e->getMessage()); } return null; } }