Make it possible to disable coupons
This commit is contained in:
parent
24ce267962
commit
4320fa9ef6
4 changed files with 63 additions and 53 deletions
|
@ -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,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -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.'
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Add table
Reference in a new issue