From f0a31fd4e267a999f3ea478473cd5c8e193fdfd6 Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Wed, 28 Jul 2021 18:22:12 +0200 Subject: [PATCH] Add support to add time for voucher expires_at --- .../Controllers/Admin/VoucherController.php | 11 +- .../Controllers/Api/VoucherController.php | 9 +- app/Providers/AppServiceProvider.php | 23 ++ .../views/admin/vouchers/create.blade.php | 289 +++++++++-------- resources/views/admin/vouchers/edit.blade.php | 292 +++++++++--------- 5 files changed, 310 insertions(+), 314 deletions(-) diff --git a/app/Http/Controllers/Admin/VoucherController.php b/app/Http/Controllers/Admin/VoucherController.php index e1a71580..b0955d3a 100644 --- a/app/Http/Controllers/Admin/VoucherController.php +++ b/app/Http/Controllers/Admin/VoucherController.php @@ -48,7 +48,7 @@ class VoucherController extends Controller 'code' => 'required|string|alpha_dash|max:36|min:4', 'uses' => 'required|numeric|max:2147483647|min:1', 'credits' => 'required|numeric|between:0,99999999', - 'expires_at' => ['nullable','date_format:d-m-Y','after:today',"before:10 years"], + 'expires_at' => 'nullable|multiple_date_format:d-m-Y H:i:s,d-m-Y|after:now|before:10 years', ]); Voucher::create($request->except('_token')); @@ -75,7 +75,7 @@ class VoucherController extends Controller */ public function edit(Voucher $voucher) { - return view('admin.vouchers.edit' , [ + return view('admin.vouchers.edit', [ 'voucher' => $voucher ]); } @@ -94,7 +94,7 @@ class VoucherController extends Controller 'code' => 'required|string|alpha_dash|max:36|min:4', 'uses' => 'required|numeric|max:2147483647|min:1', 'credits' => 'required|numeric|between:0,99999999', - 'expires_at' => ['nullable','date_format:d-m-Y','after:today',"before:10 years"], + 'expires_at' => 'nullable|multiple_date_format:d-m-Y H:i:s,d-m-Y|after:now|before:10 years', ]); $voucher->update($request->except('_token')); @@ -127,7 +127,7 @@ class VoucherController extends Controller ]); #get voucher by code - $voucher = Voucher::where('code' , '=' , $request->input('code'))->firstOrFail(); + $voucher = Voucher::where('code', '=', $request->input('code'))->firstOrFail(); #extra validations if ($voucher->getStatus() == 'USES_LIMIT_REACHED') throw ValidationException::withMessages([ @@ -138,7 +138,7 @@ class VoucherController extends Controller 'code' => 'This voucher has expired' ]); - if (!$request->user()->vouchers()->where('id' , '=' , $voucher->id)->get()->isEmpty()) throw ValidationException::withMessages([ + if (!$request->user()->vouchers()->where('id', '=', $voucher->id)->get()->isEmpty()) throw ValidationException::withMessages([ 'code' => 'You already redeemed this voucher code' ]); @@ -191,5 +191,4 @@ class VoucherController extends Controller ->rawColumns(['actions', 'code', 'status']) ->make(); } - } diff --git a/app/Http/Controllers/Api/VoucherController.php b/app/Http/Controllers/Api/VoucherController.php index 9b70277f..9b9e06e8 100644 --- a/app/Http/Controllers/Api/VoucherController.php +++ b/app/Http/Controllers/Api/VoucherController.php @@ -44,7 +44,7 @@ class VoucherController extends Controller 'code' => 'required|string|alpha_dash|max:36|min:4', 'uses' => 'required|numeric|max:2147483647|min:1', 'credits' => 'required|numeric|between:0,99999999', - 'expires_at' => 'nullable|date_format:d-m-Y|after:today|before:10 years' + 'expires_at' => 'nullable|multiple_date_format:d-m-Y H:i:s,d-m-Y|after:now|before:10 years' ]); return Voucher::create($request->all()); @@ -88,7 +88,7 @@ class VoucherController extends Controller 'code' => 'required|string|alpha_dash|max:36|min:4', 'uses' => 'required|numeric|max:2147483647|min:1', 'credits' => 'required|numeric|between:0,99999999', - 'expires_at' => 'nullable|date_format:d-m-Y|after:today|before:10 years' + 'expires_at' => 'nullable|multiple_date_format:d-m-Y H:i:s,d-m-Y|after:now|before:10 years' ]); $voucher->update($request->all()); @@ -116,7 +116,8 @@ class VoucherController extends Controller * @param Voucher $voucher * @return LengthAwarePaginator */ - public function users(Request $request, Voucher $voucher){ + public function users(Request $request, Voucher $voucher) + { $request->validate([ 'include' => [ 'nullable', @@ -125,7 +126,7 @@ class VoucherController extends Controller ] ]); - if($request->input('include') == 'discorduser'){ + if ($request->input('include') == 'discorduser') { return $voucher->users()->with('discordUser')->paginate($request->query('per_page') ?? 50); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index c220bc7f..84f68299 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,6 +4,7 @@ namespace App\Providers; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\Validator; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -27,5 +28,27 @@ class AppServiceProvider extends ServiceProvider { Paginator::useBootstrap(); Schema::defaultStringLength(191); + + Validator::extend('multiple_date_format', function ($attribute, $value, $parameters, $validator) { + + $ok = true; + + $result = []; + + // iterate through all formats + foreach ($parameters as $parameter) { + + //validate with laravels standard date format validation + $result[] = $validator->validateDateFormat($attribute, $value, [$parameter]); + } + + //if none of result array is true. it sets ok to false + if (!in_array(true, $result)) { + $ok = false; + $validator->setCustomMessages(['multiple_date_format' => 'The format must be one of ' . join(",", $parameters)]); + } + + return $ok; + }); } } diff --git a/resources/views/admin/vouchers/create.blade.php b/resources/views/admin/vouchers/create.blade.php index 1aca487d..430c62b1 100644 --- a/resources/views/admin/vouchers/create.blade.php +++ b/resources/views/admin/vouchers/create.blade.php @@ -1,181 +1,170 @@ @extends('layouts.main') @section('content') - -
-
-
-
-

