Completed
Pull Request — master (#350)
by
unknown
08:00 queued 01:24
created

BookingInfo::getUrlLabel()   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 0
1
<?php
2
3
/**
4
 * @file
5
 * Contains CultuurNet\UDB3\BookingInfo.
6
 */
7
8
namespace CultuurNet\UDB3;
9
use CultuurNet\UDB3\Model\ValueObject\Contact\BookingInfo as Udb3ModelBookingInfo;
10
11
/**
12
 * BookingInfo info.
13
 */
14
class BookingInfo implements JsonLdSerializableInterface
15
{
16
17
    /**
18
     * @var string
19
     */
20
    protected $price = '';
21
22
    /**
23
     * @var string
24
     */
25
    protected $currency = 'EUR';
26
27
    /**
28
     * @var string
29
     */
30
    protected $phone = '';
31
32
    /**
33
     * @var string
34
     */
35
    protected $email = '';
36
37
    /**
38
     * @var string
39
     */
40
    protected $url = '';
41
42
    /**
43
     * @var string
44
     */
45
    protected $urlLabel = '';
46
47
    /**
48
     * @var string
49
     */
50
    protected $availabilityStarts = '';
51
52
    /**
53
     * @var string
54
     */
55
    protected $availabilityEnds = '';
56
57
    /**
58
     * @var string
59
     */
60
    protected $name = '';
61
62
    /**
63
     * @var string
64
     */
65
    protected $description = '';
66
67
    /**
68
     * @param string $url
69
     * @param string $urlLabel
70
     * @param string $phone
71
     * @param string $email
72
     * @param string $availabilityStarts
73
     * @param string $availabilityEnds
74
     * @param string $name
75
     * @param string $description
76
     */
77
    public function __construct(
78
        $url = '',
79
        $urlLabel = '',
80
        $phone = '',
81
        $email = '',
82
        $availabilityStarts = '',
83
        $availabilityEnds = '',
84
        $name = '',
85
        $description = ''
86
    ) {
87
        $this->url = $url;
88
        $this->urlLabel = $urlLabel;
89
        $this->phone = $phone;
90
        $this->email = $email;
91
        $this->availabilityStarts = $availabilityStarts;
92
        $this->availabilityEnds = $availabilityEnds;
93
        $this->name = $name;
94
        $this->description = $description;
95
    }
96
97
    public function getPhone()
98
    {
99
        return $this->phone;
100
    }
101
102
    public function getEmail()
103
    {
104
        return $this->email;
105
    }
106
107
    public function getUrl()
108
    {
109
        return $this->url;
110
    }
111
112
    public function getUrlLabel()
113
    {
114
        return $this->urlLabel;
115
    }
116
117
    public function getName()
118
    {
119
        return $this->name;
120
    }
121
122
    public function getDescription()
123
    {
124
        return $this->description;
125
    }
126
127
    public function getAvailabilityStarts()
128
    {
129
        return $this->availabilityStarts;
130
    }
131
132
    public function getAvailabilityEnds()
133
    {
134
        return $this->availabilityEnds;
135
    }
136
137
    /**
138
     * {@inheritdoc}
139
     */
140
    public function serialize()
141
    {
142
        return [
143
          'phone' => $this->phone,
144
          'email' => $this->email,
145
          'url' => $this->url,
146
          'urlLabel' => $this->urlLabel,
147
          'name' => $this->name,
148
          'description' => $this->description,
149
          'availabilityStarts' => $this->availabilityStarts,
150
          'availabilityEnds' => $this->availabilityEnds,
151
        ];
152
    }
153
154
    /**
155
     * {@inheritdoc}
156
     */
157
    public static function deserialize(array $data)
158
    {
159
        return new static(
160
            $data['url'], $data['urlLabel'], $data['phone'], $data['email'],
161
            $data['availabilityStarts'], $data['availabilityEnds'], $data['name'], $data['description']
162
        );
163
    }
164
165
    /**
166
     * {@inheritdoc}
167
     */
168
    public function toJsonLd()
169
    {
170
        return $this->serialize();
171
    }
172
173
    /**
174
     * @param BookingInfo $otherBookingInfo
175
     * @return bool
176
     */
177
    public function sameAs(BookingInfo $otherBookingInfo)
178
    {
179
        return $this->toJsonLd() === $otherBookingInfo->toJsonLd();
180
    }
181
182
    /**
183
     * @param Udb3ModelBookingInfo $udb3ModelBookingInfo
184
     * @return BookingInfo
185
     */
186
    public static function fromUdb3ModelBookingInfo(Udb3ModelBookingInfo $udb3ModelBookingInfo)
187
    {
188
        $url = '';
189
        $urlLabel = '';
190
        $phone = '';
191
        $email = '';
192
        $availabilityStarts = '';
193
        $availabilityEnds = '';
194
195
        if ($udb3ModelWebsite = $udb3ModelBookingInfo->getWebsite()) {
196
            $url = $udb3ModelWebsite->getUrl()->toString();
197
            $urlLabel = $udb3ModelWebsite->getLabel()->getTranslation(
198
                $udb3ModelWebsite->getLabel()->getOriginalLanguage()
199
            )->toString();
200
        }
201
202
        if ($udb3ModelPhone = $udb3ModelBookingInfo->getTelephoneNumber()) {
203
            $phone = $udb3ModelPhone->toString();
204
        }
205
206
        if ($udb3ModelEmail = $udb3ModelBookingInfo->getEmailAddress()) {
207
            $email = $udb3ModelEmail->toString();
208
        }
209
210
        if ($udb3ModelAvailability = $udb3ModelBookingInfo->getAvailability()) {
211
            $availabilityStarts = $udb3ModelAvailability->getFrom()->format(\DATE_ATOM);
212
            $availabilityEnds = $udb3ModelAvailability->getTo()->format(\DATE_ATOM);
213
        }
214
215
        return new BookingInfo(
216
            $url,
217
            $urlLabel,
218
            $phone,
219
            $email,
220
            $availabilityStarts,
221
            $availabilityEnds
222
        );
223
    }
224
}
225