Make it possible to disable coupons
This commit is contained in:
parent
24ce267962
commit
4320fa9ef6
|
@ -9,7 +9,6 @@ use App\Models\PartnerDiscount;
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\ShopProduct;
|
use App\Models\ShopProduct;
|
||||||
use App\Models\Coupon;
|
|
||||||
use App\Traits\Coupon as CouponTrait;
|
use App\Traits\Coupon as CouponTrait;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
|
@ -20,10 +19,9 @@ use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use App\Helpers\ExtensionHelper;
|
use App\Helpers\ExtensionHelper;
|
||||||
|
use App\Settings\CouponSettings;
|
||||||
use App\Settings\GeneralSettings;
|
use App\Settings\GeneralSettings;
|
||||||
use App\Settings\LocaleSettings;
|
use App\Settings\LocaleSettings;
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class PaymentController extends Controller
|
class PaymentController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -51,7 +49,7 @@ class PaymentController extends Controller
|
||||||
* @param ShopProduct $shopProduct
|
* @param ShopProduct $shopProduct
|
||||||
* @return Application|Factory|View
|
* @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);
|
$this->checkPermission(self::BUY_PERMISSION);
|
||||||
|
|
||||||
|
@ -87,7 +85,8 @@ class PaymentController extends Controller
|
||||||
'total' => $shopProduct->getTotalPrice(),
|
'total' => $shopProduct->getTotalPrice(),
|
||||||
'paymentGateways' => $paymentGateways,
|
'paymentGateways' => $paymentGateways,
|
||||||
'productIsFree' => $price <= 0,
|
'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
|
class CouponSettings extends Settings
|
||||||
{
|
{
|
||||||
public ?int $max_uses_per_user;
|
public bool $enabled;
|
||||||
public ?bool $delete_coupon_on_expires;
|
public bool $delete_coupon_on_expires;
|
||||||
public ?bool $delete_coupon_on_uses_reached;
|
public bool $delete_coupon_on_uses_reached;
|
||||||
|
public ?int $max_uses_per_user;
|
||||||
|
|
||||||
public static function group(): string
|
public static function group(): string
|
||||||
{
|
{
|
||||||
|
@ -22,9 +23,10 @@ class CouponSettings extends Settings
|
||||||
public static function getValidations()
|
public static function getValidations()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'max_uses_per_user' => 'required|integer',
|
'enabled' => "nullable|boolean",
|
||||||
'delete_coupon_on_expires' => 'required|boolean',
|
'delete_coupon_on_expires' => 'nullable|boolean',
|
||||||
'delete_coupon_on_uses_reached' => 'required|boolean',
|
'delete_coupon_on_uses_reached' => 'nullable|boolean',
|
||||||
|
'max_uses_per_user' => 'nullable|integer',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,10 +39,10 @@ class CouponSettings extends Settings
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
"category_icon" => "fas fa-ticket-alt",
|
"category_icon" => "fas fa-ticket-alt",
|
||||||
'max_uses_per_user' => [
|
'enabled' => [
|
||||||
'label' => 'Max Uses Per User',
|
'label' => 'Enable Coupons',
|
||||||
'type' => 'number',
|
'type' => 'boolean',
|
||||||
'description' => 'Maximum number of uses that a user can make of the same coupon.'
|
'description' => 'Enables coupons to be used in the store.'
|
||||||
],
|
],
|
||||||
'delete_coupon_on_expires' => [
|
'delete_coupon_on_expires' => [
|
||||||
'label' => 'Auto Delete Expired Coupons',
|
'label' => 'Auto Delete Expired Coupons',
|
||||||
|
@ -51,7 +53,12 @@ class CouponSettings extends Settings
|
||||||
'label' => 'Delete Coupon When Max Uses Reached',
|
'label' => 'Delete Coupon When Max Uses Reached',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Delete a coupon as soon as its maximum usage is reached.'
|
'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
|
public function up(): void
|
||||||
{
|
{
|
||||||
|
$this->migrator->add('coupon.enabled', true);
|
||||||
$this->migrator->add('coupon.max_uses_per_user', 1);
|
$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_expires', false);
|
||||||
$this->migrator->add('coupon.delete_coupon_on_uses_reached', false);
|
$this->migrator->add('coupon.delete_coupon_on_uses_reached', false);
|
||||||
|
@ -13,6 +14,7 @@ return new class extends SettingsMigration
|
||||||
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
|
$this->migrator->delete('coupon.enabled');
|
||||||
$this->migrator->delete('coupon.max_uses_per_user');
|
$this->migrator->delete('coupon.max_uses_per_user');
|
||||||
$this->migrator->delete('coupon.delete_coupon_on_expires');
|
$this->migrator->delete('coupon.delete_coupon_on_expires');
|
||||||
$this->migrator->delete('coupon.delete_coupon_on_uses_reached');
|
$this->migrator->delete('coupon.delete_coupon_on_uses_reached');
|
||||||
|
|
|
@ -79,45 +79,47 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-4">
|
@if ($isCouponsEnabled)
|
||||||
<div class="card">
|
<div class="col-xl-4">
|
||||||
<div class="card-header">
|
<div class="card">
|
||||||
<h4 class="mb-0">
|
<div class="card-header">
|
||||||
Coupon Code
|
<h4 class="mb-0">
|
||||||
</h4>
|
Coupon Code
|
||||||
</div>
|
</h4>
|
||||||
<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>
|
</div>
|
||||||
@error('coupon_code')
|
<div class="card-body">
|
||||||
<div class="text-danger">
|
<div class="d-flex">
|
||||||
{{ $message }}
|
<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>
|
</div>
|
||||||
@enderror
|
@error('coupon_code')
|
||||||
</div>
|
<div class="text-danger">
|
||||||
</div>
|
{{ $message }}
|
||||||
</div>
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
@endif
|
@endif
|
||||||
<div class="col-xl-3">
|
<div class="col-xl-3">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
Loading…
Reference in a new issue