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 applicationAccepted(Tournament $tournament, Application $application, User $user) {
14 $protocol = static::create([
15 'tournament_id' => $tournament->id,
16 'user_id' => $user->id,
17 'type' => 'application.accepted',
19 'tournament' => static::tournamentMemo($tournament),
20 'application' => static::applicationMemo($application),
21 'user' => static::userMemo($application->user),
24 ProtocolAdded::dispatch($protocol);
27 public static function applicationReceived(Tournament $tournament, Application $application, User $user) {
28 $protocol = static::create([
29 'tournament_id' => $tournament->id,
30 'user_id' => $user->id,
31 'type' => 'application.received',
33 'tournament' => static::tournamentMemo($tournament),
34 'application' => static::applicationMemo($application),
35 'user' => static::userMemo($application->user),
38 ProtocolAdded::dispatch($protocol);
41 public static function applicationRejected(Tournament $tournament, Application $application, User $user) {
42 $protocol = static::create([
43 'tournament_id' => $tournament->id,
44 'user_id' => $user->id,
45 'type' => 'application.rejected',
47 'tournament' => static::tournamentMemo($tournament),
48 'application' => static::applicationMemo($application),
49 'user' => static::userMemo($application->user),
52 ProtocolAdded::dispatch($protocol);
55 public static function resultCommented(Tournament $tournament, Result $result, User $user) {
56 $protocol = static::create([
57 'tournament_id' => $tournament->id,
58 'user_id' => $user->id,
59 'type' => 'result.comment',
61 'tournament' => static::tournamentMemo($tournament),
62 'result' => static::resultMemo($result),
63 'round' => static::roundMemo($result->round),
66 ProtocolAdded::dispatch($protocol);
69 public static function resultReported(Tournament $tournament, Result $result, User $user) {
70 $protocol = static::create([
71 'tournament_id' => $tournament->id,
72 'user_id' => $user->id,
73 'type' => 'result.report',
75 'tournament' => static::tournamentMemo($tournament),
76 'result' => static::resultMemo($result),
77 'round' => static::roundMemo($result->round),
80 ProtocolAdded::dispatch($protocol);
83 public static function roundAdded(Tournament $tournament, Round $round, User $user) {
84 $protocol = static::create([
85 'tournament_id' => $tournament->id,
86 'user_id' => $user->id,
87 'type' => 'round.create',
89 'tournament' => static::tournamentMemo($tournament),
90 'round' => static::roundMemo($round),
93 ProtocolAdded::dispatch($protocol);
96 public static function roundEdited(Tournament $tournament, Round $round, User $user) {
97 $protocol = static::create([
98 'tournament_id' => $tournament->id,
99 'user_id' => $user->id,
100 'type' => 'round.edit',
102 'tournament' => static::tournamentMemo($tournament),
103 'round' => static::roundMemo($round),
106 ProtocolAdded::dispatch($protocol);
109 public static function roundLocked(Tournament $tournament, Round $round, User $user = null) {
110 $protocol = static::create([
111 'tournament_id' => $tournament->id,
112 'user_id' => $user ? $user->id : null,
113 'type' => 'round.lock',
115 'tournament' => static::tournamentMemo($tournament),
116 'round' => static::roundMemo($round),
119 ProtocolAdded::dispatch($protocol);
122 public static function roundSeedSet(Tournament $tournament, Round $round, User $user) {
123 $protocol = static::create([
124 'tournament_id' => $tournament->id,
125 'user_id' => $user->id,
126 'type' => 'round.seed',
128 'tournament' => static::tournamentMemo($tournament),
129 'round' => static::roundMemo($round),
132 ProtocolAdded::dispatch($protocol);
135 public static function roundUnlocked(Tournament $tournament, Round $round, User $user = null) {
136 $protocol = static::create([
137 'tournament_id' => $tournament->id,
138 'user_id' => $user ? $user->id : null,
139 'type' => 'round.unlock',
141 'tournament' => static::tournamentMemo($tournament),
142 'round' => static::roundMemo($round),
145 ProtocolAdded::dispatch($protocol);
148 public static function tournamentClosed(Tournament $tournament, User $user = null) {
149 $protocol = static::create([
150 'tournament_id' => $tournament->id,
151 'user_id' => $user ? $user->id : null,
152 'type' => 'tournament.close',
154 'tournament' => static::tournamentMemo($tournament),
157 ProtocolAdded::dispatch($protocol);
160 public static function tournamentCreated(Tournament $tournament, User $user) {
161 $protocol = static::create([
162 'tournament_id' => $tournament->id,
163 'user_id' => $user->id,
164 'type' => 'tournament.create',
166 'tournament' => static::tournamentMemo($tournament),
169 ProtocolAdded::dispatch($protocol);
172 public static function tournamentDiscord(Tournament $tournament, User $user = null) {
173 $protocol = static::create([
174 'tournament_id' => $tournament->id,
175 'user_id' => $user ? $user->id : null,
176 'type' => 'tournament.discord',
178 'tournament' => static::tournamentMemo($tournament),
181 ProtocolAdded::dispatch($protocol);
184 public static function tournamentDiscordSettings(Tournament $tournament, User $user = null) {
185 $protocol = static::create([
186 'tournament_id' => $tournament->id,
187 'user_id' => $user ? $user->id : null,
188 'type' => 'tournament.discordSettings',
190 'tournament' => static::tournamentMemo($tournament),
193 ProtocolAdded::dispatch($protocol);
196 public static function tournamentLocked(Tournament $tournament, User $user = null) {
197 $protocol = static::create([
198 'tournament_id' => $tournament->id,
199 'user_id' => $user ? $user->id : null,
200 'type' => 'tournament.lock',
202 'tournament' => static::tournamentMemo($tournament),
205 ProtocolAdded::dispatch($protocol);
208 public static function tournamentOpened(Tournament $tournament, User $user = null) {
209 $protocol = static::create([
210 'tournament_id' => $tournament->id,
211 'user_id' => $user ? $user->id : null,
212 'type' => 'tournament.open',
214 'tournament' => static::tournamentMemo($tournament),
217 ProtocolAdded::dispatch($protocol);
220 public static function tournamentSettings(Tournament $tournament, User $user = null) {
221 $protocol = static::create([
222 'tournament_id' => $tournament->id,
223 'user_id' => $user ? $user->id : null,
224 'type' => 'tournament.settings',
226 'tournament' => static::tournamentMemo($tournament),
229 ProtocolAdded::dispatch($protocol);
232 public static function tournamentUnlocked(Tournament $tournament, User $user = null) {
233 $protocol = static::create([
234 'tournament_id' => $tournament->id,
235 'user_id' => $user ? $user->id : null,
236 'type' => 'tournament.unlock',
238 'tournament' => static::tournamentMemo($tournament),
241 ProtocolAdded::dispatch($protocol);
245 protected static function applicationMemo(Application $application) {
247 'id' => $application->id,
248 'denied' => $application->denied,
252 protected static function resultMemo(Result $result) {
255 'comment' => $result->comment,
256 'forfeit' => $result->forfeit,
257 'time' => $result->time,
261 protected static function roundMemo(Round $round) {
264 'locked' => $round->locked,
265 'no_record' => $round->no_record,
266 'number' => $round->number,
267 'seed' => $round->seed,
271 protected static function tournamentMemo(Tournament $tournament) {
273 'id' => $tournament->id,
274 'accept_applications' => $tournament->accept_applications,
275 'locked' => $tournament->locked,
276 'no_record' => $tournament->no_record,
277 'title' => $tournament->title,
281 protected static function userMemo(User $user) {
284 'username' => $user->username,
285 'discriminator' => $user->discriminator,
286 'avatar' => $user->avatar,
287 'nickname' => $user->nickname,
292 public function tournament() {
293 return $this->belongsTo(Tournament::class);
296 public function user() {
297 return $this->belongsTo(User::class);
302 'details' => 'array',
303 'user_id' => 'string',
306 protected $fillable = [