public function sortRental(PersistentCollection $rentals, $limit = 10) { $criteria = Criteria::create()->orderBy(['startAt' => Criteria::DESC])->setMaxResults($limit); return $rentals->matching($criteria); }
/** * Check that collection is in right order. * * For increasing collection values must be in ascending order. * For decreasing collection value must be in descending order. * * @param PersistentCollection $value * @param CategoriesConstraint $constraint */ protected function validateOrder(PersistentCollection $value, CategoriesConstraint $constraint) { if ($value->isEmpty()) { return; } $orderedByIndex = $value->matching(new Criteria(null, ['categoryIndex' => Criteria::ASC])); $isIncreasing = $this->isIncreasing($orderedByIndex); if ($isIncreasing) { $criteria = Criteria::ASC; } else { $criteria = Criteria::DESC; } $orderedByValue = $value->matching(new Criteria(null, ['minValue' => $criteria])); if ($orderedByValue->toArray() !== $orderedByIndex->toArray()) { $this->context->addViolationAt($constraint->getType(), $constraint->message, ['%order%' => $criteria]); return; } if (!$isIncreasing) { return; } $invalidItems = $orderedByValue->filter(function (RFMMetricCategory $category) { $maxValue = $category->getMaxValue(); if (!$maxValue) { return false; } return $category->getMinValue() >= $maxValue; }); if (!$invalidItems->isEmpty()) { $this->context->addViolationAt($constraint->getType(), $constraint->message, ['%order%' => $criteria]); } }