diff --git a/src/Command/RefreshLatestActiveJobOrderCacheCommand.php b/src/Command/RefreshLatestActiveJobOrderCacheCommand.php index c712eaa2..c2284843 100644 --- a/src/Command/RefreshLatestActiveJobOrderCacheCommand.php +++ b/src/Command/RefreshLatestActiveJobOrderCacheCommand.php @@ -48,8 +48,12 @@ class RefreshLatestActiveJobOrderCacheCommand extends Command fwrite($tmp_cache_log, 'Cleared latest active jo cache...' . "\n"); - $date = new DateTime(); - $date->modify('-5 hour'); + // get JOs -5 and +22 hours from current datetime + $start_date = new DateTime(); + $start_date->modify('-5 hour'); + + $end_date = new DateTime(); + $end_date->modify('+22 hour'); $status_list = [ JOStatus::PENDING, @@ -63,9 +67,11 @@ class RefreshLatestActiveJobOrderCacheCommand extends Command ->createQueryBuilder('jo'); $res = $qb->select('jo') ->where('jo.status IN (:statuses)') - ->andWhere('jo.date_schedule >= :date') + ->andWhere('jo.date_schedule >= :start_date') + ->andWhere('jo.date_schedule <= :end_date') ->setParameter('statuses', $status_list, Connection::PARAM_STR_ARRAY) - ->setParameter('date', $date) + ->setParameter('start_date', $start_date) + ->setParameter('end_date', $end_date) ->getQuery() ->execute(); diff --git a/src/EventListener/JobOrderActiveCacheListener.php b/src/EventListener/JobOrderActiveCacheListener.php index d02bbd09..6c5fa588 100644 --- a/src/EventListener/JobOrderActiveCacheListener.php +++ b/src/EventListener/JobOrderActiveCacheListener.php @@ -8,6 +8,9 @@ use App\Service\JobOrderCache; use App\Ramcar\JOStatus; use App\Entity\JobOrder; +use DateTime; +use DateInterval; + class JobOrderActiveCacheListener { protected $key; @@ -82,7 +85,13 @@ class JobOrderActiveCacheListener $this->jo_cache->addActiveJobOrder($jo); // save in latest JO cache - $this->jo_cache->addLatestActiveJoborder($jo); + // check if date_schedule is more than 24 hours + $date = new DateTime(); + $interval = new DateInterval('P1D'); + $date->sub($interval); + + if ($jo->getDateSchedule() >= $date) + $this->jo_cache->addLatestActiveJoborder($jo); // publish to mqtt $coords = $jo->getCoordinates();