participants as $participant) { if ($participant->user_id == $this->id) { return true; } } return false; } public function isRunner(Tournament $tournament) { foreach ($tournament->participants as $participant) { if ($participant->user_id == $this->id) { return in_array('runner', $participant->roles); } } return false; } public function isTournamentAdmin(Tournament $tournament) { foreach ($tournament->participants as $participant) { if ($participant->user_id == $this->id) { return in_array('admin', $participant->roles); } } return false; } public function participation() { return $this->hasMany(Participant::class); } public function results() { return $this->hasMany(Result::class); } public function rounds() { return $this->belongsToMany(Round::class, 'results'); } public function tournaments() { return $this->belongsToMany(Tournament::class, 'participants'); } public function round_first() { return $this->rounds() ->whereNot('locked') ->wherePivot('placement', 1); } public function round_second() { return $this->rounds() ->whereNot('locked') ->wherePivot('placement', 2); } public function round_third() { return $this->rounds() ->whereNot('locked') ->wherePivot('placement', 3); } public function tournament_first() { return $this->tournaments() ->whereNot('locked') ->wherePivot('placement', 1); } public function tournament_second() { return $this->tournaments() ->whereNot('locked') ->wherePivot('placement', 2); } public function tournament_third() { return $this->tournaments() ->whereNot('locked') ->wherePivot('placement', 3); } /** * The attributes that are mass assignable. * * @var string[] */ protected $fillable = [ 'id', 'username', 'discriminator', 'email', 'avatar', 'verified', 'locale', 'mfa_enabled', 'refresh_token', 'role', ]; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ 'email', 'mfa_enabled', 'refresh_token', 'remember_token', ]; /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'id' => 'string', 'username' => 'string', 'discriminator' => 'string', 'email' => 'string', 'avatar' => 'string', 'verified' => 'boolean', 'locale' => 'string', 'mfa_enabled' => 'boolean', 'refresh_token' => 'encrypted', ]; }