Completed
Push — master ( 34b639...00cc71 )
by Dieter
05:14
created

FamilyCriteria::makeFamilyInfoQualifier()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 8
cts 8
cp 1
rs 9.4285
cc 3
eloc 7
nc 3
nop 1
crap 3
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\Struct\Fare\MasterPricer;
24
25
use Amadeus\Client\RequestOptions\Fare\MasterPricer\FFCriteria;
26
27
/**
28
 * FamilyCriteria
29
 *
30
 * @package Amadeus\Client\Struct\Fare\MasterPricer
31
 * @author Dieter Devlieghere <[email protected]>
32
 */
33
class FamilyCriteria
34
{
35
    const CABIN_MAJOR = "MC";
36
    const CABIN_RECOMMENDED = "RC";
37
38
    /**
39
     * @var string[]
40
     */
41
    public $carrierId = [];
42
43
    /**
44
     * @var string[]
45
     */
46
    public $rdb = [];
47
48
    /**
49
     * @var FareFamilyInfo
50
     */
51
    public $fareFamilyInfo;
52
53
    /**
54
     * @var FareProductDetail[]
55
     */
56
    public $fareProductDetail = [];
57
58
    /**
59
     * @var CorporateInfo[]
60
     */
61
    public $corporateInfo = [];
62
63
    /**
64
     * @var CabinProduct[]
65
     */
66
    public $cabinProduct = [];
67
68
    /**
69
     * self::CABIN_*
70
     *
71
     * @var string
72
     */
73
    public $cabinProcessingIdentifier;
74
75
    /**
76
     * @var DateTimeDetails[]
77
     */
78
    public $dateTimeDetails = [];
79
80
    /**
81
     * @var OtherCriteria[]
82
     */
83
    public $otherCriteria = [];
84
85
    /**
86
     * FamilyCriteria constructor.
87
     *
88
     * @param FFCriteria $criteria
89
     */
90 2
    public function __construct(FFCriteria $criteria)
91
    {
92 2
        $this->carrierId = $criteria->carriers;
93
94 2
        $familyInfoQual = $this->makeFamilyInfoQualifier($criteria);
95 2
        if (!is_null($familyInfoQual)) {
96 2
            $this->fareFamilyInfo = new FareFamilyInfo($familyInfoQual);
97 2
        }
98
99 2
        $this->loadFareProductDetail($criteria);
100
101 2
        $this->loadCorporateInfo($criteria);
102
103 2
        $this->loadCabinAndBookingClass($criteria);
104
105 2
        $this->loadOtherCriteria($criteria->expandedParameters);
106 2
    }
107
108
    /**
109
     * @param FFCriteria $criteria
110
     * @return string|null
111
     */
112 2
    protected function makeFamilyInfoQualifier($criteria)
113
    {
114 2
        $qual = null;
115 2
        if ($criteria->combinable === false) {
116 1
            $qual = FareFamilyInfo::QUAL_NON_COMBINABLE_FARE_FAMILY;
117 2
        } elseif ($criteria->alternatePrice === true) {
118 1
            $qual = FareFamilyInfo::QUAL_ALTERNATE_PRICE;
119 1
        }
120
121 2
        return $qual;
122
    }
123
124
    /**
125
     * @param FFCriteria $criteria
126
     */
127 2
    protected function loadCorporateInfo(FFCriteria $criteria)
128
    {
129 2
        foreach ($criteria->corporateCodes as $corporateCode) {
130 1
            $this->corporateInfo[] = new CorporateInfo($corporateCode);
131 2
        }
132
133 2
        foreach ($criteria->corporateNames as $corporateName) {
134 1
            $this->corporateInfo[] = new CorporateInfo(null, $corporateName);
135 2
        }
136 2
    }
137
138
    /**
139
     * @param FFCriteria $criteria
140
     */
141 2
    protected function loadFareProductDetail(FFCriteria $criteria)
142
    {
143 2
        foreach ($criteria->fareBasis as $fareBasis) {
144 1
            $this->fareProductDetail[] = new FareProductDetail($fareBasis);
145 2
        }
146 2
        foreach ($criteria->fareType as $fareType) {
147 2
            $this->fareProductDetail[] = new FareProductDetail(null, $fareType);
148 2
        }
149 2
    }
150
151
    /**
152
     * @param FFCriteria $criteria
153
     *
154
     */
155 2
    protected function loadCabinAndBookingClass($criteria)
156
    {
157 2
        foreach ($criteria->cabins as $cabin) {
158 1
            $this->cabinProduct[] = new CabinProduct($cabin);
159 2
        }
160
161 2
        $this->rdb = $criteria->bookingCode;
162 2
    }
163
164
    /**
165
     * @param string[] $expandedParameters
166
     */
167 2
    protected function loadOtherCriteria($expandedParameters)
168
    {
169 2
        foreach ($expandedParameters as $expandedParameter) {
170 1
            $this->otherCriteria[] = new OtherCriteria(
171 1
                $expandedParameter,
172
                OtherCriteria::NAME_EXPANDED_PARAMETERS
173 1
            );
174 2
        }
175 2
    }
176
}
177