Passed
Push — master ( 5b9625...a3c6c3 )
by Artem
03:31
created

Request   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 30
c 1
b 0
f 0
dl 0
loc 80
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A loadDataLists() 0 4 2
A __construct() 0 47 4
1
<?php
2
3
namespace Amadeus\Client\Struct\Travel\OrderChange;
4
5
use Amadeus\Client\RequestOptions;
6
use Amadeus\Client\Struct\Travel\DataList;
7
use Amadeus\Client\Struct\Travel\Order;
8
use Amadeus\Client\Struct\Travel\PaxList;
9
10
/**
11
 * Request
12
 *
13
 * @package Amadeus\Client\Struct\Travel\OrderRetrieve
14
 * @author Artem Zakharchenko <[email protected]>
15
 */
16
class Request
17
{
18
    /**
19
     * @var ChangeOrder
20
     */
21
    public $ChangeOrder;
22
23
    /**
24
     * @var DataList
25
     */
26
    public $DataLists;
27
28
    /**
29
     * @var Order
30
     */
31
    public $Order;
32
33
    /**
34
     * @param RequestOptions\Travel\OrderChange\AcceptChange|null $acceptChange
35
     * @param RequestOptions\Travel\OrderChange\UpdateOrderItem|null $updateOrderItem
36
     * @param RequestOptions\Travel\DataList[] $dataLists
37
     * @param Order $order
38
     */
39
    public function __construct(
40
        $acceptChange,
41
        $updateOrderItem,
42
        array $dataLists,
43
        Order $order
44
    ) {
45
        $this->ChangeOrder = new ChangeOrder();
46
47
        if ($acceptChange) {
48
            $this->ChangeOrder->setAcceptChange(new AcceptChange($acceptChange->orderItemRefIds));
49
        }
50
51
        if ($updateOrderItem) {
52
            $selectedOfferItems = array_map(
53
                static function (RequestOptions\Travel\SelectedOfferItem $item) {
54
                    $selectedOfferItem = new SelectedOfferItem(
55
                        $item->offerItemRefId,
56
                        $item->paxRefId[0]
57
                    );
58
59
                    if ($selectedSeat = $item->selectedSeat) {
60
                        $selectedOfferItem->setSelectedSeat(
61
                            new SelectedSeat($selectedSeat->rowNumber, $selectedSeat->column)
62
                        );
63
                    }
64
65
                    return $selectedOfferItem;
66
                },
67
                $updateOrderItem->offer->selectedOfferItems
68
            );
69
70
            $this->ChangeOrder->setUpdateOrderItem(
71
                new UpdateOrderItem(
72
                    new AcceptOffer(
73
                        new SelectedOffer(
74
                            $updateOrderItem->offer->offerRefID,
75
                            $updateOrderItem->offer->ownerCode,
76
                            $updateOrderItem->offer->shoppingResponseRefID,
77
                            $selectedOfferItems
78
                        )
79
                    )
80
                )
81
            );
82
        }
83
84
        $this->loadDataLists($dataLists);
85
        $this->Order = $order;
86
    }
87
88
    /**
89
     * @param RequestOptions\Travel\DataList[] $requestDataLists
90
     * @return void
91
     */
92
    protected function loadDataLists(array $requestDataLists)
93
    {
94
        foreach ($requestDataLists as $requestDataList) {
95
            $this->DataLists = new DataList(new PaxList($requestDataList->paxList));
96
        }
97
    }
98
}
99