5 use App\Events\ProtocolAdded;
6 use Illuminate\Database\Eloquent\Factories\HasFactory;
7 use Illuminate\Database\Eloquent\Model;
9 class Protocol extends Model
13 public static function resultReported(Tournament $tournament, Result $result, User $user) {
14 $protocol = static::create([
15 'tournament_id' => $tournament->id,
16 'user_id' => $user->id,
17 'type' => 'result.report',
19 'tournament' => static::tournamentMemo($tournament),
20 'result' => static::resultMemo($result),
23 ProtocolAdded::dispatch($protocol);
26 public static function roundAdded(Tournament $tournament, Round $round, User $user) {
27 $protocol = static::create([
28 'tournament_id' => $tournament->id,
29 'user_id' => $user->id,
30 'type' => 'round.create',
32 'tournament' => static::tournamentMemo($tournament),
33 'round' => static::roundMemo($round),
36 ProtocolAdded::dispatch($protocol);
39 public static function roundLocked(Tournament $tournament, Round $round, User $user = null) {
40 $protocol = static::create([
41 'tournament_id' => $tournament->id,
42 'user_id' => $user ? $user->id : null,
43 'type' => 'round.lock',
45 'tournament' => static::tournamentMemo($tournament),
46 'round' => static::roundMemo($round),
49 ProtocolAdded::dispatch($protocol);
52 public static function roundSeedSet(Tournament $tournament, Round $round, User $user) {
53 $protocol = static::create([
54 'tournament_id' => $tournament->id,
55 'user_id' => $user->id,
56 'type' => 'round.create',
58 'tournament' => static::tournamentMemo($tournament),
59 'round' => static::roundMemo($round),
62 ProtocolAdded::dispatch($protocol);
65 public static function roundUnlocked(Tournament $tournament, Round $round, User $user = null) {
66 $protocol = static::create([
67 'tournament_id' => $tournament->id,
68 'user_id' => $user ? $user->id : null,
69 'type' => 'round.unlock',
71 'tournament' => static::tournamentMemo($tournament),
72 'round' => static::roundMemo($round),
75 ProtocolAdded::dispatch($protocol);
78 public static function tournamentCreated(Tournament $tournament, User $user) {
79 $protocol = static::create([
80 'tournament_id' => $tournament->id,
81 'user_id' => $user->id,
82 'type' => 'tournament.create',
84 'tournament' => static::tournamentMemo($tournament),
87 ProtocolAdded::dispatch($protocol);
90 public static function tournamentLocked(Tournament $tournament, User $user = null) {
91 $protocol = static::create([
92 'tournament_id' => $tournament->id,
93 'user_id' => $user ? $user->id : null,
94 'type' => 'tournament.lock',
96 'tournament' => static::tournamentMemo($tournament),
99 ProtocolAdded::dispatch($protocol);
103 protected static function resultMemo(Result $result) {
106 'forfeit' => $result->forfeit,
107 'time' => $result->time,
111 protected static function roundMemo(Round $round) {
114 'number' => $round->number,
115 'seed' => $round->seed,
119 protected static function tournamentMemo(Tournament $tournament) {
121 'id' => $tournament->id,
122 'title' => $tournament->title,
126 protected static function userMemo(User $user) {
129 'username' => $user->username,
130 'discriminator' => $user->discriminator,
131 'avatar' => $user->avatar,
136 public function tournament() {
137 return $this->belongsTo(Tournament::class);
140 public function user() {
141 return $this->belongsTo(User::class);
146 'details' => 'array',
149 protected $fillable = [