*/ final class FoodOrderRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, FoodOrder::class); } public function save(): void { $this->getEntityManager() ->flush(); } /** * @return FoodOrder[] */ public function findLatestEntries(int $page = 1, int $pagesize = 10, int $days = 4): array { $result = $this->createQueryBuilder('alias') ->orderBy('alias.id', 'DESC') ->setFirstResult(($page - 1) * $pagesize) ->setMaxResults($pagesize) ->getQuery() ->getResult(); if ($days < 1) { return $result; } $date = (new DateTimeImmutable)->sub(new DateInterval('P' . $days . 'D')); return (new ArrayCollection($result)) ->filter(static fn(FoodOrder $order): bool => $order->getCreatedAt() >= $date) ->getValues(); } /** * @return FoodOrder[] */ public function findOpenOrders(): array { $now = new DateTimeImmutable; return $this->createQueryBuilder('o') ->where('o.closedAt IS NULL OR o.closedAt > :now') ->setParameter('now', $now) ->orderBy('o.id', 'DESC') ->getQuery() ->getResult(); } }