feat: Allow to buy a product for free

This commit is contained in:
IceToast 2023-01-30 22:44:48 +01:00
parent ff2d0b794e
commit a077092631
No known key found for this signature in database
GPG key ID: 1464353E063A5B97
2 changed files with 26 additions and 13 deletions

View file

@ -39,21 +39,29 @@ class PaymentController extends Controller
*/
public function checkOut(ShopProduct $shopProduct)
{
$extensions = ExtensionHelper::getAllExtensionsByNamespace('PaymentGateways');
$discount = PartnerDiscount::getDiscount();
$price = $shopProduct->price - ($shopProduct->price * $discount / 100);
// build a paymentgateways array that contains the routes for the payment gateways and the image path for the payment gateway which lays in public/images/Extensions/PaymentGateways with the extensionname in lowercase
$paymentGateways = [];
foreach ($extensions as $extension) {
$extensionName = basename($extension);
if (!ExtensionHelper::getExtensionConfig($extensionName, 'enabled')) continue; // skip if not enabled
if ($price > 0) {
$extensions = ExtensionHelper::getAllExtensionsByNamespace('PaymentGateways');
$payment = new \stdClass();
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name');
$payment->image = asset('images/Extensions/PaymentGateways/' . strtolower($extensionName) . '_logo.png');
$paymentGateways[] = $payment;
// build a paymentgateways array that contains the routes for the payment gateways and the image path for the payment gateway which lays in public/images/Extensions/PaymentGateways with the extensionname in lowercase
foreach ($extensions as $extension) {
$extensionName = basename($extension);
if (!ExtensionHelper::getExtensionConfig($extensionName, 'enabled')) continue; // skip if not enabled
$payment = new \stdClass();
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name');
$payment->image = asset('images/Extensions/PaymentGateways/' . strtolower($extensionName) . '_logo.png');
$paymentGateways[] = $payment;
}
}
$discount = PartnerDiscount::getDiscount();
return view('store.checkout')->with([
'product' => $shopProduct,
@ -64,6 +72,7 @@ class PaymentController extends Controller
'taxpercent' => $shopProduct->getTaxPercent(),
'total' => $shopProduct->getTotalPrice(),
'paymentGateways' => $paymentGateways,
'productIsFree' => $price <= 0,
]);
}

View file

@ -130,11 +130,15 @@
<!-- this row will not appear when printing -->
<div class="row no-print">
<div class="col-12">
<button :disabled="!payment_method || clicked"
:class="!payment_method || clicked ? 'disabled' : ''"
<button :disabled="(!payment_method || clicked) && {{ !$productIsFree }}"
:class="(!payment_method || clicked) && {{ !$productIsFree }} ? 'disabled' : ''"
class="btn btn-success float-right"><i class="far fa-credit-card mr-2"
@click="clicked = true"></i>
{{ __('Submit Payment') }}
@if ($productIsFree)
{{ __('Get for free') }}
@else
{{ __('Submit Payment') }}
@endif
</button>
</div>
</div>