From: Raphaƫl Gertz Date: Wed, 7 Jul 2021 15:21:01 +0000 (+0200) Subject: Add fetchAllByDatePeriod function X-Git-Tag: 0.2.4~36 X-Git-Url: https://git.rapsys.eu/.gitweb.cgi/airbundle/commitdiff_plain/ce807dcc44fa487f5b4adcc0840a1a5b58debede?ds=sidebyside Add fetchAllByDatePeriod function --- diff --git a/Repository/SessionRepository.php b/Repository/SessionRepository.php index 4deb69e..5d3522d 100644 --- a/Repository/SessionRepository.php +++ b/Repository/SessionRepository.php @@ -142,6 +142,121 @@ SQL; ->getOneOrNullResult(); } + /** + * Fetch sessions by date period + * + * @param $period The date period + * @param $locale The locale + */ + public function fetchAllByDatePeriod($period, $locale = null) { + //Get entity manager + $em = $this->getEntityManager(); + + //Get quote strategy + $qs = $em->getConfiguration()->getQuoteStrategy(); + $dp = $em->getConnection()->getDatabasePlatform(); + + //Get quoted table names + //XXX: this allow to make this code table name independent + $tables = [ + 'RapsysAirBundle:Application' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:Application'), $dp), + 'RapsysAirBundle:Location' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:Location'), $dp), + 'RapsysAirBundle:Session' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:Session'), $dp), + 'RapsysAirBundle:Snippet' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:Snippet'), $dp), + 'RapsysAirBundle:User' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:User'), $dp), + ':afterid' => 4, + "\t" => '', + "\n" => ' ' + ]; + + //Set the request + //TODO: exclude opera and others ? + $req = <<addScalarResult('id', 'id', 'integer') + ->addScalarResult('date', 'date', 'date') + ->addScalarResult('locked', 'locked', 'datetime') + ->addScalarResult('updated', 'updated', 'datetime') + ->addScalarResult('start', 'start', 'datetime') + ->addScalarResult('stop', 'stop', 'datetime') + ->addScalarResult('l_id', 'l_id', 'integer') + ->addScalarResult('l_address', 'l_address', 'string') + ->addScalarResult('l_zipcode', 'l_zipcode', 'string') + ->addScalarResult('l_city', 'l_city', 'string') + ->addScalarResult('l_latitude', 'l_latitude', 'float') + ->addScalarResult('l_longitude', 'l_longitude', 'float') + ->addScalarResult('l_short', 'l_short', 'string') + ->addScalarResult('l_title', 'l_title', 'string') + ->addScalarResult('t_id', 't_id', 'integer') + ->addScalarResult('t_title', 't_title', 'string') + ->addScalarResult('a_id', 'a_id', 'integer') + ->addScalarResult('a_canceled', 'a_canceled', 'datetime') + ->addScalarResult('au_id', 'au_id', 'integer') + ->addScalarResult('au_pseudonym', 'au_pseudonym', 'string') + ->addScalarResult('p_id', 'p_id', 'integer') + ->addScalarResult('p_description', 'p_description', 'string') + ->addScalarResult('p_class', 'p_class', 'string') + ->addScalarResult('p_contact', 'p_contact', 'string') + ->addScalarResult('p_donate', 'p_donate', 'string') + ->addScalarResult('p_link', 'p_link', 'string') + ->addScalarResult('p_profile', 'p_profile', 'string') + ->addIndexByScalar('id'); + + //Fetch result + $res = $em + ->createNativeQuery($req, $rsm) + ->setParameter('begin', $period->getStartDate()) + ->setParameter('end', $period->getEndDate()) + ->setParameter('locale', $locale); + + //Return result + return $res->getResult(); + } + /** * Fetch session by id *