41 lines
1.4 KiB
PHP
41 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Tenant;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\CheckoutSession;
|
|
use App\Services\Addons\EventAddonCatalog;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class EventAddonCatalogController extends Controller
|
|
{
|
|
public function __construct(private readonly EventAddonCatalog $catalog) {}
|
|
|
|
public function index(): JsonResponse
|
|
{
|
|
$provider = config('package-addons.provider')
|
|
?? config('checkout.default_provider', CheckoutSession::PROVIDER_PAYPAL);
|
|
|
|
$addons = collect($this->catalog->all())
|
|
->map(function (array $addon, string $key) use ($provider): array {
|
|
$priceId = $provider === CheckoutSession::PROVIDER_PAYPAL
|
|
? ($addon['price'] ?? null ? 'paypal' : null)
|
|
: ($addon['variant_id'] ?? null);
|
|
|
|
return [
|
|
'key' => $key,
|
|
'label' => $addon['label'] ?? null,
|
|
'price_id' => $priceId,
|
|
'increments' => $addon['increments'] ?? [],
|
|
'price' => $addon['price'] ?? null,
|
|
'currency' => $addon['currency'] ?? 'EUR',
|
|
];
|
|
})
|
|
->filter(fn (array $addon) => ! empty($addon['price_id']))
|
|
->values()
|
|
->all();
|
|
|
|
return response()->json(['data' => $addons]);
|
|
}
|
|
}
|