From 3bb39a02280493222d36b2d531b932d974b506fd Mon Sep 17 00:00:00 2001 From: sanjeev Date: Wed, 20 Jul 2022 12:22:35 +0530 Subject: [PATCH 1/2] validation for percentage amt for cart and catalog rule & handle validate request using FormRequest --- .../Http/Controllers/CartRuleController.php | 34 ++---------- .../src/Http/Requests/CartRuleRequest.php | 52 +++++++++++++++++++ .../Controllers/CatalogRuleController.php | 29 ++--------- .../src/Http/Requests/CatalogRuleRequest.php | 44 ++++++++++++++++ 4 files changed, 106 insertions(+), 53 deletions(-) create mode 100644 packages/Webkul/CartRule/src/Http/Requests/CartRuleRequest.php create mode 100644 packages/Webkul/CatalogRule/src/Http/Requests/CatalogRuleRequest.php diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index 66ca7f168..fc65b7a46 100644 --- a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; use Illuminate\View\View; use Webkul\Admin\DataGrids\CartRuleDataGrid; +use Webkul\CartRule\Http\Requests\CartRuleRequest; use Webkul\CartRule\Repositories\CartRuleRepository; class CartRuleController extends Controller @@ -94,23 +95,10 @@ class CartRuleController extends Controller * * @return \Illuminate\Http\Response */ - public function store() + public function store(CartRuleRequest $cartRuleRequest) { try { - $this->validate(request(), [ - 'name' => 'required', - 'channels' => 'required|array|min:1', - 'customer_groups' => 'required|array|min:1', - 'coupon_type' => 'required', - 'use_auto_generation' => 'required_if:coupon_type,==,1', - 'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code', - 'starts_from' => 'nullable|date', - 'ends_till' => 'nullable|date|after_or_equal:starts_from', - 'action_type' => 'required', - 'discount_amount' => 'required|numeric', - ]); - - $data = request()->all(); + $data = $cartRuleRequest->all(); $this->cartRuleRepository->create($data); @@ -146,21 +134,9 @@ class CartRuleController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(CartRuleRequest $cartRuleRequest, $id) { try { - $this->validate(request(), [ - 'name' => 'required', - 'channels' => 'required|array|min:1', - 'customer_groups' => 'required|array|min:1', - 'coupon_type' => 'required', - 'use_auto_generation' => 'required_if:coupon_type,==,1', - 'starts_from' => 'nullable|date', - 'ends_till' => 'nullable|date|after_or_equal:starts_from', - 'action_type' => 'required', - 'discount_amount' => 'required|numeric', - ]); - $cartRule = $this->cartRuleRepository->findOrFail($id); if ($cartRule->coupon_type) { @@ -175,7 +151,7 @@ class CartRuleController extends Controller } } - $cartRule = $this->cartRuleRepository->update(request()->all(), $id); + $cartRule = $this->cartRuleRepository->update($cartRuleRequest->all(), $id); session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Cart Rule'])); diff --git a/packages/Webkul/CartRule/src/Http/Requests/CartRuleRequest.php b/packages/Webkul/CartRule/src/Http/Requests/CartRuleRequest.php new file mode 100644 index 000000000..d696a252a --- /dev/null +++ b/packages/Webkul/CartRule/src/Http/Requests/CartRuleRequest.php @@ -0,0 +1,52 @@ + 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'coupon_type' => 'required', + 'use_auto_generation' => 'required_if:coupon_type,==,1', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric', + ]; + + if (! request('id')) { + $rules = array_merge($rules, [ + 'coupon_code' => 'required_if:use_auto_generation,==,0|unique:cart_rule_coupons,code', + ]); + } + + if (request()->has('action_type') && request()->action_type == 'by_percent') { + $rules = array_merge($rules, [ + 'discount_amount' => 'required|numeric|min:0|max:100', + ]); + } + + return $rules; + } +} diff --git a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php index 1516f2741..7054c1535 100644 --- a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php +++ b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php @@ -5,6 +5,7 @@ namespace Webkul\CatalogRule\Http\Controllers; use Illuminate\Http\Request; use Webkul\Admin\DataGrids\CatalogRuleDataGrid; use Webkul\CatalogRule\Helpers\CatalogRuleIndex; +use Webkul\CatalogRule\Http\Requests\CatalogRuleRequest; use Webkul\CatalogRule\Repositories\CatalogRuleRepository; class CatalogRuleController extends Controller @@ -60,19 +61,9 @@ class CatalogRuleController extends Controller * * @return \Illuminate\Http\Response */ - public function store() + public function store(CatalogRuleRequest $catalogRuleRequest) { - $this->validate(request(), [ - 'name' => 'required', - 'channels' => 'required|array|min:1', - 'customer_groups' => 'required|array|min:1', - 'starts_from' => 'nullable|date', - 'ends_till' => 'nullable|date|after_or_equal:starts_from', - 'action_type' => 'required', - 'discount_amount' => 'required|numeric', - ]); - - $data = request()->all(); + $data = $catalogRuleRequest->all(); $this->catalogRuleRepository->create($data); @@ -103,21 +94,11 @@ class CatalogRuleController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(CatalogRuleRequest $catalogRuleRequest, $id) { - $this->validate(request(), [ - 'name' => 'required', - 'channels' => 'required|array|min:1', - 'customer_groups' => 'required|array|min:1', - 'starts_from' => 'nullable|date', - 'ends_till' => 'nullable|date|after_or_equal:starts_from', - 'action_type' => 'required', - 'discount_amount' => 'required|numeric', - ]); - $this->catalogRuleRepository->findOrFail($id); - $this->catalogRuleRepository->update(request()->all(), $id); + $this->catalogRuleRepository->update($catalogRuleRequest->all(), $id); $this->catalogRuleIndexHelper->reindexComplete(); diff --git a/packages/Webkul/CatalogRule/src/Http/Requests/CatalogRuleRequest.php b/packages/Webkul/CatalogRule/src/Http/Requests/CatalogRuleRequest.php new file mode 100644 index 000000000..638da5320 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Http/Requests/CatalogRuleRequest.php @@ -0,0 +1,44 @@ + 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric', + ]; + + if (request()->has('action_type') && request()->action_type == 'by_percent') { + $rules = array_merge($rules, [ + 'discount_amount' => 'required|numeric|min:0|max:100', + ]); + } + + return $rules; + } +} From 13ddda76748e347c94846c40bdee7ebe77eaf788 Mon Sep 17 00:00:00 2001 From: sanjeev Date: Wed, 20 Jul 2022 14:06:46 +0530 Subject: [PATCH 2/2] Added PHPDOc --- .../CartRule/src/Http/Controllers/CartRuleController.php | 5 +++-- .../src/Http/Controllers/CatalogRuleController.php | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index fc65b7a46..10ff4dd94 100644 --- a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -92,7 +92,8 @@ class CartRuleController extends Controller /** * Store a newly created resource in storage. - * + * + * @param \Webkul\CartRule\Http\Requests\CartRuleRequest $cartRuleRequest * @return \Illuminate\Http\Response */ public function store(CartRuleRequest $cartRuleRequest) @@ -130,7 +131,7 @@ class CartRuleController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Webkul\CartRule\Http\Requests\CartRuleRequest $cartRuleRequest * @param int $id * @return \Illuminate\Http\Response */ diff --git a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php index 7054c1535..b8bca7c92 100644 --- a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php +++ b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php @@ -59,6 +59,7 @@ class CatalogRuleController extends Controller /** * Store a newly created resource in storage. * + * @param \Webkul\CatalogRule\Http\Requests\CatalogRuleRequest $catalogRuleRequest * @return \Illuminate\Http\Response */ public function store(CatalogRuleRequest $catalogRuleRequest) @@ -90,7 +91,7 @@ class CatalogRuleController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Webkul\CatalogRule\Http\Requests\CatalogRuleRequest $catalogRuleRequest * @param int $id * @return \Illuminate\Http\Response */