From 608b071ee80c088633c2f10d8ea14e64ce98fc0b Mon Sep 17 00:00:00 2001 From: Graphictoria Date: Tue, 3 May 2022 22:42:02 -0400 Subject: [PATCH] Daily currency reward. --- web/app/Helpers/NumberHelper.php | 31 +++++++++++++++++++ web/app/Http/Kernel.php | 2 ++ web/app/Http/Middleware/DailyReward.php | 31 +++++++++++++++++++ web/app/Models/User.php | 1 + web/config/app.php | 2 +- .../2014_10_12_000000_create_users_table.php | 7 ++++- web/resources/views/layouts/nav.blade.php | 5 ++- 7 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 web/app/Helpers/NumberHelper.php create mode 100644 web/app/Http/Middleware/DailyReward.php diff --git a/web/app/Helpers/NumberHelper.php b/web/app/Helpers/NumberHelper.php new file mode 100644 index 0000000..c3fd147 --- /dev/null +++ b/web/app/Helpers/NumberHelper.php @@ -0,0 +1,31 @@ + '', // 1000^0 == 1 + pow(1000, 1) => 'K+', // Thousand + pow(1000, 2) => 'M+', // Million + pow(1000, 3) => 'B+', // Billion + pow(1000, 4) => 'T+', // Trillion + pow(1000, 5) => 'Qa+', // Quadrillion + pow(1000, 6) => 'Qi+', // Quintillion + ); + + foreach ($divisors as $divisor => $shorthand) { + if (abs($number) < ($divisor * 1000)) + break; + } + + return number_format($number / $divisor, 0) . $shorthand; + } +} diff --git a/web/app/Http/Kernel.php b/web/app/Http/Kernel.php index c3be254..e87cf66 100644 --- a/web/app/Http/Kernel.php +++ b/web/app/Http/Kernel.php @@ -36,6 +36,8 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + + \App\Http\Middleware\DailyReward::class ], 'api' => [ diff --git a/web/app/Http/Middleware/DailyReward.php b/web/app/Http/Middleware/DailyReward.php new file mode 100644 index 0000000..ff9e7e9 --- /dev/null +++ b/web/app/Http/Middleware/DailyReward.php @@ -0,0 +1,31 @@ +gte(Auth::user()->next_reward)) { + $user = Auth::user(); + + $user->tokens += 15; + $user->next_reward = Carbon::now()->addHours(24); + $user->save(); + } + + return $next($request); + } +} diff --git a/web/app/Models/User.php b/web/app/Models/User.php index 99ca8bc..282eb9b 100644 --- a/web/app/Models/User.php +++ b/web/app/Models/User.php @@ -40,5 +40,6 @@ class User extends Authenticatable */ protected $casts = [ 'email_verified_at' => 'datetime', + 'next_reward' => 'datetime', ]; } diff --git a/web/config/app.php b/web/config/app.php index 7c885c0..476cf8b 100644 --- a/web/config/app.php +++ b/web/config/app.php @@ -69,7 +69,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'America/New_York', /* |-------------------------------------------------------------------------- diff --git a/web/database/migrations/2014_10_12_000000_create_users_table.php b/web/database/migrations/2014_10_12_000000_create_users_table.php index eff9614..7005d3f 100644 --- a/web/database/migrations/2014_10_12_000000_create_users_table.php +++ b/web/database/migrations/2014_10_12_000000_create_users_table.php @@ -17,9 +17,14 @@ return new class extends Migration $table->id(); $table->string('username')->unique(); $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); + $table->dateTime('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); + $table->unsignedBigInteger('banId')->nullable(); + + $table->unsignedBigInteger('tokens')->default(0); + $table->dateTime('next_reward')->useCurrent(); + $table->timestamps(); }); } diff --git a/web/resources/views/layouts/nav.blade.php b/web/resources/views/layouts/nav.blade.php index 1742215..89372f6 100644 --- a/web/resources/views/layouts/nav.blade.php +++ b/web/resources/views/layouts/nav.blade.php @@ -64,9 +64,8 @@

- - - 123 + + {{ \App\Helpers\NumberHelper::Abbreviate(Auth::user()->tokens) }}