feat: get current level
This commit is contained in:
parent
45f5413c52
commit
c3246a0ec1
|
|
@ -59,6 +59,9 @@ class AuthController extends Controller
|
|||
$this->resolveDeviceName($data)
|
||||
)->plainTextToken;
|
||||
|
||||
$user->updateLevel();
|
||||
$user->load('currentLevel');
|
||||
|
||||
return response()->json([
|
||||
'token' => $token,
|
||||
'token_type' => 'Bearer',
|
||||
|
|
@ -68,7 +71,11 @@ class AuthController extends Controller
|
|||
|
||||
public function me(Request $request): JsonResponse
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = $request->user();
|
||||
$user->updateLevel();
|
||||
$user->load('currentLevel');
|
||||
|
||||
return response()->json($user);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ namespace App\Models;
|
|||
use App\Enums\UserRole;
|
||||
use Filament\Models\Contracts\HasName;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
|
@ -45,7 +46,6 @@ class User extends Authenticatable implements HasName, FilamentUser
|
|||
'password',
|
||||
'role',
|
||||
'xp',
|
||||
'level',
|
||||
'avatar_uri',
|
||||
'participations',
|
||||
'victories',
|
||||
|
|
@ -82,6 +82,23 @@ class User extends Authenticatable implements HasName, FilamentUser
|
|||
->withPivot(['current_step_number', 'status'])
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function currentLevel(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Level::class, 'level_id');
|
||||
}
|
||||
|
||||
public function updateLevel(): void
|
||||
{
|
||||
$level = Level::where('xpThreshold', '<=', $this->xp)
|
||||
->orderBy('xpThreshold', 'desc')
|
||||
->first();
|
||||
|
||||
if ($level && $this->level_id !== $level->id) {
|
||||
$this->level_id = $level->id;
|
||||
$this->save();
|
||||
}
|
||||
}
|
||||
public function getFilamentName(): string
|
||||
{
|
||||
return $this->username;
|
||||
|
|
|
|||
Loading…
Reference in New Issue