Completed
Push — master ( fc1ace...8ff8f8 )
by Dieter
07:27
created

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