Controller


BookingController

Der Secra Request /event/book/ ruft die Methode bookingEvent im BookingController auf. Die Daten werden validiert und ein Job GetBookingInfo angelegt. Dieser Job wird in die Queue geschickt und nach 30 Sekunden ausgeführt.

Jobs


Der Job GetBookingInfo füllt das Model BookingDataSecra aus den Daten des Soap Aufrufs SoapClientSecra

        $soapClientReturn = $soapClientSecra->soapCall(
            'getBookingExtendedInfo',
            [
                'booking_no_extended' => $this->bookingInfo?->getAttribute('bookingNo'),
                'keycode' => $this->bookingInfo?->getAttribute('keycode')
            ]
        );

Der Job BookingEdom extrahiert aus den Secra Daten die Kundendaten, formatiert diese entsprechend den Anforderungen $this->customerData = $this->createCustomer($this->secraData); und sendet diese an den e-domizil Webservice um eine Kundennummer zu erhalten. $response = $edif->guzzleGet($customerFields);

Mit der e-Domizil Kundennummer und den Secra Daten wird die Buchung an den Webservice sendBuchung geschickt $bookingData = $this->createBookingData(); $response = $edif->guzzleGet($bookingData);

Models


BookingInfo

protected $fillable = [
'bookingNo',
'keycode',
'eventtype',
'object'
];


SoapClientSecra

Das Model baut mit den Credentials aus der .env eine WSDL Soap Verbindung zu Secra auf und holt sich die Buchungsdaten

setCredentials()
initClient()
soapCall()

https://www.optimale-praesentation.de/comm/universal/wsdl/?html&v=1.40 https://de.wikipedia.org/wiki/WS-Security


BookingDataSecra

Der Response des Soap Requests wird im Model BookingDataSecra gespeichert

    protected $table = 'booking_data_secra';
    protected $fillable = [
        'booking_no',
        'category_no', 
        'category_type',
        'object_no',
        'unit_no',
        'status',
        'arrival',
        'departure',
            ....
        ];    


Logs

Die Logs Klasse bietet die Möglichkeit var dumps in einer Tabelle abzulegen z.B.

$payload = json_encode($request->all());
if ($validator->fails()){
    Logs::create([
        "label" => "validation fails",
        "bookingNo" => $request->get('booking_no'),
        "payload"=>$payload
    ]);
}

Helper


Edif

Die e-Domizil Interface Klasse (edif) ist dazu gedacht, Verbindungen mittels übergebener Parameter (partner,action,mandant) zum e-Dom Webservice aufzubauen und die Antwort zu verarbeiten.