X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FUser.php;h=0c2dcf76b0aaaf307c4591f35dc6d2f618b9019e;hb=1c91e5dcedd930bea5fe44ea95a77a9ecd0177a4;hp=89493e70171cdec6eefeea22e70f4bc1c9f342dd;hpb=df75af8d30ceb44724280829b948dd01e86de07b;p=alttp.git diff --git a/app/Models/User.php b/app/Models/User.php index 89493e7..0c2dcf7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -12,6 +12,10 @@ class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; + public function isAdmin() { + return $this->role === 'admin'; + } + public function isParticipant(Tournament $tournament) { foreach ($tournament->participants as $participant) { if ($participant->user_id == $this->id) { @@ -39,6 +43,27 @@ class User extends Authenticatable return false; } + public function isTournamentCrew(Tournament $tournament) { + return $this->isTournamentAdmin($tournament) || $this->isTournamentMonitor($tournament); + } + + public function isTournamentMonitor(Tournament $tournament) { + foreach ($tournament->participants as $participant) { + if ($participant->user_id == $this->id) { + return in_array('monitor', $participant->roles); + } + } + return false; + } + + public function hasFinished(Round $round) { + foreach ($round->results as $result) { + if ($result->user_id != $this->id) continue; + return $result->has_finished; + } + return false; + } + public function participation() { return $this->hasMany(Participant::class); @@ -61,6 +86,7 @@ class User extends Authenticatable return $this->rounds() ->where('locked', true) ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 1); } @@ -68,6 +94,7 @@ class User extends Authenticatable return $this->rounds() ->where('locked', true) ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 2); } @@ -75,6 +102,7 @@ class User extends Authenticatable return $this->rounds() ->where('locked', true) ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 3); }