namespace App\Models;
+use App\Events\ResultChanged;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\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);
}
return $this->belongsTo(Participant::class);
}
+ public function getHasFinishedAttribute() {
+ return $this->time > 0 || $this->forfeit;
+ }
+
+
+ protected $casts = [
+ 'forfeit' => 'boolean',
+ 'time' => 'double',
+ ];
+
+ protected $appends = [
+ 'has_finished',
+ ];
+
protected $fillable = [
+ 'forfeit',
'round_id',
'time',
'user_id',