X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FUser.php;h=164fb026bfecba420a784daf83b44697f37cd869;hb=66e57699b8055ef8a65a1be55b05301c811090bb;hp=b4950c306c458fc5973f2a899f7021f93603f53d;hpb=2ab05ab7927e8b21887ffa42d04eb9d4ff899382;p=alttp.git diff --git a/app/Models/User.php b/app/Models/User.php index b4950c3..164fb02 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -12,6 +12,45 @@ class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; + public function findResult(Round $round) { + foreach ($round->results as $result) { + if ($this->id == $result->user_id) { + return $result; + } + } + return null; + } + + public function getName() { + if (!empty($this->nickname)) { + return $this->nickname; + } + return $this->username; + } + + + public function isAdmin() { + return $this->role === 'admin'; + } + + public function isApplicant(Tournament $tournament) { + foreach ($tournament->applications as $applicant) { + if ($applicant->user_id == $this->id) { + return true; + } + } + return false; + } + + public function isDeniedApplicant(Tournament $tournament) { + foreach ($tournament->applications as $applicant) { + if ($applicant->user_id == $this->id) { + return $applicant->denied; + } + } + return false; + } + public function isParticipant(Tournament $tournament) { foreach ($tournament->participants as $participant) { if ($participant->user_id == $this->id) { @@ -39,6 +78,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); @@ -59,37 +119,46 @@ class User extends Authenticatable public function round_first() { return $this->rounds() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 1); } public function round_second() { return $this->rounds() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 2); } public function round_third() { return $this->rounds() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) + ->wherePivot('forfeit', false) ->wherePivot('placement', 3); } public function tournament_first() { return $this->tournaments() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) ->wherePivot('placement', 1); } public function tournament_second() { return $this->tournaments() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) ->wherePivot('placement', 2); } public function tournament_third() { return $this->tournaments() - ->whereNot('locked') + ->where('locked', true) + ->where('no_record', false) ->wherePivot('placement', 3); }