feat: sort pickups by their times
This commit is contained in:
1 parent
6e96f6fb44
commit
33c3dc6022
2 files changed
+27
-9
No files matched your search
@@ -61,7 +61,13 @@ class PickupLoader extends AbstractLoader
|
||||
|
||||
public function patchPickupsDetails(Travel $travel): void
|
||||
{
|
||||
foreach ($travel->pickupsOutbound as $pickupId => $pickup) {
|
||||
$travel->pickupsOutbound = $this->patchAndSortPickups($travel->pickupsOutbound);
|
||||
$travel->pickupsInbound = $this->patchAndSortPickups($travel->pickupsInbound);
|
||||
}
|
||||
|
||||
private function patchAndSortPickups(array $pickups): array
|
||||
{
|
||||
foreach ($pickups as $pickupId => $pickup) {
|
||||
$pickupData = $this->loadById($pickupId);
|
||||
|
||||
$pickup->code = $pickupData->code;
|
||||
@@ -69,13 +75,24 @@ class PickupLoader extends AbstractLoader
|
||||
$pickup->city = $pickupData->city;
|
||||
$pickup->street = $pickupData->street;
|
||||
}
|
||||
foreach ($travel->pickupsInbound as $pickupId => $pickup) {
|
||||
$pickupData = $this->loadById($pickupId);
|
||||
|
||||
$pickup->code = $pickupData->code;
|
||||
$pickup->postalCode = $pickupData->postalCode;
|
||||
$pickup->city = $pickupData->city;
|
||||
$pickup->street = $pickupData->street;
|
||||
uasort($pickups, fn (Pickup $a, Pickup $b): int => $this->comparePickupsByTime($a, $b));
|
||||
|
||||
return $pickups;
|
||||
}
|
||||
|
||||
private function comparePickupsByTime(Pickup $a, Pickup $b): int
|
||||
{
|
||||
if (null === $a->time && null === $b->time) {
|
||||
return 0;
|
||||
}
|
||||
if (null === $a->time) {
|
||||
return -1;
|
||||
}
|
||||
if (null === $b->time) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return $a->time <=> $b->time;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user