Make it possible to disable coupons

This commit is contained in:
Ferks-FK 2023-05-19 15:00:30 +00:00 committed by IceToast
parent 24ce267962
commit 4320fa9ef6
4 changed files with 63 additions and 53 deletions

View file

@ -9,7 +9,6 @@ use App\Models\PartnerDiscount;
use App\Models\Payment;
use App\Models\User;
use App\Models\ShopProduct;
use App\Models\Coupon;
use App\Traits\Coupon as CouponTrait;
use Exception;
use Illuminate\Contracts\Foundation\Application;
@ -20,10 +19,9 @@ use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Helpers\ExtensionHelper;
use App\Settings\CouponSettings;
use App\Settings\GeneralSettings;
use App\Settings\LocaleSettings;
use Carbon\Carbon;
use Illuminate\Support\Str;
class PaymentController extends Controller
{
@ -51,7 +49,7 @@ class PaymentController extends Controller
* @param ShopProduct $shopProduct
* @return Application|Factory|View
*/
public function checkOut(ShopProduct $shopProduct, GeneralSettings $general_settings)
public function checkOut(ShopProduct $shopProduct, GeneralSettings $general_settings, CouponSettings $coupon_settings)
{
$this->checkPermission(self::BUY_PERMISSION);
@ -87,7 +85,8 @@ class PaymentController extends Controller
'total' => $shopProduct->getTotalPrice(),
'paymentGateways' => $paymentGateways,
'productIsFree' => $price <= 0,
'credits_display_name' => $general_settings->credits_display_name
'credits_display_name' => $general_settings->credits_display_name,
'isCouponsEnabled' => $coupon_settings->enabled,
]);
}

View file

@ -6,9 +6,10 @@ use Spatie\LaravelSettings\Settings;
class CouponSettings extends Settings
{
public ?int $max_uses_per_user;
public ?bool $delete_coupon_on_expires;
public ?bool $delete_coupon_on_uses_reached;
public bool $enabled;
public bool $delete_coupon_on_expires;
public bool $delete_coupon_on_uses_reached;
public ?int $max_uses_per_user;
public static function group(): string
{
@ -22,9 +23,10 @@ class CouponSettings extends Settings
public static function getValidations()
{
return [
'max_uses_per_user' => 'required|integer',
'delete_coupon_on_expires' => 'required|boolean',
'delete_coupon_on_uses_reached' => 'required|boolean',
'enabled' => "nullable|boolean",
'delete_coupon_on_expires' => 'nullable|boolean',
'delete_coupon_on_uses_reached' => 'nullable|boolean',
'max_uses_per_user' => 'nullable|integer',
];
}
@ -37,10 +39,10 @@ class CouponSettings extends Settings
{
return [
"category_icon" => "fas fa-ticket-alt",
'max_uses_per_user' => [
'label' => 'Max Uses Per User',
'type' => 'number',
'description' => 'Maximum number of uses that a user can make of the same coupon.'
'enabled' => [
'label' => 'Enable Coupons',
'type' => 'boolean',
'description' => 'Enables coupons to be used in the store.'
],
'delete_coupon_on_expires' => [
'label' => 'Auto Delete Expired Coupons',
@ -51,7 +53,12 @@ class CouponSettings extends Settings
'label' => 'Delete Coupon When Max Uses Reached',
'type' => 'boolean',
'description' => 'Delete a coupon as soon as its maximum usage is reached.'
]
],
'max_uses_per_user' => [
'label' => 'Max Uses Per User',
'type' => 'number',
'description' => 'Maximum number of uses that a user can make of the same coupon.'
],
];
}
}

View file

@ -6,6 +6,7 @@ return new class extends SettingsMigration
{
public function up(): void
{
$this->migrator->add('coupon.enabled', true);
$this->migrator->add('coupon.max_uses_per_user', 1);
$this->migrator->add('coupon.delete_coupon_on_expires', false);
$this->migrator->add('coupon.delete_coupon_on_uses_reached', false);
@ -13,6 +14,7 @@ return new class extends SettingsMigration
public function down(): void
{
$this->migrator->delete('coupon.enabled');
$this->migrator->delete('coupon.max_uses_per_user');
$this->migrator->delete('coupon.delete_coupon_on_expires');
$this->migrator->delete('coupon.delete_coupon_on_uses_reached');

View file

@ -79,45 +79,47 @@
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<h4 class="mb-0">
Coupon Code
</h4>
</div>
<div class="card-body">
<div class="d-flex">
<input
type="text"
id="coupon_code"
name="coupon_code"
value="{{ old('coupon_code') }}"
:value="coupon_code"
class="form-control @error('coupon_code') is_invalid @enderror"
placeholder="SUMMER"
x-on:change.debounce="setCouponCode($event)"
x-model="coupon_code"
/>
<button
type="button"
id="send_coupon_code"
class="btn btn-success ml-3"
:disabled="!coupon_code.length"
:class="!coupon_code.length ? 'disabled' : ''"
:value="coupon_code"
>
{{ __('Submit') }}
</button>
@if ($isCouponsEnabled)
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<h4 class="mb-0">
Coupon Code
</h4>
</div>
@error('coupon_code')
<div class="text-danger">
{{ $message }}
<div class="card-body">
<div class="d-flex">
<input
type="text"
id="coupon_code"
name="coupon_code"
value="{{ old('coupon_code') }}"
:value="coupon_code"
class="form-control @error('coupon_code') is_invalid @enderror"
placeholder="SUMMER"
x-on:change.debounce="setCouponCode($event)"
x-model="coupon_code"
/>
<button
type="button"
id="send_coupon_code"
class="btn btn-success ml-3"
:disabled="!coupon_code.length"
:class="!coupon_code.length ? 'disabled' : ''"
:value="coupon_code"
>
{{ __('Submit') }}
</button>
</div>
@enderror
</div>
</div>
</div>
@error('coupon_code')
<div class="text-danger">
{{ $message }}
</div>
@enderror
</div>
</div>
</div>
@endif
@endif
<div class="col-xl-3">
<div class="card">