@@ -10,6 +10,16 @@ class RequestClient extends BaseClient
10
10
{
11
11
protected $ basePath = 'pss/ ' ;
12
12
13
+ protected $ requestMap = [
14
+ 'created_at ' => 'createdAt ' ,
15
+ 'request_sms ' => 'requestSms ' ,
16
+ 'customer_reference ' => 'customerReference ' ,
17
+ 'last_replied_at ' => 'lastRepliedAt ' ,
18
+ 'system_reference ' => 'systemReference ' ,
19
+ 'unread_replies ' => 'unreadReplies ' ,
20
+ 'contact_method ' => 'contactMethod ' ,
21
+ ];
22
+
13
23
/**
14
24
* Gets a paginated response of all PSS requests
15
25
*
@@ -20,6 +30,8 @@ class RequestClient extends BaseClient
20
30
*/
21
31
public function getPage ($ page = 1 , $ perPage = 15 , $ filters = [])
22
32
{
33
+ $ filters = $ this ->friendlyToApi ($ filters , $ this ->requestMap );
34
+
23
35
$ page = $ this ->paginatedRequest ('v1/requests ' , $ page , $ perPage , $ filters );
24
36
$ page ->serializeWith (function ($ item ) {
25
37
return $ this ->serializeRequest ($ item );
@@ -138,31 +150,9 @@ public function getFeedback($id)
138
150
*/
139
151
protected function serializeRequest ($ item )
140
152
{
141
- $ request = new Entities \Request ;
142
-
143
- $ request ->id = $ item ->id ;
144
- $ request ->author = new Entities \Author ($ item ->author );
145
- $ request ->type = $ item ->type ;
146
- $ request ->secure = $ item ->secure ;
147
- $ request ->subject = $ item ->subject ;
148
- $ request ->createdAt = DateTime::createFromFormat (DateTime::ISO8601 , $ item ->created_at );
149
- $ request ->priority = $ item ->priority ;
150
- $ request ->archived = $ item ->archived ;
151
- $ request ->status = $ item ->status ;
152
- $ request ->requestSms = $ item ->request_sms ;
153
- $ request ->customerReference = $ item ->customer_reference ;
154
- $ request ->product = new Entities \Product ($ item ->product );
155
- $ request ->lastRepliedAt = null ;
156
- $ request ->systemReference = $ item ->system_reference ;
157
- $ request ->unreadReplies = $ item ->unread_replies ;
158
- $ request ->contactMethod = $ item ->contact_method ;
159
- if ($ item ->last_replied_at ) {
160
- $ request ->lastRepliedAt = DateTime::createFromFormat (DateTime::ISO8601 , $ item ->last_replied_at );
161
- }
162
-
163
- if (!empty ($ item ->cc )) {
164
- $ request ->cc = $ item ->cc ;
165
- }
153
+ $ request = new Entities \Request ($ this ->apiToFriendly ($ item , $ this ->requestMap ));
154
+ $ request ->author = new Entities \Author ($ item );
155
+ $ request ->product = new Entities \Product ($ item );
166
156
167
157
return $ request ;
168
158
}
@@ -184,41 +174,16 @@ public function serializeFeedback($item)
184
174
185
175
protected function requestToJson ($ request )
186
176
{
187
- $ payload = [
188
- 'subject ' => $ request ->subject ,
189
- 'details ' => $ request ->details ,
190
- 'priority ' => $ request ->priority ,
191
- 'secure ' => $ request ->secure ,
192
- 'author ' => [
193
- 'id ' => $ request ->author ->id
194
- ],
195
- 'request_sms ' => $ request ->requestSms ,
196
- 'archived ' => $ request ->archived ,
197
- ];
198
-
199
- if (isset ($ request ->status )) {
200
- $ payload ['status ' ] = $ request ->status ;
201
- }
177
+ $ json = $ this ->friendlyToApi ($ request , $ this ->requestMap );
202
178
203
- if ($ request ->product ) {
204
- $ payload ['product ' ] = [
205
- 'type ' => $ request ->product ->type ,
206
- 'id ' => $ request ->product ->id ,
207
- ];
179
+ if ($ request ->author ) {
180
+ $ json ['author ' ] = $ request ->author ->toArray ();
208
181
}
209
182
210
- if (!empty ($ request ->cc )) {
211
- $ payload ['cc ' ] = $ request ->cc ;
212
- }
213
-
214
- if (!empty ($ request ->contactMethod )) {
215
- $ payload ['contact_method ' ] = $ request ->contactMethod ;
216
- }
217
-
218
- if ($ request ->customerReference ) {
219
- $ payload ['customer_reference ' ] = $ request ->customerReference ;
183
+ if ($ request ->product ) {
184
+ $ json ['product ' ] = $ request ->product ->toArray ();
220
185
}
221
-
222
- return json_encode ($ payload );
186
+
187
+ return json_encode ($ json );
223
188
}
224
189
}
0 commit comments