Skip to content

Commit

Permalink
data objects for strict typing request params
Browse files Browse the repository at this point in the history
  • Loading branch information
robertdrakedennis committed Mar 31, 2023
1 parent 4884c8c commit ce2b2bc
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 0 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"php": "^8.1",
"illuminate/contracts": "^10.0",
"sammyjo20/saloon": "^2.0",
"spatie/laravel-data": "^3.2",
"spatie/laravel-package-tools": "^1.14.0"
},
"require-dev": {
Expand Down
27 changes: 27 additions & 0 deletions src/Data/Requests/BasketData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Data\Requests;

use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;

class BasketData extends Data
{
public function __construct(
public string $return_url,
public string $complete_url,
public array|Optional $custom,
public string|Optional $first_name,
public string|Optional $last_name,
public string|Optional $email
){}

public function toArrayWithFilledProps(): array
{
$array = $this->transform();

return array_filter($array, function ($array) {
return ! is_null($array);
});
}
}
16 changes: 16 additions & 0 deletions src/Data/Requests/ItemData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Data\Requests;

use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;

class ItemData extends Data
{
public function __construct(
public PackageData $package,
public int|Optional $qty,
public array|Optional $revenue_share,
public SaleData|Optional $sale,
){}
}
22 changes: 22 additions & 0 deletions src/Data/Requests/PackageData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Data\Requests;

use Shimmer\LaravelTebexCheckout\Enums\PackageExpiryPeriod;
use Shimmer\LaravelTebexCheckout\Enums\PackageType;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;

class PackageData extends Data
{
public function __construct(
public string $name,
public float $price,
public PackageExpiryPeriod|Optional $expiry_period,
public int|Optional $expiry_length,
public array|Optional $metadata,
public int|Optional $qty,
public PackageType $type,
public array|Optional $revenue_share,
){}
}
15 changes: 15 additions & 0 deletions src/Data/Requests/SaleData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Data\Requests;

use Shimmer\LaravelTebexCheckout\Enums\SaleDiscountType;
use Spatie\LaravelData\Data;

class SaleData extends Data
{
public function __construct(
public string $name,
public SaleDiscountType $discount_type,
public float $amount,
){}
}
12 changes: 12 additions & 0 deletions src/Enums/PackageExpiryPeriod.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Enums;

enum PackageExpiryPeriod: string
{
case Day = 'day';

case Month = 'month';

case Year = 'year';
}
10 changes: 10 additions & 0 deletions src/Enums/PackageType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Enums;

enum PackageType: string
{
case Single = 'single';

case Subscription = 'subscription';
}
12 changes: 12 additions & 0 deletions src/Enums/SaleDiscountType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Shimmer\LaravelTebexCheckout\Enums;

enum SaleDiscountType: string
{
case Percentage = 'percentage';

case Amount = 'amount';

case basket = 'basket';
}

0 comments on commit ce2b2bc

Please sign in to comment.