From 226c75ce375e7bea460137a82519dc92d24ce4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Fri, 9 Feb 2024 11:37:16 +0300 Subject: [PATCH] close #3121 Fixed: --- app/Http/Requests/Setting/Category.php | 2 +- app/Http/Requests/Setting/Setting.php | 4 +++ app/Providers/Validation.php | 36 ++++++++++++++++++++++++++ resources/lang/en-GB/validation.php | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/Setting/Category.php b/app/Http/Requests/Setting/Category.php index 2af74d353ac..cb7c7c89c2a 100644 --- a/app/Http/Requests/Setting/Category.php +++ b/app/Http/Requests/Setting/Category.php @@ -18,7 +18,7 @@ public function rules() return [ 'name' => 'required|string', 'type' => 'required|string|in:' . $types->implode(','), - 'color' => 'required|string', + 'color' => 'required|string|colour', ]; } } diff --git a/app/Http/Requests/Setting/Setting.php b/app/Http/Requests/Setting/Setting.php index a6457c0911c..a433f62ba5d 100644 --- a/app/Http/Requests/Setting/Setting.php +++ b/app/Http/Requests/Setting/Setting.php @@ -49,6 +49,10 @@ public function rules() $rules['number_next'] = 'required|integer'; } + if ($this->request->has('color')) { + $rules['color'] = 'required|string|colour'; + } + return $rules; } diff --git a/app/Providers/Validation.php b/app/Providers/Validation.php index 4bfdf0c4a98..bb7baa9df01 100644 --- a/app/Providers/Validation.php +++ b/app/Providers/Validation.php @@ -4,6 +4,7 @@ use App\Models\Setting\Currency; use Illuminate\Support\ServiceProvider as Provider; +use Illuminate\Support\Str; use Validator; class Validation extends Provider @@ -68,6 +69,41 @@ public function boot() }, trans('validation.custom.invalid_extension') ); + + Validator::extend('colour', function ($attribute, $value, $parameters, $validator) { + $status = false; + + $colors = ['gray', 'red', 'yellow', 'green', 'blue', 'indigo', 'purple', 'pink']; + $variants = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900]; + + foreach ($colors as $color) { + if (! Str::contains($value, $color)) { + continue; + } + + foreach ($variants as $variant) { + $name = $color . '-' . $variant; + + if (Str::contains($value, $name)) { + $status = true; + + break; + } + } + + if ($status) { + break; + } + } + + if (! $status && Str::contains($value, '#')) { + $status = true; + } + + return $status; + }, + trans('validation.custom.invalid_colour') + ); } /** diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index 1f15c2df769..e2b5b756b41 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -156,6 +156,7 @@ 'invalid_amount' => 'The amount :attribute is invalid.', 'invalid_extension' => 'The file extension is invalid.', 'invalid_dimension' => 'The :attribute dimensions must be max :width x :height px.', + 'invalid_colour' => 'The :attribute colour is invalid.', ], /*