Vouchers

-
-
- -
+ +
+
+
+
+

Vouchers

+
+
+
-
- +
+
+ - -
-
+ +
+
-
-
-
-
-
- Voucher details -
-
-
-
- @csrf +
+
+
+
+
+ Voucher details +
+
+
+ + @csrf -
- - - @error('memo') -
- {{$message}} -
- @enderror +
+ + + @error('memo') +
+ {{$message}}
+ @enderror +
-
- - - @error('credits') -
- {{$message}} -
- @enderror +
+ + + @error('credits') +
+ {{$message}}
+ @enderror +
-
- -
- -
- -
+
+ +
+ +
+
- @error('code') -
- {{$message}} -
- @enderror
- -
- -
- -
- -
-
- @error('uses') -
- {{$message}} -
- @enderror + @error('code') +
+ {{$message}}
+ @enderror +
-
- -
- -
-
-
+
+ +
+ +
+
- @error('expires_at') -
- {{$message}} -
- @enderror
+ @error('uses') +
+ {{$message}} +
+ @enderror +
-
- +
+ +
+ +
+
+
- -
+ @error('expires_at') +
+ {{$message}} +
+ @enderror +
+ +
+ +
+
- - -
-
- + + + +
+
+ - + return result; + } + -@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/vouchers/edit.blade.php b/resources/views/admin/vouchers/edit.blade.php index 467a30de..2f6364fd 100644 --- a/resources/views/admin/vouchers/edit.blade.php +++ b/resources/views/admin/vouchers/edit.blade.php @@ -1,186 +1,170 @@ @extends('layouts.main') @section('content') - -
-
-
-
-

Vouchers

-
-
- -
+ +
+
+
+
+

Vouchers

+
+
+
-
- +
+
+ - -
-
+ +
+
-
-
-
-
-
- Voucher details -
-
-
-
- @csrf - @method('PATCH') +
+
+
+
+
+ Voucher details +
+
+
+ + @csrf + @method('PATCH') -
- - - @error('memo') -
- {{$message}} -
- @enderror +
+ + + @error('memo') +
+ {{$message}}
+ @enderror +
-
- - - @error('credits') -
- {{$message}} -
- @enderror +
+ + + @error('credits') +
+ {{$message}}
+ @enderror +
-
- -
- -
- -
+
+ +
+ +
+
- @error('code') -
- {{$message}} -
- @enderror
- -
- -
- -
- -
-
- @error('uses') -
- {{$message}} -
- @enderror + @error('code') +
+ {{$message}}
+ @enderror +
-
- -
- -
-
-
+
+ +
+ +
+
- @error('expires_at') -
- {{$message}} +
+ @error('uses') +
+ {{$message}} +
+ @enderror +
+ +
+ +
+ +
+
- @enderror
+ @error('expires_at') +
+ {{$message}} +
+ @enderror +
-
- -
- -
+
+ +
+
-
-
- + +
+
+ - + return result; + } + -@endsection +@endsection \ No newline at end of file