diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index 66ca7f168..10ff4dd94 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 @@ -91,26 +92,14 @@ 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() + 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); @@ -142,25 +131,13 @@ 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 */ - 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 +152,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..b8bca7c92 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 @@ -58,21 +59,12 @@ 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() + 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); @@ -99,25 +91,15 @@ 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 */ - 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; + } +}