WIP: Implement Admin CRUD

This commit is contained in:
Björn Fromme
2023-09-21 17:51:16 +02:00
parent 2dd8a6de19
commit c3c2e1ae2d
26 changed files with 568 additions and 20 deletions
+27 -1
View File
@@ -9,6 +9,8 @@ use App\BusProNet\Model\Country;
use App\BusProNet\Model\CrmAttribute;
use App\BusProNet\Model\CrmAttributesResponse;
use App\BusProNet\Model\CrmAttributeGroup;
use App\BusProNet\Model\Pickup;
use App\BusProNet\Model\PickupsResponse;
use App\BusProNet\Model\ProfileResponse;
use App\BusProNet\Model\BaseResponse;
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -28,7 +30,7 @@ class ResponseParser
public function parseXmlString(string $content): BaseResponse
{
$xml = simplexml_load_string($content);
$type = (string) $xml->xpath('satz/@typ')[0];
$type = (string)$xml->xpath('satz/@typ')[0];
switch ($type) {
case 'HINWEIS':
@@ -43,6 +45,8 @@ class ResponseParser
}
case 'STAMMLAENDER':
return $this->createCountriesResponse($xml);
case 'STAMMZUSTIEGE':
return $this->createPickupsResponse($xml);
}
throw new ResponseParserException('Unable to parse XML response');
@@ -180,6 +184,28 @@ class ResponseParser
return $response;
}
public function createPickupsResponse(\SimpleXMLElement $xml): PickupsResponse
{
$pickups = [];
foreach ($xml->xpath('zustiege/zustieg') as $item) {
$pickup = new Pickup();
$pickup
->setId((int)$item->attributes()['id'])
->setBusProId((int)$item->attributes()['idbuspro'])
->setCode((string)$item->attributes()['code'])
->setCity((string)$item->xpath('ort')[0])
->setStreet((string)$item->xpath('strasse')[0])
;
$pickups[] = $pickup;
}
$response = new PickupsResponse();
$response->setPickups($pickups);
return $response;
}
private function resolveOptions(array $options): array
{
$optionsResolver = new OptionsResolver();