feat: Add user level and experience attributes, and implement reward, task, and quest models with corresponding controllers and migrations

This commit is contained in:
Jonas Pfalzgraf 2024-12-16 09:00:57 +01:00
parent aa50740dcb
commit fd20278948
17 changed files with 963 additions and 112 deletions

View file

@ -0,0 +1,31 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Quest extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'task_id',
'title',
'category',
'due_date',
'xp_reward',
'is_completed'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function task()
{
return $this->belongsTo(Task::class);
}
}

View file

@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Reward extends Model
{
use HasFactory;
protected $fillable = [
'name',
'description',
'unlocked_at_level'
];
public function users()
{
return $this->belongsToMany(User::class, 'reward_user');
}
}

View file

@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'title',
'description',
'category',
'priority',
'due_date'
];
public function user()
{
return $this->belongsTo(User::class);
}
}

View file

@ -20,6 +20,8 @@ class User extends Authenticatable
'name',
'email',
'password',
'level',
'xp'
];
/**