feat: api endpoints for pickups planning
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\BusProNet\DataProcessor;
|
||||
|
||||
class PickupPlanningTransformer
|
||||
{
|
||||
/**
|
||||
* @param array<int, array<string, mixed>> $payload
|
||||
*
|
||||
* @return array<string, array<int, array<string, string>>>
|
||||
*/
|
||||
public function transform(array $payload): array
|
||||
{
|
||||
$result = [];
|
||||
|
||||
foreach ($payload as $item) {
|
||||
if ('HIN' !== ($item['PlanungsArt'] ?? null)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$travelCode = $item['Reisecode'] ?? null;
|
||||
if (null === $travelCode) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$dateTime = \DateTimeImmutable::createFromFormat('d.m.Y H:i', $item['Zeit'] ?? '');
|
||||
|
||||
$result[$travelCode][] = [
|
||||
'city' => $item['Zustieg/Ausstieg Ort'] ?? '',
|
||||
'location' => $item['Zustieg/Ausstieg Strasse'] ?? '',
|
||||
'datetime' => false !== $dateTime ? $dateTime->format('Y-m-d H:i') : '',
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($result as $travelCode => $pickups) {
|
||||
usort($pickups, static fn (array $a, array $b): int => $a['datetime'] <=> $b['datetime']);
|
||||
$result[$travelCode] = $pickups;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user