Daily currency reward.

This commit is contained in:
Graphictoria 2022-05-03 22:42:02 -04:00
parent 45f6074c9c
commit 608b071ee8
7 changed files with 74 additions and 5 deletions

View File

@ -0,0 +1,31 @@
<?php
/*
Graphictoria 2022
Number helper.
*/
namespace App\Helpers;
class NumberHelper
{
public static function Abbreviate($number)
{
$divisors = array(
pow(1000, 0) => '', // 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;
}
}

View File

@ -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' => [

View File

@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class DailyReward
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (Auth::check() && Carbon::now()->gte(Auth::user()->next_reward)) {
$user = Auth::user();
$user->tokens += 15;
$user->next_reward = Carbon::now()->addHours(24);
$user->save();
}
return $next($request);
}
}

View File

@ -40,5 +40,6 @@ class User extends Authenticatable
*/
protected $casts = [
'email_verified_at' => 'datetime',
'next_reward' => 'datetime',
];
}

View File

@ -69,7 +69,7 @@ return [
|
*/
'timezone' => 'UTC',
'timezone' => 'America/New_York',
/*
|--------------------------------------------------------------------------

View File

@ -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();
});
}

View File

@ -64,9 +64,8 @@
<div id="graphictoria-nav-searchbar" class="graphictoria-search"></div>
<div class="flex">
<p class="my-auto me-2 text-muted" style="color:#e59800!important;font-weight:bold">
<span data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tokens are Graphictoria's currency.">
<img src="{{ asset('images/symbols/token.svg') }}" height="20" width="20" class="img-fluid me-1" style="margin-top:-1px" />
123
<span data-bs-toggle="tooltip" data-bs-placement="bottom" title="You have {{ number_format(Auth::user()->tokens) }} tokens. Your next reward is in {{ Auth::user()->next_reward->diffForHumans(['syntax' => Carbon\CarbonInterface::DIFF_ABSOLUTE]) }}.">
<img src="{{ asset('images/symbols/token.svg') }}" height="20" width="20" class="img-fluid me-1" style="margin-top:-1px" />{{ \App\Helpers\NumberHelper::Abbreviate(Auth::user()->tokens) }}
</span>
</p>
<div class="dropdown">