<?php
namespace App\Repository;
use Doctrine\ORM\Query\ResultSetMapping;
/**
* ActionFormationRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class PositionGpsRepository extends \Doctrine\ORM\EntityRepository
{
public function findPositionByDate($date, $user = null)
{
$em = $this->getEntityManager();
$data = [];
$where = " ";
$tabParameter = [];
$dql = 'SELECT position FROM App:PositionGps position
WHERE position.dateCreatedByServer LIKE :dateServer
AND position.user = :user
';
$query = $em->createQuery($dql);
$query->setParameter("dateServer", "%{$date}%");
$query->setParameter("user", $user);
$data = $query->getResult();
return $data;
}
public function findPositionByTwoDate($dateStart, $dateEnd, $user = null)
{
$em = $this->getEntityManager();
$data = [];
$where = " ";
$tabParameter = [];
$dql = 'UPDATE App:PositionGps position
SET position.sync = 1
WHERE position.datePrinted BETWEEN :dateStart AND :dateEnd
AND position.user = :user
';
$query = $em->createQuery($dql);
$query->setParameter("dateStart", $dateStart);
$query->setParameter("dateEnd", $dateEnd);
$query->setParameter("user", $user);
$data = $query->getResult();
return $data;
}
public function findPositionNext($sync, $user = null, $activityConfidence, $idPosition, $nextStillId, $accuracy, $numberLimit)
{
$em = $this->getEntityManager();
$data = [];
$where = " ";
$tabParameter = [];
//array('datePrinted' => 'ASC', 'dateCreatedByServer' => 'ASC')
$dql = 'SELECT position FROM App:PositionGps position
WHERE position.sync LIKE :sync
AND position.user = :user
AND position.activityConfidence = :activityConfidence
AND position.id > :idPosition
AND position.id < :idPositionNext
AND position.accuracy < :accuracy
AND position.activityType != :activityType
ORDER BY position.datePrinted ASC, position.dateCreatedByServer ASC
';
$query = $em->createQuery($dql);
$query->setParameter("sync", $sync);
$query->setParameter("user", $user);
$query->setParameter("activityConfidence", $activityConfidence);
$query->setParameter("idPosition", $idPosition);
$query->setParameter("idPositionNext", $nextStillId);
$query->setParameter("accuracy", $accuracy);
$query->setParameter("activityType", "still");
//->add('orderBy', 'u.name ASC')
$query->setMaxResults($numberLimit);
$data = $query->getResult();
return $data;
}
public function findOnePositionNext($sync, $user = null, $idPosition, $accuracy)
{
$em = $this->getEntityManager();
$data = [];
$where = " ";
$tabParameter = [];
//array('datePrinted' => 'ASC', 'dateCreatedByServer' => 'ASC')
$dql = 'SELECT position FROM App:PositionGps position
WHERE position.sync LIKE :sync
AND position.user = :user
AND position.id > :idPosition
AND position.accuracy < :accuracy
ORDER BY position.datePrinted ASC, position.dateCreatedByServer ASC
';
$query = $em->createQuery($dql);
$query->setParameter("sync", $sync);
$query->setParameter("user", $user);
$query->setParameter("idPosition", $idPosition);
$query->setParameter("accuracy", $accuracy);
//->add('orderBy', 'u.name ASC')
$query->setMaxResults(1);
$data = $query->getResult();
return $data;
}
}