Pārlūkot izejas kodu

Make it possible to disable coupons

Ferks-FK 2 gadi atpakaļ
vecāks
revīzija
4320fa9ef6

+ 4 - 5
app/Http/Controllers/Admin/PaymentController.php

@@ -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,
         ]);
         ]);
     }
     }
 
 

+ 18 - 11
app/Settings/CouponSettings.php

@@ -6,9 +6,10 @@ use Spatie\LaravelSettings\Settings;
 
 
 class CouponSettings extends 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
     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',
-            '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 [
         return [
             "category_icon" => "fas fa-ticket-alt",
             "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' => [
             '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.'
+            ],
         ];
         ];
     }
     }
 }
 }

+ 2 - 0
database/settings/2023_05_12_170041_create_coupon_settings.php

@@ -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');

+ 39 - 37
themes/default/views/store/checkout.blade.php

@@ -79,45 +79,47 @@
                                 </div>
                                 </div>
                             </div>
                             </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>
                               </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>
                                 </div>
-                              @enderror
-														</div>
-													</div>
-												</div>
+                                @error('coupon_code')
+                                  <div class="text-danger">
+                                    {{ $message }}
+                                  </div>
+                                @enderror
+                              </div>
+                            </div>
+                          </div>
+                        @endif
                     @endif
                     @endif
                     <div class="col-xl-3">
                     <div class="col-xl-3">
                         <div class="card">
                         <div class="card">