@@ -10,6 +10,16 @@ class RequestClient extends BaseClient
1010{
1111 protected $ basePath = 'pss/ ' ;
1212
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+
1323 /**
1424 * Gets a paginated response of all PSS requests
1525 *
@@ -20,6 +30,8 @@ class RequestClient extends BaseClient
2030 */
2131 public function getPage ($ page = 1 , $ perPage = 15 , $ filters = [])
2232 {
33+ $ filters = $ this ->friendlyToApi ($ filters , $ this ->requestMap );
34+
2335 $ page = $ this ->paginatedRequest ('v1/requests ' , $ page , $ perPage , $ filters );
2436 $ page ->serializeWith (function ($ item ) {
2537 return $ this ->serializeRequest ($ item );
@@ -138,31 +150,9 @@ public function getFeedback($id)
138150 */
139151 protected function serializeRequest ($ item )
140152 {
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 );
166156
167157 return $ request ;
168158 }
@@ -184,41 +174,16 @@ public function serializeFeedback($item)
184174
185175 protected function requestToJson ($ request )
186176 {
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 );
202178
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 ();
208181 }
209182
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 ();
220185 }
221-
222- return json_encode ($ payload );
186+
187+ return json_encode ($ json );
223188 }
224189}
0 commit comments