X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FResult.php;h=99f3791eacfc951acabb8d69d22053f592adbc80;hb=0a4af7267374d1a750ed07e9c4b491fea42490af;hp=3ced393cc64b1d13ebe3d2970e399e48550a9c13;hpb=812a270c7a410461e931394496512d36b34ef7b5;p=alttp.git diff --git a/app/Models/Result.php b/app/Models/Result.php index 3ced393..99f3791 100644 --- a/app/Models/Result.php +++ b/app/Models/Result.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Events\ResultChanged; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -9,6 +10,33 @@ class Result extends Model { use HasFactory; + + public function formatTime() { + $hours = floor($this->time / 60 / 60); + $minutes = floor(($this->time / 60) % 60); + $seconds = floor($this->time % 60); + return sprintf('%d:%02d:%02d', $hours, $minutes, $seconds); + } + + public function updateResult($time, $forfeit) { + $this->time = $time; + $this->forfeit = $forfeit; + $this->save(); + if ($this->wasChanged()) { + ResultChanged::dispatch($this); + } + } + + public function updatePlacement($score, $placement) { + $this->score = $score; + $this->placement = $placement; + $this->save(); + if ($this->wasChanged()) { + ResultChanged::dispatch($this); + } + } + + public function round() { return $this->belongsTo(Round::class); } @@ -21,6 +49,12 @@ class Result extends Model return $this->time > 0 || $this->forfeit; } + + protected $casts = [ + 'forfeit' => 'boolean', + 'time' => 'double', + ]; + protected $appends = [ 'has_finished', ];