Completed
Push — master ( 2bb369...448aae )
by Dieter
05:42
created

Base::createTicketDeleteTST()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
/**
3
 * amadeus-ws-client
4
 *
5
 * Copyright 2015 Amadeus Benelux NV
6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 * http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 *
19
 * @package Amadeus
20
 * @license https://opensource.org/licenses/Apache-2.0 Apache 2.0
21
 */
22
23
namespace Amadeus\Client\RequestCreator;
24
25
use Amadeus\Client\InvalidMessageException;
26
use Amadeus\Client\Params\RequestCreatorParams;
27
use Amadeus\Client\RequestOptions\AirFlightInfoOptions;
28
use Amadeus\Client\RequestOptions\AirMultiAvailabilityOptions;
29
use Amadeus\Client\RequestOptions\AirRetrieveSeatMapOptions;
30
use Amadeus\Client\RequestOptions\AirSellFromRecommendationOptions;
31
use Amadeus\Client\RequestOptions\CommandCrypticOptions;
32
use Amadeus\Client\RequestOptions\DocIssuanceIssueTicketOptions;
33
use Amadeus\Client\RequestOptions\FareCheckRulesOptions;
34
use Amadeus\Client\RequestOptions\FareConvertCurrencyOptions;
35
use Amadeus\Client\RequestOptions\FareInformativePricingWithoutPnrOptions;
36
use Amadeus\Client\RequestOptions\FareMasterPricerTbSearch;
37
use Amadeus\Client\RequestOptions\FarePricePnrWithBookingClassOptions;
38
use Amadeus\Client\RequestOptions\InfoEncodeDecodeCityOptions;
39
use Amadeus\Client\RequestOptions\MiniRuleGetFromPricingRecOptions;
40
use Amadeus\Client\RequestOptions\OfferConfirmAirOptions;
41
use Amadeus\Client\RequestOptions\OfferConfirmCarOptions;
42
use Amadeus\Client\RequestOptions\OfferConfirmHotelOptions;
43
use Amadeus\Client\RequestOptions\OfferVerifyOptions;
44
use Amadeus\Client\RequestOptions\PnrAddMultiElementsBase;
45
use Amadeus\Client\RequestOptions\PnrCancelOptions;
46
use Amadeus\Client\RequestOptions\PnrCreatePnrOptions;
47
use Amadeus\Client\RequestOptions\PnrDisplayHistoryOptions;
48
use Amadeus\Client\RequestOptions\PnrRetrieveAndDisplayOptions;
49
use Amadeus\Client\RequestOptions\PnrRetrieveOptions;
50
use Amadeus\Client\RequestOptions\PriceXplorerExtremeSearchOptions;
51
use Amadeus\Client\RequestOptions\QueueListOptions;
52
use Amadeus\Client\RequestOptions\QueueMoveItemOptions;
53
use Amadeus\Client\RequestOptions\QueuePlacePnrOptions;
54
use Amadeus\Client\RequestOptions\QueueRemoveItemOptions;
55
use Amadeus\Client\RequestOptions\RequestOptionsInterface;
56
use Amadeus\Client\RequestOptions\SalesReportsDisplayQueryReportOptions;
57
use Amadeus\Client\RequestOptions\SecurityAuthenticateOptions;
58
use Amadeus\Client\RequestOptions\TicketCreateTstFromPricingOptions;
59
use Amadeus\Client\RequestOptions\TicketDeleteTstOptions;
60
use Amadeus\Client\Struct;
61
62
/**
63
 * Base request creator - the default request creator.
64
 *
65
 * @package Amadeus\Client\RequestCreator
66
 * @author Dieter Devlieghere <[email protected]>
67
 */
