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) 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 = []; $paymentGateways = [];
foreach ($extensions as $extension) { if ($price > 0) {
$extensionName = basename($extension); $extensions = ExtensionHelper::getAllExtensionsByNamespace('PaymentGateways');
if (!ExtensionHelper::getExtensionConfig($extensionName, 'enabled')) continue; // skip if not enabled
$payment = new \stdClass(); // 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
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name'); foreach ($extensions as $extension) {
$payment->image = asset('images/Extensions/PaymentGateways/' . strtolower($extensionName) . '_logo.png'); $extensionName = basename($extension);
$paymentGateways[] = $payment; 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([ return view('store.checkout')->with([
'product' => $shopProduct, 'product' => $shopProduct,
@ -64,6 +72,7 @@ class PaymentController extends Controller
'taxpercent' => $shopProduct->getTaxPercent(), 'taxpercent' => $shopProduct->getTaxPercent(),
'total' => $shopProduct->getTotalPrice(), 'total' => $shopProduct->getTotalPrice(),
'paymentGateways' => $paymentGateways, 'paymentGateways' => $paymentGateways,
'productIsFree' => $price <= 0,
]); ]);
} }

View file

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