Skip to content

Commit 657b2b7

Browse files
committed
Option (enabled automatically for new users, disabled for old) to strip null values
1 parent 8df8ee6 commit 657b2b7

File tree

5 files changed

+40
-15
lines changed

5 files changed

+40
-15
lines changed

src/Builders/Builder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ public function all($filters = [], $pageSize = 500)
186186
*/
187187
public function create($data)
188188
{
189+
$data = $this->request->formatData($data);
190+
189191
return $this->request->handleWithExceptions(function () use ($data) {
190192
$response = $this->request->curl->post("/{$this->entity}", [
191193
'json' => $data,

src/Economic.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use LasseRafn\Economic\Builders\VatZoneBuilder;
2929
use LasseRafn\Economic\Builders\VoucherBuilder;
3030
use LasseRafn\Economic\Models\CompanySelf;
31+
use LasseRafn\Economic\Utils\Model;
3132
use LasseRafn\Economic\Utils\Request;
3233

3334
class Economic
@@ -40,11 +41,14 @@ class Economic
4041

4142
protected $apiPublic;
4243

43-
public function __construct($agreement = '', $apiSecret = null, $apiPublic = null)
44+
protected $stripNullValues;
45+
46+
public function __construct($agreement = '', $apiSecret = null, $apiPublic = null, $stripNull = null)
4447
{
4548
$this->agreement = $agreement ?? config('economic.agreement');
4649
$this->apiSecret = $apiSecret ?? config('economic.secret_token');
4750
$this->apiPublic = $apiPublic ?? config('economic.public_token');
51+
$this->stripNullValues = $stripNull ?? config('economic.strip_null', false);
4852

4953
$this->initRequest();
5054
}
@@ -157,16 +161,16 @@ public function layouts()
157161
{
158162
return new LayoutBuilder($this->request);
159163
}
160-
161-
162-
/**
163-
* @param integer $customerNumber
164-
*
165-
* @return ContactBuilder()|Builder
166-
*/
167-
public function customerContacts( $customerNumber ) {
168-
return new ContactBuilder( $this->request, $customerNumber );
169-
}
164+
165+
/**
166+
* @param integer $customerNumber
167+
*
168+
* @return ContactBuilder()|Builder
169+
*/
170+
public function customerContacts( $customerNumber )
171+
{
172+
return new ContactBuilder( $this->request, $customerNumber );
173+
}
170174

171175
/**
172176
* @return VatZoneBuilder|Builder
@@ -259,7 +263,7 @@ public function archivedOrders()
259263
}
260264

261265
/**
262-
* @return CompanySelf
266+
* @return CompanySelf|Model
263267
*/
264268
public function self() {
265269
return ( new SelfBuilder( $this->request ) )->find( '' );
@@ -315,6 +319,6 @@ public function downloadInvoice($directUrl)
315319

316320
protected function initRequest()
317321
{
318-
$this->request = new Request($this->agreement, $this->apiSecret);
322+
$this->request = new Request($this->agreement, $this->apiSecret, $this->stripNullValues);
319323
}
320324
}

src/Utils/Model.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ public function update($data = [])
8787

8888
public function updateRaw($data = [])
8989
{
90-
return $this->request->handleWithExceptions(function () use ($data) {
90+
$data = $this->request->formatData($data);
91+
92+
return $this->request->handleWithExceptions(function () use ($data) {
9193
$response = $this->request->curl->put($this->getUpdateEndpoint(), [
9294
'json' => $data,
9395
]);

src/Utils/Request.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ class Request
1111
{
1212
public $curl;
1313

14-
public function __construct($agreementToken = '', $apiSecret = '')
14+
protected $stripNull;
15+
16+
public function __construct($agreementToken = '', $apiSecret = '', $stripNull = false)
1517
{
1618
$this->curl = new Client([
1719
'base_uri' => config('economic.request_endpoint'),
@@ -21,6 +23,16 @@ public function __construct($agreementToken = '', $apiSecret = '')
2123
'Content-Type' => 'application/json',
2224
],
2325
]);
26+
27+
$this->stripNull = $stripNull;
28+
}
29+
30+
public function formatData($data) {
31+
if($this->stripNull) {
32+
return array_filter($data, static function($item) { return $item !== null; });
33+
}
34+
35+
return $data;
2436
}
2537

2638
public function handleWithExceptions($callback)

src/config/economic.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,9 @@
66
'public_token' => env('ECONOMIC_APP_PUBLIC'),
77
'secret_token' => env('ECONOMIC_APP_SECRET'),
88
'agreement' => env('ECONOMIC_AGREEMENT'),
9+
10+
/* --------------------------------------------------------
11+
* Automatically strip null values.
12+
* ----------------------------------------------------- */
13+
'strip_null' => true,
914
];

0 commit comments

Comments
 (0)