68
class Base implements RequestCreatorInterface
69
{
70
    /**
71
     * @var RequestCreatorParams
72
     */
73
    protected $params;
74
75
    /**
76
     * Associative array of messages (as keys) and versions (as values) that are present in the WSDL.
77
     *
78
     * @var array
79
     */
80
    protected $messagesAndVersions = [];
81
82
    /**
83
     * @param $params
84
     */
85
    public function __construct(RequestCreatorParams $params)
86
    {
87
        $this->params = $params;
88
        $this->messagesAndVersions = $params->messagesAndVersions;
89
    }
90
91
    /**
92
     * @param string $messageName the message name as named in the WSDL
93
     * @param RequestOptionsInterface $params
94
     * @throws Struct\InvalidArgumentException When invalid input is detected during message creation.
95
     * @throws InvalidMessageException when trying to create a request for a message that is not in your WSDL.
96
     * @return mixed the created request
97
     */
98
    public function createRequest($messageName, RequestOptionsInterface $params)
99
    {
100
        $this->checkMessageIsInWsdl($messageName);
101
102
        $methodName = 'create' . str_replace("_", "", $messageName);
103
104
        if (method_exists($this, $methodName)) {
105
            return $this->$methodName($params);
106
        } else {
107
            throw new \RuntimeException('Message ' . $methodName . ' is not implemented in ' . __CLASS__);
108
        }
109
    }
110
111
    /**
112
     * @return Struct\Security\SignOut
113
     */
114
    protected function createSecuritySignOut()
115
    {
116
        return new Struct\Security\SignOut();
117
    }
118
119
    /**
120
     * Create request object for Security_Authenticate message
121
     *
122
     * @param SecurityAuthenticateOptions $params
123
     * @return Struct\Security\Authenticate
124
     */
125
    protected function createSecurityAuthenticate(SecurityAuthenticateOptions $params)
126
    {
127
        return new Struct\Security\Authenticate($params);
128
    }
129
130
    /**
131
     * Create request object for PNR_Retrieve message
132
     *
133
     * @param PnrRetrieveOptions $params
134
     * @return Struct\Pnr\Retrieve
135
     */
136
    protected function createPNRRetrieve(PnrRetrieveOptions $params)
137
    {
138
        $retrieveRequest = new Struct\Pnr\Retrieve(
139
            Struct\Pnr\Retrieve::RETR_TYPE_BY_RECLOC,
140
            $params->recordLocator
141
        );
142
143
        return $retrieveRequest;
144
    }
145
146
    /**
147
     * @param PnrRetrieveAndDisplayOptions $params
148
     * @return Struct\Pnr\RetrieveAndDisplay
149
     */
150
    protected function createPNRRetrieveAndDisplay(PnrRetrieveAndDisplayOptions $params)
151
    {
152
        $req = new Struct\Pnr\RetrieveAndDisplay(
153
            $params->recordLocator,
154
            $params->retrieveOption
155
        );
156
157
        return $req;
158
    }
159
160
    /**
161
     * @param PnrAddMultiElementsBase $params
162
     * @return Struct\Pnr\AddMultiElements
163
     */
164
    protected function createPNRAddMultiElements(PnrAddMultiElementsBase $params)
165
    {
166
        if ($params instanceof PnrCreatePnrOptions && empty($params->receivedFrom)) {
167
            //Automagically add RF if not present:
168
            $params->receivedFrom = $this->params->receivedFrom;
169
        }
170
171
        $req = new Struct\Pnr\AddMultiElements($params);
172
173
        return $req;
174
    }
175
176
    /**
177
     * @param PnrCancelOptions $params
178
     * @return Struct\Pnr\Cancel
179
     */
180
    protected function createPNRCancel(PnrCancelOptions $params)
181
    {
182
        return new Struct\Pnr\Cancel($params);
183
    }
184
185
    /**
186
     * @param PnrDisplayHistoryOptions $params
187
     * @return Struct\Pnr\DisplayHistory
188
     */
189
    protected function createPNRDisplayHistory(PnrDisplayHistoryOptions $params)
190
    {
191
        return new Struct\Pnr\DisplayHistory($params);
192
    }
193
194
    /**
195
     * @param QueueListOptions $params
196
     * @return Struct\Queue\QueueList
197
     */
198
    protected function createQueueList(QueueListOptions $params)
199
    {
200
        $queueListRequest = new Struct\Queue\QueueList(
201
            $params->queue->queue,
202
            $params->queue->category
203
        );
204
205
        return $queueListRequest;
206
    }
207
208
    /**
209
     * @param QueuePlacePnrOptions $params
210
     * @return Struct\Queue\PlacePnr
211
     */
212
    protected function createQueuePlacePnr(QueuePlacePnrOptions $params)
213
    {
214
        $req = new Struct\Queue\PlacePnr(
215
            $params->recordLocator,
216
            $params->sourceOfficeId,
217
            $params->targetQueue
218
        );
219
220
        return $req;
221
    }
222
223
    /**
224
     * @param QueueRemoveItemOptions $params
225
     * @return Struct\Queue\RemoveItem
226
     */
227
    protected function createQueueRemoveItem(QueueRemoveItemOptions $params)
228
    {
229
        $req = new Struct\Queue\RemoveItem(
230
            $params->queue,
231
            $params->recordLocator,
232
            $params->originatorOfficeId
233
        );
234
235
        return $req;
236
    }
237
238
    /**
239
     * @param QueueMoveItemOptions $params
240
     * @return Struct\Queue\MoveItem
241
     */
242
    protected function createQueueMoveItem(QueueMoveItemOptions $params)
243
    {
244
        $req = new Struct\Queue\MoveItem(
245
            $params->recordLocator,
246
            $params->officeId,
247
            $params->sourceQueue,
248
            $params->destinationQueue
249
        );
250
251
        return $req;
252
    }
253
254
    /**
255
     * @param OfferVerifyOptions $params
256
     * @return Struct\Offer\Verify
257
     */
258
    protected function createOfferVerifyOffer(OfferVerifyOptions $params)
259
    {
260
        $req = new Struct\Offer\Verify(
261
            $params->offerReference,
262
            $params->segmentName
263
        );
264
265
        return $req;
266
    }
267
268
    /**
269
     * @param OfferConfirmAirOptions $params
270
     * @return Struct\Offer\ConfirmAir
271
     */
272
    protected function createOfferConfirmAirOffer(OfferConfirmAirOptions $params)
273
    {
274
        return new Struct\Offer\ConfirmAir($params);
275
    }
276
277
278
    /**
279
     * @param OfferConfirmHotelOptions $params
280
     * @return Struct\Offer\ConfirmHotel
281
     */
282
    protected function createOfferConfirmHotelOffer(OfferConfirmHotelOptions $params)
283
    {
284
        return new Struct\Offer\ConfirmHotel($params);
285
    }
286
287
    /**
288
     * @param OfferConfirmCarOptions $params
289
     * @return Struct\Offer\ConfirmCar
290
     */
291
    protected function createOfferConfirmCarOffer(OfferConfirmCarOptions $params)
292
    {
293
        return new Struct\Offer\ConfirmCar($params);
294
    }
295
296
    /**
297
     * createFareMasterPricerTravelBoardSearch
298
     *
299
     * @param FareMasterPricerTbSearch $params
300
     * @return Struct\Fare\MasterPricerTravelBoardSearch
301
     */
302
    protected function createFareMasterPricerTravelBoardSearch(FareMasterPricerTbSearch $params)
303
    {
304
        return new Struct\Fare\MasterPricerTravelBoardSearch($params);
305
    }
306
307
308
    /**
309
     * createFareCheckRules
310
     *
311
     * @param FareCheckRulesOptions $params
312
     * @return Struct\Fare\CheckRules
313
     */
314
    protected function createFareCheckRules(FareCheckRulesOptions $params)
315
    {
316
        return new Struct\Fare\CheckRules($params);
317
    }
318
319
    /**
320
     * createFareConvertCurrency
321
     *
322
     * @param FareConvertCurrencyOptions $params
323
     * @return Struct\Fare\ConvertCurrency
324
     */
325
    protected function createFareConvertCurrency(FareConvertCurrencyOptions $params)
326
    {
327
        return new Struct\Fare\ConvertCurrency($params);
328
    }
329
330
    /**
331
     * makeFarePricePnrWithBookingClass
332
     *
333
     * @param FarePricePnrWithBookingClassOptions $params
334
     * @return Struct\Fare\PricePNRWithBookingClass12|Struct\Fare\PricePNRWithBookingClass13
335
     */
336
    protected function createFarePricePnrWithBookingClass(FarePricePnrWithBookingClassOptions $params)
337
    {
338
        $version = $this->getActiveVersionFor('Fare_PricePNRWithBookingClass');
339
        if ($version < 13) {
340
            return new Struct\Fare\PricePNRWithBookingClass12($params);
341
        } else {
342
            return new Struct\Fare\PricePNRWithBookingClass13($params);
343
        }
344
    }
345
346
    /**
347
     * createFareInformativePricingWithoutPNR
348
     *
349
     * @param FareInformativePricingWithoutPnrOptions $params
350
     * @return Struct\Fare\InformativePricingWithoutPNR12|Struct\Fare\InformativePricingWithoutPNR13
351
     */
352
    protected function createFareInformativePricingWithoutPNR(FareInformativePricingWithoutPnrOptions $params)
353
    {
354
        $version = $this->getActiveVersionFor('Fare_InformativePricingWithoutPNR');
355
        if ($version < 13) {
356
            return new Struct\Fare\InformativePricingWithoutPNR12($params);
357
        } else {
358
            return new Struct\Fare\InformativePricingWithoutPNR13($params);
359
        }
360
    }
361
362
    /**
363
     * Air_MultiAvailability
364
     *
365
     * @param AirMultiAvailabilityOptions $params
366
     * @return Struct\Air\MultiAvailability
367
     */
368
    protected function createAirMultiAvailability(AirMultiAvailabilityOptions $params)
369
    {
370
        return new Struct\Air\MultiAvailability($params);
371
    }
372
373
    /**
374
     * Air_SellFromRecommendation
375
     *
376
     * @param AirSellFromRecommendationOptions $params
377
     * @return Struct\Air\SellFromRecommendation
378
     */
379
    protected function createAirSellFromRecommendation(AirSellFromRecommendationOptions $params)
380
    {
381
        return new Struct\Air\SellFromRecommendation($params);
382
    }
383
384
    /**
385
     * Air_FlightInfo
386
     *
387
     * @param AirFlightInfoOptions $params
388
     * @return Struct\Air\FlightInfo
389
     */
390
    protected function createAirFlightInfo(AirFlightInfoOptions $params)
391
    {
392
        return new Struct\Air\FlightInfo($params);
393
    }
394
395
    /**
396
     * @param AirRetrieveSeatMapOptions $params
397
     * @return Struct\Air\RetrieveSeatMap
398
     */
399
    protected function createAirRetrieveSeatMap(AirRetrieveSeatMapOptions $params)
400
    {
401
        return new Struct\Air\RetrieveSeatMap($params);
402
    }
403
404
    /**
405
     * Command_Cryptic
406
     *
407
     * @param CommandCrypticOptions $params
408
     * @return Struct\Command\Cryptic
409
     */
410
    protected function createCommandCryptic(CommandCrypticOptions $params)
411
    {
412
        return new Struct\Command\Cryptic($params->entry);
413
    }
414
415
    /**
416
     * Info_EncodeDecodeCity
417
     *
418
     * @param InfoEncodeDecodeCityOptions $params
419
     * @return Struct\Info\EncodeDecodeCity
420
     */
421
    protected function createInfoEncodeDecodeCity(InfoEncodeDecodeCityOptions $params)
422
    {
423
        return new Struct\Info\EncodeDecodeCity($params);
424
    }
425
426
    /**
427
     * makeMiniRuleGetFromPricingRec
428
     *
429
     * @param MiniRuleGetFromPricingRecOptions $params
430
     * @return Struct\MiniRule\GetFromPricingRec
431
     */
432
    protected function createMiniRuleGetFromPricingRec(MiniRuleGetFromPricingRecOptions $params)
433
    {
434
        return new Struct\MiniRule\GetFromPricingRec($params);
435
    }
436
437
    /**
438
     * Ticket_CreateTstFromPricing
439
     *
440
     * @param TicketCreateTstFromPricingOptions $params
441
     * @return Struct\Ticket\CreateTSTFromPricing
442
     */
443
    protected function createTicketCreateTSTFromPricing(TicketCreateTstFromPricingOptions $params)
444
    {
445
        return new Struct\Ticket\CreateTSTFromPricing($params);
446
    }
447
448
    /**
449
     * Ticket_DeleteTST
450
     *
451
     * @param TicketDeleteTstOptions $params
452
     * @return Struct\Ticket\DeleteTST
453
     */
454
    protected function createTicketDeleteTST(TicketDeleteTstOptions $params)
455
    {
456
        return new Struct\Ticket\DeleteTST($params);
457
    }
458
459
    /**
460
     * DocIssuance_IssueTicket
461
     *
462
     * @param DocIssuanceIssueTicketOptions $params
463
     * @return Struct\DocIssuance\IssueTicket
464
     */
465
    protected function createDocIssuanceIssueTicket(DocIssuanceIssueTicketOptions $params)
466
    {
467
        return new Struct\DocIssuance\IssueTicket($params);
468
    }
469
470
    /**
471
     * PriceXplorer_ExtremeSearch
472
     *
473
     * @param PriceXplorerExtremeSearchOptions $params
474
     * @return Struct\PriceXplorer\ExtremeSearch
475
     */
476
    protected function createPriceXplorerExtremeSearch(PriceXplorerExtremeSearchOptions $params)
477
    {
478
        return new Struct\PriceXplorer\ExtremeSearch($params);
479
    }
480
481
    /**
482
     * SalesReports_DisplayQueryReport
483
     *
484
     * @param SalesReportsDisplayQueryReportOptions $params
485
     * @return Struct\SalesReports\DisplayQueryReport
486
     */
487
    protected function createSalesReportsDisplayQueryReport(SalesReportsDisplayQueryReportOptions $params)
488
    {
489
        return new Struct\SalesReports\DisplayQueryReport($params);
490
    }
491
492
    /**
493
     * Check if a given message is in the active WSDL. Throws exception if it isn't.
494
     *
495
     * @throws InvalidMessageException if message is not in WSDL.
496
     * @param string $messageName
497
     */
498
    protected function checkMessageIsInWsdl($messageName)
499
    {
500
        if (!array_key_exists($messageName, $this->messagesAndVersions)) {
501
            throw new InvalidMessageException('Message "' . $messageName . '" is not in WDSL');
502
        }
503
    }
504
505
    /**
506
     * Get the version number active in the WSDL for the given message
507
     *
508
     * @param string $messageName
509
     * @return float|string
510
     */
511
    protected function getActiveVersionFor($messageName)
512
    {
513
        return $this->messagesAndVersions[$messageName];
514
    }
515
}
516