diff --git a/api.http b/api.http index 83d2709..feafa86 100644 --- a/api.http +++ b/api.http @@ -49,7 +49,7 @@ Accept: application/json Authorization: Bearer {{$auth.token("oauth2_api")}} ### API travel -GET {{base_url}}/api/travels/DPWBSP030229 +GET {{base_url}}/api/travels/DWWWE211125 Accept: application/json Authorization: Bearer {{$auth.token("oauth2_api")}} diff --git a/src/BusProNet/Model/Service.php b/src/BusProNet/Model/Service.php index b115dde..751f093 100644 --- a/src/BusProNet/Model/Service.php +++ b/src/BusProNet/Model/Service.php @@ -43,6 +43,12 @@ class Service #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])] public ?\DateTimeImmutable $dateFrom = null; + #[Groups(['api:single', 'api:list'])] + public ?string $timeFrom = null; + + #[Groups(['api:single', 'api:list'])] + public ?string $dayTime = null; + #[Groups(['api:single', 'api:list'])] #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])] public ?\DateTimeImmutable $dateTo = null; diff --git a/src/BusProNet/Utility/DayTimeUtility.php b/src/BusProNet/Utility/DayTimeUtility.php new file mode 100644 index 0000000..bb16df1 --- /dev/null +++ b/src/BusProNet/Utility/DayTimeUtility.php @@ -0,0 +1,25 @@ += '00:00' && $time <= '05:59') { + return 'nachts'; + } elseif ($time >= '06:00' && $time <= '11:59') { + return 'morgens'; + } elseif ($time >= '12:00' && $time <= '14:59') { + return 'mittags'; + } elseif ($time >= '15:00' && $time <= '19:59') { + return 'abends'; + } elseif ($time >= '20:00' && $time <= '23:59') { + return 'nachts'; + } else { + return null; + } + } +} diff --git a/src/BusProNet/XmlLoader/TravelLoader.php b/src/BusProNet/XmlLoader/TravelLoader.php index 3f9cf49..d20edd2 100644 --- a/src/BusProNet/XmlLoader/TravelLoader.php +++ b/src/BusProNet/XmlLoader/TravelLoader.php @@ -11,6 +11,7 @@ use App\BusProNet\Model\Pickup; use App\BusProNet\Model\Room; use App\BusProNet\Model\Service; use App\BusProNet\Model\Travel; +use App\BusProNet\Utility\DayTimeUtility; use App\BusProNet\Utility\TravelCodeUtility; use League\Flysystem\FilesystemOperator; use League\Flysystem\StorageAttributes; @@ -245,6 +246,11 @@ class TravelLoader extends AbstractLoader $service->direction = $this->getStringOrNullValue($serviceNode->filterXPath('//richtung')); $service->status = $this->getStringOrNullValue($serviceNode->filterXPath('//status')); + if (null !== $timeFrom = $serviceNode->attr('uhrzeit_von')) { + $service->timeFrom = $timeFrom; + $service->dayTime = (new DayTimeUtility())->mapTime($timeFrom); + } + $transportationServices[$serviceId] = $service; }); diff --git a/tests/BusProNet/Utility/DayTimeUtilityTest.php b/tests/BusProNet/Utility/DayTimeUtilityTest.php new file mode 100644 index 0000000..8cc9598 --- /dev/null +++ b/tests/BusProNet/Utility/DayTimeUtilityTest.php @@ -0,0 +1,32 @@ +mapTime($time); + $this->assertEquals($dayTime, $result); + } + + public function dayTimeProvider(): array + { + return [ + [null, null], + ['06:00', 'morgens'], + ['11:30', 'morgens'], + ['14:00', 'mittags'], + ['19:30', 'abends'], + ['04:30', 'nachts'], + ]; + } +}