X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/3da15ad126f3a76b0b72ffddf4c71e3398e9ba3c..708aaf43238a88e9d3d6d3b3f824142866292956:/Repository/LocationRepository.php diff --git a/Repository/LocationRepository.php b/Repository/LocationRepository.php index d8acc14..1ac821c 100644 --- a/Repository/LocationRepository.php +++ b/Repository/LocationRepository.php @@ -12,15 +12,18 @@ namespace Rapsys\AirBundle\Repository; use Doctrine\ORM\Query\ResultSetMapping; + use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\RouterInterface; +use Rapsys\AirBundle\Repository; + /** * LocationRepository * * @TODO: use new window function syntax https://mariadb.com/kb/en/window-functions-overview/ MAX(updated) OVER (PARTITION updated) AS modified ??? */ -class LocationRepository extends EntityRepository { +class LocationRepository extends Repository { /** * Find locations * @@ -48,8 +51,8 @@ SELECT l.longitude, l.indoor, l.updated -FROM RapsysAirBundle:Location AS l -LEFT JOIN RapsysAirBundle:Session AS s ON (l.id = s.location_id) +FROM Rapsys\AirBundle\Entity\Location AS l +LEFT JOIN Rapsys\AirBundle\Entity\Session AS s ON (l.id = s.location_id) GROUP BY l.id ORDER BY COUNT(IF(s.date BETWEEN :begin AND :end, s.id, NULL)) DESC, COUNT(s.id) DESC, l.id SQL; @@ -135,8 +138,8 @@ FROM ( l.zipcode, COUNT(s.id) AS count, COUNT(IF(s.date BETWEEN :begin AND :end, s.id, NULL)) AS pcount - FROM RapsysAirBundle:Location AS l - LEFT JOIN RapsysAirBundle:Session AS s ON (l.id = s.location_id) + FROM Rapsys\AirBundle\Entity\Location AS l + LEFT JOIN Rapsys\AirBundle\Entity\Session AS s ON (l.id = s.location_id) GROUP BY l.id ORDER BY NULL LIMIT 0, :limit @@ -268,7 +271,7 @@ SELECT ROUND(AVG(l.latitude), 6) AS latitude, ROUND(AVG(l.longitude), 6) AS longitude, MAX(l.updated) AS updated -FROM RapsysAirBundle:Location AS l +FROM Rapsys\AirBundle\Entity\Location AS l GROUP BY city, SUBSTRING(l.zipcode, 1, 3) ORDER BY ACOS(SIN(RADIANS(:latitude))*SIN(RADIANS(l.latitude))+COS(RADIANS(:latitude))*COS(RADIANS(l.latitude))*COS(RADIANS(:longitude - l.longitude)))*40030.17/2/PI() LIMIT 0, 1 @@ -367,11 +370,11 @@ FROM ( l.latitude, l.longitude, l.updated - FROM RapsysAirBundle:Location AS l + FROM Rapsys\AirBundle\Entity\Location AS l WHERE l.latitude BETWEEN :minlat AND :maxlat AND l.longitude BETWEEN :minlong AND :maxlong LIMIT 0, :limit ) AS a -LEFT JOIN RapsysAirBundle:Session s ON (s.location_id = a.id) +LEFT JOIN Rapsys\AirBundle\Entity\Session s ON (s.location_id = a.id) GROUP BY a.id ORDER BY COUNT(IF(s.date BETWEEN :begin AND :end, s.id, NULL)) DESC, count DESC, a.id SQL; @@ -586,8 +589,8 @@ SELECT SUBSTRING(l.zipcode, 1, 2) AS city_id, ROUND(AVG(l2.latitude), 6) AS city_latitude, ROUND(AVG(l2.longitude), 6) AS city_longitude -FROM RapsysAirBundle:Location AS l -JOIN RapsysAirBundle:Location AS l2 ON (l2.city = l.city AND SUBSTRING(l.zipcode, 1, 3) = SUBSTRING(l.zipcode, 1, 3)) +FROM Rapsys\AirBundle\Entity\Location AS l +JOIN Rapsys\AirBundle\Entity\Location AS l2 ON (l2.city = l.city AND SUBSTRING(l.zipcode, 1, 3) = SUBSTRING(l.zipcode, 1, 3)) WHERE l.id = :id GROUP BY l.id LIMIT 0, 1 @@ -703,7 +706,7 @@ SQL; public function findComplementBySessionId(int $id): array { //Fetch complement locations $ret = $this->getEntityManager() - ->createQuery('SELECT l.id, l.title FROM RapsysAirBundle:Session s LEFT JOIN RapsysAirBundle:Session s2 WITH s2.id != s.id AND s2.slot = s.slot AND s2.date = s.date LEFT JOIN RapsysAirBundle:Location l WITH l.id != s.location AND (l.id != s2.location OR s2.location IS NULL) WHERE s.id = :sid GROUP BY l.id ORDER BY l.id') + ->createQuery('SELECT l.id, l.title FROM Rapsys\AirBundle\Entity\Session s LEFT JOIN Rapsys\AirBundle\Entity\Session s2 WITH s2.id != s.id AND s2.slot = s.slot AND s2.date = s.date LEFT JOIN Rapsys\AirBundle\Entity\Location l WITH l.id != s.location AND (l.id != s2.location OR s2.location IS NULL) WHERE s.id = :sid GROUP BY l.id ORDER BY l.id') ->setParameter('sid', $id) ->getArrayResult(); @@ -725,8 +728,8 @@ SQL; public function findByUserId(int $userId): array { //Set the request $req = 'SELECT l.id, l.title -FROM RapsysAirBundle:UserLocation AS ul -JOIN RapsysAirBundle:Location AS l ON (l.id = ul.location_id) +FROM Rapsys\AirBundle\Entity\UserLocation AS ul +JOIN Rapsys\AirBundle\Entity\Location AS l ON (l.id = ul.location_id) WHERE ul.user_id = :id'; //Replace bundle entity name by table name @@ -737,7 +740,7 @@ WHERE ul.user_id = :id'; $rsm = new ResultSetMapping(); //Declare result set for our request - $rsm->addEntityResult('RapsysAirBundle:Location', 'l') + $rsm->addEntityResult('Rapsys\AirBundle\Entity\Location', 'l') ->addFieldResult('l', 'id', 'id') ->addFieldResult('l', 'title', 'title');